From unknown Sat Jun 21 05:20:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#78585: [PATCH] TeX-fold-verbs: improve macro recognition Resent-From: "Paul D. Nelson" Original-Sender: "Debbugs-submit" Resent-CC: bug-auctex@gnu.org Resent-Date: Sun, 25 May 2025 12:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 78585 X-GNU-PR-Package: auctex X-GNU-PR-Keywords: patch To: 78585@debbugs.gnu.org X-Debbugs-Original-To: bug-auctex@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.17481776003494 (code B ref -1); Sun, 25 May 2025 12:54:02 +0000 Received: (at submit) by debbugs.gnu.org; 25 May 2025 12:53:20 +0000 Received: from localhost ([127.0.0.1]:44171 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJAqt-0000uH-H8 for submit@debbugs.gnu.org; Sun, 25 May 2025 08:53:20 -0400 Received: from lists.gnu.org ([2001:470:142::17]:48162) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uJAqq-0000tJ-PD for submit@debbugs.gnu.org; Sun, 25 May 2025 08:53:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uJAqj-0000oZ-8R for bug-auctex@gnu.org; Sun, 25 May 2025 08:53:09 -0400 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uJAqh-0007oI-7O for bug-auctex@gnu.org; Sun, 25 May 2025 08:53:08 -0400 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-603fdd728ccso1515627a12.2 for ; Sun, 25 May 2025 05:53:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748177580; x=1748782380; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=PLBKeBDyJ5wnHapy7f49/fjKbVpGFPupBLZqLh2RHNY=; b=JXapyssjxO3ry44itfcojquu1ZQUajdelNQpbU5OpS5j4oLHbKBu1CQp0Y+Slnx7jC kHV9uInKxj+Yt2JgA49IlNoDXxPi9HeomWINNW9HCXtq60fE/v0B9EMg3s0efmWYb3hZ GgaIz7+cch5WbiJcywdXV4yyKZ660mPTWKwfXlzPajQSUOLWavdoUnr5yNol56wgxCN1 BQOYwW++92MTGsuy0YRV+qWkWSFDyPNIwCCV3wDfYxMEgO+OmcOO/ggPVTxBMvPgqpFQ mDsXnFm05MDg/waTNgu/w68G4w8F4XSpJEYU9m4nq6J1PuEBNCC7Kj0LfzGZ0HQsZpNK 4upw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748177580; x=1748782380; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PLBKeBDyJ5wnHapy7f49/fjKbVpGFPupBLZqLh2RHNY=; b=HJJcEB9h6acIyzhyBqyUc7NjuObXm/Q3rFCBsUL5pMdL6DWO7NDdyRulf+gvcUoHeN Ekbx6mPVsqAjHoCZ8Az4JUq2/FeigAenS/cAx3oLSm8bV4Wdvz0wVkc4QwLjxQwX3yOf AbrSFxKB5fdDPZ+yUDwSDPR0MPqjc43VF/QMXbU+DTgOHHPqIX5u4mXhTQ8J1mxUgGNh edk2h2qDdsXUSchMD0Pdg2+p4a0uD94y6tlVF8Oc9T7r7RvpkA+4iTjF4qKGVhDJ/kVE Ljaf+sCBNOHo8VLNyX+UaxgSgZ+RHkbsf1UbtIzdZCUWJni9YsvODNGWw8cbmboiYKGi e5wg== X-Gm-Message-State: AOJu0YyGJdVz4PFfdAQADh21ZZ3pfbhCgAhQCMZxa6hi+GAq5OD8NFxz DC149hHcwaq5hJnswHB8wlTHC5aQ47QO+y+A/MH/utEq775rlelROg7QDkDPXd60 X-Gm-Gg: ASbGncvGv1/l5j1j74sfSGwiRvzZXkP3K1vbAUPhB/pIRBqH5Jo4aZxxpyrX3KRcgms 20LAuXXfXPlmljXdg/djYuYx17n0mI7HYB629pfGa+X1olN8j59JUywF4v7MJ/k/kIY1yvPAh9h lUYXW6h4uGtBPiqZ3Bhn5cMBVnVjvDV5V3Hp0w1RdIyAF4UPtTtnMkjxxZs2AnYQaHAxBJe4zd6 jS8p2UMfMhyWAfNFxuOo6N7zBAWoGOsxT/N1qIVFcLYV38F9Q811yaRANY1XcARHEHs1uMkcuxk tnai85rcfI+1MbCwW3lzjNGpgUuDcYMC+b/hMa1r7bZro7Q4UOabwWXnhfWhrzJat/vj X-Google-Smtp-Source: AGHT+IHzKsa4GTsFCc5IjClDn8FFzKDeV+Y0Z/NfB0cqgMHSHb3WlViKeGm7BOG4pqLn8Y7SBU9D7A== X-Received: by 2002:a17:907:2d26:b0:ad4:f9fc:20a5 with SMTP id a640c23a62f3a-ad85b1d0f81mr450130266b.32.1748177579957; Sun, 25 May 2025 05:52:59 -0700 (PDT) Received: from localhost ([185.229.154.237]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ad5505131f7sm1324941166b.67.2025.05.25.05.52.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 05:52:59 -0700 (PDT) From: "Paul D. Nelson" Date: Sun, 25 May 2025 14:52:58 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2a00:1450:4864:20::532; envelope-from=ultrono@gmail.com; helo=mail-ed1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Hi all, This patch adds a couple "boundary checks" to the verbatim folding code I contributed earlier. Here's a sample document illustrating what could go wrong: --8<---------------cut here---------------start------------->8--- \documentclass{article} \usepackage{pythontex} \NewDocumentCommand{\pyvm}{ m }{\mbox{\pyv{#1}}} \begin{document} $\pyvm{42}$ \end{document} --8<---------------cut here---------------end--------------->8--- With the previous code, folding would trigger on \pyvm{42} as if it were \pyv with delimiter m. The fix is to require a word boundary in the macro-matching regexp. The other change is a bounds check. I made this change locally a few months ago, and think it was motivated by a parsing error, but unfortunately forgot to save a minimal reproduction. Any feedback welcome. Thanks, best, Paul --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-TeX-fold-verbs-improve-delimiter-and-macro-handling.patch >From f84918335e0ae99921f68458c4bc6b91bd243bad Mon Sep 17 00:00:00 2001 From: Paul Nelson Date: Sun, 25 May 2025 14:51:33 +0200 Subject: [PATCH] TeX-fold-verbs: improve delimiter and macro handling * tex-fold.el (TeX-fold--verb-data): Add check to ensure backward-sexp doesn't jump before macro boundaries when matching braces. (TeX-fold-verbs): Require word boundary after macro name in regexp to prevent folding partial macro matches (e.g., \pyv in \pyvm). --- tex-fold.el | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tex-fold.el b/tex-fold.el index 2c10cc27..766270ef 100644 --- a/tex-fold.el +++ b/tex-fold.el @@ -1362,13 +1362,17 @@ only in LaTeX modes." ?\{ end-delim-char)) (start-delim (char-to-string start-delim-char)) - (verb-arg-start - (1+ (progn - (goto-char bound-end) - (if (string= start-delim TeX-grop) - (progn (backward-sexp) (point)) - (forward-char -1) - (search-backward start-delim bound-start t))))) + (start-delim-pos + (save-excursion + (goto-char bound-end) + (if (string= start-delim TeX-grop) ; "{" + (when-let* ((matching-brace (save-excursion (backward-sexp) + (point)))) + (and (>= matching-brace bound-start) matching-brace)) + ;; delimiter is, e.g., "|" + (goto-char (1- bound-end)) + (search-backward start-delim bound-start t)))) + (verb-arg-start (1+ start-delim-pos)) (verb-arg-end (1- bound-end))) (list bound-start bound-end @@ -1384,7 +1388,8 @@ Replaces the verbatim content with its own text." (regexp-opt (append (LaTeX-verbatim-macros-with-braces) - (LaTeX-verbatim-macros-with-delims)))))) + (LaTeX-verbatim-macros-with-delims))) + "\\_>"))) (while (let ((case-fold-search nil)) (re-search-forward re end t)) (when-let* ((data (TeX-fold--verb-data)) -- 2.39.3 (Apple Git-145) --=-=-=-- From unknown Sat Jun 21 05:20:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#78585: [PATCH] TeX-fold-verbs: improve macro recognition Resent-From: Arash Esbati Original-Sender: "Debbugs-submit" Resent-CC: bug-auctex@gnu.org Resent-Date: Mon, 26 May 2025 12:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78585 X-GNU-PR-Package: auctex X-GNU-PR-Keywords: patch To: "Paul D. Nelson" Cc: 78585@debbugs.gnu.org Received: via spool by 78585-submit@debbugs.gnu.org id=B78585.17482622319504 (code B ref 78585); Mon, 26 May 2025 12:24:02 +0000 Received: (at 78585) by debbugs.gnu.org; 26 May 2025 12:23:51 +0000 Received: from localhost ([127.0.0.1]:55703 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJWrv-0002TE-3v for submit@debbugs.gnu.org; Mon, 26 May 2025 08:23:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55140) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uJWrs-0002Sj-EX for 78585@debbugs.gnu.org; Mon, 26 May 2025 08:23:48 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uJWrm-0000ip-Jl; Mon, 26 May 2025 08:23:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=42cfWzuKuS4o0IvglbXi6YOxZlqm8lIto5Q2Syo6Wt4=; b=OP1vbi63Txzwe4rwCKxE rYNUHNQSOT95+hOBU8DVmnZl6BnW+4eCSkH7DrW1vaPHCkiTTw+ejp19ETwuhK/UYxYRkeEedsQUd J733fxPFY0SHU3WLYQJc34dXI9sZXS7PlvzgRDafXHFZ+ODGymio83epC+gJ8mbqi9YjSkz412+op CkSzvRPaHq1KKfG7PHSfkuDIBiX/BUYPFHoeBSnA9Pa6GUtLisC2KDSQW9HEkKLLJsbnqJfqsx3Gr Z/03zIXRDO5Pq1yQh3ZtMPQ0wOLmeqLuJAiREm52g2lMDUUfGoDlwkGUPW1O3EtH4GASU2g1rH0JH XJLtgLrj/n5YBg==; From: Arash Esbati In-Reply-To: References: Date: Mon, 26 May 2025 14:23:37 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Paul, "Paul D. Nelson" writes: > This patch adds a couple "boundary checks" to the verbatim folding code > I contributed earlier. > > Here's a sample document illustrating what could go wrong: > > \documentclass{article} > \usepackage{pythontex} > \NewDocumentCommand{\pyvm}{ m }{\mbox{\pyv{#1}}} > > \begin{document} > > $\pyvm{42}$ > > \end{document} Yes, I see what you mean. > With the previous code, folding would trigger on \pyvm{42} as if it were > \pyv with delimiter m. The fix is to require a word boundary in the > macro-matching regexp. > > The other change is a bounds check. I made this change locally a few > months ago, and think it was motivated by a parsing error, but > unfortunately forgot to save a minimal reproduction. > > Any feedback welcome. See below. > From f84918335e0ae99921f68458c4bc6b91bd243bad Mon Sep 17 00:00:00 2001 > From: Paul Nelson > Date: Sun, 25 May 2025 14:51:33 +0200 > Subject: [PATCH] TeX-fold-verbs: improve delimiter and macro handling > > * tex-fold.el (TeX-fold--verb-data): Add check to ensure > backward-sexp doesn't jump before macro boundaries when matching > braces. > (TeX-fold-verbs): Require word boundary after macro name in > regexp to prevent folding partial macro matches (e.g., \pyv in > \pyvm). > --- > tex-fold.el | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/tex-fold.el b/tex-fold.el > index 2c10cc27..766270ef 100644 > --- a/tex-fold.el > +++ b/tex-fold.el > @@ -1362,13 +1362,17 @@ only in LaTeX modes." > ?\{ > end-delim-char)) > (start-delim (char-to-string start-delim-char)) > - (verb-arg-start > - (1+ (progn > - (goto-char bound-end) > - (if (string= start-delim TeX-grop) > - (progn (backward-sexp) (point)) > - (forward-char -1) > - (search-backward start-delim bound-start t))))) > + (start-delim-pos > + (save-excursion > + (goto-char bound-end) > + (if (string= start-delim TeX-grop) ; "{" > + (when-let* ((matching-brace (save-excursion (backward-sexp) > + (point)))) > + (and (>= matching-brace bound-start) matching-brace)) > + ;; delimiter is, e.g., "|" > + (goto-char (1- bound-end)) > + (search-backward start-delim bound-start t)))) > + (verb-arg-start (1+ start-delim-pos)) > (verb-arg-end (1- bound-end))) > (list bound-start > bound-end > @@ -1384,7 +1388,8 @@ Replaces the verbatim content with its own text." > (regexp-opt > (append > (LaTeX-verbatim-macros-with-braces) > - (LaTeX-verbatim-macros-with-delims)))))) > + (LaTeX-verbatim-macros-with-delims))) > + "\\_>"))) Why do you use the "\\_>" boundary? I would have expected "\\b" or "\\>"? Am I missing something? Best, Arash From unknown Sat Jun 21 05:20:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#78585: [PATCH] TeX-fold-verbs: improve macro recognition References: Resent-From: "Paul D. Nelson" Original-Sender: "Debbugs-submit" Resent-CC: bug-auctex@gnu.org Resent-Date: Mon, 26 May 2025 16:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78585 X-GNU-PR-Package: auctex X-GNU-PR-Keywords: patch To: Arash Esbati Cc: 78585@debbugs.gnu.org Received: via spool by 78585-submit@debbugs.gnu.org id=B78585.174827592313723 (code B ref 78585); Mon, 26 May 2025 16:13:02 +0000 Received: (at 78585) by debbugs.gnu.org; 26 May 2025 16:12:03 +0000 Received: from localhost ([127.0.0.1]:58548 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJaQk-0003ZG-VN for submit@debbugs.gnu.org; Mon, 26 May 2025 12:12:03 -0400 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]:59477) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJaQi-0003YJ-L0 for 78585@debbugs.gnu.org; Mon, 26 May 2025 12:12:01 -0400 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-6021b8b2c5fso4628452a12.2 for <78585@debbugs.gnu.org>; Mon, 26 May 2025 09:12:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748275914; x=1748880714; darn=debbugs.gnu.org; h=mime-version:message-id:date:in-reply-to:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=NKRu2jGTofvs3HPZV70LZpdskrtMVqqalF3qQ+PazMs=; b=d8gmLmFviKtQ1T52IVEKHLRbVfWK3YBkA4eQmRX2PbjmKQCJ4WgTkBc3wTOfCUUIVg rKpKggOgxJxxU+mKRI0nAyZc8bQ3BWrsn27dWOI57RP4y1Cg6JCdclBY1t+6hsXD9qG8 68wUdLCtf3LXtcEJUO+yR7wXOAvZQKp1Q5yXOac2zR+42cRY0bCs5CyQOB1jHVFyv51V 0ZPy1BrbBB0xDD1QEH2j2vpLBCsredlHBCH9MfzvYdDZXkPSBkKOhWZHwTUk7W+y2d6K yQ8cigeazhlSXnmNrtD37EGBYfMcWgoiZZcRvAimXfm/Z5fzTFItj+fbDAmWhqt2DayO XDuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748275914; x=1748880714; h=mime-version:message-id:date:in-reply-to:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NKRu2jGTofvs3HPZV70LZpdskrtMVqqalF3qQ+PazMs=; b=DsqZMpCtKsivoG3q+WfTN5LqdXWbTIMc/7YH+8HHAKaSn7u0Eegq70IcTXQkyobLvO dGkt95wQk/VS9tkPuTIWHDW35f0gaHdJ5xHFh0zbUYkuKsRkE6t0IKTqd//yXhtOcPmM 8BJcGlOGZbSmou9M+KKnD+i30H0gJhD7xSp5BFgI3xZ/CejiY2dgjvRIHBVeS83JcX7u IKcbpU+k65KxCNL7NQMhvjKEMCfH8y3/x0AEhcaf7ZrqBLYSqEHJ8OxGSoTXD5CtYy4Z UOXaqSUGy7/I9i9guQuJUYO1JYny1vunYRsHS0cjAMj4J/NjC1Ey69lD0cV5/JizUuwj h3pg== X-Gm-Message-State: AOJu0YzD9aAwU9SKqE7XkXTZJbLROsFMRKSbHJrSUVJw4mNzgaFWT/fx 9w5k80B2SijywQ3lNaBphv03/eM99oTT82d0+fAnbDnCgmYR81IIwt96fhFAPI33 X-Gm-Gg: ASbGncvxVfSKynf5cdVBQVwbSkPOnnG6Jty2RtpVy/j07tv/I9mdZ+paTk1eluJIale 2ycfXHYzPO/AhfRGw8mD+rzm06qzfT/BDyoARJEOPOiyc0LcODXLbc8ZZgnegEKoS3l1JK2m8wh tl8hIBYCWXWcMbqDjHO55C6VBRAJIV9sXXIfNsygcxzmPDl7HX7IplXeK9EQkFEu1YnaIfS037R GWpKfJKt6pWi55r7wdUmx5WL3HCdaFtMNL6kWZ9rSjChxI7U5SfZUMoRX0rZaKOz0mLbMyBpDyE k9UyjJGYW46vaW8sOoZ0yqf8V5rwRvnRPZFYr8e/oqAiNkLkJZQcYBWh0yTYLn6wKyi5mBpAYKi Zfj+JZyUIIWGP X-Google-Smtp-Source: AGHT+IGpTDNEHHSAdz2tePE2g3p6flIukLIg38wGaty3JAMaBzoBXUQMnT7GEYKscry0LozMRUrmQA== X-Received: by 2002:a05:6402:34cb:b0:602:346b:1509 with SMTP id 4fb4d7f45d1cf-602d906e3eemr6516859a12.9.1748275914306; Mon, 26 May 2025 09:11:54 -0700 (PDT) Received: from localhost (users-1190.st.net.au.dk. [130.225.0.251]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-604b79dc22fsm1756437a12.14.2025.05.26.09.11.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 May 2025 09:11:53 -0700 (PDT) From: "Paul D. Nelson" In-Reply-To: (message from Arash Esbati on Mon, 26 May 2025 14:23:37 +0200) Date: Mon, 26 May 2025 18:11:53 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Arash, Thanks for your feedback. >> @@ -1384,7 +1388,8 @@ Replaces the verbatim content with its own text." >> (regexp-opt >> (append >> (LaTeX-verbatim-macros-with-braces) >> - (LaTeX-verbatim-macros-with-delims)))))) >> + (LaTeX-verbatim-macros-with-delims))) >> + "\\_>"))) > > Why do you use the "\\_>" boundary? I would have expected "\\b" or > "\\>"? Am I missing something? I had in mind stuff like: (string-match "\\\\verb\\*\\_>" "\\verb*") ; t (string-match "\\\\verb\\*\\>" "\\verb*") ; nil (string-match "\\\\verb\\*\b" "\\verb*") ; nil (I'll confess that I am not too familiar with what sorts of verbatim macro names are out there, but figured ending on a symbol boundary would be relatively safe.) Paul From unknown Sat Jun 21 05:20:27 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: "Paul D. Nelson" Subject: bug#78585: closed (Re: bug#78585: [PATCH] TeX-fold-verbs: improve macro recognition) Message-ID: References: X-Gnu-PR-Message: they-closed 78585 X-Gnu-PR-Package: auctex X-Gnu-PR-Keywords: patch Reply-To: 78585@debbugs.gnu.org Date: Tue, 27 May 2025 08:53:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1748335982-2140-1" This is a multi-part message in MIME format... ------------=_1748335982-2140-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #78585: [PATCH] TeX-fold-verbs: improve macro recognition which was filed against the auctex package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 78585@debbugs.gnu.org. --=20 78585: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D78585 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1748335982-2140-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 78585-done) by debbugs.gnu.org; 27 May 2025 08:52:39 +0000 Received: from localhost ([127.0.0.1]:38089 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJq35-0000Ww-3T for submit@debbugs.gnu.org; Tue, 27 May 2025 04:52:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52696) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uJq2x-0000WH-Of for 78585-done@debbugs.gnu.org; Tue, 27 May 2025 04:52:35 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uJq2s-0001vA-2b; Tue, 27 May 2025 04:52:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=NfNiS1KhvlKatqhM1jdFpChNAXFONjToLqAFYJozjmc=; b=V/Q8a4gCV14YHCijEhXl kuEcoROKqEReNgchKSqp9k62chZm06i0hDPTKksS0ncgpZcIcSiMGs4uADt9fkAnM1Da8I95yS7u4 0i7eiOdhof1OC7e2zeuTx2CKwBpL450gwrkZV6aUelBtQwsqYEnJL89mb0giRTL6cbyco01IsvHX0 S3/1be2+zjFmsxjK37b//GFibOHO5vTv7SUXJ9UIzlo3GB77Y6y2Urd+rkq+qw/KjSZ6eZvViIkmM XMt+dlLqqvUIsJAtZlH4BbcrgRUTUWb8adP74dfMZjuqazzHmvXoNbucJfkkcC+Njukaf9xVzHNvz qb1Lk6wOX3/wSA==; From: Arash Esbati To: "Paul D. Nelson" Subject: Re: bug#78585: [PATCH] TeX-fold-verbs: improve macro recognition In-Reply-To: References: Date: Tue, 27 May 2025 10:52:21 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 78585-done Cc: 78585-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Paul, "Paul D. Nelson" writes: > I had in mind stuff like: > > (string-match "\\\\verb\\*\\_>" "\\verb*") ; t > (string-match "\\\\verb\\*\\>" "\\verb*") ; nil > (string-match "\\\\verb\\*\b" "\\verb*") ; nil > > (I'll confess that I am not too familiar with what sorts of verbatim > macro names are out there, but figured ending on a symbol boundary would > be relatively safe.) Ah, yes, thanks, there are also starred versions. I installed your patch and therefore closing this report. Thanks again for your contribution. Best, Arash ------------=_1748335982-2140-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 25 May 2025 12:53:20 +0000 Received: from localhost ([127.0.0.1]:44171 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJAqt-0000uH-H8 for submit@debbugs.gnu.org; Sun, 25 May 2025 08:53:20 -0400 Received: from lists.gnu.org ([2001:470:142::17]:48162) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uJAqq-0000tJ-PD for submit@debbugs.gnu.org; Sun, 25 May 2025 08:53:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uJAqj-0000oZ-8R for bug-auctex@gnu.org; Sun, 25 May 2025 08:53:09 -0400 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uJAqh-0007oI-7O for bug-auctex@gnu.org; Sun, 25 May 2025 08:53:08 -0400 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-603fdd728ccso1515627a12.2 for ; Sun, 25 May 2025 05:53:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748177580; x=1748782380; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=PLBKeBDyJ5wnHapy7f49/fjKbVpGFPupBLZqLh2RHNY=; b=JXapyssjxO3ry44itfcojquu1ZQUajdelNQpbU5OpS5j4oLHbKBu1CQp0Y+Slnx7jC kHV9uInKxj+Yt2JgA49IlNoDXxPi9HeomWINNW9HCXtq60fE/v0B9EMg3s0efmWYb3hZ GgaIz7+cch5WbiJcywdXV4yyKZ660mPTWKwfXlzPajQSUOLWavdoUnr5yNol56wgxCN1 BQOYwW++92MTGsuy0YRV+qWkWSFDyPNIwCCV3wDfYxMEgO+OmcOO/ggPVTxBMvPgqpFQ mDsXnFm05MDg/waTNgu/w68G4w8F4XSpJEYU9m4nq6J1PuEBNCC7Kj0LfzGZ0HQsZpNK 4upw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748177580; x=1748782380; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PLBKeBDyJ5wnHapy7f49/fjKbVpGFPupBLZqLh2RHNY=; b=HJJcEB9h6acIyzhyBqyUc7NjuObXm/Q3rFCBsUL5pMdL6DWO7NDdyRulf+gvcUoHeN Ekbx6mPVsqAjHoCZ8Az4JUq2/FeigAenS/cAx3oLSm8bV4Wdvz0wVkc4QwLjxQwX3yOf AbrSFxKB5fdDPZ+yUDwSDPR0MPqjc43VF/QMXbU+DTgOHHPqIX5u4mXhTQ8J1mxUgGNh edk2h2qDdsXUSchMD0Pdg2+p4a0uD94y6tlVF8Oc9T7r7RvpkA+4iTjF4qKGVhDJ/kVE Ljaf+sCBNOHo8VLNyX+UaxgSgZ+RHkbsf1UbtIzdZCUWJni9YsvODNGWw8cbmboiYKGi e5wg== X-Gm-Message-State: AOJu0YyGJdVz4PFfdAQADh21ZZ3pfbhCgAhQCMZxa6hi+GAq5OD8NFxz DC149hHcwaq5hJnswHB8wlTHC5aQ47QO+y+A/MH/utEq775rlelROg7QDkDPXd60 X-Gm-Gg: ASbGncvGv1/l5j1j74sfSGwiRvzZXkP3K1vbAUPhB/pIRBqH5Jo4aZxxpyrX3KRcgms 20LAuXXfXPlmljXdg/djYuYx17n0mI7HYB629pfGa+X1olN8j59JUywF4v7MJ/k/kIY1yvPAh9h lUYXW6h4uGtBPiqZ3Bhn5cMBVnVjvDV5V3Hp0w1RdIyAF4UPtTtnMkjxxZs2AnYQaHAxBJe4zd6 jS8p2UMfMhyWAfNFxuOo6N7zBAWoGOsxT/N1qIVFcLYV38F9Q811yaRANY1XcARHEHs1uMkcuxk tnai85rcfI+1MbCwW3lzjNGpgUuDcYMC+b/hMa1r7bZro7Q4UOabwWXnhfWhrzJat/vj X-Google-Smtp-Source: AGHT+IHzKsa4GTsFCc5IjClDn8FFzKDeV+Y0Z/NfB0cqgMHSHb3WlViKeGm7BOG4pqLn8Y7SBU9D7A== X-Received: by 2002:a17:907:2d26:b0:ad4:f9fc:20a5 with SMTP id a640c23a62f3a-ad85b1d0f81mr450130266b.32.1748177579957; Sun, 25 May 2025 05:52:59 -0700 (PDT) Received: from localhost ([185.229.154.237]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-ad5505131f7sm1324941166b.67.2025.05.25.05.52.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 05:52:59 -0700 (PDT) From: "Paul D. Nelson" To: bug-auctex@gnu.org Subject: [PATCH] TeX-fold-verbs: improve macro recognition Date: Sun, 25 May 2025 14:52:58 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2a00:1450:4864:20::532; envelope-from=ultrono@gmail.com; helo=mail-ed1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Hi all, This patch adds a couple "boundary checks" to the verbatim folding code I contributed earlier. Here's a sample document illustrating what could go wrong: --8<---------------cut here---------------start------------->8--- \documentclass{article} \usepackage{pythontex} \NewDocumentCommand{\pyvm}{ m }{\mbox{\pyv{#1}}} \begin{document} $\pyvm{42}$ \end{document} --8<---------------cut here---------------end--------------->8--- With the previous code, folding would trigger on \pyvm{42} as if it were \pyv with delimiter m. The fix is to require a word boundary in the macro-matching regexp. The other change is a bounds check. I made this change locally a few months ago, and think it was motivated by a parsing error, but unfortunately forgot to save a minimal reproduction. Any feedback welcome. Thanks, best, Paul --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-TeX-fold-verbs-improve-delimiter-and-macro-handling.patch >From f84918335e0ae99921f68458c4bc6b91bd243bad Mon Sep 17 00:00:00 2001 From: Paul Nelson Date: Sun, 25 May 2025 14:51:33 +0200 Subject: [PATCH] TeX-fold-verbs: improve delimiter and macro handling * tex-fold.el (TeX-fold--verb-data): Add check to ensure backward-sexp doesn't jump before macro boundaries when matching braces. (TeX-fold-verbs): Require word boundary after macro name in regexp to prevent folding partial macro matches (e.g., \pyv in \pyvm). --- tex-fold.el | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tex-fold.el b/tex-fold.el index 2c10cc27..766270ef 100644 --- a/tex-fold.el +++ b/tex-fold.el @@ -1362,13 +1362,17 @@ only in LaTeX modes." ?\{ end-delim-char)) (start-delim (char-to-string start-delim-char)) - (verb-arg-start - (1+ (progn - (goto-char bound-end) - (if (string= start-delim TeX-grop) - (progn (backward-sexp) (point)) - (forward-char -1) - (search-backward start-delim bound-start t))))) + (start-delim-pos + (save-excursion + (goto-char bound-end) + (if (string= start-delim TeX-grop) ; "{" + (when-let* ((matching-brace (save-excursion (backward-sexp) + (point)))) + (and (>= matching-brace bound-start) matching-brace)) + ;; delimiter is, e.g., "|" + (goto-char (1- bound-end)) + (search-backward start-delim bound-start t)))) + (verb-arg-start (1+ start-delim-pos)) (verb-arg-end (1- bound-end))) (list bound-start bound-end @@ -1384,7 +1388,8 @@ Replaces the verbatim content with its own text." (regexp-opt (append (LaTeX-verbatim-macros-with-braces) - (LaTeX-verbatim-macros-with-delims)))))) + (LaTeX-verbatim-macros-with-delims))) + "\\_>"))) (while (let ((case-fold-search nil)) (re-search-forward re end t)) (when-let* ((data (TeX-fold--verb-data)) -- 2.39.3 (Apple Git-145) --=-=-=-- ------------=_1748335982-2140-1--