From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?Q?Daniel_Mart=C3=ADn?= Newsgroups: gmane.emacs.devel Subject: Re: Tree sitter: Should *-ts-modes derive from a common base? Date: Wed, 22 Mar 2023 11:07:02 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30548"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (darwin) Cc: emacs-devel@gnu.org To: Phil Sainty Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Mar 22 11:08:12 2023 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 1pevO7-0007k2-GI for ged-emacs-devel@m.gmane-mx.org; Wed, 22 Mar 2023 11:08:11 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pevNE-0005jk-02; Wed, 22 Mar 2023 06:07:16 -0400 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 1pevNC-0005is-Fr for emacs-devel@gnu.org; Wed, 22 Mar 2023 06:07:14 -0400 Original-Received: from sonic306-19.consmr.mail.ir2.yahoo.com ([77.238.176.205]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pevNA-0006Fk-CN for emacs-devel@gnu.org; Wed, 22 Mar 2023 06:07:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.es; s=s2048; t=1679479626; bh=VhqGAntGReHcehXmTFGDC0iTV7D5sAkDRsuLTw12F4c=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=C9O3sXU1rYjZWhakQ9gbHl5RxAztzqQf7Tj7uV5j5lLiM4jKQTvL6qVR7kg3MiCbS9xqR81GsOcVP0Ci1JOQJ/eyEQRRZPAPC/x6uPmlU12WaYjfIsCi8vpMS/d8GpDsAnfGFVrbn6QtjQWd1iKAG+6OWTmm5q5DJoEW9w4ZfuJ7wV+j/h7w7G1kpNie7z7RqUgRRcxzvsOJsWQcksXdWKkr+s6FmflJHtcpC5fau1ZDzi8oCfGe8j1RhYesipuh9H4U8LqONR9zO9lfzBXZDcR0/qLJvGSnBA08l9T0uTsztMyaCjLrp0ktjX0nCHsvay1JXfY3Rzd1lCgUaCzahg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1679479626; bh=itcntth9dg91eTxcdWpsxdyf4k/qMc62AHkAHj6PWyg=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=dY7lpt0jDRcM8/rrJGpQy2jNXLoaCPBFR6sBG+FZtdcb/dyMghO2QLo4ZEambEv4219uI1wmQkwe+0A9CkhkO/OmPI7Zb8q2qtqVRhZ1Zl8pnEWiGlNbc449K+5uResvApTscBTxGhrpbDp4tUNCoIG0GPcHFoIYwpZaLqboiHUbvXIPSzVf9UjYwJSKUShl/SoHTwsCGilVcvzXFC5d5JWzfpNlrTSoawqbjnb0yUaQ+9wRSXBxvuWYSWi0dkANlpwOCnwpaCgfjw9b+cDAUJuAJKtPCGeVFzMRIwETln+syx7O6ONyx592ucsVh4j5sVNflx8/A5AU3WYt6tQfvw== X-YMail-OSG: WSef0fMVM1lWaEoQQ9WlQyzSdFZPPhd.R4wMq8XiOxyuo_C1lT5YpyrbZoQMR2a _DpGOXcVJHP6OEKHD5QwwPgaOrTKLDIi3M8Fs0X6kwvw7OgjL3spNK3ymElfnGY7429RlHFmpZTn W6_s3B9LuVczuwekFtayhQCmujwICbUaGK.MYRuYXral2H53DUbyv7qpxPSf8jzKR2vTgQg9_Xch DcToTPHzDnPH5oEVsOXmgx_sVhAUy_QVDMTQn80y5p6pli_kDla5AICE3BBRf_oH45IYkANjzNz3 RMWIKbl9eFIaK7A1VYcASwjiodD5QfI.wE._UKL3E4qamy6MaDjeNU3a6YpRbH5NKYCyXBfrzz49 0JuSnnb442Z5N4Td8NO2sUacjDCgefcKphLwHo4H9waErFpkGssgEuvx2OVbwi3pVwioC16e9WyG EyjQpfBrhSjWoXHKZiJINGsV2HWNUBiLR5F37lnQYfwz21LdaihV.NLAIwjua6MWqjlFVHkFlI4. tDj9r38fYjImR75kAIh1GBruPiaAKg_14axaY5_VVNzJoFn1nCA3tBlZ6S0LJXDwLxk3dF2w4Ijg 9yLTXPbTHDgbK3l8sWroZQJCfGPAmyMzrsI_fAFJ.jr6fqYGZJ.wqsvd7s5FtAkgQabmSr6xZ_72 lRA3L_fgTozsMcuNepq7PHRk09KvQPjby1jnQu1FK3lKGzdbuIR2wkrcKyxXP0wZLkdYDZAhFLJq 1KH.08RczEQWujx.oNnq_0T7sUB5leEaF_nQdE8p2KtczdwHTi_gPS467Z4uGl8YkrC5vJWd6J0d GZ6HZkg39UU5zWsFT3uso9dMYuEm77gCqx8.YE6T4q X-Sonic-MF: X-Sonic-ID: 72f2f9a9-bfca-497b-96ed-6b33469f5b32 Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.ir2.yahoo.com with HTTP; Wed, 22 Mar 2023 10:07:06 +0000 Original-Received: by hermes--production-ir2-5b7d458747-bjknm (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID ee10157f80e6abb6121afe9ce485b6c8; Wed, 22 Mar 2023 10:07:03 +0000 (UTC) In-Reply-To: (Phil Sainty's message of "Tue, 21 Mar 2023 22:30:52 +1300") X-Mailer: WebService/1.1.21311 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Received-SPF: pass client-ip=77.238.176.205; envelope-from=mardani29@yahoo.es; helo=sonic306-19.consmr.mail.ir2.yahoo.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, 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.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:304699 Archived-At: Phil Sainty writes: > WRT > https://emacs.stackexchange.com/questions/76400/how-do-i-check-if-the-current-buffer-has-a-treesit-parser > > I wondered whether derived-mode-p could conveniently establish > some kind of base ts-mode, but that doesn't appear to be the case > (or at least not for the examples I looked at). > > I was pondering something like this: > > (define-derived-mode prog-ts-mode prog-mode "Prog(TS)" > "Major mode for editing source code with tree-sitter support.") > > And then all the *-ts-mode derivatives of prog-mode changed like so: > > - (define-derived-mode cmake-ts-mode prog-mode "CMake" > + (define-derived-mode cmake-ts-mode prog-ts-mode "CMake" > > The case I've spotted thus far which wouldn't work is the CSS modes, > where we have this: > > (define-derived-mode css-base-mode prog-mode "CSS" > (define-derived-mode css-mode css-base-mode "CSS" > (define-derived-mode css-ts-mode css-base-mode "CSS" > Adding a common Tree-sitter base mode might be useful for some use cases we'd need to describe in more detail, but I don't think it's the best solution for the problem of checking if a Tree-sitter parser is available or not. For example, some major modes offer Tree-sitter functionality without introducing a specific new Tree-sitter-based major mode, so having a common inheritance wouldn't help here, I think. Aren't (treesit-parser-list BUFFER) and (treesit-parser-language PARSER) the best ways to check if Tree-sitter can be used in a particular buffer, for a particular language?