GNU bug report logs -
#72388
31.0.50; Use tree-sitter-cuda grammar but with tree-sitter-cpp's font-lock/indentation rules
Previous Next
Full log
Message #11 received at 72388 <at> debbugs.gnu.org (full text, mbox):
Hey Ergus, sorry for the delay.
> On Aug 12, 2024, at 4:10 PM, Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors <bug-gnu-emacs <at> gnu.org> wrote:
>
> Hi Yuan:
>
> I am just trying to use the new treesit-language-remap-alist and so far
> I understand your idea of how to make it work for the basics. But it is
> not clear how can I use the new var to add the new syntax entries.
>
> I mean, looking at the grammar:
>
> https://github.com/tree-sitter-grammars/tree-sitter-cuda/blob/master/grammar.js
>
> You can see that it is the inherited C++ syntax, with extra entries in
> some fields (like _declaration_modifiers or delete_expression). For this
> part the new variable may work perfectly.
>
> However there are a few "new" entries like: kernel_call_expression,
> kernel_call_syntax and launch_bounds that will need special handling.
>
> What's your suggestion?
>
> I mean, for the latest what we really need is to extend (partially
> redefine) the c-ts-mode--indent-styles, c-ts-mode--keywords and so on.
>
> Is that the intended approach?
Yeah, you can define your own cuda-indent-styles by grabbing c-ts-mode—indent-styles and adding your rules on top of it, something like
(append your-styles
(c-ts-mode--indent-styles 'c++))
For font-lock, something like
(append (treesit-font-lock-rules
:language 'cuda
:faeture 'xxx
'(queries))
(c-ts-mode--font-lock-settings 'c++))
The new treesit-language-remap-alist will ensure that even though the config you borrow from c-ts-mode calls for c++, Emacs will actually use cuda grammar in your major mode.
Yuan
This bug report was last modified 135 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.