GNU bug report logs - #66183
elixir-ts-mode test failure

Previous Next

Package: emacs;

Reported by: john muhl <jm <at> pub.pink>

Date: Sun, 24 Sep 2023 18:09:02 UTC

Severity: normal

Done: Yuan Fu <casouri <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Yuan Fu <casouri <at> gmail.com>
To: Wilhelm Kirschbaum <wkirschbaum <at> gmail.com>
Cc: 66183 <at> debbugs.gnu.org, jm <at> pub.pink
Subject: bug#66183: elixir-ts-mode test failure
Date: Tue, 26 Sep 2023 11:00:23 -0700

> On Sep 26, 2023, at 9:30 AM, Wilhelm Kirschbaum <wkirschbaum <at> gmail.com> wrote:
> 
> 
> Yuan Fu <casouri <at> gmail.com> writes:
> 
>>> On Sep 24, 2023, at 9:53 AM, john muhl via Bug reports for GNU
>>> Emacs, the Swiss army knife of text editors <bug-gnu-emacs <at> gnu.org>
>>> wrote:
>>> The change in 5cba5ee8905 caused an elixir test to start failing. The
>>> white space at the start of the test is now in a heex range so pressing
>>> tab there matches a heex rule instead of the elixir one. Moving the
>>> dummy range to the end fixes the test.
>> 
>> Thank you. I’ll make sure to remember also running elixir tests when I make a change.
>> 
>> I looked around and found elixir-mode’s language-at-point function
>> works in a way that isn’t what tree-sitter functions
>> expect. Tree-sitter functions expect the major mode to derive language
>> at point by querying the host language and do some pattern matching,
>> rather than using language parser’s range. I took a quick look at
>> elixir’s grammar and came up with this version for a POC. You probably
> 
> Sorry about that.  I had absolutely no idea how it was expected to work.

It’s absolutely my fault :-) Several people have had confusion about it, because the docstring wasn’t clear enough. I’ve updated the docstring so hopefully this confusion won’t occur in the future.

> 
>> need to adjust it but the idea is there.
>> 
>> With the new language-at-point definition, treesit-language-at can
>> return the correct language, and the test passes again.
>> 
>> Yuan
>> 
>> [2. text/x-patch; example.diff]...
> 
> This seems to work if you set named on: treesit-node-prev-sibling,
> otherwise it just tries to match the \"\"\" against H or F.
> 
>  (let* ((node (treesit-node-at point 'elixir)))
>    (if (and (equal (treesit-node-type node) "quoted_content")
>             (string-match-p
>              (rx bos (or "H" "F") eos)
> -              (treesit-node-text (treesit-node-prev-sibling               node))))
> +              (treesit-node-text (treesit-node-prev-sibling node t))))
>        'heex
>      'elixir)))
> 
> I will spend some time in the next couple of hours to catch up to all
> the changes.

Ah, right. I’ll leave the specifics to you. As long as the language is derived from the node at point rather than parser range, it will be fine. Also, there’s no rush.

Yuan





This bug report was last modified 1 year and 225 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.