From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Theodor Thornhill Newsgroups: gmane.emacs.devel Subject: Re: cc-mode fontification feels random Date: Sat, 12 Jun 2021 17:56:34 +0200 Message-ID: References: <83im2lbqmv.fsf@gnu.org> <179f6e4fa40.2816.cc5b3318d7e9908e2c46732289705cb0@dancol.org> <83fsxpbpn9.fsf@gnu.org> <83k0n09tkp.fsf@gnu.org> <837dj09p0e.fsf@gnu.org> <20210611232535.b4dyu3a2yxvdixys@Ergus> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3530"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Ergus , Eli Zaretskii , dancol@dancol.org, acm@muc.de, rudalics@gmx.at, emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Jun 12 17:57:31 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 1ls60k-0000fp-Mw for ged-emacs-devel@m.gmane-mx.org; Sat, 12 Jun 2021 17:57:27 +0200 Original-Received: from localhost ([::1]:40212 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ls60j-0003Z0-M1 for ged-emacs-devel@m.gmane-mx.org; Sat, 12 Jun 2021 11:57:25 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ls604-0002sy-Ds for emacs-devel@gnu.org; Sat, 12 Jun 2021 11:56:44 -0400 Original-Received: from out0.migadu.com ([2001:41d0:2:267::]:24133) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ls600-0005CB-Vw; Sat, 12 Jun 2021 11:56:44 -0400 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no; s=key1; t=1623513396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=JRI6l2wVa2l0aiwIufizDfewsXHAF77jngJG27i/K3Y=; b=hgeA6Pt3P1D5l/JXILAUQTb2OuvLudPb/GYAnmIkjiVeTreg7pxQ0KmJ0MVr+kK5m+0xsu AUBXqZ+xXHcQI0cdtJqYnI7guGLna5cBqHGEUK7MSFEwtoOBKZX4OkUdeDK3s/GTtBL2es V+IW2VZfy3T2ikKxd05sDd3S23biJzRduTBS5ToHhEwdp4jHRl3Tuq6fBLpQTtFjT106c6 cEATY+mQDVFFE8eoiLD+9NQ198ksH/3/smn5P2BQeT/jxihJBrtG9kLOydK8lTMaY8Z1qi 6D2gSGMIwJdPWKyedlCzgiv4wJn8Ddm/Vz0X0KtTNx8KSabNrBi+TSFdUD+KMw== In-Reply-To: X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: theo@thornhill.no Received-SPF: pass client-ip=2001:41d0:2:267::; envelope-from=theo@thornhill.no; helo=out0.migadu.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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:270772 Archived-At: Stefan Monnier writes: >> @Stefan - I'm not sure I understand what you mean by troublesome for >> elisp hackers. These grammars have a lisp-like dsl, and is pretty >> usable through C-M-x and defvars, see: >> https://github.com/emacs-csharp/csharp-mode/blob/master/csharp-tree-sitter.el#L44. > > AFAIK the grammar itself is still written in Javascript. > Yeah, but compiled parsers can be supplied through CI or something like that. [...] > > Agreed. Maybe a first step would be to get copyright assignments and > include the tree sitter module in GNU ELPA? > If I read some of these mails correctly it seems like that wouldn't be possible due to interest from some of the parties involved in the main package. I don't know the details on that, though. And Eli seems unhappy with what's there. As for making a little more concrete proposal for how to move forward, would this be something like what we want? - create/use c or rust bindings - create an elisp-layer for interaction with the parse tree - hook fontification and indentation into that elisp-layer It feels like the elisp-layer will be the easiest part. I'm not really well versed in where to look in the c code of emacs for where and how to link this, so some pointers would be nice. It looks like most people agree that tree sitter support is wanted, so maybe it's time to start doing it? I can surely have a stab at it, but I'd like some guidance for how to proceed best - if it's wanted, that is. -- Theodor