unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Call for volunteers: add tree-sitter support to major modes
@ 2022-10-09  9:03 Eli Zaretskii
  2022-10-09  9:47 ` Theodor Thornhill
                   ` (4 more replies)
  0 siblings, 5 replies; 208+ messages in thread
From: Eli Zaretskii @ 2022-10-09  9:03 UTC (permalink / raw)
  To: emacs-devel

The Emacs 29 release branch is planned to be cut in about 1.5 months,
and we want tree-sitter support to be in Emacs 29.  The Emacs Git
repository has a feature branch that integrates tree-sitter with
Emacs.  That branch is being prepared for landing on master.  However,
currently there's only one major-mode which can use tree-sitter
support on the branch: Python mode.  We need to add tree-sitter
integration to more major modes, so that Emacs 29 could have
reasonably useful tree-sitter support options in at least the popular
major modes.

This is a call for volunteers to work on adding tree-sitter support to
major modes beyond Python, and on improving the existing support in
Python mode.

Some of the popular major modes for which we would like to see
tree-sitter support in Emacs 29 are:

 c-mode
 c++-mode
 emacs-lisp-mode
 js-mode
 js-json-mode
 ruby-mode
 shell-script-mode

We probably won't have all of them by Emacs 29, but we hope to have at
least some.

So if you are interested in enhancing your favorite major-mode with
tree-sitter support, and by doing that making Emacs 29 much better,
please checkout the feature/tree-sitter branch, and start working on
some mode(s).  Tree-sitter support for a major-mode should include
enhancement of one or more of the following Emacs features:

 - font-lock
 - indentation
 - navigation (beginning-of-defun-function etc.)
 - imenu
 - which-func
 - thing-at-point

We think that font-lock is the absolute minimum, followed by
indentation.

To help with this effort, Yuan Fu, who did most of the development on
this feature branch, wrote a document with guidance notes which aim to
help you implement tree-sitter support for the above features.  You
will find that document and some other helpful documentation in the
admin/notes/tree-sitter directory and its subdirectories on the
branch.  That directory also includes scripts for easy compilation of
tree-sitter language modules (which you will need to download from the
tree-sitter site).

We hope that the existing support for Python can serve as working
example of how to add tree-sitter support for other major modes, and
together with the guidance document it will allow you to add support
for more modes with minimum effort.  Don't hesitate to ask questions
if something is unclear or you need more advice.

We hope volunteers will step forward in time to make tree-sitter
integration in Emacs 29 functional and useful.  To avoid waste of
effort, please announce here on which major mode(s) you decided to
work.

Thanks in advance.



^ permalink raw reply	[flat|nested] 208+ messages in thread
* Re: Call for volunteers: add tree-sitter support to major modes
@ 2022-10-11 23:14 João Paulo Labegalini de Carvalho
  2022-10-12  5:43 ` Eli Zaretskii
  0 siblings, 1 reply; 208+ messages in thread
From: João Paulo Labegalini de Carvalho @ 2022-10-11 23:14 UTC (permalink / raw)
  To: emacs-devel, eliz@gnu.org

[-- Attachment #1: Type: text/plain, Size: 381 bytes --]

I would like to work on the c-mode if no one else is already working on
those.

I can also volunteer for c++-mode or shell-script-mode if needed.

-- 
João Paulo L. de Carvalho
Ph.D Computer Science |  IC-UNICAMP | Campinas , SP - Brazil
Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - Canada
joao.carvalho@ic.unicamp.br
joao.carvalho@ualberta.ca

[-- Attachment #2: Type: text/html, Size: 750 bytes --]

^ permalink raw reply	[flat|nested] 208+ messages in thread
* Re: Call for volunteers: add tree-sitter support to major modes
@ 2022-10-12  7:18 Payas Relekar
  0 siblings, 0 replies; 208+ messages in thread
From: Payas Relekar @ 2022-10-12  7:18 UTC (permalink / raw)
  To: emacs-devel

Po Lu <luangruo@yahoo.com> writes:

> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>> Yes, more of an Emacs 30 thing, so 2024-ish.
>>
>> That is, during the next year, I'm guessing that we'll be gaining
>> tree-sitter support for all the major programming languages, and when
>> that is better than what we already have, we should consider making
>> tree-sitter a prerequisite for Emacs (and these modes) and rapidly phase
>> out the old code.
>
> I and many others will _very_ strongly object to removing the build
> without tree-sitter.  Emacs has never needed a non-system library to
> edit text, and that should not start now.
>
> On X, we even support the build without XCB, as even though it has been
> ubitous for decades, it is not specified in any document and cannot be
> implemented by third parties.  Unlike Xlib, which is part of the
> specifications for release 6 of the X Window System, version 11,
> published by the X Consortium.
>
>> It's also a question of how much user breakage we'll tolerate/aim for.
>> That is, there's a gazillion tuning knobs all over the modes to tweak
>> stuff that will be rendered obsolete by tree-sitter, and which people
>> may be fond of.
>
> It will certainly break a lot.  Last I heard tree-sitter itself has
> problems with complex macro constructs in C and C++ code.
>
> CC Mode has less, because it is too dumb to try to parse them.

Currently, the 'dumb' implementation is default and tree-sitter based
one needs to be setup and enabled by the user (however easy it may be).
If the tree-sitter is in core, and the old 'dumb' way is no longer in
core, can the current way be done the other way around? i.e. disable
tree-sitter from core for cc-mode and add current cc-mode as extra
package and use that the way currently external tree-sitter mode is
used? This way even if tree-sitter is build-time dependency, it won't
affect runtime.

C++ is notoriously difficult to parse for something like tree-sitter due
to context sensitiveness of operators, and I understand your pain. But
for languages with better syntax and semantics, it has been immense
improvement in performance and usefulness over the 'dumb' regex parsing.

--



^ permalink raw reply	[flat|nested] 208+ messages in thread

end of thread, other threads:[~2022-10-24 16:00 UTC | newest]

Thread overview: 208+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

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).