From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Perry E. Metzger" Newsgroups: gmane.emacs.devel Subject: Tree Sitter (was Re: cc-mode fontification feels random) Date: Thu, 15 Jul 2021 18:43:10 -0400 Message-ID: References: <83o8cge4lg.fsf@gnu.org> <62e438b5-d27f-1d3c-69c6-11fe29a76d74@dancol.org> <83fsxsdxhu.fsf@gnu.org> <179f22a44d8.2816.cc5b3318d7e9908e2c46732289705cb0@dancol.org> <179f38c0370.2816.cc5b3318d7e9908e2c46732289705cb0@dancol.org> <236e62c2-be9b-b26d-8cd0-4b5a1a86e19a@dancol.org> <86mtqsoh3f.fsf@stephe-leake.org> <286d815e-d1a1-07ca-6696-a7f51923ab4e@piermont.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37871"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:90.0) Gecko/20100101 Thunderbird/90.0 To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jul 16 00:44:10 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 1m4A5S-0009hV-7I for ged-emacs-devel@m.gmane-mx.org; Fri, 16 Jul 2021 00:44:10 +0200 Original-Received: from localhost ([::1]:50648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m4A5R-0000v4-9s for ged-emacs-devel@m.gmane-mx.org; Thu, 15 Jul 2021 18:44:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52674) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m4A4X-0000Dp-Kv for emacs-devel@gnu.org; Thu, 15 Jul 2021 18:43:13 -0400 Original-Received: from hacklheber.piermont.com ([2001:470:30:84:e276:63ff:fe62:3400]:49304) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m4A4V-0004SV-PH for emacs-devel@gnu.org; Thu, 15 Jul 2021 18:43:13 -0400 Original-Received: from snark.cb.piermont.com (localhost [127.0.0.1]) by hacklheber.piermont.com (Postfix) with UTF8SMTP id D0D2A13B for ; Thu, 15 Jul 2021 18:43:10 -0400 (EDT) Original-Received: from [10.160.2.107] (jabberwock.cb.piermont.com [10.160.2.107]) by snark.cb.piermont.com (Postfix) with UTF8SMTP id A38242DE738 for ; Thu, 15 Jul 2021 18:43:10 -0400 (EDT) Content-Language: en-US In-Reply-To: <286d815e-d1a1-07ca-6696-a7f51923ab4e@piermont.com> Received-SPF: pass client-ip=2001:470:30:84:e276:63ff:fe62:3400; envelope-from=perry@piermont.com; helo=hacklheber.piermont.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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:271278 Archived-At: On 7/15/21 14:13, Perry E. Metzger wrote: > Using LSP for fontification is unfortunately not sufficiently high > performance. LSP is really intended for things like providing type > information or enabling refactorings. > > I note that several other modern editors now make use of the "Tree > Sitter" library (see https://github.com/tree-sitter/tree-sitter ) > which was designed explicitly to provide a C library for incremental > programming language parsing for text editors. It allows for very > consistent fontification in other editors like Atom, and is available > under the MIT license, which would permit it to be included in Emacs. > > A very good presentation a few years ago by the author, including an > explanation of how Tree Sitter enables high quality fontification in > editors like Atom, can be viewed on youtube: > https://www.youtube.com/watch?v=Jes3bD6P0To > Apologies for not having been present for, er, the extensive previous discussion on Tree Sitter. I discovered it looking at the archives. I still believe that it would be a great thing to integrate into the base of Emacs. The algorithms it employs are excellent, it's extremely fast, and it handles the issues of real editors (like dealing with partial code fragments and incrementally changing the parse on every keystroke) very efficiently. Perry