From: Yuan Fu <casouri@gmail.com>
To: Po Lu <luangruo@yahoo.com>
Cc: Alan Mackenzie <acm@muc.de>, Eli Zaretskii <eliz@gnu.org>,
theo@thornhill.no, emacs-devel@gnu.org
Subject: Re: Call for volunteers: add tree-sitter support to major modes
Date: Mon, 17 Oct 2022 21:42:18 -0700 [thread overview]
Message-ID: <713135A0-FF74-43F5-969E-CECDF3C02DE6@gmail.com> (raw)
In-Reply-To: <87wn8xbyr2.fsf@yahoo.com>
[-- Attachment #1: Type: text/plain, Size: 2321 bytes --]
> On Oct 17, 2022, at 8:24 PM, Po Lu <luangruo@yahoo.com> wrote:
>
> Alan Mackenzie <acm@muc.de> writes:
>
>> Generally, that the replacement of CC Mode's engine with tree-sitter is
>> a good idea; CC Mode as it currently is is too much work to maintain,
>> and in the long run is unsustainable.
>>
>> At the same time, I have no idea how good tree-sitter's grammars for CC
>> Mode's modes are. If I understand rightly, a call to TS requires start
>> and end buffer positions to be calculated by Emacs rather than TS
>> itself. This might reduce some of the expected speed gain.
>>
>> I would like to keep all of CC Mode's user features in the new mode, if
>> at all possible. I don't know how easy it will be, for example, to keep
>> CC Mode's indentation styles working in the new mode.
>>
>> I can't honestly see myself as able to integrate tree-sitter into CC
>> Mode in the short time before the planned pre-test of Emacs 29. I think
>> we should take up the offer made by João Paulo Labegalini de Carvalho
>> <jaopaulolc@gmail.com> on 2020-10-11 to work on C Mode and possibly C++
>> Mode.
>>
>> I'm afraid I've only read a small part of this thread on emacs-devel, so
>> there's likely quite a bit of relevant stuff I've missed.
>
> Could someone please tell me how well tree-sitter supports pre-standard
> C with liberal (and sometimes non-standard) use of the C language? I'm
> talking about code that looks like this:
>
> MACRO_USED_TO_DEFINE_SPECIAL_FUNCTIONS (function_name, cells, transform)
> some_kind_of_ptr cells;
> another_kind_of_ptr *transform;
> {
> extern maybe_tls (int) errno;
> extern caddr_t bar (_P (another_kind_of_ptr, ...));
> int rc;
>
> BEGIN_A_KIND_OF_SECTION ({
> ENTRY (dx, dy, shx, shy)
> float dx, dy, shx, shy;
>
> if (!bar (other_function (dx, dy, shx, shy),
> etc, etc, etc))
> die ("bar", sys_errlist[errno]);
> }, register float, section_name);
>
> rc = more_code_here (§ion_name_desc, etc);
> return rc;
> }
>
> I don't doubt that tree-sitter is good at parsing newer languages like
> Typescript, but does it support C all that well?
A quick side-by-side comparison of a primitive tree-sitter font-lock I wrote vs c-mode:
Tree-sitter:
C-mode:
Yuan
[-- Attachment #2.1: Type: text/html, Size: 4084 bytes --]
[-- Attachment #2.2: Screen Shot 2022-10-17 at 9.37.47 PM.png --]
[-- Type: image/png, Size: 124685 bytes --]
[-- Attachment #2.3: Screen Shot 2022-10-17 at 9.38.39 PM.png --]
[-- Type: image/png, Size: 125257 bytes --]
next prev parent reply other threads:[~2022-10-18 4:42 UTC|newest]
Thread overview: 208+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-09 9:03 Call for volunteers: add tree-sitter support to major modes Eli Zaretskii
2022-10-09 9:47 ` Theodor Thornhill
2022-10-09 12:21 ` Eli Zaretskii
2022-10-09 12:41 ` Theodor Thornhill
2022-10-09 14:04 ` Eli Zaretskii
2022-10-09 15:18 ` Theodor Thornhill
2022-10-09 15:36 ` Eli Zaretskii
2022-10-09 19:25 ` Theodor Thornhill
2022-10-09 21:21 ` Theodor Thornhill
2022-10-09 22:03 ` Emanuel Berg
2022-10-10 6:35 ` Theodor Thornhill
2022-10-09 22:39 ` Yuan Fu
2022-10-10 4:05 ` Yuan Fu
2022-10-10 6:28 ` Eli Zaretskii
2022-10-10 6:35 ` Theodor Thornhill
2022-10-10 8:11 ` Eli Zaretskii
2022-10-10 6:46 ` Yuan Fu
2022-10-10 8:16 ` Eli Zaretskii
2022-10-10 7:08 ` Theodor Thornhill
2022-10-10 15:48 ` Yuan Fu
2022-10-10 16:29 ` Theodor Thornhill
2022-10-10 17:16 ` Yuan Fu
2022-10-10 17:53 ` Yuan Fu
2022-10-10 18:04 ` Theodor Thornhill
2022-10-11 6:53 ` Jostein Kjønigsen
2022-10-11 7:16 ` Theodor Thornhill
2022-10-09 14:08 ` Dmitry Gutov
2022-10-09 12:26 ` Philip Kaludercic
2022-10-09 12:27 ` Po Lu
2022-10-09 13:27 ` Eli Zaretskii
2022-10-09 14:01 ` Po Lu
2022-10-09 14:07 ` Eli Zaretskii
2022-10-09 13:25 ` Eli Zaretskii
2022-10-10 6:39 ` Turing on tree-sitter (was: Call for volunteers: add tree-sitter support to major modes) Eli Zaretskii
2022-10-10 6:46 ` Theodor Thornhill
2022-10-10 6:54 ` Yuan Fu
2022-10-10 7:26 ` Turing on tree-sitter Philip Kaludercic
2022-10-10 8:22 ` Eli Zaretskii
2022-10-10 14:52 ` Stefan Monnier
2022-10-10 15:29 ` Daniel Martín
2022-10-10 16:04 ` Eli Zaretskii
2022-10-10 16:06 ` Yuan Fu
2022-10-10 16:24 ` Philip Kaludercic
2022-10-10 16:54 ` Yuan Fu
2022-10-10 17:05 ` Theodor Thornhill
2022-10-10 20:56 ` Buliding with tree-sitter (Was: Turing on tree-sitter) Jostein Kjønigsen
2022-10-10 21:34 ` Jostein Kjønigsen
2022-10-10 22:54 ` Turing on tree-sitter Daniel Martín
2022-10-10 8:19 ` Turing on tree-sitter (was: Call for volunteers: add tree-sitter support to major modes) Eli Zaretskii
2022-10-10 8:18 ` Eli Zaretskii
2022-10-10 6:59 ` Turing on tree-sitter Lars Ingebrigtsen
2022-10-09 14:36 ` Call for volunteers: add tree-sitter support to major modes Brian
2022-10-09 14:53 ` Eli Zaretskii
2022-10-09 15:20 ` Brian
2022-10-09 15:39 ` Eli Zaretskii
2022-10-09 16:03 ` Brian
2022-10-09 17:23 ` Eli Zaretskii
2022-10-09 23:45 ` Yuan Fu
2022-10-10 9:34 ` Brian
2022-10-10 10:10 ` Po Lu
2022-10-10 10:27 ` Brian
2022-10-10 15:53 ` Yuan Fu
2022-10-10 3:04 ` Stefan Monnier
2022-10-10 6:25 ` Eli Zaretskii
2022-10-10 9:23 ` Brian
2022-10-09 20:01 ` Theodor Thornhill
2022-10-09 20:54 ` Stefan Kangas
2022-10-09 21:12 ` Theodor Thornhill
2022-10-10 0:01 ` Yuan Fu
2022-10-10 19:44 ` Alan Mackenzie
2022-10-10 20:54 ` Yuan Fu
2022-10-17 17:59 ` Eli Zaretskii
2022-10-17 18:47 ` Alan Mackenzie
2022-10-17 22:04 ` Stefan Monnier
2022-10-18 13:47 ` Ketevan Lomidze
2022-10-18 3:24 ` Po Lu
2022-10-18 4:42 ` Yuan Fu [this message]
2022-10-18 6:35 ` Po Lu
2022-10-18 9:45 ` Eli Zaretskii
2022-10-18 10:36 ` Po Lu
2022-10-18 14:52 ` Eli Zaretskii
2022-10-20 0:19 ` Po Lu
2022-10-20 1:15 ` Stefan Monnier
2022-10-20 6:16 ` Eli Zaretskii
2022-10-21 19:19 ` Jostein Kjønigsen
2022-10-20 6:12 ` Eli Zaretskii
2022-10-18 13:53 ` Stefan Monnier
2022-10-19 8:03 ` Jostein Kjønigsen
2022-10-10 5:55 ` Eli Zaretskii
2022-10-10 6:44 ` Theodor Thornhill
2022-10-10 8:15 ` Eli Zaretskii
2022-10-10 9:04 ` Theodor Thornhill
2022-10-10 9:10 ` Eli Zaretskii
2022-10-10 9:20 ` Theodor Thornhill
2022-10-10 9:39 ` Eli Zaretskii
2022-10-10 9:44 ` Theodor Thornhill
2022-10-11 21:38 ` Stefan Monnier
2022-10-11 21:45 ` Theodor Thornhill
2022-10-11 0:34 ` Lars Ingebrigtsen
2022-10-11 6:30 ` Eli Zaretskii
2022-10-11 6:41 ` Theodor Thornhill
2022-10-11 6:51 ` Eli Zaretskii
2022-10-11 7:23 ` Theodor Thornhill
2022-10-11 7:36 ` Eli Zaretskii
2022-10-11 7:41 ` Theodor Thornhill
2022-10-11 8:15 ` Jostein Kjønigsen
2022-10-11 9:54 ` Stefan Kangas
2022-10-11 9:58 ` Theodor Thornhill
2022-10-11 6:58 ` Jostein Kjønigsen
2022-10-11 7:13 ` Theodor Thornhill
2022-10-11 18:31 ` Lars Ingebrigtsen
2022-10-11 18:43 ` Theodor Thornhill
2022-10-11 18:54 ` Lars Ingebrigtsen
2022-10-11 18:57 ` Theodor Thornhill
2022-10-11 19:01 ` Theodor Thornhill
2022-10-11 19:30 ` Lars Ingebrigtsen
2022-10-11 20:36 ` Theodor Thornhill
2022-10-11 20:49 ` Lars Ingebrigtsen
2022-10-11 21:01 ` Theodor Thornhill
2022-10-11 21:44 ` Stefan Monnier
2022-10-12 10:58 ` Lars Ingebrigtsen
2022-10-11 19:20 ` Philip Kaludercic
2022-10-11 19:28 ` Theodor Thornhill
2022-10-11 4:43 ` Po Lu
2022-10-11 5:14 ` Yuan Fu
2022-10-11 5:33 ` Theodor Thornhill
2022-10-11 6:45 ` Eli Zaretskii
2022-10-11 6:50 ` Theodor Thornhill
2022-10-11 5:47 ` Po Lu
2022-10-11 7:18 ` Eli Zaretskii
2022-10-11 7:50 ` Po Lu
2022-10-11 8:06 ` Eli Zaretskii
2022-10-11 8:23 ` Po Lu
2022-10-11 8:40 ` Eli Zaretskii
2022-10-11 8:51 ` Po Lu
2022-10-11 10:09 ` Stefan Kangas
2022-10-11 12:49 ` Visuwesh
2022-10-11 16:56 ` Daniel Martín
2022-10-11 18:18 ` Yuan Fu
2022-10-11 7:13 ` Eli Zaretskii
2022-10-11 7:35 ` Po Lu
2022-10-11 7:47 ` Theodor Thornhill
2022-10-11 8:17 ` Po Lu
2022-10-11 8:40 ` Theodor Thornhill
2022-10-11 10:46 ` Po Lu
2022-10-11 8:51 ` Yuan Fu
2022-10-11 7:10 ` Eli Zaretskii
2022-10-11 7:31 ` Po Lu
2022-10-11 7:56 ` Eli Zaretskii
2022-10-11 8:15 ` Po Lu
2022-10-11 8:34 ` Eli Zaretskii
2022-10-11 8:47 ` Po Lu
2022-10-11 10:17 ` Daniel Martín
2022-10-11 8:43 ` Jostein Kjønigsen
2022-10-11 16:01 ` Dmitry Gutov
2022-10-11 21:14 ` Stefan Monnier
2022-10-11 21:49 ` Lars Ingebrigtsen
2022-10-11 22:00 ` Stefan Monnier
2022-10-11 22:49 ` Lars Ingebrigtsen
2022-10-12 0:41 ` Po Lu
2022-10-12 9:51 ` Stefan Kangas
2022-10-12 10:47 ` Po Lu
2022-10-12 5:30 ` Eli Zaretskii
2022-10-12 0:26 ` Po Lu
2022-10-12 3:31 ` João Paulo Labegalini de Carvalho
2022-10-12 4:27 ` Po Lu
2022-10-12 9:51 ` Stefan Kangas
2022-10-12 10:48 ` Po Lu
2022-10-11 21:29 ` Stefan Monnier
2022-10-10 7:34 ` Roman Rudakov
2022-10-10 7:48 ` Theodor Thornhill
2022-10-10 7:53 ` Roman Rudakov
2022-10-10 9:04 ` Theodor Thornhill
2022-10-11 20:44 ` Roman Rudakov
2022-10-11 21:00 ` Theodor Thornhill
2022-10-11 21:52 ` Stefan Monnier
2022-10-10 15:28 ` TypeScript support for tree-sitter (was Re: Call for volunteers: add tree-sitter support to major modes) Theodor Thornhill
2022-10-10 16:13 ` Eli Zaretskii
2022-10-10 16:43 ` Theodor Thornhill via Emacs development discussions.
2022-10-10 17:07 ` Yuan Fu
2022-10-10 17:48 ` Theodor Thornhill via Emacs development discussions.
2022-10-10 18:04 ` Theodor Thornhill via Emacs development discussions.
2022-10-10 18:53 ` Theodor Thornhill via Emacs development discussions.
2022-10-11 20:07 ` Theodor Thornhill via Emacs development discussions.
2022-10-11 20:22 ` Theodor Thornhill via Emacs development discussions.
2022-10-12 6:51 ` Yuan Fu
2022-10-12 7:11 ` Theodor Thornhill
2022-10-11 8:25 ` Po Lu
2022-10-11 8:42 ` Theodor Thornhill
2022-10-11 13:26 ` Stefan Monnier
2022-10-11 13:48 ` Theodor Thornhill
-- strict thread matches above, loose matches on Subject: below --
2022-10-11 23:14 Call for volunteers: add tree-sitter support to major modes João Paulo Labegalini de Carvalho
2022-10-12 5:43 ` Eli Zaretskii
2022-10-12 15:09 ` João Paulo Labegalini de Carvalho
2022-10-12 15:36 ` Eli Zaretskii
2022-10-21 16:47 ` João Paulo Labegalini de Carvalho
2022-10-21 23:45 ` João Paulo Labegalini de Carvalho
2022-10-22 1:52 ` Yuan Fu
2022-10-22 3:42 ` Yuan Fu
2022-10-22 6:42 ` Eli Zaretskii
2022-10-22 15:51 ` João Paulo Labegalini de Carvalho
2022-10-24 4:20 ` Yuan Fu
2022-10-24 15:41 ` João Paulo Labegalini de Carvalho
2022-10-24 15:46 ` João Paulo Labegalini de Carvalho
2022-10-24 6:23 ` Theodor Thornhill
2022-10-24 15:44 ` João Paulo Labegalini de Carvalho
2022-10-24 16:00 ` Theodor Thornhill
2022-10-12 7:18 Payas Relekar
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=713135A0-FF74-43F5-969E-CECDF3C02DE6@gmail.com \
--to=casouri@gmail.com \
--cc=acm@muc.de \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=luangruo@yahoo.com \
--cc=theo@thornhill.no \
/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 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).