From: Ergus <spacibba@aol.com>
To: Yuan Fu <casouri@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Implementing cuda-ts-mode
Date: Thu, 25 Jul 2024 16:05:31 +0200 [thread overview]
Message-ID: <C850DA69-585A-4183-A15E-AAC8B9AC1BED@aol.com> (raw)
In-Reply-To: <F1D7A830-5BBE-450D-AB4B-5307A5FF7B37@gmail.com>
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.
next prev parent reply other threads:[~2024-07-25 14:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <v2a2js5ssoz7d3hquenaieubgmj263tz3ejbogordd5t3ys4v2.ref@efpjojlxrlv4>
2024-07-23 12:38 ` Implementing cuda-ts-mode Ergus
2024-07-25 7:42 ` Yuan Fu
2024-07-25 14:05 ` Ergus [this message]
2024-07-27 23:22 ` Yuan Fu
2024-07-31 0:15 ` Yuan Fu
2024-07-31 21:06 ` Ergus
2024-07-29 5:10 ` Björn Bidar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=C850DA69-585A-4183-A15E-AAC8B9AC1BED@aol.com \
--to=spacibba@aol.com \
--cc=casouri@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.