From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Yuan Fu Newsgroups: gmane.emacs.bugs Subject: bug#61235: 30.0.50; tree-sit: `treesit-node-check' lacks a way to tell if a node belongs to a deleted parser Date: Mon, 6 Feb 2023 20:55:38 -0800 Message-ID: <4C7AB77E-FBB6-4F34-A73A-297243E2E3AF@gmail.com> References: <83edr3q8ez.fsf@gnu.org> <87o7q7dl4o.fsf@masteringemacs.org> <83a61rq6ck.fsf@gnu.org> <87k00uexdt.fsf@masteringemacs.org> <835yceris5.fsf@gnu.org> <87fsbievbi.fsf@masteringemacs.org> <83y1paq0pd.fsf@gnu.org> <83ilgep2ww.fsf@gnu.org> Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.300.101.1.3\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_095F708C-51FC-40E8-9975-1E3905E416BA" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24023"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 61235@debbugs.gnu.org, Mickey Petersen To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 07 05:56:20 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1pPG1k-000652-C0 for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 07 Feb 2023 05:56:20 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pPG1U-0006x8-Rm; Mon, 06 Feb 2023 23:56:04 -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 1pPG1T-0006wB-VV for bug-gnu-emacs@gnu.org; Mon, 06 Feb 2023 23:56:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pPG1T-0002YG-1R for bug-gnu-emacs@gnu.org; Mon, 06 Feb 2023 23:56:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pPG1S-00013n-Gu for bug-gnu-emacs@gnu.org; Mon, 06 Feb 2023 23:56:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Yuan Fu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Feb 2023 04:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61235 X-GNU-PR-Package: emacs Original-Received: via spool by 61235-submit@debbugs.gnu.org id=B61235.16757457584062 (code B ref 61235); Tue, 07 Feb 2023 04:56:02 +0000 Original-Received: (at 61235) by debbugs.gnu.org; 7 Feb 2023 04:55:58 +0000 Original-Received: from localhost ([127.0.0.1]:50683 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pPG1N-00013R-SK for submit@debbugs.gnu.org; Mon, 06 Feb 2023 23:55:58 -0500 Original-Received: from mail-pg1-f180.google.com ([209.85.215.180]:35639) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pPG1M-00013E-9N for 61235@debbugs.gnu.org; Mon, 06 Feb 2023 23:55:56 -0500 Original-Received: by mail-pg1-f180.google.com with SMTP id n2so7102999pgb.2 for <61235@debbugs.gnu.org>; Mon, 06 Feb 2023 20:55:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=spjDL0/GGaWlh5RDaV4DQp3n58UddRdSwiL8sqxIQsg=; b=Sfjty9j1E5ePQlMoOFdsJobtZM2/P9pP6ZsF16DysAhE/si8bJWw+7Xf59MUA6PeDP g04zJAdpXdB3fVUK6CN0zFC9m1NIZ0PkKA/O4cEzc5qw5fGmkXQ8uzjAKu2ceqkc8wov 1dcf/h2RMppJafBBPMZ6HiboWxC85wSenhkSepb48T1zfC7RSKUWbi56fwWFx7/TpuyH 5H9bnTCTyPOmMEDMSWh7Bu1YuYO2Q0F6h087SES+z+k0ayyPHmkDhQL1U55I0064EDMf huzLdsIiSKJdQsHT48ttdkvCf7FdJC6EleMKmgw85UqbMR2QXygBJ1hlLFUCyOtg2EBR QnOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=spjDL0/GGaWlh5RDaV4DQp3n58UddRdSwiL8sqxIQsg=; b=uMYFs2Egv8NI3JhFqExinQvYhY2b4FdnSAXdjyUq36+p2dwvYRWyOsppCecIkmlDl3 T9CRvWOEktTsrtXOmdwVi/yEcV6l+d9W6G8V3mIpgmu8B/k1IhUeHFcIyGVeWSrNfPBS qqaVysSbZ/O82jxU0Dcz9s2lLh+OMcnmNaiaDjvad9BawpefQiC0el0fyztMrq6JEH4R nGQuXNCrWVxPhRiNuOV+a0Pe8ZmAZ+TGs6BIDoXEkkYCjC3HHgKXswav+sH6q0WjcTfQ O1VIq++JXF3bsaXk1mJonED78hdrZiwADQtqeyqPZIapSWjZSB4pnW17fc0rQE5r7laZ ujJg== X-Gm-Message-State: AO0yUKVBx46nzA5Ju/+7/TfNBnt6PDq+NwN8MUv/cqYZuil1EDD4qL7y VUoTEGhWD1BgjiS2Oniyb9k= X-Google-Smtp-Source: AK7set8xNPLGm69L+wuLTx2oFb1Z9HkFoF34bLkj8UzsCpMykvoqjLFodqW2Cr9XXez2JXXhDK8z7w== X-Received: by 2002:a62:184c:0:b0:5a7:a3dd:e5fa with SMTP id 73-20020a62184c000000b005a7a3dde5famr774346pfy.32.1675745750143; Mon, 06 Feb 2023 20:55:50 -0800 (PST) Original-Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id z9-20020aa79589000000b0058e23ca0ca7sm8024784pfj.3.2023.02.06.20.55.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 Feb 2023 20:55:49 -0800 (PST) In-Reply-To: <83ilgep2ww.fsf@gnu.org> X-Mailer: Apple Mail (2.3731.300.101.1.3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:255019 Archived-At: --Apple-Mail=_095F708C-51FC-40E8-9975-1E3905E416BA Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Feb 6, 2023, at 7:31 PM, Eli Zaretskii wrote: >=20 >> From: Yuan Fu >> Date: Mon, 6 Feb 2023 19:00:30 -0800 >> Cc: Mickey Petersen , >> 61235@debbugs.gnu.org >>=20 >>> Yuan, any reason not to extend treesit-node-check instead? >>=20 >> I did extend treesit-node-check in the patch. But I also added a = function treesit-parser-live-p, which makes the same check but directly = on a parser. It just made sense to me that if we let treesit-node-check = check the nodes=E2=80=99 parser=E2=80=99s status, we=E2=80=99d also add = a function to allow directly checking the status of a parser. >=20 > That additional function would signal an error in the case discussed > here, so I'm not sure we should add it in that shape, or at all. Why > isn't treesit-node-check enough? Oops, it shouldn=E2=80=99t have. The updated patch fixes that. = Treesit-node-check is enough, it just made more sense = implentattion-wise, to implement that function that checks a parser, and = let treesit-node-check use that function to check the node=E2=80=99s = parser. We can choose to not expose that function, and only expose this = feature through treesit-node-check, if you prefer so. Yuan --Apple-Mail=_095F708C-51FC-40E8-9975-1E3905E416BA Content-Disposition: attachment; filename=livep.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="livep.patch" Content-Transfer-Encoding: quoted-printable =46rom=2008765f4f61d63398307e3401313c45a60d65edee=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Sun,=20= 5=20Feb=202023=2020:22:52=20-0800=0ASubject:=20[PATCH]=20Demo=0A=0A---=0A= =20src/treesit.c=20|=2026=20+++++++++++++++++++++++---=0A=201=20file=20= changed,=2023=20insertions(+),=203=20deletions(-)=0A=0Adiff=20--git=20= a/src/treesit.c=20b/src/treesit.c=0Aindex=208e772523cc7..f2c3e9845d1=20= 100644=0A---=20a/src/treesit.c=0A+++=20b/src/treesit.c=0A@@=20-1471,6=20= +1471,19=20@@=20DEFUN=20("treesit-parser-language",=0A=20=20=20return=20= XTS_PARSER=20(parser)->language_symbol;=0A=20}=0A=20=0A+DEFUN=20= ("treesit-parser-live-p",=0A+=20=20=20=20=20=20=20= Ftreesit_parser_live_p,=20Streesit_parser_live_p,=201,=201,=200,=0A+=20=20= =20=20=20=20=20doc:=20/*=20Check=20whether=20PARSER=20is=20not=20deleted=20= and=20its=20buffer=20is=20live.=20=20*/)=0A+=20=20(Lisp_Object=20parser)=0A= +{=0A+=20=20if=20(XTS_PARSER=20(parser)->deleted)=0A+=20=20=20=20return=20= Qnil;=0A+=20=20else=20if=20(NILP=20(Fbuffer_live_p=20(XTS_PARSER=20= (parser)->buffer)))=0A+=20=20=20=20return=20Qnil;=0A+=20=20else=0A+=20=20= =20=20return=20Qt;=0A+}=0A+=0A=20/***=20Parser=20API=20*/=0A=20=0A=20= DEFUN=20("treesit-parser-root-node",=0A@@=20-1904,7=20+1917,8=20@@=20= DEFUN=20("treesit-node-check",=0A=20=20=20=20=20=20=20=20= Ftreesit_node_check,=20Streesit_node_check,=202,=202,=200,=0A=20=20=20=20= =20=20=20=20doc:=20/*=20Return=20non-nil=20if=20NODE=20has=20PROPERTY,=20= nil=20otherwise.=0A=20=0A-PROPERTY=20could=20be=20`named',=20`missing',=20= `extra',=20`outdated',=20or=20`has-error'.=0A+PROPERTY=20could=20be=20= `named',=20`missing',=20`extra',=20`outdated',=0A+`has-error',=20or=20= `live'.=0A=20=0A=20Named=20nodes=20correspond=20to=20named=20rules=20in=20= the=20language=20definition,=0A=20whereas=20"anonymous"=20nodes=20= correspond=20to=20string=20literals=20in=20the=0A@@=20-1920,7=20+1934,9=20= @@=20DEFUN=20("treesit-node-check",=0A=20the=20node=20was=20created.=0A=20= =0A=20A=20node=20"has=20error"=20if=20itself=20is=20a=20syntax=20error=20= or=20contains=20any=20syntax=0A-errors.=20=20*/)=0A+errors.=0A+=0A+A=20= node=20is=20"live"=20if=20its=20parser=20is=20live=20(i.e.,=20not=20= deleted).=20=20*/)=0A=20=20=20(Lisp_Object=20node,=20Lisp_Object=20= property)=0A=20{=0A=20=20=20if=20(NILP=20(node))=20return=20Qnil;=0A@@=20= -1943,9=20+1959,11=20@@=20DEFUN=20("treesit-node-check",=0A=20=20=20=20=20= result=20=3D=20ts_node_is_extra=20(treesit_node);=0A=20=20=20else=20if=20= (EQ=20(property,=20Qhas_error))=0A=20=20=20=20=20result=20=3D=20= ts_node_has_error=20(treesit_node);=0A+=20=20else=20if=20(EQ=20= (property,=20Qlive))=0A+=20=20=20=20result=20=3D=20= Ftreesit_parser_live_p=20(XTS_NODE=20(node)->parser);=0A=20=20=20else=0A=20= =20=20=20=20signal_error=20("Expecting=20`named',=20`missing',=20= `extra',=20"=0A-=09=09=20=20"`outdated',=20or=20`has-error',=20but=20= got",=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= "`outdated',=20`has-error',=20or=20`deleted',=20but=20got",=0A=20=09=09=20= =20property);=0A=20=20=20return=20result=20?=20Qt=20:=20Qnil;=0A=20}=0A= @@=20-3444,6=20+3462,7=20@@=20syms_of_treesit=20(void)=0A=20=20=20DEFSYM=20= (Qextra,=20"extra");=0A=20=20=20DEFSYM=20(Qoutdated,=20"outdated");=0A=20= =20=20DEFSYM=20(Qhas_error,=20"has-error");=0A+=20=20DEFSYM=20(Qlive,=20= "live");=0A=20=0A=20=20=20DEFSYM=20(QCanchor,=20":anchor");=0A=20=20=20= DEFSYM=20(QCequal,=20":equal");=0A@@=20-3577,6=20+3596,7=20@@=20= syms_of_treesit=20(void)=0A=20=20=20defsubr=20(&Streesit_parser_list);=0A= =20=20=20defsubr=20(&Streesit_parser_buffer);=0A=20=20=20defsubr=20= (&Streesit_parser_language);=0A+=20=20defsubr=20= (&Streesit_parser_live_p);=0A=20=0A=20=20=20defsubr=20= (&Streesit_parser_root_node);=0A=20=20=20/*=20defsubr=20= (&Streesit_parse_string);=20*/=0A--=20=0A2.33.1=0A=0A= --Apple-Mail=_095F708C-51FC-40E8-9975-1E3905E416BA--