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 09:06:25 +0300 Message-ID: <83sfy391ni.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> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28878"; 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 08:07:25 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 1mR71v-0007K0-JY for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Sep 2021 08:07:23 +0200 Original-Received: from localhost ([::1]:48280 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mR71u-0002I7-3f for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Sep 2021 02:07:22 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mR71K-0001aK-1i for emacs-devel@gnu.org; Fri, 17 Sep 2021 02:06:46 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:51256) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mR71G-0008Bv-Qw; Fri, 17 Sep 2021 02:06:42 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3476 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 1mR71G-0006nD-Dm; Fri, 17 Sep 2021 02:06:42 -0400 In-Reply-To: (message from Yuan Fu on Thu, 16 Sep 2021 14:46:08 -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:274839 Archived-At: > From: Yuan Fu > Date: Thu, 16 Sep 2021 14:46:08 -0700 > Cc: Stefan Monnier , > ubolonton@gmail.com, > theo@thornhill.no, > cpitclaudel@gmail.com, > emacs-devel@gnu.org, > stephen_leake@stephe-leake.org > > >>> I wasn't talking about tree-sitter itself, I was talking about the > >>> facilities Emacs will provide based on TS. There will be in Emacs a > >>> function to calculate indentation using TS, right? And that function > >>> will be language-agnostic, like indent-line-function is, right? > >> > >> There is such a function but it doesn't do anything itself. It relies > >> on the major-mode to do the heavy lifting which consists in giving > >> indentation rules for each one of the possible node types that can > >> appear in the AST > > > > Sure, and the new one will do that with help of TS. But the principle > > is the same. > > My point is, major mode writers need to read the source of the tree-sitter language definition to do anything useful with tree-sitter If this is so, then why do we bother documenting the Lisp APIs for TS-related features? If Lisp programmers need to read the TS sources to do anything useful in Emacs, let them read the sources, including the Lisp and C sources you are working on? That was somewhat sarcastic, but my point is that this is NOT how we do this kind of stuff in Emacs. We should have Lisp-level facilities that reflect the TS features, and those Lisp-level facilities should be documented and should be the ONLY thing a Lisp programmer needs to read to adapt his/her major mode to TS. We should NOT assume that Lisp programmers read the TS source code, exactly like we don't assume that for other libraries, like GnuTLS, librsvg, or libgccjit. Under that modus operandi, the way to glean the part from the major mode's language name is something that should be part of the facilities we provide.