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: Sun, 12 Sep 2021 08:39:42 +0300 Message-ID: <83v936fj35.fsf@gnu.org> References: <83r1f7hydn.fsf@gnu.org> <95F37923-5BF9-4D81-B361-267CF119FBCA@gmail.com> <735AF34C-FD18-4A6A-A99D-E5D8EB4DE4F3@gmail.com> <40611F1F-7B5C-4885-A2CA-CE709ED8D22B@gmail.com> <4E876354-10D1-46B3-8124-CAE916261F08@gmail.com> <0A3F5464-B90D-4D47-BBDD-CCA26D877F43@gmail.com> <83tuiys1y4.fsf@gnu.org> <835yvcpdip.fsf@gnu.org> <7B1F90DE-A992-4F51-B391-0A4E5A598780@gmail.com> <3E8CA8E4-E623-4051-A76D-508C6CF94B6A@gmail.com> <837dfpj5yf.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> 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="40226"; 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 Sun Sep 12 07:41:05 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 1mPIEi-000ADJ-O9 for ged-emacs-devel@m.gmane-mx.org; Sun, 12 Sep 2021 07:41:04 +0200 Original-Received: from localhost ([::1]:35816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPIEh-0007cf-28 for ged-emacs-devel@m.gmane-mx.org; Sun, 12 Sep 2021 01:41:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48880) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPIDh-0006ww-2J for emacs-devel@gnu.org; Sun, 12 Sep 2021 01:40:01 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:51416) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPIDc-0002Im-17; Sun, 12 Sep 2021 01:39:56 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2764 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 1mPIDb-0002LM-G8; Sun, 12 Sep 2021 01:39:55 -0400 In-Reply-To: <3BC29D06-CA75-4706-9AD7-ABA2F65C4DEE@gmail.com> (message from Yuan Fu on Sat, 11 Sep 2021 13:29:09 -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:274581 Archived-At: > From: Yuan Fu > Date: Sat, 11 Sep 2021 13:29:09 -0700 > Cc: Tuấn-Anh Nguyễn , > Theodor Thornhill , > Clément Pit-Claudel , > Emacs developers , > Stefan Monnier , > stephen_leake@stephe-leake.org > > > But the part is still needed to be concocted somehow. E.g., > > the conversion from "C#" to "c-sharp" isn't trivial. > > The project name of tree-sitter’s C# definition is “tree-sitter-c-sharp”[1]. So if someone wants to use the C# language, they probably know what symbol represents it (we will explain the translation rule in doc-string and the manual). I also want to point out that we don’t come up with the symbols representing each language, the _user_ passes 'tree-sitter-parser-create' a symbol representing a language, and we translate that symbol to dynamic library name and C symbol name. Surely, you don't mean "user" as in "the person who edits a source file"? I presume you mean the Lisp program, not the human user. That Lisp program is the major mode which wants to use TS services, and the only thing that it has in hand is its own symbol, like 'c-mode' or 'python-mode' or 'f90-mode'. It needs a way to pass the corresponding TS module name to TS, and my question is: how would the major mode compute the correct module name? We need either a mode-specific variable with that name, or some global function that could be used by any major mode to obtain the language module name. > >>> BTW, since dynamic libraries has different extensions on different systems, what I want to do it to try loading the library with .so, then try .dylib, then try .dll, is that a good idea? > >> > >> We can do better, see load-suffixes. > > > > And in C, you can use MODULES_SUFFIX directly. Though we will > > probably need some minor changes there, to have the suffix defined > > even in a build --without-modules. > > I’m using tree-sitter-load-suffixes with default value ‘(“.so”, “.dylib”, “.dll”). Should I populate this variable with MODULES_SUFFIX and MODULES_SECONDARY_SUFFIX, or should I just use the two SUFFIX in C? I.e., do you see a need for users to customize suffixes? I'd prefer a general variable shared-library-suffix(es), either a single value specific to the target system or an alist with keys being system names (from system-type). Then we could use that in load-suffixes (instead of MODULES_SUFFIX) and everywhere else.