[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CC Mode -> Tree sitter challenge
From: |
Theodor Thornhill |
Subject: |
Re: CC Mode -> Tree sitter challenge |
Date: |
Sat, 05 Nov 2022 08:56:52 +0100 |
On 5 November 2022 00:10:06 CET, Yuan Fu <casouri@gmail.com> wrote:
>
>
>> On Nov 4, 2022, at 1:34 PM, Theodor Thornhill <theo@thornhill.no> wrote:
>>
>>
>> Hi Eli and others!
>>
>> So you challenged me to add some more modes that are supported in CC
>> Mode, but not using CC Mode. I finally got some free hours, so here's
>> my first follow-up to your "show me the code".
>>
>> In this repo[0] you will find support for the following modes:
>>
>> - javascript (this is already in tree-sitter branch - but adding
>> without cc mode here)
>> - c
>> - c++
>> - java
>> - css
>> - JSON
>> - TypeScript (left out, as it is in tree-sitter branch already)
>
>Cool!
>
>>
>> So - some notes:
>>
>> 1. This is still very early, but I wanted to put it out there so that
>> others more knowledgeable than me could chime in on some of the
>> languages. C++ in particular is a language I don't code in, and is
>> notoriously complex.
>>
>> 2. I've focused mostly on indentation and font locking. Indentation is
>> using xdisp code style and the gnu style in general.
>>
>> 3. There's some support for navigation
>>
>> 4. I'll make Imenu, which-func and other goodies later. I want it to be
>> usable first.
>
>I learnt this from João: you don’t need to write a dedicated which-func
>function, it by default uses data from Imenu.
>
Nice! I'll check it out.
>>
>> 5. Most other CC mode features such as electric-foo and whitespace
>> cleanup should be possible to do with constructs outside of cc mode.
>
>Didn’t know cc-mode has white-space cleaning, I’ve always used ws-butler.
>
It has some hungry delete and similar stuff
>>
>> When scrolling through xdisp with this variant of C support it is
>> noticeably faster on my system. However, I'd like some guidance on how
>> to provide some benchmarks to prove my guess. Loading said file and
>> immediately going to EOB is instant, but in CC Mode takes a little less
>> than a second.
>
>I’ve done benchmarks, and tree-sitter is indeed much faster, you can probably
>find them in the archive. Speaking of archive, how does you guys find old
>messages in the archive? The search feature on the official archive webpage is
>unusable.
>
Yeah, i tried too, hehe.
>> @Stefan, you mentioned that filling could be extracted from cc
>> mode. Could you point me either to what/where to look for/at, so that I
>> can make such an attempt?
>
>I’ll add that it might be a good idea to take out the whole comment, insert
>them into a temp buffer, fill it with c-fill-paragraph or whatever, then go
>back and replace the whole comment in the original buffer. Cc-mode’s filling
>does a lot of invisible insertion and edits in-place, and IIRC it caused
>problems with eglot before.
>
Yeah, i was hoping that tree-sitter could do that, but I only tried briefly.
Seems most of the (comment) nodes contain the comment prefix along with the
commented text. Would be nice to access the text without comment prefix, but I
guess we can code or way out of that.
Btw, Yuan - could you tweak indent-region to that it doesn't insert spaces in
empty lines? It creates a lot of whitespace changes now :)
Theo
- CC Mode -> Tree sitter challenge, Theodor Thornhill, 2022/11/04
- Re: CC Mode -> Tree sitter challenge, Eli Zaretskii, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Theodor Thornhill, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Eli Zaretskii, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Theodor Thornhill, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Theodor Thornhill, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Eli Zaretskii, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Theodor Thornhill, 2022/11/05
- Re: CC Mode -> Tree sitter challenge, Theodor Thornhill, 2022/11/05