Received: (at 74963) by debbugs.gnu.org; 30 Jan 2025 07:22:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 02:22:28 2025 Received: from localhost ([127.0.0.1]:44089 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tdOsd-0004hr-N6 for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 02:22:28 -0500 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:37679) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tdOsb-0004hU-79 for 74963 <at> debbugs.gnu.org; Thu, 30 Jan 2025 02:22:26 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 954E3443F1; Thu, 30 Jan 2025 07:22:15 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <E55A7CB4-0389-4E5B-B7E0-9146F27E35A3@HIDDEN> (Yuan Fu's message of "Fri, 17 Jan 2025 23:59:52 -0800") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <87ldw5o7cp.fsf@HIDDEN> <87ed17i4ve.fsf@HIDDEN> <C50D9079-20CC-4D9B-969F-51FB5EB79938@HIDDEN> <87seplltn6.fsf@HIDDEN> <E55A7CB4-0389-4E5B-B7E0-9146F27E35A3@HIDDEN> Date: Thu, 30 Jan 2025 09:15:58 +0200 Message-ID: <87msf8zs9d.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-State: clean X-GND-Score: 0 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdehvddtucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecunecujfgurhephffvvefujghofhffkfgfgggtgfesthekredttderjeenucfhrhhomheplfhurhhiucfnihhnkhhovhcuoehjuhhriheslhhinhhkohhvrdhnvghtqeenucggtffrrghtthgvrhhnpeeiffetjeegheffjeeutdeihfdukeegjeetkeeigfevueehtedvfeegkeekveekudenucfkphepledurdduvdelrdeliedrledtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepledurdduvdelrdeliedrledtpdhhvghlohepmhgrihhlrdhgrghnughirdhnvghtpdhmrghilhhfrhhomhepjhhurhhisehlihhnkhhovhdrnhgvthdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejgeelieefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtoheptggrshhouhhrihesghhmrghilhdrtghomh X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >>> Also, I finally added support for ‘and’, ‘named’ and ‘anonymous’. I haven’t test it yet (sorry). >> >> Thanks! Does it make sense also to add predicates to define >> whether the node names should be matched completely? >> Then maybe add two separate predicates for strict and lax matching, >> e.g. for the same thing as above: >> >> (sentence >> (or (strict ,(rx (or "declaration" >> "enum_specifier" >> "union_specifier"))) >> (lax ,(rx (or "preproc" >> "statement"))))) > > Hmm, I don’t know. Seems messy to implement, and we already have > perfectly good solution: rx with bos or eos. Ok, will use rx with bos and eos. I have another question: in c-ts-mode forward-sentence was intended to stop after a semicolon. So I tried to modify the sentence thing to match semicolons inside the for_statement, e.g.: for (i = 0; i < 2; ++i) => (for_statement for ( condition: (assignment_expression left: (identifier) operator: = right: (number_literal)) ; body: (binary_expression left: (identifier) operator: < right: (number_literal)) ; (update_expression operator: ++ argument: (identifier)) ) where semicolons are after field names "condition" and "body". But can't find a way to specify such field names for the node "for_statement". Shouldn't treesit-thing-settings allow specifying field names as well? Or this is achievable only by writing a lambda?
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 18 Jan 2025 08:00:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 18 03:00:13 2025 Received: from localhost ([127.0.0.1]:39893 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tZ3ka-0005j2-NM for submit <at> debbugs.gnu.org; Sat, 18 Jan 2025 03:00:13 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:53532) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1tZ3kY-0005cd-23 for 74963 <at> debbugs.gnu.org; Sat, 18 Jan 2025 03:00:11 -0500 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-21619108a6bso50660185ad.3 for <74963 <at> debbugs.gnu.org>; Sat, 18 Jan 2025 00:00:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737187204; x=1737792004; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=fACIiAbdA0OmqVRJ5xf9FTIocAQV5G4NEgyTMwn53GM=; b=NkyR/XceXCRRBbR5ONP7pi1uduPcdaGSy7v7EE7KwmgBNdOAOO4rMHSuZDO26nFY0G Tw2Mz1q+DAQTBtOmsS2mAJ7azVzLqXz8hQYVwvDnNDTjanqIJoedf6hjmi5vdfhhTcEH eNAfQ9Wi/pkw6PTsVtyNUcxwkecGvulOTX8mKYO6qmwcr/y2P6rhsq+SMPIHVy6coLrE Yn/adZbtEJs7EVFilnhH3hOwXFIC3qgwhC9SbhCwQWucHAU1k+02l8DWb1haNPRmiRjk XyhQ3lPY6eDs162fv/sL5SXNHTYYJoejPb8wRnAni9qarRhWEHK4bRCHpOMSFEAvQ/lB qXUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737187204; x=1737792004; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fACIiAbdA0OmqVRJ5xf9FTIocAQV5G4NEgyTMwn53GM=; b=uS+o87A0zqMj0pGU+DHoX/UL0pcfRniHALuEKaZOTyqvt76a4mX0AKzlSrmSxpThKy ZOiwdNd9QtI3fEyFjjV4hpAXdgfDwmOKUn1HPbhvbgHkes3i7d1jquS/JS8LOdVDgDZ8 6v1iBG5yPPArRGRfll3Ks/foqZPGfab6cEx549DyyIDw2YRygRKOj57hkv9kZFRDUkOy y6gzRJkqNQZR8qRLG90l1Lir6Gbf50GqN8Iebxm/MBkXBiE7/qNrLCaXEfs0pf2Djvve HbtSybs+xdWJrqEMm34HFO7yCZem2tsXMzyN+j7ORTIoDz+8I8l5VqInSVSh2J7rLidk tEqA== X-Forwarded-Encrypted: i=1; AJvYcCUQFT2kz0kykVGTxS1Dz4nZPH9YZLJ85ZROgeufExRwPpXE15+ScNf5xyLPALCMZyK9/GzhnA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YziiYTa1gL4O65Bu/gL8tj5YBSCS/oTY3t8TELyHyguMRyz9S6H /vkeH3O/2DvKYaFsHVSX0NE+gbvRTwDV0k4+AIRSES2IKJclyY3RjjFAKdgK X-Gm-Gg: ASbGncuAX8txj7geshag7BMMiy8OgAD0JIB4GAsGKtclm6hziUg1Dq1tgUUhlUiWtA/ 5f9QitLl9muNh8evf10JfvetDhUJmFnwD0EFERfusEpJ6beaEuRFBRrZ/C/XWsiXE/abvbiA6// AI64EOJxqRkqSCPemJna4Nh7i2lIkChgIBkwqx7hu/pVbn31YV2EuNdo++KvS+MZfgAzPYypBkp xg7SQpFxoO8D/5qXKvynZhcaC+AY6RclwssUhDDx1P9D0Wjb1JbK/yFZBEWlOqbJVpJ7+nQ/zCv PgpX5gOyQ7FwrpKFRA== X-Google-Smtp-Source: AGHT+IGGVpkFb1jU2sy5CvhKfGTuXIKGKWiF6INwDKJ6IO6ZAVExLbdGgbkvOlzJqsJ8S3DJdOXH/w== X-Received: by 2002:a17:902:ebcd:b0:212:6187:6a76 with SMTP id d9443c01a7336-21c354016c5mr97253005ad.14.1737187203956; Sat, 18 Jan 2025 00:00:03 -0800 (PST) Received: from smtpclient.apple ([2601:646:8f81:6120:54ae:938b:8aa9:b810]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21c2ce9ff57sm27156395ad.46.2025.01.18.00.00.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 18 Jan 2025 00:00:03 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <87seplltn6.fsf@HIDDEN> Date: Fri, 17 Jan 2025 23:59:52 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <E55A7CB4-0389-4E5B-B7E0-9146F27E35A3@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <87ldw5o7cp.fsf@HIDDEN> <87ed17i4ve.fsf@HIDDEN> <C50D9079-20CC-4D9B-969F-51FB5EB79938@HIDDEN> <87seplltn6.fsf@HIDDEN> To: Juri Linkov <juri@HIDDEN> X-Mailer: Apple Mail (2.3776.700.51) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Jan 13, 2025, at 11:52=E2=80=AFPM, Juri Linkov <juri@HIDDEN> = wrote: >=20 >>> (sentence >>> ,(rx (or (and bos (or "declaration" >>> "enum_specifier" >>> "union_specifier") >>> eos) >>> (or "preproc" >>> "statement")))) >>=20 >> Looks good. I=E2=80=99ve always used rx, it has the additional = benefit of being macro expanded at compile time. >>=20 >> Also, I finally added support for =E2=80=98and=E2=80=99, =E2=80=98named= =E2=80=99 and =E2=80=98anonymous=E2=80=99. I haven=E2=80=99t test it yet = (sorry). >=20 > Thanks! Does it make sense also to add predicates to define > whether the node names should be matched completely? > Then maybe add two separate predicates for strict and lax matching, > e.g. for the same thing as above: >=20 > (sentence > (or (strict ,(rx (or "declaration" > "enum_specifier" > "union_specifier"))) > (lax ,(rx (or "preproc" > "statement"))))) Hmm, I don=E2=80=99t know. Seems messy to implement, and we already have = perfectly good solution: rx with bos or eos. Yuan=
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 14 Jan 2025 07:55:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 14 02:55:45 2025 Received: from localhost ([127.0.0.1]:53819 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tXbm5-0001su-8K for submit <at> debbugs.gnu.org; Tue, 14 Jan 2025 02:55:45 -0500 Received: from relay6-d.mail.gandi.net ([217.70.183.198]:57343) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tXbm3-0001sa-8D for 74963 <at> debbugs.gnu.org; Tue, 14 Jan 2025 02:55:44 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id CDA0FC000C; Tue, 14 Jan 2025 07:55:35 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <C50D9079-20CC-4D9B-969F-51FB5EB79938@HIDDEN> (Yuan Fu's message of "Sun, 12 Jan 2025 23:47:33 -0800") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <87ldw5o7cp.fsf@HIDDEN> <87ed17i4ve.fsf@HIDDEN> <C50D9079-20CC-4D9B-969F-51FB5EB79938@HIDDEN> Date: Tue, 14 Jan 2025 09:52:13 +0200 Message-ID: <87seplltn6.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@HIDDEN X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.5 (---) >> (sentence >> ,(rx (or (and bos (or "declaration" >> "enum_specifier" >> "union_specifier") >> eos) >> (or "preproc" >> "statement")))) > > Looks good. I’ve always used rx, it has the additional benefit of being macro expanded at compile time. > > Also, I finally added support for ‘and’, ‘named’ and ‘anonymous’. I haven’t test it yet (sorry). Thanks! Does it make sense also to add predicates to define whether the node names should be matched completely? Then maybe add two separate predicates for strict and lax matching, e.g. for the same thing as above: (sentence (or (strict ,(rx (or "declaration" "enum_specifier" "union_specifier"))) (lax ,(rx (or "preproc" "statement")))))
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 13 Jan 2025 07:47:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 13 02:47:54 2025 Received: from localhost ([127.0.0.1]:50016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tXFAv-0007z1-OV for submit <at> debbugs.gnu.org; Mon, 13 Jan 2025 02:47:54 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:53549) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1tXFAu-0007yp-9b for 74963 <at> debbugs.gnu.org; Mon, 13 Jan 2025 02:47:52 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-21619108a6bso66282185ad.3 for <74963 <at> debbugs.gnu.org>; Sun, 12 Jan 2025 23:47:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736754466; x=1737359266; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=M1DBbQKq2WmApNqXC76nA9b6+HpO2wBOIRGtMGmp924=; b=jVD0Qj0MpfLFI+k0QettaspKG56UMvdbCdZqn80x4yf9WNK6YXrtFVwhHkVdpVgeRx OTDWNEdEPmgm1wuY821jaSPwzrplnVzgOu7952xvUOle9scAKv3OPfPR5FxY8oVOc3lH +vkGZD6txwiHtRv1j0D82I9xaNMTwOSrRfU8Sitia4w7EkjSRoo8JUpC33S4R4a0/24/ J6rqoNyVrUf1gaePlZLQNyJhY5KQARG8qG/Sspb34RP9BJKb5ni4SknGV9SOEcFEONjk 5V59dTSf5SAk0zdN4VCkl9xzzU3h+neZc3Rva+7oLybMCzGypHEwqmGSVENabwMtd2KM wrog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736754466; x=1737359266; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M1DBbQKq2WmApNqXC76nA9b6+HpO2wBOIRGtMGmp924=; b=op0YkBx3yGBtu/4xmal/PZTgH4LNsLBChG7RIILkRZtMZz2h9dq2JfHIzdCC/SYu9v TszsZQSafWnxvTXJHYvmCD/5RUYS9dH4UsUN9VCfrBcj0nLIrnDGi2G7NBRCeNmFT9lI Peqs+0zk4i/oV7LRH4qNh61cFhIX0xTGf62j/38TGBD6fjJx6p0O9ddAaEVR1GD0KX/y 6zqVklDYwdMuArcG+FyDBAdLwScxqwdGBcGWcVR9G6vVshEbiDPb00uOLkLz+hmQUBzu 5Q6gKAvr6+kGHf7nSToqXNHLA+x32vgOnSncSupIuONpqe95FmEUvy+PF+gzpv7/yTR2 hKIA== X-Forwarded-Encrypted: i=1; AJvYcCXNkwKpEE3N7lkiTJuH2xSpTJRP/yeh2pUE9JhKbkQzfeVoSCvZ5tKw+A1o44nldX66wEriag==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxkKGjNPuSg2el/LpzZ17484C4W0XLRl0AuRlHeuaUuI/nG68Uz fwFG9abXpTnYdOVNori59HPTDtGnInTPxS+oCYP1ZWBsWKEFOiXL X-Gm-Gg: ASbGncuLNQ6EoaI0gbgsU3x6uiwSwcvsT7JuOltr8x3Fe6Ba0x1hLF3Y/K4dFNaHAfO nMERHWSpIq/MacmlDj32XakpzIy3yB2mM4ahglgQ5+0rHxUTPCO2TDOpKKtKdKAznaduI5P4kPx tUuIu2rN2QYuobQEbVTTywUETFkW5iXZgwyuijfJuoc4n2IhC7WxqAch3uj/NjF2b83NTiSEEhY CJilZZTwLHVlB1cJm95/l1R4Y5gyVE0MkPM83C5lTgq86hbBpbV++cPRNEwQc+mQl2S05lTtJMe A977 X-Google-Smtp-Source: AGHT+IGwxhTvFrnTNFGiBNvwZC9XuYV1QpPLROwqigRGPfz8wiHHQDOE/DCKlk9NJbu70nMmUpb8hA== X-Received: by 2002:a17:903:24e:b0:216:794f:6d7d with SMTP id d9443c01a7336-21a83ffc1fcmr316349635ad.48.1736754465994; Sun, 12 Jan 2025 23:47:45 -0800 (PST) Received: from smtpclient.apple ([2601:646:8f81:6120:c04e:a612:3dd1:a163]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21a9f219a94sm48594295ad.129.2025.01.12.23.47.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Jan 2025 23:47:44 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <87ed17i4ve.fsf@HIDDEN> Date: Sun, 12 Jan 2025 23:47:33 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <C50D9079-20CC-4D9B-969F-51FB5EB79938@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <87ldw5o7cp.fsf@HIDDEN> <87ed17i4ve.fsf@HIDDEN> To: Juri Linkov <juri@HIDDEN> X-Mailer: Apple Mail (2.3776.700.51) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Jan 12, 2025, at 11:31=E2=80=AFPM, Juri Linkov <juri@HIDDEN> = wrote: >=20 >> I see that all ts-modes solve this common problem each in its own way >> (here 'list' indicates a list of strings that should match node = names): >>=20 >> c-ts-mode: (regexp-opt list 'symbols) >> js-ts-mode: (concat "\\_<" (regexp-opt list t) "\\_>") >> java-ts-mode: (rx (or list)) >> ruby-ts-mode: (rx bol (or list) eol) >>=20 >> Currently there is no uniform way to handle this frequent need. >> 'concat' like above looks too ugly, but 'regexp-opt' with the >> 'symbols' arg produces a strange regexp for matching symbols. >=20 > I was thinking about adding two functions treesit-regexp-strict > and treesit-regexp-lax. But then discovered that some things > require specifying both strict and lax matches for the same thing. > For example, take treesit-thing-settings from c-ts-mode: >=20 > (sentence > ,(regexp-opt '("preproc" > "declaration" > "specifier" > "attributed_statement" > "labeled_statement" > "expression_statement" > "if_statement" > "switch_statement" > "do_statement" > "while_statement" > "for_statement" > "return_statement" > "break_statement" > "continue_statement" > "goto_statement" > "case_statement"))) >=20 > "preproc" can be lax, this is fine to match all preprocessor = directives. > But "declaration" should be strict and should not match = "parameter_declaration". > Also "specifier" should not match "attribute_specifier" and = "storage_class_specifier", > but only "enum_specifier" and "union_specifier" that end with the = semicolon. > Also no need to specify all statements separately, it should be = sufficient > to use lax match with "statement". >=20 > The most expressive language to specify all these requirements is the = rx macro, > so let's use it in ts-modes. Here is how the 'sentence' thing will = look like: >=20 > (sentence > ,(rx (or (and bos (or "declaration" > "enum_specifier" > "union_specifier") > eos) > (or "preproc" > "statement")))) Looks good. I=E2=80=99ve always used rx, it has the additional benefit = of being macro expanded at compile time. Also, I finally added support for =E2=80=98and=E2=80=99, =E2=80=98named=E2= =80=99 and =E2=80=98anonymous=E2=80=99. I haven=E2=80=99t test it yet = (sorry). Yuan=
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 13 Jan 2025 07:39:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 13 02:39:49 2025 Received: from localhost ([127.0.0.1]:49994 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tXF37-0007b0-He for submit <at> debbugs.gnu.org; Mon, 13 Jan 2025 02:39:49 -0500 Received: from relay7-d.mail.gandi.net ([217.70.183.200]:43709) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tXF35-0007aX-8K for 74963 <at> debbugs.gnu.org; Mon, 13 Jan 2025 02:39:48 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 9A2582000D; Mon, 13 Jan 2025 07:39:39 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <87ldw5o7cp.fsf@HIDDEN> (Juri Linkov's message of "Tue, 24 Dec 2024 09:41:58 +0200") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <87ldw5o7cp.fsf@HIDDEN> Date: Mon, 13 Jan 2025 09:31:01 +0200 Message-ID: <87ed17i4ve.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > I see that all ts-modes solve this common problem each in its own way > (here 'list' indicates a list of strings that should match node names): > > c-ts-mode: (regexp-opt list 'symbols) > js-ts-mode: (concat "\\_<" (regexp-opt list t) "\\_>") > java-ts-mode: (rx (or list)) > ruby-ts-mode: (rx bol (or list) eol) > > Currently there is no uniform way to handle this frequent need. > 'concat' like above looks too ugly, but 'regexp-opt' with the > 'symbols' arg produces a strange regexp for matching symbols. I was thinking about adding two functions treesit-regexp-strict and treesit-regexp-lax. But then discovered that some things require specifying both strict and lax matches for the same thing. For example, take treesit-thing-settings from c-ts-mode: (sentence ,(regexp-opt '("preproc" "declaration" "specifier" "attributed_statement" "labeled_statement" "expression_statement" "if_statement" "switch_statement" "do_statement" "while_statement" "for_statement" "return_statement" "break_statement" "continue_statement" "goto_statement" "case_statement"))) "preproc" can be lax, this is fine to match all preprocessor directives. But "declaration" should be strict and should not match "parameter_declaration". Also "specifier" should not match "attribute_specifier" and "storage_class_specifier", but only "enum_specifier" and "union_specifier" that end with the semicolon. Also no need to specify all statements separately, it should be sufficient to use lax match with "statement". The most expressive language to specify all these requirements is the rx macro, so let's use it in ts-modes. Here is how the 'sentence' thing will look like: (sentence ,(rx (or (and bos (or "declaration" "enum_specifier" "union_specifier") eos) (or "preproc" "statement"))))
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 27 Dec 2024 07:46:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 02:46:26 2024 Received: from localhost ([127.0.0.1]:44551 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tR53B-00019S-L1 for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 02:46:25 -0500 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:50321) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tR53A-00019D-GX for 74963 <at> debbugs.gnu.org; Fri, 27 Dec 2024 02:46:24 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 3F52D1BF206; Fri, 27 Dec 2024 07:45:54 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Dmitry Gutov <dmitry@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <8dc10f82-4400-4924-bb6b-dcd98bcb598d@HIDDEN> (Dmitry Gutov's message of "Thu, 26 Dec 2024 03:00:38 +0200") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <8abcb53c-1636-450d-ac0c-fdf44566ab95@HIDDEN> <87cyhg2nyu.fsf@HIDDEN> <8dc10f82-4400-4924-bb6b-dcd98bcb598d@HIDDEN> Date: Fri, 27 Dec 2024 09:42:47 +0200 Message-ID: <87ttaptws8.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Yuan Fu <casouri@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >>> Given that we're already calling a predicate every time (in >>> ruby-ts-mode), we might as well add one more check. See the patch at the >>> end. >> Thanks, I tried the patch. It was broken, so needed to edit manually. > > Maybe something regarding whitespace at the end? Something with whitespace, but not a big problem. >> Also the new key 'w' doesn't work in diff buffers, need to fix it as well. > > The binding for 'diff-kill-ring-save'? Seems to work here, as long as the > diff buffer is in read-only mode. Yes, 'W' with 'diff-kill-ring-save'. Single keys are still a problem in visited diff files. >>> Adding the check for "named" fixes the first two cases, but then C-M-f >>> inside "def" jumps to after "baaz". Could be worked around with a >>> special case, but I wonder what this difference comes from (haven't >>> properly debugged yet). >> I see no problems with your patch. Everything works nicely. > > Hmm, I can't reproduce it either anymore. > > Thanks for testing, pushed to master now (unfortunately the commit message > refers to bug#73404). Thanks. Maybe a helper for other ts-modes will be handy: (defun treesit-node-named (node) (treesit-node-check node 'named)) to be used like this (sexp ,(cons (treesit-match-nodes strings) 'treesit-node-named))
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 26 Dec 2024 01:00:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 20:00:51 2024 Received: from localhost ([127.0.0.1]:39438 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQcF9-00040E-4z for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 20:00:51 -0500 Received: from fhigh-a8-smtp.messagingengine.com ([103.168.172.159]:48061) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1tQcF7-0003zw-3c for 74963 <at> debbugs.gnu.org; Wed, 25 Dec 2024 20:00:50 -0500 Received: from phl-compute-06.internal (phl-compute-06.phl.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 116351140114; Wed, 25 Dec 2024 20:00:43 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Wed, 25 Dec 2024 20:00:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :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=1735174843; x=1735261243; bh=V7mrbDQp69bMq9T7n6sgLE4m/WsFjKutbQ6RC5LW+DY=; b= hIZ2eC0tiUr6BYZ87QQNin+UHiK1hd8Xiz4iMLQXyKIH9GJm0GvYYU/fq0Gp4z+/ rZyOsXvN1GiIr0JczXGaIZRFROLSbWLZrH5iba6bMuLXGjCbWlCjbY/XeP7id7Lz B1UPlHSk3Y91oE759Xq1LNlzyi7kBpx1T8M2dchCMXonw21MLSc6wTcahSs/NR2j UT4suR5WzsXr0Ca+1LBrbgvxs1ul71RwzhFcA4sCtMYjoWGCc9k66mjRLIlWBZOx 6myGGPRYaGtIzz9G+S+J4t/FTTlNN7YV6BVrYA5bkab/ZbbkiKGRMwLr3/HGoXZG vE6pun4TZ7F6/Jbe9CIuEQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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=fm2; t=1735174843; x= 1735261243; bh=V7mrbDQp69bMq9T7n6sgLE4m/WsFjKutbQ6RC5LW+DY=; b=Q CfX6OS5kgOJYihbFFYVXLYnt1RKexgZYrg7f8pte98t5jTQmlh7FJwgl2hdTRPMU +P8bkCTrgqupNz97O5r/EXEUsYqtBlDhujBgZt1cg2l+czBGbyGs66rT0IweGCgA d1TWDavm+68Hfvv/QM6qKLqN4SHfCplAdNWDzfN2V6TxNmvIVMh85NGq+FyWZJVM zjNUeZjgSJHSshL2pdTsdZEVtDua63U9UJdg40y66twSIrsVcs3tOaH9t5S9kWfJ 4i/NHu75p2S7p/Fn7YUGuCJnfNzxjPgXW82wO0aDCgkekGhbjrmQ7vYmqv3taxe3 m5JecWsmDSNVQ93FEyppw== X-ME-Sender: <xms:uqpsZz4MEUc3UVDDyUxIPr6uPjU3WEjOYnaE1MG_hLR8XKTEJjcWcg> <xme:uqpsZ44GYOh58IzZlbaqPWstk3GPueTHSfv34EEZ-_uBEp7Om51g08BmC6VGFqzmF 8K2HktKICLaJtqARs0> X-ME-Received: <xmr:uqpsZ6e2Dl3TF3e-VD0hW8ChRWKZ2maUbexzSsCwTQUHDxSbbum33eQrLyodzXGdfSiR> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddruddujedgfedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh htshculddquddttddmnecujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdej necuhfhrohhmpeffmhhithhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdrug gvvheqnecuggftrfgrthhtvghrnhepteduleejgeehtefgheegjeekueehvdevieekueef tddvtdevfefhvdevgedujeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthho peefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehjuhhriheslhhinhhkohhvrd hnvghtpdhrtghpthhtoheptggrshhouhhrihesghhmrghilhdrtghomhdprhgtphhtthho peejgeelieefseguvggssghughhsrdhgnhhurdhorhhg X-ME-Proxy: <xmx:uqpsZ0I7NVCtKudn2CDZEdu4v5Oi4mDKFjwClxx2_ZORYWwRczejGQ> <xmx:uqpsZ3JLAxOT8nyU0F-ppAj8pzmsALYeDjpbfABuL412a2tJokGt_A> <xmx:uqpsZ9wnLvg_TX7T3H6FKU2lgXXXVpCp7WGkLUA_Oq5Mc99itXjRpQ> <xmx:uqpsZzIy5Bwbtq-B4G0QuA9PVb7AlCsihjrV0LfwrWlZC78KNF8byQ> <xmx:u6psZ_0sKfUPs6N3k9UlYwQGamPVsaaQykOH9lRThG9G4lL2mvWYOyHS> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 25 Dec 2024 20:00:40 -0500 (EST) Message-ID: <8dc10f82-4400-4924-bb6b-dcd98bcb598d@HIDDEN> Date: Thu, 26 Dec 2024 03:00:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode To: Juri Linkov <juri@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <8abcb53c-1636-450d-ac0c-fdf44566ab95@HIDDEN> <87cyhg2nyu.fsf@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <87cyhg2nyu.fsf@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: Yuan Fu <casouri@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 25/12/2024 09:52, Juri Linkov wrote: >> Given that we're already calling a predicate every time (in >> ruby-ts-mode), we might as well add one more check. See the patch at the >> end. > > Thanks, I tried the patch. It was broken, so needed to edit manually. Maybe something regarding whitespace at the end? > Also the new key 'w' doesn't work in diff buffers, need to fix it as well. The binding for 'diff-kill-ring-save'? Seems to work here, as long as the diff buffer is in read-only mode. >> Adding the check for "named" fixes the first two cases, but then C-M-f >> inside "def" jumps to after "baaz". Could be worked around with a >> special case, but I wonder what this difference comes from (haven't >> properly debugged yet). > > I see no problems with your patch. Everything works nicely. Hmm, I can't reproduce it either anymore. Thanks for testing, pushed to master now (unfortunately the commit message refers to bug#73404).
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 25 Dec 2024 17:50:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 12:50:50 2024 Received: from localhost ([127.0.0.1]:38728 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQVX0-0008Lc-3g for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 12:50:50 -0500 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:48295) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tQVWx-0008LH-DI for 74963 <at> debbugs.gnu.org; Wed, 25 Dec 2024 12:50:47 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 7D7DA1C0004; Wed, 25 Dec 2024 17:50:17 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <E14E862C-F992-4E35-BC98-84D0E4988F12@HIDDEN> (Yuan Fu's message of "Wed, 25 Dec 2024 01:11:32 -0800") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <875xn9j7d6.fsf@HIDDEN> <49EB9C70-DB16-4846-9646-F0C89B2D28D8@HIDDEN> <87o7102oar.fsf@HIDDEN> <E14E862C-F992-4E35-BC98-84D0E4988F12@HIDDEN> Date: Wed, 25 Dec 2024 19:39:28 +0200 Message-ID: <87msgjy8lj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> Not sure if a possible flexibility is better than unintended matches. >> >> When the authors of a ts-mode carefully selected a list of named nodes to match, >> why treesit should try to match some random and unintended anonymous nodes? > > I don’t know and can’t prove how much the flexibility is worth, but the > cost on complexity is real. If everywhere else uses thing predicates as-is, > but sexp navigation auto-converts thing predicates into named predicate, > that’s a cognitive burden and a special case that’s guaranteed to trip > people over. > > OTOH, what’s the downside of wrapping the sexp predicate with (and named …), > if you only want named nodes to match? > > I just think the cost outweighs the benefit, if there is any to begin with. Actually, what I had in mind is not to enable named-only mode by default, but only to allow the authors of ts-modes to specify this condition. For example, if it will be possible to write (setq-local treesit-thing-settings `((typescript (sexp (and named ,(regexp-opt typescript-ts-mode--sexp-nodes 'symbols)))))) this should be fine. This is similar to how the authors of ts-modes decide whether to restrict matches to exact names by using "^...$" with regexp-opt. BTW, I'm thinking about adding such simple helper: (defun treesit-regexp-opt (strings) (concat "^" (regexp-opt strings) "$")) to use like this: (setq-local treesit-thing-settings `((typescript (sexp (and named ,(treesit-regexp-opt typescript-ts-mode--sexp-nodes))))))
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 25 Dec 2024 09:12:53 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 04:12:53 2024 Received: from localhost ([127.0.0.1]:36184 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQNRk-0000Xd-E8 for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 04:12:52 -0500 Received: from mail-pl1-f169.google.com ([209.85.214.169]:57459) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1tQNRi-0000XP-JG for 74963 <at> debbugs.gnu.org; Wed, 25 Dec 2024 04:12:51 -0500 Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2156e078563so56556045ad.2 for <74963 <at> debbugs.gnu.org>; Wed, 25 Dec 2024 01:12:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735117904; x=1735722704; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=h4jwJ2sDmw4FZQcttn+BInGZXfUUOC/1YECCYIp+hzE=; b=T+vBRfm2LffQl5gBpOJ4TO4z7YPLGxPOu6p2GELE5u8FyTJQWxXYTiLy8Lg6P3pbOV V3USPPwvbUbGzsSl8cuIA7/A7S0E0HFhbMW0aDi4inJhhJ6poQhqdkQYf5MOaH7Kpwqz aoNRw5gcmYxrqnG5bbB02h3Xb93HxYcYGwulcAQO77P4iJE0oQ13U1Mmm6fd4/6X7LVF HQ9N7VbNv1PAJZ6jzBYnViDdW7s2n9j7DpPoxqSah64T6lC3m1GTxqCoW5/G0dWY19Zj qaB7g2Xx9/FIyMsDmImWSZ9nYzYa1i+Cqf3+PFmjPfNQfhyovJNxs4eduiLK0yf6KGck Ru1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735117904; x=1735722704; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=h4jwJ2sDmw4FZQcttn+BInGZXfUUOC/1YECCYIp+hzE=; b=XoDGpKvkaJdQaI6xtTvKzK76qtF5fYU2OWiGTOGhjm91k70vZ+25fvzzU4duJKxdsm gLVYbbCHYk7MKKjnIYSgh+GY5dMii6/mY4tk28/5FwXuEOxR5xZsFn5DpImSqu+tBO62 EhYLfwq+1b7OQ8AtWoXw1OJ3vd9pvx8pmP9dv5Uhro+abS71ROaYmGVwm/hnQOfU/Vyj tGFsVEYUFW7ZZLew5RJ7tb1DZHMZn3eXxHSdO7yCxkDmMs9fLFYnnLaCtPUpBju0boL6 8U/BUv2e5ANNLGEFyLsdGqx0Lqazk3lB3HctdouFCrbdJkyHEldGg0SJAWJ6DzCus5aG z9bQ== X-Gm-Message-State: AOJu0YwcOrru96fofeTyRdJ3QEonyfROk3HfufVdcmSdmchz7p9xb4yP cXwQ6fHN9Et4C5oZqv9cc1Iklb1FAk9ZMznXSBCt7TZRt2Hw+ATp X-Gm-Gg: ASbGnctUIVvCtzwSWXkbiY1/0fZ/BSD39jfNgGT1BPyhLMcTHYbt7T+JBHGRnFSxT0F D6O2pZHh6/PdE9ft5HZ7Nm0O8v8NcwaZhvPfLa7JJG3N1EsNaFVb5JWwH4xxBcHALfJv2qvpl1f CcPo2X8UB1djJUdG0cl+0Qrte1XSAdySFCBd9lP5NFcHzmM2dntpecyJmxiojw+fyzOr7C8PCR8 b9/d72oRVjf0OpsVOZpQcNrj2y4kbf5q8peZau7UbD1EVaxamWu5eiCv7OVfv4qU4WZzBuafVZg s3I= X-Google-Smtp-Source: AGHT+IFkNUou7Rk5l0Rp1Swb950lByulSSgijnFiBvXw9cV9OuazA2OxxmQtUgJTVOK6fB2kiddSAw== X-Received: by 2002:a05:6a21:3a85:b0:1e1:b8bf:8e80 with SMTP id adf61e73a8af0-1e5e083f145mr29568455637.41.1735117904645; Wed, 25 Dec 2024 01:11:44 -0800 (PST) Received: from smtpclient.apple ([2601:646:8f81:6120:e179:285e:283:33ae]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72aad8dbab4sm10872713b3a.94.2024.12.25.01.11.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Dec 2024 01:11:43 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <87o7102oar.fsf@HIDDEN> Date: Wed, 25 Dec 2024 01:11:32 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <E14E862C-F992-4E35-BC98-84D0E4988F12@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <875xn9j7d6.fsf@HIDDEN> <49EB9C70-DB16-4846-9646-F0C89B2D28D8@HIDDEN> <87o7102oar.fsf@HIDDEN> To: Juri Linkov <juri@HIDDEN> X-Mailer: Apple Mail (2.3776.700.51) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Dec 24, 2024, at 11:49=E2=80=AFPM, Juri Linkov <juri@HIDDEN> = wrote: >=20 >>> This mismatched "string" in TypeScript is even more >>> unexpected than "unless" in Ruby. >>>=20 >>> So probably we need a way to mark all used nodes as named >>> to avoid such unexpected matches. Maybe matching anonymous nodes >>> should be opt-in, and by default match only named nodes. >>=20 >> IMHO this is just an unfortunate bug that needs to be fixed. I agree = that >> this type of bug are hard to avoid, which is a bad thing, but that = doesn=E2=80=99t >> mean we should try to alleviate it at any cost. Making predicates = named by >> default just adds complexity and inflexibility for not much benefit. >=20 > Not sure if a possible flexibility is better than unintended matches. >=20 > When the authors of a ts-mode carefully selected a list of named nodes = to match, > why treesit should try to match some random and unintended anonymous = nodes? I don=E2=80=99t know and can=E2=80=99t prove how much the flexibility is = worth, but the cost on complexity is real. If everywhere else uses thing = predicates as-is, but sexp navigation auto-converts thing predicates = into named predicate, that=E2=80=99s a cognitive burden and a special = case that=E2=80=99s guaranteed to trip people over. OTOH, what=E2=80=99s the downside of wrapping the sexp predicate with = (and named =E2=80=A6), if you only want named nodes to match? I just think the cost outweighs the benefit, if there is any to begin = with. Yuan=
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 25 Dec 2024 08:11:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 03:11:22 2024 Received: from localhost ([127.0.0.1]:36057 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQMUE-0005rg-G3 for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 03:11:22 -0500 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:51827) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tQMU9-0005r4-68 for 74963 <at> debbugs.gnu.org; Wed, 25 Dec 2024 03:11:17 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id E56D71BF204; Wed, 25 Dec 2024 08:10:48 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Dmitry Gutov <dmitry@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <8abcb53c-1636-450d-ac0c-fdf44566ab95@HIDDEN> (Dmitry Gutov's message of "Wed, 25 Dec 2024 05:25:24 +0200") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> <8abcb53c-1636-450d-ac0c-fdf44566ab95@HIDDEN> Date: Wed, 25 Dec 2024 09:52:33 +0200 Message-ID: <87cyhg2nyu.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Yuan Fu <casouri@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> While addition of '(and named "unless")' would be appreciated, >> I see that currently it's possible to do this by proving a predicate >> like there is 'ruby-ts--sexp-p' in >> >> (setq-local treesit-thing-settings >> `((ruby >> (sexp ,(cons (rx >> bol >> (or >> "class" >> ... >> ) >> eol) >> #'ruby-ts--sexp-p)) >> >> Then 'ruby-ts--sexp-p' could check for the named node "unless" as well. >> >> But it seems such solution is less efficient than adding '(and named "unless")'. > > Given that we're already calling a predicate every time (in > ruby-ts-mode), we might as well add one more check. See the patch at the > end. Thanks, I tried the patch. It was broken, so needed to edit manually. Also the new key 'w' doesn't work in diff buffers, need to fix it as well. > Speaking of tricky examples though, here's a definition: > > module Bar > class Foo > def baz > end > end > end > > If you move point inside the keyword "module" or "class", C-M-f wouldn't > move forward either as of the latest master. No such problem with "def". > > Adding the check for "named" fixes the first two cases, but then C-M-f > inside "def" jumps to after "baaz". Could be worked around with a > special case, but I wonder what this difference comes from (haven't > properly debugged yet). I see no problems with your patch. Everything works nicely.
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 25 Dec 2024 08:10:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 03:10:57 2024 Received: from localhost ([127.0.0.1]:36046 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQMTp-0005pr-DB for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 03:10:57 -0500 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:41113) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tQMTl-0005pT-2k for 74963 <at> debbugs.gnu.org; Wed, 25 Dec 2024 03:10:53 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id D369A1C0003; Wed, 25 Dec 2024 08:10:46 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <49EB9C70-DB16-4846-9646-F0C89B2D28D8@HIDDEN> (Yuan Fu's message of "Tue, 24 Dec 2024 13:03:45 -0800") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <875xn9j7d6.fsf@HIDDEN> <49EB9C70-DB16-4846-9646-F0C89B2D28D8@HIDDEN> Date: Wed, 25 Dec 2024 09:49:24 +0200 Message-ID: <87o7102oar.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> This mismatched "string" in TypeScript is even more >> unexpected than "unless" in Ruby. >> >> So probably we need a way to mark all used nodes as named >> to avoid such unexpected matches. Maybe matching anonymous nodes >> should be opt-in, and by default match only named nodes. > > IMHO this is just an unfortunate bug that needs to be fixed. I agree that > this type of bug are hard to avoid, which is a bad thing, but that doesn’t > mean we should try to alleviate it at any cost. Making predicates named by > default just adds complexity and inflexibility for not much benefit. Not sure if a possible flexibility is better than unintended matches. When the authors of a ts-mode carefully selected a list of named nodes to match, why treesit should try to match some random and unintended anonymous nodes?
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 25 Dec 2024 03:25:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 22:25:39 2024 Received: from localhost ([127.0.0.1]:35671 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQI1j-0000Dm-7Q for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 22:25:39 -0500 Received: from fhigh-a3-smtp.messagingengine.com ([103.168.172.154]:36433) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1tQI1e-0000DU-O0 for 74963 <at> debbugs.gnu.org; Tue, 24 Dec 2024 22:25:38 -0500 Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfhigh.phl.internal (Postfix) with ESMTP id C5596114016F; Tue, 24 Dec 2024 22:25:28 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Tue, 24 Dec 2024 22:25:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :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=1735097128; x=1735183528; bh=RDMedM13SKUcehccntHhdm3JzKzNwyaWLSZZeWPYGTk=; b= K0w/9sTZnoItgN2O4sNnX4ReC8iX8xQ4PnxQgsuY7aOUW7utri81zlmDSJiRCHPo EusuzlPI+V1TLaFycpTrL4dg2DtdxVNL6XAd6YgiR2bJ1SM57qPFOPFdeQX8jH1q +JiZwl3WZ7hzIrJncrzk9sxG8op2LRXdFp4RLyfzOPI4EXFXYrrZYce3x6W1lcAA NWwGR8NbB+NuLnIlEqDrHV5aYTuTjkjUGryO3B+wBcNaNCmPtXwokQHbXYXLbhew tzJWSr8o0YFikIipf8xVk9XKxuv29RznUCYC+UsR7z4kboqvm5QnVfBmlvl9BVC5 R8e1UULlXvaDjh3jR4a/eg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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=fm2; t=1735097128; x= 1735183528; bh=RDMedM13SKUcehccntHhdm3JzKzNwyaWLSZZeWPYGTk=; b=m C3Xui5WYgmkQ02Bn4e6V3zO130CjFfbwDZbCCNahtrGDS8ZAiiI3Hu1sGyQRiKxZ Ar23OEFjZcKhzSiIg3Mw5MfMOzHhs+IApeC70HVv1wcwSOCiWNNUdlhAJQv2qd6f RJ6fHwBBBG1PBcm1NZ10X0bDefmUaUiEIGCFHB7rlU8vNo3MIrHDVLTd5yNhcIfW TghH3RQm1CjkAISl2a1/HdOZktPktSN/sPIzEGwvgadHXSCSzJbNkNsuMriNJng8 3Nu3HGeXV+yLflCjomseqQrPth7zVjH2pNlvlzN7NHLwkrF7tT4gTrY4LsCCwlKo 5G+PgjQU0zY1VVWHnfPnw== X-ME-Sender: <xms:KHtrZ5AIeRmRcSffHDfK0ya3bQrH-nW6AIU5oZz6RJKnxnYoGu0UTQ> <xme:KHtrZ3gh8KL4M6emvkJxN0TUNRXr08VMj4CyDqlB2bMLw3TsCbDVw77-duAN1VaWZ O50nGvqMtjBy-FIXiI> X-ME-Received: <xmr:KHtrZ0loUABkon9VU8bQ_i__QrDppubyn9KvIErzl3i3Q2JJUM32CsxfVqHyEBGyCp10> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrudduhedgheejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh htshculddquddttddmnecujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdej necuhfhrohhmpeffmhhithhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdrug gvvheqnecuggftrfgrthhtvghrnhepteduleejgeehtefgheegjeekueehvdevieekueef tddvtdevfefhvdevgedujeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthho peefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehjuhhriheslhhinhhkohhvrd hnvghtpdhrtghpthhtoheptggrshhouhhrihesghhmrghilhdrtghomhdprhgtphhtthho peejgeelieefseguvggssghughhsrdhgnhhurdhorhhg X-ME-Proxy: <xmx:KHtrZzxpHRbjvHa-Krb3OyRYBo_JGlyeiCQab4qBN9ScwFgfKfLMYg> <xmx:KHtrZ-R6pR4HpbQu1Ov5w1C4tOwuFkgFkZoHKQiIVzGBzrolbnZJaw> <xmx:KHtrZ2bH9Ds_3iPsd35dlYcvih9BDKo-wrxhoy8GD_2RAH2XKPigjA> <xmx:KHtrZ_QbBCv4LToISVHNeU8sp_7XgU6BZONSgeDnCFDoiUkvzC3lZw> <xmx:KHtrZ8dzzNNLlQplyEf_GQsVaqgI5k6QABD8up4-Pl4Eh_yzYR5q1ijP> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 24 Dec 2024 22:25:27 -0500 (EST) Message-ID: <8abcb53c-1636-450d-ac0c-fdf44566ab95@HIDDEN> Date: Wed, 25 Dec 2024 05:25:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode To: Juri Linkov <juri@HIDDEN>, Yuan Fu <casouri@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <ACA8B25C-87C2-4BD8-BDE8-7810A0817A75@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <87ttatpnii.fsf@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Hi Juri, On 24/12/2024 09:17, Juri Linkov wrote: > While addition of '(and named "unless")' would be appreciated, > I see that currently it's possible to do this by proving a predicate > like there is 'ruby-ts--sexp-p' in > > (setq-local treesit-thing-settings > `((ruby > (sexp ,(cons (rx > bol > (or > "class" > ... > ) > eol) > #'ruby-ts--sexp-p)) > > Then 'ruby-ts--sexp-p' could check for the named node "unless" as well. > > But it seems such solution is less efficient than adding '(and named "unless")'. Given that we're already calling a predicate every time (in ruby-ts-mode), we might as well add one more check. See the patch at the end. Speaking of tricky examples though, here's a definition: module Bar class Foo def baz end end end If you move point inside the keyword "module" or "class", C-M-f wouldn't move forward either as of the latest master. No such problem with "def". Adding the check for "named" fixes the first two cases, but then C-M-f inside "def" jumps to after "baaz". Could be worked around with a special case, but I wonder what this difference comes from (haven't properly debugged yet). diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el index 4ef0cb18eae..4b15c6cbf27 100644 --- a/lisp/progmodes/ruby-ts-mode.el +++ b/lisp/progmodes/ruby-ts-mode.el @@ -1120,6 +1120,10 @@ ruby-ts--sexp-p (equal (treesit-node-type (treesit-node-child node 0)) "("))) +(defun ruby-ts--sexp-list-p (node) + (when (treesit-node-check node 'named) + (ruby-ts--sexp-p node))) + (defvar-keymap ruby-ts-mode-map :doc "Keymap used in Ruby mode" :parent prog-mode-map @@ -1235,7 +1239,7 @@ ruby-ts-mode "array" "hash") eol) - #'ruby-ts--sexp-p)) + #'ruby-ts--sexp-list-p)) (text ,(lambda (node) (or (member (treesit-node-type node) '("comment" "string_content" "heredoc_content"))
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 24 Dec 2024 21:04:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 16:04:59 2024 Received: from localhost ([127.0.0.1]:34832 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQC5L-00072D-Ci for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 16:04:59 -0500 Received: from mail-pl1-f172.google.com ([209.85.214.172]:57605) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1tQC5J-000725-D8 for 74963 <at> debbugs.gnu.org; Tue, 24 Dec 2024 16:04:58 -0500 Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-21628b3fe7dso54169385ad.3 for <74963 <at> debbugs.gnu.org>; Tue, 24 Dec 2024 13:04:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735074237; x=1735679037; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=pw+CT7yyoTg/NEj1lCxzBu99hJh9zssiDact1hlttTQ=; b=hZvo+0swoQG0fl5k9DLE+pc52jVqO+C5kka7O6WojDz+2/K1Lk09dIqMwlKbtys16o m+2mpAynsuU/lUvMuIvszVKoVin4l+GKFWPyBepglwXHuni6xnJT28F9WHYymohUaWaB 3bX+qlUEy5AyzhD6Fz8Pe0mPZ3E6HzdK2dVC6yXQThKBz9UVxBQoNbdK3ze3fUaGpdqD Ce+/dUIMGGKmuMm4kkxVqm3RgIcCDkWAsx0Zm18l3utn8otT4fsD8XAf7fBRbShrdFQM 0dG0gCdgDTB/wBwRbSPZ9iSMhYrHHfN7cL1VaAjAt/nBBYeGQxqjeycK3hVzdvhC530z bRjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735074237; x=1735679037; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pw+CT7yyoTg/NEj1lCxzBu99hJh9zssiDact1hlttTQ=; b=jArNPFXUrtBeRrMoSGjvVSIwcjKgWZx69o2V2o5eaM1nf7Nip1dwLKIRUq+Z87/I29 rxwynxRvRuJXJdhykiNggycz11gYucSnmWVUS6xF/Bnzzu5u4AIzPI07lY6IbOYPxHw9 4vgnSV6xe9QB46Is6SwWpG4sLcZlCBO9/6P3iHdmFUyCVLbC808jFeuRnEhlkuxLfIMP qVxJTWR3safDSH3slcM5wPvgsFVcgpZHlkzP8SzwzJRr18rX3JYZLSIPGbjrZlfK+EFF PlKUwxjA82dgxMKJyF0p+mtuMrhoOymffZuDvmbi4/1d8f2/8Tm5Ovrum3FkirOiZG7k 4xnQ== X-Gm-Message-State: AOJu0YxfJReTjH/IhPldgtNoRrSoeOK2VDce3/K3gs8/xqrboKyU3vzh dRwdHC/zODyTZqU2CFqNDjDvPzX4TbLIqflR/zhE8jap/ELr+RhxKsCGmQ== X-Gm-Gg: ASbGnctao82MF+gZDm35zEvcW+rS67ASUB/wJ5DoGBSesFSG4i8GV6DRmsL3kpepzzj drelg+MeM5vd3omK5gq/5TnsxOmusnhZj+v9Ksa+WYsTF3kO1uCnl9m8bW8mCDAdDWgB2bRbbZF 8jdLDXD8RwsPZh7lt6VrMDFYU+pRBezs/o5qdyVV3JxLp1HGnXWEYM2F26f0518v+Ori/G+I2Gi USY9Dt/Awa0e1r0KupUBQRJPwxv084w/Amx+IrT1AWA8/MVJOmecWvfGbMA/1BHHsK8PyK6nm6T KYRg X-Google-Smtp-Source: AGHT+IEXRVl1/c6rtgmRhnjND/1xr3KQcni+1fbShz26POjem7KxVKqm7XFlS95V9feZbjI+iyhEQg== X-Received: by 2002:a05:6a20:9144:b0:1e0:d1db:4d8a with SMTP id adf61e73a8af0-1e5e047801cmr28967664637.10.1735074236792; Tue, 24 Dec 2024 13:03:56 -0800 (PST) Received: from smtpclient.apple ([2601:646:8f81:6120:1d98:6810:9846:b152]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72aad84ee4csm10069982b3a.82.2024.12.24.13.03.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Dec 2024 13:03:56 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <875xn9j7d6.fsf@HIDDEN> Date: Tue, 24 Dec 2024 13:03:45 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <49EB9C70-DB16-4846-9646-F0C89B2D28D8@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <ACA8B25C-87C2-4BD8-BDE8-7810A0817A75@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <875xn9j7d6.fsf@HIDDEN> To: Juri Linkov <juri@HIDDEN> X-Mailer: Apple Mail (2.3776.700.51) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Dec 24, 2024, at 9:52=E2=80=AFAM, Juri Linkov <juri@HIDDEN> = wrote: >=20 >> I=E2=80=99ll go with the (and named =E2=80=9Cunless=E2=80=9D) route = because after thinking >> about it more, =E2=80=9C(unless)=E2=80=9D will be hard to work with = because the string >> predicate is actually a regexp. >=20 > Is it possible to mark all node names specified in = treesit-thing-settings > as named? >=20 > I just discovered a new problem: >=20 > 1. With typescript-ts-mode on the following snippet: >=20 > type NodeInfo =3D > | (BaseNode & { > subtypes: BaseNode[]; > }) > | (BaseNode & { > fields: { [name: string]: ChildNode }; > children: ChildNode[]; > }); >=20 > You can move point inside "string" and type C-M-f or C-M-b. > But point doesn't move. >=20 > This is because treesit-thing-settings defines a named node "string". > But anonymous node has the same name "string": >=20 > (index_signature [ name: (identifier) : > index_type: (predefined_type string) >=20 > and (treesit-node-at (point)) returns > #<treesit-node "string" in 111-117> >=20 > This mismatched "string" in TypeScript is even more > unexpected than "unless" in Ruby. >=20 > So probably we need a way to mark all used nodes as named > to avoid such unexpected matches. Maybe matching anonymous nodes > should be opt-in, and by default match only named nodes. IMHO this is just an unfortunate bug that needs to be fixed. I agree = that this type of bug are hard to avoid, which is a bad thing, but that = doesn=E2=80=99t mean we should try to alleviate it at any cost. Making = predicates named by default just adds complexity and inflexibility for = not much benefit. Yuan=
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 24 Dec 2024 17:54:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 12:54:58 2024 Received: from localhost ([127.0.0.1]:34137 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQ97R-0005mS-W9 for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 12:54:58 -0500 Received: from relay6-d.mail.gandi.net ([217.70.183.198]:38947) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tQ97P-0005m3-5v for 74963 <at> debbugs.gnu.org; Tue, 24 Dec 2024 12:54:56 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 3C5C8C0003; Tue, 24 Dec 2024 17:54:47 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> (Yuan Fu's message of "Mon, 23 Dec 2024 19:02:28 -0800") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <ACA8B25C-87C2-4BD8-BDE8-7810A0817A75@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> Date: Tue, 24 Dec 2024 19:52:53 +0200 Message-ID: <875xn9j7d6.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > I’ll go with the (and named “unless”) route because after thinking > about it more, “(unless)” will be hard to work with because the string > predicate is actually a regexp. Is it possible to mark all node names specified in treesit-thing-settings as named? I just discovered a new problem: 1. With typescript-ts-mode on the following snippet: type NodeInfo = | (BaseNode & { subtypes: BaseNode[]; }) | (BaseNode & { fields: { [name: string]: ChildNode }; children: ChildNode[]; }); You can move point inside "string" and type C-M-f or C-M-b. But point doesn't move. This is because treesit-thing-settings defines a named node "string". But anonymous node has the same name "string": (index_signature [ name: (identifier) : index_type: (predefined_type string) and (treesit-node-at (point)) returns #<treesit-node "string" in 111-117> This mismatched "string" in TypeScript is even more unexpected than "unless" in Ruby. So probably we need a way to mark all used nodes as named to avoid such unexpected matches. Maybe matching anonymous nodes should be opt-in, and by default match only named nodes.
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 24 Dec 2024 07:43:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 02:43:43 2024 Received: from localhost ([127.0.0.1]:59195 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tPzZv-0008A4-42 for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 02:43:43 -0500 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:40395) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tPzZs-00089d-K1 for 74963 <at> debbugs.gnu.org; Tue, 24 Dec 2024 02:43:41 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 41414240005; Tue, 24 Dec 2024 07:43:29 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <87ttatpnii.fsf@HIDDEN> (Juri Linkov's message of "Tue, 24 Dec 2024 09:17:33 +0200") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> <87ttatpnii.fsf@HIDDEN> Date: Tue, 24 Dec 2024 09:41:58 +0200 Message-ID: <87ldw5o7cp.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > (setq-local treesit-thing-settings > `((ruby > (sexp ,(cons (rx > bol > (or > "class" > ... > ) > eol) > #'ruby-ts--sexp-p)) BTW, I just fixed a bug in typescript-ts-mode where "string_fragment" was mismatched by "string", because its regexp-opt matched node names too widely, so needed to enclose in regexp anchors. I see that all ts-modes solve this common problem each in its own way (here 'list' indicates a list of strings that should match node names): c-ts-mode: (regexp-opt list 'symbols) js-ts-mode: (concat "\\_<" (regexp-opt list t) "\\_>") java-ts-mode: (rx (or list)) ruby-ts-mode: (rx bol (or list) eol) Currently there is no uniform way to handle this frequent need. 'concat' like above looks too ugly, but 'regexp-opt' with the 'symbols' arg produces a strange regexp for matching symbols. Maybe better would be create a new argument for 'regexp-opt', e.g.: (regexp-opt list 'complete) that will expand to: (concat "^" list "$")
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 24 Dec 2024 07:18:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 02:18:20 2024 Received: from localhost ([127.0.0.1]:59155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tPzBM-0006xt-3n for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 02:18:20 -0500 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:37647) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tPzBK-0006xV-DO for 74963 <at> debbugs.gnu.org; Tue, 24 Dec 2024 02:18:19 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 198A41C0004; Tue, 24 Dec 2024 07:17:50 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Yuan Fu <casouri@HIDDEN> Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode In-Reply-To: <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> (Yuan Fu's message of "Mon, 23 Dec 2024 19:02:28 -0800") Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <ACA8B25C-87C2-4BD8-BDE8-7810A0817A75@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> Date: Tue, 24 Dec 2024 09:17:33 +0200 Message-ID: <87ttatpnii.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >>> A better solution IMO is to add some way to distinguish between named and >>> anonymous nodes. I can think of two ways, either add “and” and >>> “named/anonymous” predicate, so (and named “unless”) only matches the named >>> “unless” node; or we add a special syntax such that “(unless)” only matches >>> named nodes, and “\”unless\”” only matches anonymous nodes. >> >> Either predicate or a special syntax is welcome. >> >> This would be more handy than writing a lambda with implicit calls >> of treesit-node-check. > > I’ll go with the (and named “unless”) route because after thinking > about it more, “(unless)” will be hard to work with because the string > predicate is actually a regexp. Thanks. While addition of '(and named "unless")' would be appreciated, I see that currently it's possible to do this by proving a predicate like there is 'ruby-ts--sexp-p' in (setq-local treesit-thing-settings `((ruby (sexp ,(cons (rx bol (or "class" ... ) eol) #'ruby-ts--sexp-p)) Then 'ruby-ts--sexp-p' could check for the named node "unless" as well. But it seems such solution is less efficient than adding '(and named "unless")'.
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at 74963) by debbugs.gnu.org; 24 Dec 2024 03:03:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Dec 23 22:03:45 2024 Received: from localhost ([127.0.0.1]:58816 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tPvCy-0003QM-Kn for submit <at> debbugs.gnu.org; Mon, 23 Dec 2024 22:03:45 -0500 Received: from mail-pl1-f172.google.com ([209.85.214.172]:44395) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1tPvCw-0003QB-Cx for 74963 <at> debbugs.gnu.org; Mon, 23 Dec 2024 22:03:43 -0500 Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2164b662090so41361875ad.1 for <74963 <at> debbugs.gnu.org>; Mon, 23 Dec 2024 19:03:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735009362; x=1735614162; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wYDaIglBLzpyky0WSJcJC5BpoMhaHwuwidy490i9sVg=; b=N7dgwjO1DkA7nLGEOsLGA3aMoLvJqSd3nNMhDTzQMAvz4wg9GfuCsdiyGC1h+GOkOE kOHrPcb2z162x5JtX0ovlLXLbL2qMAd6U8u7jtunltt6kNdU2xHJYUc3D+DJoVzwnP/k IyfHOPr3ufMQ0B1DQhG1TdTn4kD50wI8GTcjhjF5BbkKFNOpOWTl6tMKaskknjZvQelB ZIQWivvGkKEF7v4dguMWJXc5mpLG3J1WKTHZ9GTW90pqLV58Ad931bYXfU35zOjlKZYf nnENSfNzgWK1p0MQz0qE9GRTyOQ6KEPP2VEqlclE5mLxjTPfpYlRjdGImEbvnvY1TziN bi5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735009362; x=1735614162; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wYDaIglBLzpyky0WSJcJC5BpoMhaHwuwidy490i9sVg=; b=boneZFEgYwoUDvSdktRX3N+y9eaJ9EaPF3zEORc0UWVE89N3Gio6TYLJsCJSheyLWi BHM04VndLZYrjXQa+Gy0xd3lyoXRfUV1LKT0VNl4DKgISQNIAeZJ4/y/64Is+/AEQC/S 4+5bhC5UfHzMPtiVwCl+DDeJ9guVO58tn046GQqHvrYv8Kb03Y9t7XecvYG8SwXPNaV4 m0nzkUmFUV2FuASSQbf8f3JIEyfaplGpq84UTJtt9FayUmalBXTd4Wt9xA2l+cHMkgyq LM0Cu8tA3QjoMCkRRJ2FnRaLcOLFuzTuRAgKBzTovF7kcc4WwE1HuhNYTniFbe+HkV6B j81A== X-Gm-Message-State: AOJu0YzHsBSs73rO3aiSZHo+mvP+3woRAJe3oPn4dpXl3Qpo+dnI7cvm L0AnjMq7bKPoUS3gHc20zRopPuzZ3GLowuta1cl3kh50y9oJyAjl X-Gm-Gg: ASbGncu6cJADL4yawyxer3AY2fxDFRB1mzUUcrA9gbUgpXEfQxnaTamqEBnP1Q2CVzw I3UcFCjnJQhUlrfVa+fXijroshMrjYpIO3wZXvLwZV2WBKzVmnrewvuTu9KA3Gxpl3iOLhzi3ME 9RAXUI/KKBXNy3sBMPn4B5NCG8+uNHOinQ7HT06gE8nHiGK21ADlQf3OGB7Qk2FPgKdv2+Dkskx /7rzmfQcm+kDkCmgCKi4HmREmTEUuyCrSU6w4A66OVCIV3n81uDJaedh8s+QhbK0LfrogZzto1B 1ysw X-Google-Smtp-Source: AGHT+IFDZd2wC1jpBMpmnvzTO5jmMoks73Oh2oCO23bJ8BqHKvLzR3XJPyUn1+A3S9wY6YtbnU5vMg== X-Received: by 2002:a17:903:32c2:b0:215:7b06:90ca with SMTP id d9443c01a7336-219e6ea248emr189077125ad.17.1735009360631; Mon, 23 Dec 2024 19:02:40 -0800 (PST) Received: from smtpclient.apple ([2601:646:8f81:6120:1d98:6810:9846:b152]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc9f625csm78441365ad.208.2024.12.23.19.02.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Dec 2024 19:02:40 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode From: Yuan Fu <casouri@HIDDEN> In-Reply-To: <87ttb0rwni.fsf_-_@HIDDEN> Date: Mon, 23 Dec 2024 19:02:28 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <4DFCFBC8-A353-48F2-8257-D6CFB155A030@HIDDEN> References: <87plox4mtp.fsf@HIDDEN> <877cay1lqt.fsf@HIDDEN> <86frpma06f.fsf@HIDDEN> <ACA8B25C-87C2-4BD8-BDE8-7810A0817A75@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> <87ttb0rwni.fsf_-_@HIDDEN> To: Juri Linkov <juri@HIDDEN> X-Mailer: Apple Mail (2.3776.700.51) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74963 Cc: Dmitry Gutov <dmitry@HIDDEN>, 74963 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > On Dec 18, 2024, at 11:18=E2=80=AFPM, Juri Linkov <juri@HIDDEN> = wrote: >=20 > [This is a separate bug report from bug#73404] >=20 >>> While testing treesit-forward-sexp-list, I discovered that >>> thing-navigation functions are not restricted to named nodes. >>>=20 >>> I wonder if there a reason to find anonymous nodes as things? >>=20 >> We should rather ask is there any reason to not find anonymous nodes >> as things? Even ruby-ts-mode defines a bunch of anonymous nodes as >> sexp, no? In any case, excluding anonymous nodes from things = doesn=E2=80=99t >> sound right. >=20 > Indeed, there are many anonymous nodes used in ruby-ts-mode. >=20 >>> The problem was found with the node "unless" in Ruby: >>>=20 >>> unless cond >>> a +=3D 1 >>> else >>> b -=3D 1 >>> end >>>=20 >>> Here the named node 'unless' has exactly the same name >>> as the anonymous node with the text "unless": >>>=20 >>> (unless "unless" condition: (identifier) >>=20 >> I feel like Ruby=E2=80=99s grammar should call the named node = something else, >> like unless_statement. >=20 > Agreed, the problem is that nodes defined in Ruby=E2=80=99s grammar > are too ambiguous. There are more such nodes with the same name > for named and anonymous: "if", "while", "until", etc. >=20 >>> Finding anonymous nodes breaks forward-sexp when point is on = "unless": >>>=20 >>> un-!-less cond >>> a +=3D 1 >>> else >>> b -=3D 1 >>> end >>>=20 >>> because (treesit-thing-at (point) 'sexp t) finds >>>=20 >>> #<treesit-node "unless" in 156-162> >>>=20 >>> instead of >>>=20 >>> #<treesit-node unless in 156-203> >>>=20 >>> Also this breaks backward-sexp and backward-up-list >>> because treesit--thing-sibling finds >>> the anonymous node "unless" as a previous sibling >>> instead of the named node 'unless' as a parent. >>>=20 >>> Would the right solution be to check if the found thing >>> is a named node? With something like: >>>=20 >>> diff --git a/lisp/treesit.el b/lisp/treesit.el >>> index 18200acf53f..9ad879ee40c 100644 >>> --- a/lisp/treesit.el >>> +++ b/lisp/treesit.el >>> @@ -2711,6 +2774,7 @@ treesit--thing-sibling >>> (lambda (n) (>=3D (treesit-node-start n) pos)))) >>> (iter-pred (lambda (node) >>> (and (treesit-node-match-p node thing t) >>> + (treesit-node-check node 'named) >>> (funcall pos-pred node)))) >>> (sibling nil)) >>> (when cursor >>> @@ -2760,6 +2824,7 @@ treesit-thing-at >>> (let* ((cursor (treesit-node-at pos)) >>> (iter-pred (lambda (node) >>> (and (treesit-node-match-p node thing t) >>> + (treesit-node-check node 'named) >>> (if strict >>> (< (treesit-node-start node) pos) >>> (<=3D (treesit-node-start node) pos)) >>=20 >> A better solution IMO is to add some way to distinguish between named = and >> anonymous nodes. I can think of two ways, either add =E2=80=9Cand=E2=80= =9D and >> =E2=80=9Cnamed/anonymous=E2=80=9D predicate, so (and named = =E2=80=9Cunless=E2=80=9D) only matches the named >> =E2=80=9Cunless=E2=80=9D node; or we add a special syntax such that = =E2=80=9C(unless)=E2=80=9D only matches >> named nodes, and =E2=80=9C\=E2=80=9Dunless\=E2=80=9D=E2=80=9D only = matches anonymous nodes. >=20 > Either predicate or a special syntax is welcome. >=20 > This would be more handy than writing a lambda with implicit calls > of treesit-node-check. I=E2=80=99ll go with the (and named =E2=80=9Cunless=E2=80=9D) route = because after thinking about it more, =E2=80=9C(unless)=E2=80=9D will be = hard to work with because the string predicate is actually a regexp. Yuan=
bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.Received: (at submit) by debbugs.gnu.org; 19 Dec 2024 07:20:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 19 02:20:01 2024 Received: from localhost ([127.0.0.1]:37229 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tOApF-0006su-0Y for submit <at> debbugs.gnu.org; Thu, 19 Dec 2024 02:20:01 -0500 Received: from lists.gnu.org ([209.51.188.17]:53546) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tOAp7-0006sW-0J for submit <at> debbugs.gnu.org; Thu, 19 Dec 2024 02:19:53 -0500 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 <juri@HIDDEN>) id 1tOAp6-0004T5-Nf for bug-gnu-emacs@HIDDEN; Thu, 19 Dec 2024 02:19:52 -0500 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <juri@HIDDEN>) id 1tOAp4-0001nE-2j for bug-gnu-emacs@HIDDEN; Thu, 19 Dec 2024 02:19:51 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id AB75AE0003 for <bug-gnu-emacs@HIDDEN>; Thu, 19 Dec 2024 07:19:46 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: Ambiguous treesit named and anonymous nodes in ruby-ts-mode Organization: LINKOV.NET References: <87plox4mtp.fsf@HIDDEN> <877cay1lqt.fsf@HIDDEN> <86frpma06f.fsf@HIDDEN> <ACA8B25C-87C2-4BD8-BDE8-7810A0817A75@HIDDEN> <86ikueiekp.fsf@HIDDEN> <AD87175F-6F83-4D7D-9A00-B2B96CEC7072@HIDDEN> <86ed4zg1cc.fsf@HIDDEN> <87zflac68t.fsf@HIDDEN> <87jzcdlxdp.fsf@HIDDEN> <87o71jocgs.fsf@HIDDEN> <C7CEC936-A192-495E-83FC-367136B27831@HIDDEN> <jwvh67az24n.fsf-monnier+emacs@HIDDEN> <5192B278-66C0-48AE-B881-E57CCBB6B501@HIDDEN> <87frmtbc9z.fsf@HIDDEN> <86bjxh1h86.fsf@HIDDEN> <87y10l8h6k.fsf@HIDDEN> <87ldwl8g60.fsf@HIDDEN> <87wmg53rdj.fsf@HIDDEN> <87a5d0n651.fsf@HIDDEN> <87zfktphks.fsf@HIDDEN> <A92A6225-255F-4A2B-857D-6DCFDFBCF024@HIDDEN> X-Debbugs-Cc: Yuan Fu <casouri@HIDDEN>, Dmitry Gutov <dmitry@HIDDEN> Date: Thu, 19 Dec 2024 09:18:37 +0200 Message-ID: <87ttb0rwni.fsf_-_@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@HIDDEN Received-SPF: pass client-ip=2001:4b98:dc4:8::224; envelope-from=juri@HIDDEN; helo=relay4-d.mail.gandi.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.6 (--) [This is a separate bug report from bug#73404] >> While testing treesit-forward-sexp-list, I discovered that >> thing-navigation functions are not restricted to named nodes. >> >> I wonder if there a reason to find anonymous nodes as things? > > We should rather ask is there any reason to not find anonymous nodes > as things? Even ruby-ts-mode defines a bunch of anonymous nodes as > sexp, no? In any case, excluding anonymous nodes from things doesn’t > sound right. Indeed, there are many anonymous nodes used in ruby-ts-mode. >> The problem was found with the node "unless" in Ruby: >> >> unless cond >> a += 1 >> else >> b -= 1 >> end >> >> Here the named node 'unless' has exactly the same name >> as the anonymous node with the text "unless": >> >> (unless "unless" condition: (identifier) > > I feel like Ruby’s grammar should call the named node something else, > like unless_statement. Agreed, the problem is that nodes defined in Ruby’s grammar are too ambiguous. There are more such nodes with the same name for named and anonymous: "if", "while", "until", etc. >> Finding anonymous nodes breaks forward-sexp when point is on "unless": >> >> un-!-less cond >> a += 1 >> else >> b -= 1 >> end >> >> because (treesit-thing-at (point) 'sexp t) finds >> >> #<treesit-node "unless" in 156-162> >> >> instead of >> >> #<treesit-node unless in 156-203> >> >> Also this breaks backward-sexp and backward-up-list >> because treesit--thing-sibling finds >> the anonymous node "unless" as a previous sibling >> instead of the named node 'unless' as a parent. >> >> Would the right solution be to check if the found thing >> is a named node? With something like: >> >> diff --git a/lisp/treesit.el b/lisp/treesit.el >> index 18200acf53f..9ad879ee40c 100644 >> --- a/lisp/treesit.el >> +++ b/lisp/treesit.el >> @@ -2711,6 +2774,7 @@ treesit--thing-sibling >> (lambda (n) (>= (treesit-node-start n) pos)))) >> (iter-pred (lambda (node) >> (and (treesit-node-match-p node thing t) >> + (treesit-node-check node 'named) >> (funcall pos-pred node)))) >> (sibling nil)) >> (when cursor >> @@ -2760,6 +2824,7 @@ treesit-thing-at >> (let* ((cursor (treesit-node-at pos)) >> (iter-pred (lambda (node) >> (and (treesit-node-match-p node thing t) >> + (treesit-node-check node 'named) >> (if strict >> (< (treesit-node-start node) pos) >> (<= (treesit-node-start node) pos)) > > A better solution IMO is to add some way to distinguish between named and > anonymous nodes. I can think of two ways, either add “and” and > “named/anonymous” predicate, so (and named “unless”) only matches the named > “unless” node; or we add a special syntax such that “(unless)” only matches > named nodes, and “\”unless\”” only matches anonymous nodes. Either predicate or a special syntax is welcome. This would be more handy than writing a lambda with implicit calls of treesit-node-check.
Juri Linkov <juri@HIDDEN>
:casouri@HIDDEN, dmitry@HIDDEN, bug-gnu-emacs@HIDDEN
.
Full text available.casouri@HIDDEN, dmitry@HIDDEN, bug-gnu-emacs@HIDDEN
:bug#74963
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.