[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#62086: 29.0.60; ruby-ts-mode regressions
From: |
Juri Linkov |
Subject: |
bug#62086: 29.0.60; ruby-ts-mode regressions |
Date: |
Wed, 05 Apr 2023 09:24:24 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) |
>> 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.
- bug#62086: 29.0.60; ruby-ts-mode regressions, Juri Linkov, 2023/04/03
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/03
- bug#62086: 29.0.60; ruby-ts-mode regressions, Juri Linkov, 2023/04/04
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/04
- bug#62086: 29.0.60; ruby-ts-mode regressions,
Juri Linkov <=
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/05
- bug#62086: 29.0.60; ruby-ts-mode regressions, Juri Linkov, 2023/04/05
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/05
- bug#62086: 29.0.60; ruby-ts-mode regressions, Juri Linkov, 2023/04/11
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/11
- bug#62086: 29.0.60; ruby-ts-mode regressions, Yuan Fu, 2023/04/12
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/12
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/12
- bug#62086: 29.0.60; ruby-ts-mode regressions, Yuan Fu, 2023/04/12
- bug#62086: 29.0.60; ruby-ts-mode regressions, Dmitry Gutov, 2023/04/12