* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
@ 2022-12-16 18:12 Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-16 23:20 ` Yuan Fu
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-16 18:12 UTC (permalink / raw)
To: 60127; +Cc: Yuan Fu
Hello,
I have been running into what I believe is a bug with
treesit-end-of-defun while developing clojure-ts-mode. There are some
positions in clojure buffers where treesit-end-of-defun will jump to the
end of the buffer.
Steps to reproduce:
Checkout the emacs-29 branch. I have built mine with commit
b01d0246d71a7a3fd92b2864a3c0c0bc9367ee0b and tree-sitter version 0.20.7
Clone my clojure-mode fork:
https://github.com/dannyfreeman/clojure-mode
check out the `end-of-defun-bug` branch (master works too, but I added
a helpful debug message in this branch)
Clone tree-sitter-module repo:
https://github.com/casouri/tree-sitter-module
Apply the patch `tree-sitter-module-clojure-support.patch` located in
clojure-mode repo to the casouri/tree-sitter-module repo.
Build the treesitter parser for clojure with
$ ./build clojure
Start emacs
$ emacs -q
Evaluate the following, replacing the paths with what is relevant to
your system
```
(progn
(setq treesit-extra-load-path '("~/path/to/tree-sitter-module/dist"))
(add-to-list 'load-path "~/path/to/clojure-mode/")
(find-file "~/path/to/clojure-mode/clojure-ts-mode.el")
(eval-buffer)
(find-file "~/path/to/clojure-mode/test_end_of_defun.clj"))
```
Once you have opened test_end_of_defun.clj you can see the problem by
pressing
M-<
C-M-e
C-M-e
You should see the cursor move from
```
|(def w 1)
(def x 2)
(def y 3)
(def skip-to-here? 4)
```
to
```
(def w 1)
|
(def x 2)
(def y 3)
(def skip-to-here? 4)
```
then it unexpectedly jumps to the end of the buffer
```
(def w 1)
(def x 2)
(def y 3)
(def skip-to-here? 4)
|
```
The message buffer shows that when the point is between the forms
```
(def w 1)
|
(def x 2)
```
that `treesit-end-of-defun` thinks the current node is
`(def skip-to-here? 4)`, which does not seem right.
When the cursor is at other points in this buffer, this problem doesn't
seem to occur. For instance, between the (def x 2) and (def y 3) forms,
this doesn't happen.
I can also see this happening in the `test.clj` file of the clojure-mode
repo in a different spot but there is a lot more going on in that file.
(hit C-M-e in it until the problem occurs if you are curious).
I have the following vars relevant vars set in clojure-ts-mode.
Different combinations of them yield the same results.
```
(setq-local treesit-defun-prefer-top-level t
treesit-defun-tactic 'top-level
treesit-defun-type-regexp (cons (rx (or "list_lit" "vec_lit" "map_lit"))
(lambda (node)
(message "Node: %s" (treesit-node-text node t))
t)))
```
The clojure code in question produces an error free parse tree. I can
see it with `treesit-explore-mode` and by running the file through
`tree-sitter parse`, which gives the following parse tree:
```
(source [0, 0] - [7, 0]
(list_lit [0, 0] - [0, 9]
value: (sym_lit [0, 1] - [0, 4]
name: (sym_name [0, 1] - [0, 4]))
value: (sym_lit [0, 5] - [0, 6]
name: (sym_name [0, 5] - [0, 6]))
value: (num_lit [0, 7] - [0, 8]))
(list_lit [2, 0] - [2, 9]
value: (sym_lit [2, 1] - [2, 4]
name: (sym_name [2, 1] - [2, 4]))
value: (sym_lit [2, 5] - [2, 6]
name: (sym_name [2, 5] - [2, 6]))
value: (num_lit [2, 7] - [2, 8]))
(list_lit [4, 0] - [4, 9]
value: (sym_lit [4, 1] - [4, 4]
name: (sym_name [4, 1] - [4, 4]))
value: (sym_lit [4, 5] - [4, 6]
name: (sym_name [4, 5] - [4, 6]))
value: (num_lit [4, 7] - [4, 8]))
(list_lit [6, 0] - [6, 21]
value: (sym_lit [6, 1] - [6, 4]
name: (sym_name [6, 1] - [6, 4]))
value: (sym_lit [6, 5] - [6, 18]
name: (sym_name [6, 5] - [6, 18]))
value: (num_lit [6, 19] - [6, 20])))
```
Any help or advice here is appreciated.
Thank you,
--
Danny Freeman
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-16 18:12 bug#60127: treesit-end-of-defun: possible bug with clojure grammar Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-16 23:20 ` Yuan Fu
2022-12-17 14:07 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-22 8:55 ` Yuan Fu
2023-01-17 9:30 ` Yuan Fu
2 siblings, 1 reply; 12+ messages in thread
From: Yuan Fu @ 2022-12-16 23:20 UTC (permalink / raw)
To: Danny; +Cc: 60127
Danny Freeman <Danny@dfreeman.email> writes:
> Hello,
>
> I have been running into what I believe is a bug with
> treesit-end-of-defun while developing clojure-ts-mode. There are some
> positions in clojure buffers where treesit-end-of-defun will jump to the
> end of the buffer.
>
> Steps to reproduce:
>
> Checkout the emacs-29 branch. I have built mine with commit
> b01d0246d71a7a3fd92b2864a3c0c0bc9367ee0b and tree-sitter version 0.20.7
>
> Clone my clojure-mode fork:
> https://github.com/dannyfreeman/clojure-mode
>
> check out the `end-of-defun-bug` branch (master works too, but I added
> a helpful debug message in this branch)
>
> Clone tree-sitter-module repo:
> https://github.com/casouri/tree-sitter-module
>
> Apply the patch `tree-sitter-module-clojure-support.patch` located in
> clojure-mode repo to the casouri/tree-sitter-module repo.
>
> Build the treesitter parser for clojure with
>
> $ ./build clojure
>
> Start emacs
>
> $ emacs -q
>
> Evaluate the following, replacing the paths with what is relevant to
> your system
>
> ```
> (progn
> (setq treesit-extra-load-path '("~/path/to/tree-sitter-module/dist"))
> (add-to-list 'load-path "~/path/to/clojure-mode/")
> (find-file "~/path/to/clojure-mode/clojure-ts-mode.el")
> (eval-buffer)
> (find-file "~/path/to/clojure-mode/test_end_of_defun.clj"))
> ```
>
>
> Once you have opened test_end_of_defun.clj you can see the problem by
> pressing
>
> M-<
> C-M-e
> C-M-e
>
> You should see the cursor move from
>
> ```
> |(def w 1)
>
> (def x 2)
>
> (def y 3)
>
> (def skip-to-here? 4)
> ```
>
> to
>
> ```
> (def w 1)
> |
> (def x 2)
>
> (def y 3)
>
> (def skip-to-here? 4)
> ```
>
>
> then it unexpectedly jumps to the end of the buffer
>
> ```
> (def w 1)
>
> (def x 2)
>
> (def y 3)
>
> (def skip-to-here? 4)
> |
> ```
>
>
> The message buffer shows that when the point is between the forms
>
> ```
> (def w 1)
> |
> (def x 2)
> ```
>
>
> that `treesit-end-of-defun` thinks the current node is
> `(def skip-to-here? 4)`, which does not seem right.
>
> When the cursor is at other points in this buffer, this problem doesn't
> seem to occur. For instance, between the (def x 2) and (def y 3) forms,
> this doesn't happen.
>
> I can also see this happening in the `test.clj` file of the clojure-mode
> repo in a different spot but there is a lot more going on in that file.
> (hit C-M-e in it until the problem occurs if you are curious).
>
> I have the following vars relevant vars set in clojure-ts-mode.
> Different combinations of them yield the same results.
>
> ```
> (setq-local treesit-defun-prefer-top-level t
> treesit-defun-tactic 'top-level
> treesit-defun-type-regexp (cons (rx (or "list_lit" "vec_lit" "map_lit"))
> (lambda (node)
> (message "Node: %s" (treesit-node-text node t))
> t)))
> ```
>
>
> The clojure code in question produces an error free parse tree. I can
> see it with `treesit-explore-mode` and by running the file through
> `tree-sitter parse`, which gives the following parse tree:
>
> ```
> (source [0, 0] - [7, 0]
> (list_lit [0, 0] - [0, 9]
> value: (sym_lit [0, 1] - [0, 4]
> name: (sym_name [0, 1] - [0, 4]))
> value: (sym_lit [0, 5] - [0, 6]
> name: (sym_name [0, 5] - [0, 6]))
> value: (num_lit [0, 7] - [0, 8]))
> (list_lit [2, 0] - [2, 9]
> value: (sym_lit [2, 1] - [2, 4]
> name: (sym_name [2, 1] - [2, 4]))
> value: (sym_lit [2, 5] - [2, 6]
> name: (sym_name [2, 5] - [2, 6]))
> value: (num_lit [2, 7] - [2, 8]))
> (list_lit [4, 0] - [4, 9]
> value: (sym_lit [4, 1] - [4, 4]
> name: (sym_name [4, 1] - [4, 4]))
> value: (sym_lit [4, 5] - [4, 6]
> name: (sym_name [4, 5] - [4, 6]))
> value: (num_lit [4, 7] - [4, 8]))
> (list_lit [6, 0] - [6, 21]
> value: (sym_lit [6, 1] - [6, 4]
> name: (sym_name [6, 1] - [6, 4]))
> value: (sym_lit [6, 5] - [6, 18]
> name: (sym_name [6, 5] - [6, 18]))
> value: (num_lit [6, 19] - [6, 20])))
> ```
>
> Any help or advice here is appreciated.
>
> Thank you,
Thank you very much for this detailed report! This seems to be some
problem with either tree-sitter or tree-sitter-clojure, where
treesit-node-first-child-for-pos gives wrong result. We’ve had similar
problem with bash before[1].
At this point there aren’t much we can do in Emacs. If I find some time
I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
[1] https://github.com/tree-sitter/tree-sitter-bash/issues/139
Yuan
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-16 23:20 ` Yuan Fu
@ 2022-12-17 14:07 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 12+ messages in thread
From: Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-17 14:07 UTC (permalink / raw)
To: Yuan Fu; +Cc: 60127
Yuan Fu <casouri@gmail.com> writes:
> Thank you very much for this detailed report! This seems to be some
> problem with either tree-sitter or tree-sitter-clojure, where
> treesit-node-first-child-for-pos gives wrong result. We’ve had similar
> problem with bash before[1].
>
> At this point there aren’t much we can do in Emacs. If I find some time
> I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
>
> [1] https://github.com/tree-sitter/tree-sitter-bash/issues/139
>
> Yuan
This bash issue will be really helpful, thanks for sharing.
I've been doing work on tree-sitter-clojure, so I can start digging over
there. You don't need to worry about writing up a recipe unless you
really want to. (I will just test with Emacs since I do not know C very
well).
--
Danny Freeman
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-17 14:07 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 0 replies; 12+ messages in thread
From: Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-17 15:47 UTC (permalink / raw)
To: Yuan Fu; +Cc: 60127
Danny Freeman <danny@dfreeman.email> writes:
>> Thank you very much for this detailed report! This seems to be some
>> problem with either tree-sitter or tree-sitter-clojure, where
>> treesit-node-first-child-for-pos gives wrong result. We’ve had similar
>> problem with bash before[1].
>>
>> At this point there aren’t much we can do in Emacs. If I find some time
>> I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
>>
>> [1] https://github.com/tree-sitter/tree-sitter-bash/issues/139
>>
>> Yuan
I have a c program that I believe reproduces the problem. I'm not sure
how we will go about fixing it in tree-sitter-clojure, but at least we
have a minimal way to re-create it.
https://paste.sr.ht/~dannyfreeman/8786059276c334036877159a5b0872cd2aa6fbc0
--
Danny Freeman
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-17 14:07 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 0 replies; 12+ messages in thread
From: Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-17 15:47 UTC (permalink / raw)
To: Yuan Fu; +Cc: 60127
Yuan,
>> Thank you very much for this detailed report! This seems to be some
>> problem with either tree-sitter or tree-sitter-clojure, where
>> treesit-node-first-child-for-pos gives wrong result. We’ve had similar
>> problem with bash before[1].
>>
>> At this point there aren’t much we can do in Emacs. If I find some time
>> I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
>>
>> [1] https://github.com/tree-sitter/tree-sitter-bash/issues/139
>>
>> Yuan
I have a c program that I believe reproduces the problem. I'm not sure
how we will go about fixing it in tree-sitter-clojure, but at least we
have a minimal way to re-create it.
Here is a link to the issue I created:
https://github.com/sogaiu/tree-sitter-clojure/issues/32
that also includes the c-program. I've also put it on my source hut
https://paste.sr.ht/~dannyfreeman/8786059276c334036877159a5b0872cd2aa6fbc0
If you find the time, I would appreciate it if you could confirm my
findings. I'm a little in over my head with this bug I'm afraid.
--
Danny Freeman
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-16 18:12 bug#60127: treesit-end-of-defun: possible bug with clojure grammar Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-16 23:20 ` Yuan Fu
@ 2022-12-22 8:55 ` Yuan Fu
2023-01-16 1:56 ` Dmitry Gutov
2023-01-17 9:30 ` Yuan Fu
2 siblings, 1 reply; 12+ messages in thread
From: Yuan Fu @ 2022-12-22 8:55 UTC (permalink / raw)
To: Danny Freeman; +Cc: 60127
Danny Freeman <danny@dfreeman.email> writes:
> Yuan,
>
>>> Thank you very much for this detailed report! This seems to be some
>>> problem with either tree-sitter or tree-sitter-clojure, where
>>> treesit-node-first-child-for-pos gives wrong result. We’ve had similar
>>> problem with bash before[1].
>>>
>>> At this point there aren’t much we can do in Emacs. If I find some time
>>> I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
>>>
>>> [1] https://github.com/tree-sitter/tree-sitter-bash/issues/139
>>>
>>> Yuan
>
> I have a c program that I believe reproduces the problem. I'm not sure
> how we will go about fixing it in tree-sitter-clojure, but at least we
> have a minimal way to re-create it.
>
> Here is a link to the issue I created:
> https://github.com/sogaiu/tree-sitter-clojure/issues/32
> that also includes the c-program. I've also put it on my source hut
> https://paste.sr.ht/~dannyfreeman/8786059276c334036877159a5b0872cd2aa6fbc0
>
> If you find the time, I would appreciate it if you could confirm my
> findings. I'm a little in over my head with this bug I'm afraid.
I think it’s pretty good (the reproduce), the author’s modified program
is even better. Let’s wait and see what tree-sitter’s author have to
say.
Yuan
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-22 8:55 ` Yuan Fu
@ 2023-01-16 1:56 ` Dmitry Gutov
2023-01-16 2:39 ` Yuan Fu
0 siblings, 1 reply; 12+ messages in thread
From: Dmitry Gutov @ 2023-01-16 1:56 UTC (permalink / raw)
To: Yuan Fu, Danny Freeman; +Cc: 60127
On 22/12/2022 10:55, Yuan Fu wrote:
> Danny Freeman<danny@dfreeman.email> writes:
>
>> Yuan,
>>
>>>> Thank you very much for this detailed report! This seems to be some
>>>> problem with either tree-sitter or tree-sitter-clojure, where
>>>> treesit-node-first-child-for-pos gives wrong result. We’ve had similar
>>>> problem with bash before[1].
>>>>
>>>> At this point there aren’t much we can do in Emacs. If I find some time
>>>> I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
>>>>
>>>> [1]https://github.com/tree-sitter/tree-sitter-bash/issues/139
>>>>
>>>> Yuan
>> I have a c program that I believe reproduces the problem. I'm not sure
>> how we will go about fixing it in tree-sitter-clojure, but at least we
>> have a minimal way to re-create it.
>>
>> Here is a link to the issue I created:
>> https://github.com/sogaiu/tree-sitter-clojure/issues/32
>> that also includes the c-program. I've also put it on my source hut
>> https://paste.sr.ht/~dannyfreeman/8786059276c334036877159a5b0872cd2aa6fbc0
>>
>> If you find the time, I would appreciate it if you could confirm my
>> findings. I'm a little in over my head with this bug I'm afraid.
> I think it’s pretty good (the reproduce), the author’s modified program
> is even better. Let’s wait and see what tree-sitter’s author have to
> say.
Just to keep everyone of the same page:
clojure-tree-sitter's author posted an issue to tree-sitter last week:
https://github.com/tree-sitter/tree-sitter/issues/2012
and, previously, he also suggested we might be able to work around it
using treesit_search_dfs:
https://github.com/sogaiu/tree-sitter-clojure/issues/32#issuecomment-1364830835
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2023-01-16 1:56 ` Dmitry Gutov
@ 2023-01-16 2:39 ` Yuan Fu
0 siblings, 0 replies; 12+ messages in thread
From: Yuan Fu @ 2023-01-16 2:39 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 60127, Danny Freeman
> On Jan 15, 2023, at 5:56 PM, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 22/12/2022 10:55, Yuan Fu wrote:
>> Danny Freeman<danny@dfreeman.email> writes:
>>> Yuan,
>>>
>>>>> Thank you very much for this detailed report! This seems to be some
>>>>> problem with either tree-sitter or tree-sitter-clojure, where
>>>>> treesit-node-first-child-for-pos gives wrong result. We’ve had similar
>>>>> problem with bash before[1].
>>>>>
>>>>> At this point there aren’t much we can do in Emacs. If I find some time
>>>>> I’ll make a reproduce recipe and submit an issue on tree-sitter-clojure.
>>>>>
>>>>> [1]https://github.com/tree-sitter/tree-sitter-bash/issues/139
>>>>>
>>>>> Yuan
>>> I have a c program that I believe reproduces the problem. I'm not sure
>>> how we will go about fixing it in tree-sitter-clojure, but at least we
>>> have a minimal way to re-create it.
>>>
>>> Here is a link to the issue I created:
>>> https://github.com/sogaiu/tree-sitter-clojure/issues/32
>>> that also includes the c-program. I've also put it on my source hut
>>> https://paste.sr.ht/~dannyfreeman/8786059276c334036877159a5b0872cd2aa6fbc0
>>> If you find the time, I would appreciate it if you could confirm my
>>> findings. I'm a little in over my head with this bug I'm afraid.
>> I think it’s pretty good (the reproduce), the author’s modified program
>> is even better. Let’s wait and see what tree-sitter’s author have to
>> say.
>
> Just to keep everyone of the same page:
>
> clojure-tree-sitter's author posted an issue to tree-sitter last week: https://github.com/tree-sitter/tree-sitter/issues/2012
>
> and, previously, he also suggested we might be able to work around it using treesit_search_dfs: https://github.com/sogaiu/tree-sitter-clojure/issues/32#issuecomment-1364830835
I’d rather not use treesit_search_dfs, as it does much more work than the current code. You know what, I can write a custom ts_node_first_child_for_byte and use that in Emacs, I’ve already done that for ts_node_parent anyway.
Yuan
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2022-12-16 18:12 bug#60127: treesit-end-of-defun: possible bug with clojure grammar Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-16 23:20 ` Yuan Fu
2022-12-22 8:55 ` Yuan Fu
@ 2023-01-17 9:30 ` Yuan Fu
2023-01-17 12:20 ` Eli Zaretskii
2 siblings, 1 reply; 12+ messages in thread
From: Yuan Fu @ 2023-01-17 9:30 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: Eli Zaretskii, 60127, Danny Freeman
> I’d rather not use treesit_search_dfs, as it does much more work than
> the current code. You know what, I can write a custom
> ts_node_first_child_for_byte and use that in Emacs, I’ve already done
> that for ts_node_parent anyway.
I did that. I tested with the Clojure example and it works fine now.
Eli, we don’t use ts_node_first_child_for_pos for now until tree-sitter
fix that function, should I removed the boilerplate for it or should I
leave it as-is? I saw you removed ts_node_parent when I did a similar
fix.
Yuan
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2023-01-17 9:30 ` Yuan Fu
@ 2023-01-17 12:20 ` Eli Zaretskii
2023-01-17 15:49 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2023-01-17 12:20 UTC (permalink / raw)
To: Yuan Fu; +Cc: 60127, danny, dgutov
> From: Yuan Fu <casouri@gmail.com>
> Date: Tue, 17 Jan 2023 01:30:22 -0800
> Cc: 60127@debbugs.gnu.org,
> Danny Freeman <danny@dfreeman.email>,
> Eli Zaretskii <eliz@gnu.org>
>
>
> > I’d rather not use treesit_search_dfs, as it does much more work than
> > the current code. You know what, I can write a custom
> > ts_node_first_child_for_byte and use that in Emacs, I’ve already done
> > that for ts_node_parent anyway.
>
> I did that. I tested with the Clojure example and it works fine now.
>
> Eli, we don’t use ts_node_first_child_for_pos for now until tree-sitter
> fix that function, should I removed the boilerplate for it or should I
> leave it as-is? I saw you removed ts_node_parent when I did a similar
> fix.
It should be either removed or #ifdef'ed away, because otherwise GCC
complains in the MS-Windows build about unused macro.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
2023-01-17 12:20 ` Eli Zaretskii
@ 2023-01-17 15:49 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-05 15:57 ` Stefan Kangas
0 siblings, 1 reply; 12+ messages in thread
From: Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-01-17 15:49 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Yuan Fu, 60127, dgutov
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Tue, 17 Jan 2023 01:30:22 -0800
>> Cc: 60127@debbugs.gnu.org,
>> Danny Freeman <danny@dfreeman.email>,
>> Eli Zaretskii <eliz@gnu.org>
>>
>>
>> > I’d rather not use treesit_search_dfs, as it does much more work than
>> > the current code. You know what, I can write a custom
>> > ts_node_first_child_for_byte and use that in Emacs, I’ve already done
>> > that for ts_node_parent anyway.
>>
>> I did that. I tested with the Clojure example and it works fine now.
>>
>> Eli, we don’t use ts_node_first_child_for_pos for now until tree-sitter
>> fix that function, should I removed the boilerplate for it or should I
>> leave it as-is? I saw you removed ts_node_parent when I did a similar
>> fix.
>
> It should be either removed or #ifdef'ed away, because otherwise GCC
> complains in the MS-Windows build about unused macro.
Thanks for tackling this problem on the Emacs end Yuan. I tested it out
with clojure-ts-mode and it seems to have addressed my problems.
I also took the liberty of linking to your commit in the tree-sitter
github issue in case the maintainers want to take a look at it.
--
Danny Freeman
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-09-05 15:57 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-16 18:12 bug#60127: treesit-end-of-defun: possible bug with clojure grammar Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-16 23:20 ` Yuan Fu
2022-12-17 14:07 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-17 15:47 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-22 8:55 ` Yuan Fu
2023-01-16 1:56 ` Dmitry Gutov
2023-01-16 2:39 ` Yuan Fu
2023-01-17 9:30 ` Yuan Fu
2023-01-17 12:20 ` Eli Zaretskii
2023-01-17 15:49 ` Danny Freeman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-05 15:57 ` Stefan Kangas
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).