From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Tree-sitter api Date: Fri, 17 Sep 2021 10:38:46 +0300 Message-ID: <83ilyz8xdl.fsf@gnu.org> References: <83r1f7hydn.fsf@gnu.org> <8335qbirsr.fsf@gnu.org> <73E0B1F6-6F9F-40E0-927E-D08481BFF391@gmail.com> <834kaqhqlp.fsf@gnu.org> <8335qahqgk.fsf@gnu.org> <3BC29D06-CA75-4706-9AD7-ABA2F65C4DEE@gmail.com> <83v936fj35.fsf@gnu.org> <83r1dselyo.fsf@gnu.org> <6A4CE984-6ACE-4E66-8EF2-F3D351C02248@gmail.com> <83r1dscpt2.fsf@gnu.org> <83o88wcof9.fsf@gnu.org> <83lf3zdh4z.fsf@gnu.org> <8965C4A0-79D3-4D77-A6BA-D07A6C93F7FE@gmail.com> <83ilz3cs4k.fsf@gnu.org> <04D19C1A-CD64-4156-B932-1C9FEEE4EC7B@gmail.com> <83zgsebc0r.fsf@gnu.org> <1F752923-F357-4A18-B6E2-0120F1B9BD37@gmail.com> <83fsu5bzem.fsf@gnu.org> <83zgsdad5j.fsf@gnu.org> <83sfy391ni.fsf@gnu.org> <03386E3C-A975-4ECD-BF89-6AC62F751725@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="415"; mail-complaints-to="usenet@ciao.gmane.io" Cc: ubolonton@gmail.com, theo@thornhill.no, cpitclaudel@gmail.com, emacs-devel@gnu.org, monnier@iro.umontreal.ca, stephen_leake@stephe-leake.org To: Yuan Fu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Sep 17 09:40:53 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mR8UN-000AQ1-H7 for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Sep 2021 09:40:51 +0200 Original-Received: from localhost ([::1]:57510 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mR8UL-0006aD-Cs for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Sep 2021 03:40:49 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36340) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mR8Sg-0004gl-My for emacs-devel@gnu.org; Fri, 17 Sep 2021 03:39:06 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:52506) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mR8Se-0002vg-2o; Fri, 17 Sep 2021 03:39:04 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:1310 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mR8Sd-0008Uq-KR; Fri, 17 Sep 2021 03:39:03 -0400 In-Reply-To: <03386E3C-A975-4ECD-BF89-6AC62F751725@gmail.com> (message from Yuan Fu on Thu, 16 Sep 2021 23:56:20 -0700) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:274844 Archived-At: > From: Yuan Fu > Date: Thu, 16 Sep 2021 23:56:20 -0700 > Cc: Stefan Monnier , > Tuấn-Anh Nguyễn , > Theodor Thornhill , > Clément Pit-Claudel , > Emacs developers , > stephen_leake@stephe-leake.org > > We have documentation for all the tree-sitter features provided by Emacs and a bit more, but I don’t think it is possible to document the language definitions. We can think of language definitions as BNF grammars for each language, how do you document that? Why do we need to document the language definitions? When a Lisp programmer defines font-lock and indentation for a programming language in the current Emacs, do they necessarily need to consult the language grammar? > Say, for the language definition for Scheme below, how do we document it? > > --> | | > | | > | ( | ) | #( | > ' | ` | , | ,@ | . > --> | ( | ) | " | ; > --> > --> ; line break> > ... > --> | > | | > … This stuff should be known to TS; the Lisp programmer only needs to be aware of the results of lexical and syntactical analysis, in terms of their Lisp expressions (Lisp data structures with appropriate symbols and fields). > And I want to also point out that as Emacs core developers, we can’t possibly provide a good translation from convention language names to their tree-sitter name (C# -> c-sharp). Maybe we can do a half-decent job, but 1) that won’t cover all available languages, and 2) if there is a new language, we need to wait for the next release to update our translation. It is better for the major mode writers to provide the information on how to translate names. The database used by the conversion should definitely be extensible. But that doesn't mean it should be empty. Anyway, we've spent enough time on this issue. If you are still unconvinced, feel free to do it your way, and let the chips fall as they may.