GNU bug report logs -
#62086
29.0.60; ruby-ts-mode regressions
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Thu, 9 Mar 2023 17:28:02 UTC
Severity: normal
Fixed in version 29.0.60
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
>> I wonder is it possible to fix more.
>> Many parens/brackets are still not matched in e.g.
>> test/lisp/progmodes/ruby-mode-resources/ruby.rb
>> such as parens in def argument list:
>> def test1(arg)
>
> This one was a regression from the addition of strict bos/eos anchors, now
> fixed.
Maybe there are more types that now are not found, but probably easier
to add them one by one after testing than to try finding all of them in
https://github.com/tree-sitter/tree-sitter-ruby/blob/master/src/node-types.json
or in
https://github.com/tree-sitter/tree-sitter-ruby/blob/master/src/grammar.json
>> and in
>> method (a + b),
>
> When you say that this is broken, do you mean that these parens get jumped
> over unexpectedly (with forward-sexp movement ending at the end of the
> arguments list)?
It seems natural to expect that when point is on an opening paren/bracket
then 'C-M-f' should jump to its closing pair. At least, this is more WYSIWYG.
> This is an artefact of the implementation of treesit-forward-sexp.
> It might be possible to improve, but from a brief dig, it has some
> internal logic. So some care would need to be taken to decide which
> contract nedds changing.
This is an example where explicit parens conflict with implicit parens.
Visible parens have the type "parenthesized_statements", but invisible
parens have the type "argument_list". Both start at the same position.
So maybe treesit-forward-sexp should prefer the former over the latter?
And in a similar case
method [],
arg2
maybe "array" should take precedence over "argument_list".
>> Also square brackets are not matched by 'C-M-f' in
>> h[:key]
>
> And this, surprisingly, seems impossible to handle just using
> treesit-sexp-type-regexp. The brackets are present in the tree, but they
> are not at the ends of any node. So that will require some custom Lisp,
> I guess.
This is the same problem that occurs in other places such as in "#{ddf}"
where only '#' but not '{' matches '}'. So adding "element_reference"
will allow to jump only from the beginning of an identifier.
This bug report was last modified 2 years and 95 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.