bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#68899: Treesitter's forward-sexp-function


From: Yuan Fu
Subject: bug#68899: Treesitter's forward-sexp-function
Date: Sun, 4 Feb 2024 16:50:28 -0800


> On Feb 4, 2024, at 4:40 AM, João Távora <joaotavora@gmail.com> wrote:
> 
> On Sun, Feb 4, 2024 at 5:35 AM Yuan Fu <casouri@gmail.com> wrote:
> 
>> Thanks for looking into this, Joao. IME a very useful characteristic of 
>> forward-sexp is that it stays in the same “level” and doesn’t go up 
>> automatically when there’s no siblings (when there’s a closing delimiter). 
>> Eg, in an Elisp buffer, forward-sexp stops at the closing parenthesis, in C, 
>> it should stop at the closing bracket.
> 
> I agree.  There are other useful characteristics, but this is one of them.
> It allows be to mark regions of text up to points that I'm not even seeing.
> 
>> Also you don’t want to check for prev when moving forward, and vice
>> versa, ie, we don’t want to check (null next) and (null prev) together.
> 
> I get it.  I used those existing results as a proxy to know if we're
> in the middle
> of a leaf.  I _think_ it's sound (maybe I'm wrong).
> 
>> So, how do you like this patch:
> 
> It works fine, but as far as I can tell does exactly the same as mine, and
> looks to be slightly more difficult to read and uses a further treesit
> query to check if this is a leaf node.  But it's absolutley fine really.
> 
> One way my patch can be described in plain english is
> "if we're not at an inter-thing boundary, we navigate to such boundary"
> And then the meaning of checking prev _and_ next becomes obvious
> and it isn't necessary to perform the additional check that we're in a
> leaf node.
> 
> So go ahead and push whichever patch you prefer, and thanks.
> 
> João

Initially I was worried about the case below:

void main (void) {
  <point>
}<will move to here>

But I get you now; if we define “leaf thing” as not having any nested child 
thing, and we allow ourselves to move to the end of leaf thing, then in this 
case we indeed should move out of the closing bracket. I like your definition 
of “leaf thing” better since it’s more general than “leaf node”, and I like the 
simpler code too.

So applied your patch with some comments added, thanks!

Yuan




reply via email to

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