emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CC Mode -> Tree sitter challenge


From: Yuan Fu
Subject: Re: CC Mode -> Tree sitter challenge
Date: Sun, 6 Nov 2022 16:11:23 -0800


> On Nov 5, 2022, at 11:04 PM, Theodor Thornhill <theo@thornhill.no> wrote:
> 
> 
> 
> On 6 November 2022 02:13:14 CET, Yuan Fu <casouri@gmail.com> wrote:
>> 
>> 
>>> On Nov 5, 2022, at 9:38 AM, Theodor Thornhill <theo@thornhill.no> wrote:
>>> 
>>> 
>>> Hi again, Eli!
>>> 
>>>>> 
>>>>> Interesting. My guess is that there are still some improvement possible 
>>>>> in the indent-region code, considering that part of treesit.el is quite 
>>>>> new.
>>>>> 
>>>>> What do you think, Yuan? Any thoughts?
>>>>> 
>>>>> Anyways, I'll keep working on this and see how far I get next coming 
>>>>> weeks. At least in performance it seems I have a good thing going here :-)
>>>>> 
>>>> 
>>>> Thinking of it, some of the indentation questions isn't compiled. I'll run 
>>>> it again later when they are compiled as well :-)
>>>> 
>>> 
>>> Yes, that was the issue.  Now the scores are as follows:
>> 
>> The indentation code has a list of rules, and it runs each rule 
>> top-to-bottom until one rules matches, then it uses that rule to determine 
>> how much to indent. The ordering of each rule could be tweaked so that most 
>> frequent case comes forward. We can also arrange these rules not linearly 
>> but in a tree, so if one rules matches/doesn’t match, some other rules can 
>> be skipped.
> 
> I think the system as it is now it fine, at least for the time being. But I 
> hold no strong opinions there :)

Yeah if there is no performance issue, it’s better to keep things simple.

>> 
>> What exactly did you compile? I tried byte-compiling indentation rules 
>> before but didn’t see a significant speed-up.
>> 
>> Yuan
> 
> See 
> https://git.sr.ht/~theo/tree-sitter-modes/tree/master/item/c-ts-mode.el#L92
> 
> Sometimes when exploring indentation i use rules like this. Usually I try to 
> find other ways after, but I just assumed they weren't perf problems. 
> Apparently they are!

I see, we can precompile these queries automatically for the user. 

> 
> And by the way, i created an anchor like this: 
> https://git.sr.ht/~theo/tree-sitter-modes/tree/master/item/c-ts-mode.el#L57
> 
> This is nice when you need to just move a token to col 0, such as 
> preproc-directives. Maybe that should be a standard one? It could use the 
> buffer-root-node, but this was so simple and fast that I just did it like 
> that.
> 
> What do you think?

I’ll add it, thanks!

Yuan


reply via email to

[Prev in Thread] Current Thread [Next in Thread]