unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Yuan Fu <casouri@gmail.com>
To: Dmitry Gutov <dmitry@gutov.dev>
Cc: "Theodor Thornhill" <theo@thornhill.no>,
	66988@debbugs.gnu.org, "Loïc Lemaître" <loic.lemaitre@gmail.com>
Subject: bug#66988: 30.0.50; treesit-forward-sexp not working properly in js-ts-mode and tsx-ts-mode
Date: Fri, 10 Nov 2023 18:41:20 -0800	[thread overview]
Message-ID: <BFD5D5A3-8E6C-463F-AE8A-CE12256D16D0@gmail.com> (raw)
In-Reply-To: <39b0057b-ac0c-8271-0fe2-f4deef7ae8d3@gutov.dev>



> On Nov 9, 2023, at 5:41 PM, Dmitry Gutov <dmitry@gutov.dev> wrote:
> 
> Hi!
> 
> On 07/11/2023 16:56, Loïc Lemaître wrote:
>> Hi Emacs team,
>> Here the steps to demonstrate the bug :
>> 1. Compile Emacs from master branch with tree-sitter support
>> 2. Install javascript and tsx languages
>> 3. Run Emacs
>> 4. Create a new buffer
>> 5. Turn major mode to either js-ts-mode or tsx-ts-mode
>> 6. Past the following content into the buffer:
>> (
>>   <div>
>>   </div>
>> );
>> 7. Place point before opening parenthese
>> 8. M-x forward-sexp (which will call treesit-forward-sexp)
>> => New position is right after the semi-colon instead of being before the semi-colon.
>> Note that the bug disappear if the buffer content is changed for :
>> const component = (
>>   <div>
>>   </div>
>> );
>> But previous content, while not being very usefull, is valid JSX, as far as I know.
>> I use this syntax for unit test purpose, since it is very short.
> 
> Thanks for the report.
> 
> The patch below should fix it.
> 
> Yuan, what do you think? A similar change (bos and eos anchors) might be useful for other things and other modes.
> 
> Alternatively, treesit-thing-settings could be interpreted to imply full matches, then the code using it should not only match against the regexps but also check that the entire string (type name) is matched.

I regret not doing this by default for treesit-indent-rules and traverse functions. Now it’s hard to change without creating confusion and breaking backward compatibility. I wonder if there are good way to smoothly transition to match full names by default…

Treesit-thing-settings can be changed to match full names, but only if we can change treesit-indent-rules and friends too. Otherwise it would be too confusing.

Yuan




  parent reply	other threads:[~2023-11-11  2:41 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-07 14:56 bug#66988: 30.0.50; treesit-forward-sexp not working properly in js-ts-mode and tsx-ts-mode Loïc Lemaître
2023-11-10  1:41 ` Dmitry Gutov
2023-11-10  7:37   ` Juri Linkov
2023-11-11  2:41   ` Yuan Fu [this message]
2023-11-11  7:35     ` Eli Zaretskii
2023-11-15  6:28       ` Yuan Fu
2023-11-15 12:19         ` Eli Zaretskii
2023-11-18 18:57           ` Yuan Fu
2023-11-19  5:48             ` Eli Zaretskii
2023-11-19  6:19               ` Yuan Fu
2023-11-11 10:49     ` Dmitry Gutov
2023-11-15  6:32       ` Yuan Fu
2023-11-11 15:43   ` Loïc Lemaître
2023-11-11 23:40     ` Dmitry Gutov
2023-11-12 12:10       ` Loïc Lemaître

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BFD5D5A3-8E6C-463F-AE8A-CE12256D16D0@gmail.com \
    --to=casouri@gmail.com \
    --cc=66988@debbugs.gnu.org \
    --cc=dmitry@gutov.dev \
    --cc=loic.lemaitre@gmail.com \
    --cc=theo@thornhill.no \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).