unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* 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

* bug#60127: treesit-end-of-defun: possible bug with clojure grammar
  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, 0 replies; 12+ messages in thread
From: Stefan Kangas @ 2023-09-05 15:57 UTC (permalink / raw)
  To: Danny Freeman; +Cc: Eli Zaretskii, dgutov, Yuan Fu, 60127-done

Danny Freeman <danny@dfreeman.email> writes:

> 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.

This bug seems to have been left open by mistake, so I'm closing it now.

Please reopen the bug if I missed something.





^ 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).