|
From: | Dmitry Gutov |
Subject: | bug#62416: 30.0.50; Symbols skipped in the navigation in ruby-ts-mode |
Date: | Sun, 26 Mar 2023 05:14:35 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 |
On 25/03/2023 21:04, Juri Linkov wrote:
Navigating word forward/backward skips the Ruby symbol in the ruby-ts-mode. Adding "simple_symbol" to the treesit-sexp-type-regexp is fixing it. (setq-local treesit-sexp-type-regexp (regexp-opt '("class" "module" "method" "argument_list" "array" "hash" "parenthesized_statements" "if" "case" "when" "block" "do_block" "begin" "binary" "simple_symbol" ;; <-- missing "assignment")))Juri, what do you think? In the context of your previous feedback regarding sexp navigation in ruby-ts-mode.This is fine.
Good. Let's push it into master.
But anyway I think in its current state treesit-sexp-type-regexp is underdesigned as noted in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=62238#59 so no tweaking could fix its design flaws. For example, foo = { a: b } when point is on the left curly bracket, 'C-M-f C-M-b' doesn't move back to the original position, etc.
Hm, yeah, it's a little unexpected that not only it doesn't move back exactly, it skips the full assignment expression in both directions.
What is the downside of dropping "binary" and "assignment" from treesit-sexp-type-regexp, added there not too long ago? Without "assignment" there, your example becomes a round-trip.
BTW, we should wrap the regexp with \`...\'. It currently does substring matching, that's why it also matches "identifier" (which should probably be added too).
[Prev in Thread] | Current Thread | [Next in Thread] |