emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Implementing cuda-ts-mode


From: Ergus
Subject: Re: Implementing cuda-ts-mode
Date: Thu, 25 Jul 2024 16:05:31 +0200


On July 25, 2024 9:42:10 AM GMT+02:00, Yuan Fu <casouri@gmail.com> wrote:
>
>
>> On Jul 23, 2024, at 5:38 AM, Ergus <spacibba@aol.com> wrote:
>> 
>> Hi:
>> 
>> After a while and looking that the ts modules are getting mature I was
>> planing to develop a `cuda-ts-mode'.
>> 
>> However after reading the documentation it is not totally clear to me
>> how to proceed in this specific case because cuda is a sort of
>> "extension" over C++, so I expect that the cuda-ts-mode somehow
>> "inherits" from c++-ts-mode.
>> 
>> My initial idea was to replicate how I was expecting that c++-ts-mode
>> should inherit from c-ts-mode, but it looks like this doesn't happen in
>> a clear way. The modes are threated as independent and there is a sort
>> of "mode" variable that is dynamically checked everywhere.
>> 
>> So the simple question is:
>> 
>> 1. The approach of trying to inherit from c++-ts-mode is correct? (I mean,
>> is c++-ts-mode intended to be used like a "base" to inherit from?)
>> 
>> Some advise on this?
>
>IIUC, tree-sitter-cuda is a separate grammar that is extended from 
>tree-sitter-cpp, right? Then inheriting c++-ts-mode won’t work since it’ll 
>setup everything using the cpp grammar. You’d need to delete the cpp parser 
>and add your cuda parser (doable), and change everything that refers to ‘cpp 
>to ‘cuda (very hacky).
>
>I guess we can add some map which tells Emacs to use the cuda grammar in place 
>of cpp. Kind of like treesit-load-name-override-list but more dynamic.
>
>Once we’re able to do that, you can define a new mode that derives from 
>c++-ts-mode and expect all the setup in c++-ts-mode to work.
>
>Yuan

Hi Yuan:

Now I understand why c++-ts-mode does not inherit from c-ts-mode. This sort of 
inheritance is natural considering how tree sitter works. So I am a bit 
surprised that nobody faced this before. I saw some derived modes changes a 
while ago and I thought that it was related to this.

The extra features that the Cuda grammar adds to c++ are actually not many, but 
some are important to not break the indentation. 

<https://github.com/tree-sitter-grammars/tree-sitter-cuda/blob/master/grammar.js>

That's why, reimplementing the c++-ts-mode code substituting the entries seems 
as unnecessary and overkill to me. So I will wait for the new feature to be out 
before, then it will be more scalable and simple to do a Cuda-ts-mode.

Best,
Ergus

PD: Do you want me to open a bug report to keep track of this?




-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]