From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: Turning on/off tree-sitter modes Date: Sat, 30 Nov 2024 05:26:35 +0200 Message-ID: <27a62624-387c-4233-b995-170270e26efd@gutov.dev> References: <556779b3-9308-4fd3-9050-bf9c49658cd1@gutov.dev> <864j43t8t9.fsf@gnu.org> <4cc676e8-cac5-4348-99b0-243baf74687e@gutov.dev> <8634jnt5e3.fsf@gnu.org> <4864104c-cb23-4356-ad89-2fea111db66c@gutov.dev> <86ttc2rrh8.fsf@gnu.org> <86cyipsp94.fsf@gnu.org> <9cd17f8b-f88c-49f6-9024-0b6d297e18ac@gutov.dev> <867c8xsmri.fsf@gnu.org> <566ac897-ea5e-4141-bcb3-306d43c9118a@gutov.dev> <865xohrvfa.fsf@gnu.org> <86wmgwnyle.fsf@gnu.org> <178dfc7f-bc2d-4e3b-8417-a616ccc0eef3@gutov.dev> <86v7wgnxlz.fsf@gnu.org> <01d83ec8-c02b-4806-8764-38dc89a89125@gutov.dev> <86ttbzojho.fsf@gnu.org> <930f5c8e-1481-43a5-8f1d-2c13a98df74f@gutov.dev> <86r072krq5.fsf@gnu.org> 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="14494"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird To: Stefan Monnier , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Nov 30 04:27:32 2024 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 1tHE8p-0003aC-OJ for ged-emacs-devel@m.gmane-mx.org; Sat, 30 Nov 2024 04:27:32 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tHE87-0007Gp-5E; Fri, 29 Nov 2024 22:26:47 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tHE85-0007Gh-Gq for emacs-devel@gnu.org; Fri, 29 Nov 2024 22:26:45 -0500 Original-Received: from fhigh-b3-smtp.messagingengine.com ([202.12.124.154]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tHE83-00034r-O9 for emacs-devel@gnu.org; Fri, 29 Nov 2024 22:26:45 -0500 Original-Received: from phl-compute-08.internal (phl-compute-08.phl.internal [10.202.2.48]) by mailfhigh.stl.internal (Postfix) with ESMTP id 82A6425400FA; Fri, 29 Nov 2024 22:26:40 -0500 (EST) Original-Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-08.internal (MEProxy); Fri, 29 Nov 2024 22:26:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1732937200; x=1733023600; bh=HAsiQKM8IBwu/G2zrlyV0WlE2pPbyjnjiiA0Pup94cw=; b= bunsiHI958K3JYWE8YGMagmOcv3i6PpYjAM2MzgAxv+YEXfpwUrxHswZRr+tpv4N oHn8Gh97d5ex7y/16RfqLjsRy0fJk6BRismQq8CwdYBxAoPnSxLIcBqzGZWN9MRN pu2FNoiB3ZkWkmHX2987fY8Qe8H+43Y6YccLoOhYaKp3IEzMw2R1BVm91q46Ez6D V888etriX4eld6k7Rohr+F+14iFCw+1U1zWN5PtmM53sRJ8BU4Vz8bfc9oGc0iE3 80BwvUAX2Na0ZoKI1IklPu0GAY25syndtcr2oubM8ioE/tQe5S5502yfz17xsxUI QNd8Rd7E18ROfSd/iYgPXg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1732937200; x=1733023600; bh=H AsiQKM8IBwu/G2zrlyV0WlE2pPbyjnjiiA0Pup94cw=; b=5if/RtS4UIMjZ+563 TEzLxA28D2wCN1Cxgin1tr9RYWFFyIQ5eUettMHvtwEkFtL3jy8mbeQPMKG3nCNs 9LI6ZD47A5eeIsdYOPWOakLhY5QFUlt6e4B+6Pwn58pN9o1PdKny7qbYQy3RNpaZ CvHDzStxcdET4DiOK1FjJf3t6iNu7SAlA8/l95UD/iw7wmSSuHDPm7HmIhvq6hT8 fzamvZm8X8F62oNcHLLNmHN+OCjO5snnkS//thWx+tVwMaciDzccsLrRYJpbT1ZY CWVktmMdCIHvPogYXYB7MxLHcOYjo3rGm22J+sHkE4leZbOZ2Ar421Xf/Tn0j78U w1RAA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrheeggdehjecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefkffggfgfuvfhfhfgjtgfgsehtjeertddtvdejnecu hfhrohhmpeffmhhithhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvh eqnecuggftrfgrthhtvghrnheptdfhuedvtdevleegueelvedvjeevheffveevhedvueff tdefhfdvueeggfetgfdtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrg hilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedv pdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehmohhnnhhivghrsehirhhordhumh honhhtrhgvrghlrdgtrgdprhgtphhtthhopegvmhgrtghsqdguvghvvghlsehgnhhurdho rhhg X-ME-Proxy: Feedback-ID: i07de48aa:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 29 Nov 2024 22:26:38 -0500 (EST) Content-Language: en-US In-Reply-To: Received-SPF: pass client-ip=202.12.124.154; envelope-from=dmitry@gutov.dev; helo=fhigh-b3-smtp.messagingengine.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 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_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_SBL_A=0.1 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:325864 Archived-At: On 29/11/2024 20:09, Stefan Monnier via Emacs development discussions. wrote: > In any case I was thinking of a UI that's not specific to tree-sitter > that works as follows: > > (defun change-major-mode (newmode) > (interactive (list (read-the-new-mode))) > (cond > ((eq major-mode (the-mode-normally-selected-by-auto-mode-alist)) > (setf (alist-get major-mode major-mode-remap-alist) newmode) > (when (called-interactively-p) > (customize-mark-as-set 'major-mode-remap-alist))) > (t > (let ((regexp (guess-regexp buffer-file-name))) > (add-to-list 'auto-mode-alist (cons regexp newmode)) > (when (called-interactively-p) > ...somehow convince Custom to do the above `add-to-list`...)))) > (funcall newmode)) That sounds interesting, especially the 'guess-regexp' part. I think it would make it ineligible for calling from the init script, though, which could be a preference for many. > `read-the-new-mode` could use a variable like Dmitry's > `treesit--mode-associations` to provide good defaults. > > BTW, this var shouldn't be set like in his patch, IMO but via > > ###;;;autoload > (add-to-list 'treesit--mode-associations (javascript-mode . js-ts-mode)) TBF one of my goals for the later patches was to avoid adding new public "registry" variables, like treesit-auto-mode-alist, treesit-major-mode-remap-alist, treesit-interpreter-mode-alist, etc. It seems like having more of them can be a source of confusion, and it's not obvious that using them in 3rd party modes would be a benefit. > and its name should not be treesitter-specific either, then. ...But perhaps you have a more general purpose in mind for them. > We could also have a command `treesit-enable-all-mode` which uses > a variable `treesit-mode-grammars` (an alist mapping modes to grammars, > setup via the same kind of autoload+add-to-list as above), to add to > `major-mode-remap-alist` all the TS modes for which the user has > installed the corresponding grammar. It seemed to me that users might first choose the modes/languages they want, and then be told (sometimes with warnings) which grammars are still missing or cannot be found by Emacs somehow. But there can be different ways of looking at it.