GNU logs - #77746, boring messages


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 11 Apr 2025 14:56:02 +0000
Resent-Message-ID: <handler.77746.B.174438331914772 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: 77746 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.174438331914772
          (code B ref -1); Fri, 11 Apr 2025 14:56:02 +0000
Received: (at submit) by debbugs.gnu.org; 11 Apr 2025 14:55:19 +0000
Received: from localhost ([127.0.0.1]:51175 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u3Fmp-0003q8-Bb
	for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 10:55:19 -0400
Received: from lists.gnu.org ([2001:470:142::17]:48712)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u3Fmn-0003l4-6e
 for submit <at> debbugs.gnu.org; Fri, 11 Apr 2025 10:55: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 <contact@HIDDEN>)
 id 1u3Fmg-0001ON-6t
 for bug-gnu-emacs@HIDDEN; Fri, 11 Apr 2025 10:55:10 -0400
Received: from azure.banana.relay.mailchannels.net ([23.83.217.7])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <contact@HIDDEN>)
 id 1u3Fmd-0004mz-JB
 for bug-gnu-emacs@HIDDEN; Fri, 11 Apr 2025 10:55:09 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 732081C3297
 for <bug-gnu-emacs@HIDDEN>; Fri, 11 Apr 2025 14:55:04 +0000 (UTC)
Received: from pdx1-sub0-mail-a207.dreamhost.com
 (trex-9.trex.outbound.svc.cluster.local [100.103.71.177])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id F40C11C38B8
 for <bug-gnu-emacs@HIDDEN>; Fri, 11 Apr 2025 14:55:03 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744383304; a=rsa-sha256;
 cv=none;
 b=WXbc2zebBS38VVHnczNZLNrHVYkTH42OVAtJptEVEl5D+83bYummVKisTyLv5VstupQSgc
 IxW6aX+Y7/kFAnQO+hb25Yxa/AIk88Ar13VW6BvqkfqS/KO7UEAwajPT4+q0WfIvZOLFJj
 06pOlPYknsNVM4T/sOAhNY7Dzq5YZd2GYUXa7WL8EfMXs6YP1NgQrsFuoGDRPPcXr+/pSx
 q4yxjEuPwBFQliZ8MEwPh8K4zVfPweTIG3P6loKJzaIzwacAmUgRQ9sCmmvEVuyi6f09TW
 06Hw686UGREzgQRUR0D9u/EoZfZXGBLON3uu3dq9jC05FGKWj/GxtUzzxxfRhw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744383304;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:mime-version:mime-version:content-type:content-type:
 dkim-signature; bh=8JeDI1jUa+an0BcPR95rO4nBfY2wNQ6TYr2f5Ms1+2s=;
 b=5DAA+GX6iypYqNHgSHC6d6sfip1yaR4qzVUmm6gmr6NAwI7uDxVRfU7lPlGZ2fdjmK67/X
 jEp3jvIm3VKSyOTPnEMbNrGgQgipM53v4yvLHVhderIBSBE906OJzs25BijToheHuA2SN8
 pKXrca+x46sMMFqEsOVFPZUdgmoO49StWFYOCpOdpUT599cuhJk0qnBcCd0y858NmmBFcJ
 Ib/RmNgwEHFyD2XXBn2rozquaDvspMAgC/e/f7ffutcI+OIpYw1D1NymIDSHJTre3DAgCD
 GVoFKypSrygv1WJUpjuXturkk7+4C6SxuDC1Fd4atRFKfVU6RSQ3BWmqPKk1LQ==
ARC-Authentication-Results: i=1; rspamd-596b578d8b-zjhxt;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Bad
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Blushing-Harbor: 10987f7c1814fbd2_1744383304205_2308458501
X-MC-Loop-Signature: 1744383304205:1045707165
X-MC-Ingress-Time: 1744383304205
Received: from pdx1-sub0-mail-a207.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.103.71.177 (trex/7.0.3); Fri, 11 Apr 2025 14:55:04 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a207.dreamhost.com (Postfix) with ESMTPSA id 4ZZ08l4SQczDD
 for <bug-gnu-emacs@HIDDEN>; Fri, 11 Apr 2025 07:55:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744383303;
 bh=8JeDI1jUa+an0BcPR95rO4nBfY2wNQ6TYr2f5Ms1+2s=;
 h=Content-Type:Date:To:From:Subject;
 b=LZ5ukuNn/85d0SVI+0uIaM1UD5IBRveZUXOSg+OFCl8VSJWV09pDrkFhwcJ/rnof8
 x/yirCCGVcbchOX6BBlfb2FFEinixrrrpeKa60/ujSibURaaMJLegUHzCNTwEISykr
 BkAtDDVpJVYAEp3L8nZNkqkTXKQWQ+advyX6pow/IbWA84qWTrp1pYCc+VSi+J2rHE
 e9hf9vGyNqvmJ5EbyjvRXPrNkCvBxYW71Kw9eC4r8R1MYux3o/KIIBhUuoE0zvBAIi
 Haa0ClOcfQGUhFgX1B5zXLW+DlWIC2gluLp2KxNMTxI5pwdqo/Rxtvpmlliu21TLCh
 pP4tTxK1klD/A==
Content-Type: multipart/mixed; boundary="------------0c3sa9sPb8QRyCllLPJNGEbC"
Message-ID: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
Date: Fri, 11 Apr 2025 10:55:02 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
Received-SPF: pass client-ip=23.83.217.7; envelope-from=contact@HIDDEN;
 helo=azure.banana.relay.mailchannels.net
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,
 RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
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: -0.1 (/)

This is a multi-part message in MIME format.
--------------0c3sa9sPb8QRyCllLPJNGEbC
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

In sh and Bash, the characters !%^~:.,= and are not valid in variable or
function names.

Assigning them the "_" syntax causes Emacs to treat them as word
constituents, disrupting navigation and completion
(e.g. dabbrev-expand, forward-word, etc.).

The attached patch updates the syntax table in sh-mode to mark
these characters as punctuation, correcting the issue.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/

--------------0c3sa9sPb8QRyCllLPJNGEbC
Content-Type: text/x-patch; charset=UTF-8;
 name="fix-sh-mode-syntax-table.patch"
Content-Disposition: attachment; filename="fix-sh-mode-syntax-table.patch"
Content-Transfer-Encoding: base64

RnJvbSBiODdkMWNkZDU4NWJkM2EwNzIzZDk5NmNlZmJhZTg4MTRkZjVmZDdlIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBDaGVydGkgPGNvbnRhY3RAamFtZXNjaGVy
dGkuY29tPgpEYXRlOiBGcmksIDExIEFwciAyMDI1IDEwOjE4OjE5IC0wNDAwClN1YmplY3Q6
IFtQQVRDSF0gTWFyayAhJV5+Oi4sPSBhcyBwdW5jdHVhdGlvbiByYXRoZXIgdGhhbiB3b3Jk
IGNvbnN0aXR1ZW50cwoKSW4gc2ggYW5kIEJhc2gsIHRoZSBjaGFyYWN0ZXJzICElXn46Liw9
IGFuZCBhcmUgbm90IHZhbGlkIGluIHZhcmlhYmxlIG9yCmZ1bmN0aW9uIG5hbWVzLiBBc3Np
Z25pbmcgdGhlbSB0aGUgIl8iIHN5bnRheCBjYXVzZXMgRW1hY3MgdG8gdHJlYXQgdGhlbQph
cyB3b3JkIGNvbnN0aXR1ZW50cywgZGlzcnVwdGluZyBuYXZpZ2F0aW9uIGFuZCBjb21wbGV0
aW9uCihlLmcuIGRhYmJyZXYtZXhwYW5kLCBmb3J3YXJkLXdvcmQsIGV0Yy4pLgoKKiBsaXNw
L3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWw6IE1hcmsgISVefjouLD0gYXMgcHVuY3R1YXRpb24g
aW4gdGhlCiAgc2gtbW9kZS1zeW50YXgtdGFibGUgc3ludGF4IHRhYmxlLgoKQ29weXJpZ2h0
LXBhcGVyd29yay1leGVtcHQ6IHllcwotLS0KIGxpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5l
bCB8IDE0ICsrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCsp
LCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlw
dC5lbCBiL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbAppbmRleCBiZDIxNzgxNjdlZS4u
NTIyOTE2Y2Y1MDYgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbAor
KysgYi9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwKQEAgLTQwNCwxNyArNDA0LDE3IEBA
IHNoLW1vZGUtc3ludGF4LXRhYmxlCiAJP1xgICJcImAiCiAJOzsgPyQgbWlnaHQgYWxzbyBo
YXZlIGEgIi4gcCIgc3ludGF4LiBCb3RoICInIiBhbmQgIi4gcCIgc2VlbQogCTs7IHRvIHdv
cmsgZmluZS4gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCBkYWJicmV2LWV4cGFuZAogCTs7ICRW
QVJOQU1FIHdvcmtzLgogCT8kICInIgotCT8hICJfIgotCT8lICJfIgotCT86ICJfIgotCT8u
ICJfIgotCT9eICJfIgotCT9+ICJfIgotCT8sICJfIgorCT8hICIuIgorCT8lICIuIgorCT86
ICIuIgorCT8uICIuIgorCT9eICIuIgorCT9+ICIuIgorCT8sICIuIgogCT89ICIuIgogICAg
ICAgICA/LyAiLiIKIAk/XDsgIi4iCiAJP3wgIi4iCiAJPyYgIi4iCi0tCjIuNDkuMAo=

--------------0c3sa9sPb8QRyCllLPJNGEbC--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: James Cherti <contact@HIDDEN>
Subject: bug#77746: Acknowledgement ([PATCH] sh-mode: Fix incorrect word
 syntax for punctuation in sh-mode)
Message-ID: <handler.77746.B.174438331914772.ack <at> debbugs.gnu.org>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
X-Gnu-PR-Message: ack 77746
X-Gnu-PR-Package: emacs
X-Gnu-PR-Keywords: patch
Reply-To: 77746 <at> debbugs.gnu.org
Date: Fri, 11 Apr 2025 14:56:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 77746 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
77746: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77746
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 13 Apr 2025 09:46:02 +0000
Resent-Message-ID: <handler.77746.B77746.17445375309141 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, Juri Linkov <juri@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.17445375309141
          (code B ref 77746); Sun, 13 Apr 2025 09:46:02 +0000
Received: (at 77746) by debbugs.gnu.org; 13 Apr 2025 09:45:30 +0000
Received: from localhost ([127.0.0.1]:39248 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u3tu5-0002NM-LM
	for submit <at> debbugs.gnu.org; Sun, 13 Apr 2025 05:45:30 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:54726)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u3tu1-0002Lp-J0
 for 77746 <at> debbugs.gnu.org; Sun, 13 Apr 2025 05:45:26 -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 <eliz@HIDDEN>)
 id 1u3ttv-00062v-Ow; Sun, 13 Apr 2025 05:45:19 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Lo6Hs94z3Tc4zhw02+3LhENzUKmrHBcCGPeJE7MnblM=; b=gadFx0cq0dk0
 mbDw1+PIex4rO1mC9X+BIkl+aTNcwms2A0XzbZKI4Xi0nDbag4x9HHX6EgcGxtdtZH/WUPfP1yokz
 64Wc3FmS5xdm8aelcY5apQ3lCKCks6i3p+PJVyGZMnBjvoo6vPxa7QctMwTgl0ord+yNWJqWyjske
 lqWcLe8GN9bACi2/POwkDl8QKYBZMMxO1g7FPmmjSF07gD/nXKN25428KsyJJByRItlHXD5l0L5/n
 lGlBW0/lLRUSZ9kGya20+H7hjY36DBAe65eB6T6QymLTSFuCUlIggmcYO3hBz7pQIBpIX/icKJqgC
 tIRl2FyIILxSFby7mulpBg==;
Date: Sun, 13 Apr 2025 12:45:13 +0300
Message-Id: <86y0w4jsye.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN> (message
 from James Cherti on Fri, 11 Apr 2025 10:55:02 -0400)
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
X-Spam-Score: -2.3 (--)
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.3 (---)

> Date: Fri, 11 Apr 2025 10:55:02 -0400
> From: James Cherti <contact@HIDDEN>
> 
> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
> function names.
> 
> Assigning them the "_" syntax causes Emacs to treat them as word
> constituents, disrupting navigation and completion
> (e.g. dabbrev-expand, forward-word, etc.).
> 
> The attached patch updates the syntax table in sh-mode to mark
> these characters as punctuation, correcting the issue.

Thanks.

TBH, such a change sounds scary, as it could cause all kinds of
unintended changes in behavior.

I've added a couple of people who might know this mode better than I
do, in the hope that they will have comments or opinions.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 13 Apr 2025 17:35:01 +0000
Resent-Message-ID: <handler.77746.B77746.1744565646731 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Juri Linkov <juri@HIDDEN>, 77746 <at> debbugs.gnu.org, James Cherti <contact@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.1744565646731
          (code B ref 77746); Sun, 13 Apr 2025 17:35:01 +0000
Received: (at 77746) by debbugs.gnu.org; 13 Apr 2025 17:34:06 +0000
Received: from localhost ([127.0.0.1]:43700 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u41Da-0000Bi-41
	for submit <at> debbugs.gnu.org; Sun, 13 Apr 2025 13:34:06 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:30617)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u41DW-0000B7-T7
 for 77746 <at> debbugs.gnu.org; Sun, 13 Apr 2025 13:34:04 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 6D5A810006B;
 Sun, 13 Apr 2025 13:33:57 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744565636;
 bh=dlUHaBHYfrw4c15xV6kyDMckLJQ7Jd1jN+nf4kQGLMI=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=FDu7jX0rpdZf2wQf2sDSOz2SS964GI6DTOEMKd2ce5x3+G74fWRa2YrcctPwLQL3f
 ExGicV2OUnitoPzxcTUIh4yb8oLjyb2oS8CwOrMOnN69BIdU+c2zXmkoYNAVapSr3A
 KRTCeVBMkavxZ1OESKFPfXkULJJECd9H2kiwpIZHuJKX9nsFLgTsSZKLmae107TxF6
 +8DGseDncKPQL2iPnyfYeJ5LdP2G+qFe/2MinqORPssIvxbd3LsEDFhEqn/xU/yMWZ
 1CkedVXvPZQ/2Hkdl8QSvydf4ioCd6N/z8c8oJq6oy7cSS3JrTxnFCjw1S7kmTo0lA
 /7wtB8oENEDiw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7C1BD100029;
 Sun, 13 Apr 2025 13:33:56 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 48B621201A6;
 Sun, 13 Apr 2025 13:33:56 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <86y0w4jsye.fsf@HIDDEN>
Message-ID: <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
Date: Sun, 13 Apr 2025 13:33:55 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.383 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
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.3 (---)

>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>> function names.

I'm not positive about all of them, but at least some of those can
appear in the names of commands.

>> Assigning them the "_" syntax causes Emacs to treat them as word
>> constituents,

Not quite: it makes them appear as "symbol constituents".

>> disrupting navigation and completion (e.g. dabbrev-expand,
>> forward-word, etc.).

`forward-word` for example shouldn't be affected (unless you enable
`superword-mode`).  `dabbrev-expand` OTOH is affected, indeed.

>> The attached patch updates the syntax table in sh-mode to mark
>> these characters as punctuation, correcting the issue.
> TBH, such a change sounds scary, as it could cause all kinds of
> unintended changes in behavior.

It's indeed risky/delicate.  The syntax-tables are a fairly crude tool,
so we often need to use different tables at different places.

Rather than go straight to changing the syntax-table, I suggest you
start by providing some concrete examples of behaviors you consider
incorrect with the current code.  Maybe changing the main syntax-table
of that mode will be the better option, but if so, it'll probably
require changing other code to keep using the current
syntax-table there.
[ I haven't tested it, but I'd expect trouble with your patch either in
  font-lock or indentation if you have commands with names like
  `if-config`.  ]


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Kangas <stefankangas@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 05:14:02 +0000
Resent-Message-ID: <handler.77746.B77746.174460759626350 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Cc: James Cherti <contact@HIDDEN>, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174460759626350
          (code B ref 77746); Mon, 14 Apr 2025 05:14:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 05:13:16 +0000
Received: from localhost ([127.0.0.1]:45281 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4C8C-0006qw-1S
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 01:13:16 -0400
Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]:60557)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>)
 id 1u4C87-0006qR-6R
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 01:13:13 -0400
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5e5bc066283so6213404a12.0
 for <77746 <at> debbugs.gnu.org>; Sun, 13 Apr 2025 22:13:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1744607585; x=1745212385; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
 :from:from:to:cc:subject:date:message-id:reply-to;
 bh=4OlfvqmJOCIkdiH0RIEfPNzFpU978DDQlBia11hxFJs=;
 b=FzEPbS2JSXgFrMBtpZp8pXuYvl8KpQVfBjY82jQy57uXTfjqEinQtAdzzVfZpjctq/
 sLo0RLke8P5m9B8SHm1NgzrsX29FWzWp2teXiThvQoSyLRNQkYY+X1G2pqvPkC495JJE
 GN2keWc4c6rb8FEleSqcqr1Af2ODvfTqg2dexp1o4v9PbruM20UkPDKdpdXNEUxxnbiL
 0pj/ZeRZ+zHL7c2I+gtxl/4Xdy+D1THVgx/P5KOFFKlbRmEDtJg6PQ9I3EvcqfIUk8sT
 0yfP5W2MdgJozLM/I0i1jpJUqnXginY58QmwGmq4QGDtB6V3KydFt83Lnq8wsrL6h7UM
 9/uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1744607585; x=1745212385;
 h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
 :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=4OlfvqmJOCIkdiH0RIEfPNzFpU978DDQlBia11hxFJs=;
 b=MDmJx642a7cu+406onYaZTj2Rt7dc6l/5zoEY3tEVRyWaYPdg9m165mLMJwhaGkQwx
 XEhel81TGWtmDhd4wz8ZALy8p0VreuOVPbmqg/fGkfeowzXvkM9TfP4MphZcFzufMa3Y
 UJ5vJ9R4I5UBeqm/ZVnTTz55cu2A1yCUvheQY7mwwcafoRR06/rdieAInrZOmOTGY1+y
 D5gawsLbXz9NJFS7cJn0B/ikmBMz7TcMfalWaRVw/iFyIIuglO4R5Uk4bbCrSJe/+J69
 hIuacpy0rVQr6eNCVaLe78sqg97x6lLKrdTyRxDoPmANoqZBO2WR+XE1R5WksL6myDqm
 ZghQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCW/ETbOTPv38eYNxZm1gAGaJSuuqRBfW+dbn2Qsgne7Exmh7PQByHQxCqd0r1tiGGAMN8Nm5g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yxi+cyldXANnoG1fyjrvpgx5aEVU+eh0Xc+IHu6UyKQmRIbRoi0
 fCCBpRIcvqQ2YOX3HhzAXiCk9j58tyDVgjqWITUG5qkYkZtjNVXAABj4A2ldHqp+HIXSHk+gvlA
 zm5J87EhX3zDfTJbXARQFpg/osPk=
X-Gm-Gg: ASbGncv8nFyrxXDUQpVgkivJ9VmQIemL05Y+9FSXiKnKVylHPrv2Nq593vNPft/CDK3
 qJpHVGPRpjc0Mx13623nr0oq6Wx3GRF2cA8YByqIqUzNCu0qyrgHnXHg/XtozGJ6lUeXz/NGzlc
 OTFaXFpKbi/DiDXCDjGKjSOQX/+514wus=
X-Google-Smtp-Source: AGHT+IH3tyeiMws0U1jwLesGS+1kR8gbLIK+GtlR9ORkckwoQIFBj8j5FT5tTTSHFC385sB20IfClgUbxQgjFRripLs=
X-Received: by 2002:a05:6402:3592:b0:5f3:2584:5bf8 with SMTP id
 4fb4d7f45d1cf-5f36fdc57a0mr7866945a12.21.1744607584575; Sun, 13 Apr 2025
 22:13:04 -0700 (PDT)
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Sun, 13 Apr 2025 22:13:04 -0700
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Sun, 13 Apr 2025 22:13:04 -0700
From: Stefan Kangas <stefankangas@HIDDEN>
In-Reply-To: <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
MIME-Version: 1.0
Date: Sun, 13 Apr 2025 22:13:04 -0700
X-Gm-Features: ATxdqUHQqkLI-twhinKSqIznnVpE2kj93jypcYGWFdn_0ejkb8mRUA1rr6VasTc
Message-ID: <CADwFkmkFo3jDk039Qh2G0KaTMXDghksn692COTRx6v9oXD0=fQ@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
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 (-)

Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@HIDDEN> writes:

>>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>>> function names.
>
> I'm not positive about all of them, but at least some of those can
> appear in the names of commands.
>
>>> Assigning them the "_" syntax causes Emacs to treat them as word
>>> constituents,
>
> Not quite: it makes them appear as "symbol constituents".
>
>>> disrupting navigation and completion (e.g. dabbrev-expand,
>>> forward-word, etc.).
>
> `forward-word` for example shouldn't be affected (unless you enable
> `superword-mode`).  `dabbrev-expand` OTOH is affected, indeed.
>
>>> The attached patch updates the syntax table in sh-mode to mark
>>> these characters as punctuation, correcting the issue.
>> TBH, such a change sounds scary, as it could cause all kinds of
>> unintended changes in behavior.
>
> It's indeed risky/delicate.

Yes, this one does not look straightforward.

IMO, risky changes like this one should really come with a reasonably
comprehensive set of unit tests too, to give us better confidence that
we have considered a reasonable amount of use cases.

Sadly, our unit tests in this area do not have very good coverage as it
stands, so this would take some work.

> Rather than go straight to changing the syntax-table, I suggest you
> start by providing some concrete examples of behaviors you consider
> incorrect with the current code.  Maybe changing the main syntax-table
> of that mode will be the better option, but if so, it'll probably
> require changing other code to keep using the current
> syntax-table there.

This is probably the best way forward here.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Visuwesh <visuweshm@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 09:21:02 +0000
Resent-Message-ID: <handler.77746.B77746.174462240921516 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, James Cherti <contact@HIDDEN>, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174462240921516
          (code B ref 77746); Mon, 14 Apr 2025 09:21:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 09:20:09 +0000
Received: from localhost ([127.0.0.1]:45779 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4Fz6-0005ax-Mx
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 05:20:08 -0400
Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:44421)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <visuweshm@HIDDEN>)
 id 1u4Fz4-0005aE-Cw
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 05:20:07 -0400
Received: by mail-pl1-x643.google.com with SMTP id
 d9443c01a7336-223fb0f619dso41435485ad.1
 for <77746 <at> debbugs.gnu.org>; Mon, 14 Apr 2025 02:20:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1744622400; x=1745227200; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=7uwjo65hh7iXhja7k0ZGmFNv6IDm+Ddm6jmQbQ1ZxN4=;
 b=KIMRwKucusZ015RFcW8FAD1KjTWb88JViuS+2Ron77MwkR5kfMp1t8DHivsyDK6a6x
 bBWGTcFdBAqdM9WLBm7T+OGIB/V7ype0otP2dkx3LeA4MfIoBHyNNDsn0vH0ROhQTzx3
 P2tshdNXDMLHPPkS6OuihhVj9djl9vWrq/ICo7RrwstkApBaOUjLhEo3uCGcmm9pAdx/
 PkAibn13UxOQVrHo+FPptc1rVOrgvgBkSszrjIUul1r5yjvciMy9KR4xC2kZVfBWCU98
 i7joF/IdX29RD6wduYeCFRhYrJEhLBOW7O5ndxUogYz6zuBjMYd13gcrACcyJmoxN2yk
 bZBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1744622400; x=1745227200;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=7uwjo65hh7iXhja7k0ZGmFNv6IDm+Ddm6jmQbQ1ZxN4=;
 b=UFg4jtI8omTMPNbGi0yU8pwnYxyVoJXw7LIUu4JMHTG/v7nx4shNTTHiqCwJJWTxHi
 iM/OKLLRCFo6WrdeovMCbzoMeDPDb/YuplrrGlo09w5ptdCqTxgWFVtXm//qVo+fziu2
 ZuewVwJ0k2uLTiylr98OrQZRBKCny2rXzxxgJu9aW4ooxensfhq/nkguBeZiOX+PBCLo
 2BrFoShV9pxd6SyGBdwh7VT69Uf7M0WNH5btC3546mVT6S9vIKkj3G0re5AfxAotcSfI
 xc1n+/PtAB9fyE9VOgtajHm7e84s0HTHhpI2cEptm4ussamn3Bg0jtYPD6jQdPUivNor
 8PEg==
X-Forwarded-Encrypted: i=1;
 AJvYcCU45dcx/pWD5bkSv09pOGo/yinj87Mdep7gLiBNBreJk61U5YxczcDQP7Nc9SuhaRVHv7oR9A==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzQUsg+NOJHbHs847gdnINo//J6h6kmCABRfdnHgKVkKwOSWxHZ
 wteBC4JaVfnkcoYnhp87CNT5NyoTRJkgxBxFzQ7uuRpa7Tp0/42U
X-Gm-Gg: ASbGncvcgCfRCsb7k1XelVaeVYfwDxMtszdEoTDOu5Uj/ddK6MUgYYyVb4z2PRwhsPg
 PnfQI7aqM2TJBlY+Kt+36pqJu2JQiucHZEM0GBfoBKYdZ8NDadCpTtf2z55JqusHXAhFqEjmpTN
 n7ZF5UAJNIj91bU7Z5vEOMItGLDh03s5UOOgRJltnrKyBlM71jksh3ziuwNcQlGjyXELvRw/mNr
 UuaNJUTL7sNmrHFiE1fEnd6t9oq2vxWk9XuBlEvCndc1z+QGjcRdpWyz62RCM+IJCLqQxTk0cdT
 tjSJ/Z9/jqisqEal2+w8dFGMms1zbvf4Yhg0jBX6Kg==
X-Google-Smtp-Source: AGHT+IHMcYOUJoxTmdl7OMj+u2lqZJacnM+7k/tGxcUotmFuq8UZg/RiHtBRuyQfmtLrSc0xK9PO9A==
X-Received: by 2002:a17:902:c943:b0:220:ca39:d453 with SMTP id
 d9443c01a7336-22bea4ab7f9mr160032885ad.17.1744622399974; 
 Mon, 14 Apr 2025 02:19:59 -0700 (PDT)
Received: from localhost ([1.7.159.71]) by smtp.gmail.com with UTF8SMTPSA id
 d9443c01a7336-22ac7b8af2dsm94625505ad.69.2025.04.14.02.19.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Apr 2025 02:19:58 -0700 (PDT)
From: Visuwesh <visuweshm@HIDDEN>
In-Reply-To: <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
Date: Mon, 14 Apr 2025 14:49:54 +0530
Message-ID: <87bjszje11.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  =?UTF-8?Q?[=E0=AE=9E=E0=AE=BE=E0=AE=AF=E0=AE=BF=E0=AE=B1=E0=AF=81_?= =?UTF-8?Q?=E0=AE=8F=E0=AE=AA=E0=AF=8D=E0=AE=B0=E0=AE=B2=E0=AF=8D?= 13, 2025] Stefan Monnier
    via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
    >>> In sh and Bash, the characters !%^~:.,= and are not valid in variable
    or >>> function names. > > I'm not positive about all of them, but at least
    some of those can > appear in the names of command [...] 
 
 Content analysis details:   (3.6 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [1.7.159.71 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (visuweshm[at]gmail.com)
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
                              no trust
                             [2607:f8b0:4864:20:0:0:0:643 listed in]
                             [list.dnswl.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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  =?UTF-8?Q?[=E0=AE=9E=E0=AE=BE=E0=AE=AF=E0=AE=BF=E0=AE=B1=E0=AF=81_?= =?UTF-8?Q?=E0=AE=8F=E0=AE=AA=E0=AF=8D=E0=AE=B0=E0=AE=B2=E0=AF=8D?= 13, 2025] Stefan Monnier
    via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
    >>> In sh and Bash, the characters !%^~:.,= and are not valid in variable
    or >>> function names. > > I'm not positive about all of them, but at least
    some of those can > appear in the names of command [...] 
 
 Content analysis details:   (2.6 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
                              no trust
                             [2607:f8b0:4864:20:0:0:0:643 listed in]
                             [list.dnswl.org]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [1.7.159.71 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (visuweshm[at]gmail.com)
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

[=E0=AE=9E=E0=AE=BE=E0=AE=AF=E0=AE=BF=E0=AE=B1=E0=AF=81 =E0=AE=8F=E0=AE=AA=
=E0=AF=8D=E0=AE=B0=E0=AE=B2=E0=AF=8D 13, 2025] Stefan Monnier via "Bug repo=
rts for GNU Emacs, the Swiss army knife of text editors" wrote:

>>> In sh and Bash, the characters !%^~:.,=3D and are not valid in variable=
 or
>>> function names.
>
> I'm not positive about all of them, but at least some of those can
> appear in the names of commands.

Not sure sh (and its million implementations) but bash definitely allows
%.  I have [-A-Z0-9]+% as a function in ~/.emacs.d/init_bash.sh so I
don't have to worry about editing out the prompt when submitting an
(edited) old prompt line in M-x shell.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Andreas Schwab <schwab@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 09:45:01 +0000
Resent-Message-ID: <handler.77746.B77746.174462389726119 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Visuwesh <visuweshm@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, Juri Linkov <juri@HIDDEN>, 77746 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>, James Cherti <contact@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174462389726119
          (code B ref 77746); Mon, 14 Apr 2025 09:45:01 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 09:44:57 +0000
Received: from localhost ([127.0.0.1]:45809 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4GN7-0006nD-6E
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 05:44:57 -0400
Received: from smtp-out2.suse.de ([195.135.223.131]:39878)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <schwab@HIDDEN>) id 1u4GN4-0006mx-N7
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 05:44:55 -0400
Received: from hawking.nue2.suse.org (unknown [10.168.4.11])
 by smtp-out2.suse.de (Postfix) with ESMTP id 7394C1F388;
 Mon, 14 Apr 2025 09:44:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
 t=1744623888; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
 mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=ng2bivFLRina2dKJhDvzb96alqj21GX1ytCjwgKJO2Q=;
 b=D1aBxu9cltvdeOTMe+ymrLoBsaFR/kZ3Y7tvGDa/xNMb/Mn+yRpVZ9lREDqOCD9QeajGaM
 VuRg70G6G5A63/YxzW9HrHr00iM9+QaSxmHLtaTHREfvvCznNwLQ8x7jmbFuZiK7Va014s
 f2GS0RMI0vHcFJoSLIS66b3JSUELuOk=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
 s=susede2_ed25519; t=1744623888;
 h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
 mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=ng2bivFLRina2dKJhDvzb96alqj21GX1ytCjwgKJO2Q=;
 b=6Ih7mKq6ja5yLAdqmRd/9jtThqiHyreTH9x1LgGHkd10a9Ky0Qb3RG8A0Fz9wAVxrW2oMg
 N3Xp5+9pxppnQvDA==
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
 t=1744623888; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
 mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=ng2bivFLRina2dKJhDvzb96alqj21GX1ytCjwgKJO2Q=;
 b=D1aBxu9cltvdeOTMe+ymrLoBsaFR/kZ3Y7tvGDa/xNMb/Mn+yRpVZ9lREDqOCD9QeajGaM
 VuRg70G6G5A63/YxzW9HrHr00iM9+QaSxmHLtaTHREfvvCznNwLQ8x7jmbFuZiK7Va014s
 f2GS0RMI0vHcFJoSLIS66b3JSUELuOk=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
 s=susede2_ed25519; t=1744623888;
 h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
 mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=ng2bivFLRina2dKJhDvzb96alqj21GX1ytCjwgKJO2Q=;
 b=6Ih7mKq6ja5yLAdqmRd/9jtThqiHyreTH9x1LgGHkd10a9Ky0Qb3RG8A0Fz9wAVxrW2oMg
 N3Xp5+9pxppnQvDA==
Received: by hawking.nue2.suse.org (Postfix, from userid 17005)
 id 609FB4A03E0; Mon, 14 Apr 2025 11:44:48 +0200 (CEST)
From: Andreas Schwab <schwab@HIDDEN>
In-Reply-To: <87bjszje11.fsf@HIDDEN> (Visuwesh's message of "Mon, 14 Apr
 2025 14:49:54 +0530")
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <87bjszje11.fsf@HIDDEN>
Date: Mon, 14 Apr 2025 11:44:48 +0200
Message-ID: <mvmjz7nkrfz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-4.20 / 50.00]; BAYES_HAM(-3.00)[99.99%];
 NEURAL_HAM_LONG(-1.00)[-1.000];
 NEURAL_HAM_SHORT(-0.20)[-0.997]; RCVD_NO_TLS_LAST(0.10)[];
 MIME_GOOD(-0.10)[text/plain];
 FREEMAIL_ENVRCPT(0.00)[gmail.com]; RCVD_COUNT_ONE(0.00)[1];
 TO_DN_SOME(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+];
 FREEMAIL_TO(0.00)[gmail.com]; MID_RHS_MATCH_FROM(0.00)[];
 DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
 FROM_HAS_DN(0.00)[]; RCPT_COUNT_FIVE(0.00)[6];
 FROM_EQ_ENVFROM(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com];
 TO_MATCH_ENVRCPT_ALL(0.00)[];
 DBL_BLOCKED_OPENRESOLVER(0.00)[hawking.nue2.suse.org:helo, suse.de:email,
 suse.de:mid]
X-Spam-Score: -4.20
X-Spam-Flag: NO
X-Spam-Score: -2.3 (--)
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.3 (---)

On Apr 14 2025, Visuwesh wrote:

> [ஞாயிறு ஏப்ரல் 13, 2025] Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
>
>>>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>>>> function names.
>>
>> I'm not positive about all of them, but at least some of those can
>> appear in the names of commands.
>
> Not sure sh (and its million implementations) but bash definitely allows
> %.

Bash allows any WORD as a function name.

-- 
Andreas Schwab, SUSE Labs, schwab@HIDDEN
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 12:57:02 +0000
Resent-Message-ID: <handler.77746.B.17446353769328 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: 77746 <at> debbugs.gnu.org, juri@HIDDEN, eliz@HIDDEN, monnier@HIDDEN, visuweshm@HIDDEN
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN, Juri Linkov <juri@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, monnier@HIDDEN, visuweshm@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.17446353769328
          (code B ref -1); Mon, 14 Apr 2025 12:57:02 +0000
Received: (at submit) by debbugs.gnu.org; 14 Apr 2025 12:56:16 +0000
Received: from localhost ([127.0.0.1]:46288 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4JMF-0002QM-Jt
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 08:56:15 -0400
Received: from lists.gnu.org ([2001:470:142::17]:45758)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4JMD-0002Q1-Kw
 for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 08:56:14 -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 <contact@HIDDEN>)
 id 1u4JM8-0007gd-0N
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 08:56:08 -0400
Received: from butterfly.birch.relay.mailchannels.net ([23.83.209.27])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <contact@HIDDEN>)
 id 1u4JM3-0000Nw-NB; Mon, 14 Apr 2025 08:56:07 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 0FA9E782CAB;
 Mon, 14 Apr 2025 12:56:00 +0000 (UTC)
Received: from pdx1-sub0-mail-a230.dreamhost.com
 (trex-0.trex.outbound.svc.cluster.local [100.103.157.168])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 9523F7829E3;
 Mon, 14 Apr 2025 12:55:59 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744635359; a=rsa-sha256;
 cv=none;
 b=Y0QQAT0ZtlcfuAZvAtnUh0TeNPKoVMfvGl9J1w6wHwBuauD3dQYc+XKjZ39l03E7XTazHl
 9XrqYlrNGyT88PjWXcPNdkoEPODn+Ji4Hyxhidz+LJChZIXmWFRCmwdHD8rQmqEdWhhm7D
 zx8QJXhBOxq3REVpwJgUzPtFVpI0ajj2MXwOEDB/kRjZLlJStFluNBkUi7Kw36zGSAc+Ij
 jalForA4p24/fI5+9PZc4a1q5ELazGhEg40jTKPSEtTXiX022vJwGGTpJ3S5vG4sHrlv85
 1Zwl4A748Z7fmdxvls6EWXqxY8SPaV8LpPrP8QgvFmosHQSIndeQv4fWw13sMA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744635359;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=buAGNA4PSceqTQcxy6VP8Buv/ecLQaLS2H4q6x4gzMU=;
 b=NhXFTRZdKWSYDLuw9ijGc5sbLD5n8N4rx/3EX5BfOTvLn+jsh9jUkwYkgbwskA4UWo2saw
 RwLSPUVMvadtDWOK+SVqsAnvZAoVtZAxHasFrD2DqwsRQnBEvddjYgHra4caU2mtFnWCDF
 HfSENxFs4jzFxMoaBzD8iSIx7HEh89AWdey62HDdllR9HIL4kFa4ER7pJP31V+wuZdmkf8
 bSwJouRlGSQsYprxtwxRJmdgnMy4KVA6bUbThE+silKdVSeQqKKceF8APiGFfAwLH8TXIq
 UipEznf2jXVTIxNxjRWy1Pw4YGmeptRXpd/P6pLD0yBfMdWxzlrSaJWxhGxzEw==
ARC-Authentication-Results: i=1; rspamd-67f59c8b45-5jn7z;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-White-Arch: 2b2973bc0acd5d71_1744635359866_3221341691
X-MC-Loop-Signature: 1744635359866:3707963089
X-MC-Ingress-Time: 1744635359865
Received: from pdx1-sub0-mail-a230.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.103.157.168 (trex/7.0.3); Mon, 14 Apr 2025 12:55:59 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a230.dreamhost.com (Postfix) with ESMTPSA id 4ZbnMy6p3PzQk; 
 Mon, 14 Apr 2025 05:55:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744635359;
 bh=buAGNA4PSceqTQcxy6VP8Buv/ecLQaLS2H4q6x4gzMU=;
 h=Date:Subject:To:From:Content-Type:Content-Transfer-Encoding;
 b=E6w1reJLFZWPBGpSMAVYoHWgUUcld3Aunb8PRAFd+CuWcqtH/RgOOdlxEQ/pVrjlJ
 YC+QxKUeZoH9Pd5KH9ZRAfNjVjEzX1NDCqye87u1XN7zzTHcd4SZ/qANe+jIJDCUmF
 IEM8xiEbmHVZs5TwvvbRiWijSqRu6/1rHvNPz2iow0x1pYmuoS8zuxwcpfuY8NpYy5
 kXG9K40OGSvL2lULLL82nckkTv/NAYO/emTfl8oSzp1R0befRsYK06xgdgshQMIvfA
 0MIAQZ1ipiSmKXTvmXTPGp1oNTGpcLE52VzBMtFS1AHpa+bTw1pZvZUEEs847pWMc8
 pli2lImimxC6g==
Message-ID: <f79e19a3-8a7b-4369-9e07-20b8cc34abd1@HIDDEN>
Date: Mon, 14 Apr 2025 08:55:57 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <87bjszje11.fsf@HIDDEN> <mvmjz7nkrfz.fsf@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <mvmjz7nkrfz.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=23.83.209.27;
 envelope-from=contact@HIDDEN;
 helo=butterfly.birch.relay.mailchannels.net
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,
 RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
 RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
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: -0.1 (/)

On 2025-04-14 05:44, Andreas Schwab wrote:
> On Apr 14 2025, Visuwesh wrote:
> 
>> [ஞாயிறு ஏப்ரல் 13, 2025] Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
>>
>>>>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>>>>> function names.
>>>
>>> I'm not positive about all of them, but at least some of those can
>>> appear in the names of commands.
>>
>> Not sure sh (and its million implementations) but bash definitely allows
>> %.
> 
> Bash allows any WORD as a function name.

Yes, Bash permits the characters !%^~:.,= in function names.

However, it does not permit them in variable names. Try:
var!name=1
var%name=1
var^name=1
var:name=1
var.name=1
var,name=1
var=name=1

Sh, on the other hand, disallows the characters !%^~:.,= in function
and variable names in many implementations.

The primary reason I submitted this patch is to address the
inconvenience caused by Emacs including certain characters when
completing variable names.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 13:12:02 +0000
Resent-Message-ID: <handler.77746.B.174463628912441 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, visuweshm@HIDDEN, eliz@HIDDEN, juri@HIDDEN
X-Debbugs-Original-Cc: bug-gnu-emacs@HIDDEN, visuweshm@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Juri Linkov <juri@HIDDEN>
Received: via spool by submit <at> debbugs.gnu.org id=B.174463628912441
          (code B ref -1); Mon, 14 Apr 2025 13:12:02 +0000
Received: (at submit) by debbugs.gnu.org; 14 Apr 2025 13:11:29 +0000
Received: from localhost ([127.0.0.1]:46347 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4Jaz-0003Eb-2S
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 09:11:29 -0400
Received: from lists.gnu.org ([2001:470:142::17]:48594)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4Jav-0003E7-QP
 for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 09:11:26 -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 <monnier@HIDDEN>)
 id 1u4Jam-0002Ec-LW
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 09:11:17 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <monnier@HIDDEN>)
 id 1u4Jak-0002bt-Ub; Mon, 14 Apr 2025 09:11:16 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 91FAB1002EC;
 Mon, 14 Apr 2025 09:11:10 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744636269;
 bh=mpcTyEq8AYCqjAvcs+s/dLOTziR3hEmdJi4V7mDD4Qc=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=kqvJz0tB0qKMLxTAhtgNakj634pCWebwbYdlDU9Dmjxcjs87rBdID/9lEYrhfGIIK
 FF9sLFNqzcPgfg2aJuyHtEib14aBP+uyY5Vbo79k3n66BDbiB06WasqylwYnQvomPM
 qU2aWEk5CMXJH3Br1Hm+VsasgS9mabwuqzjQBDa4Xx1raaeWIHwkZHyxBnsIJC+iAy
 chd/CfWl5wT/VqXLITZwwEkkc/QNgPjiaYgEoe4upUFZtIKa/3nIAPXL5McxvNS6NX
 FCsX44N3R1Yvs3IrA8wYXcSjLeq6sxGdN+TbiUN3zq6Nh53WN3jQeXueIy/4miD7Xx
 07P8XRNNmB0pg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id E6B8110004C;
 Mon, 14 Apr 2025 09:11:09 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AD43D120223;
 Mon, 14 Apr 2025 09:11:09 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <f79e19a3-8a7b-4369-9e07-20b8cc34abd1@HIDDEN>
Message-ID: <jwvtt6q6g9y.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <87bjszje11.fsf@HIDDEN> <mvmjz7nkrfz.fsf@HIDDEN>
 <f79e19a3-8a7b-4369-9e07-20b8cc34abd1@HIDDEN>
Date: Mon, 14 Apr 2025 09:11:08 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.379 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
Received-SPF: pass client-ip=132.204.25.50;
 envelope-from=monnier@HIDDEN; helo=mailscanner.iro.umontreal.ca
X-Spam_score_int: -42
X-Spam_score: -4.3
X-Spam_bar: ----
X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.0 (/)
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 (-)

> The primary reason I submitted this patch is to address the
> inconvenience caused by Emacs including certain characters when
> completing variable names.

I guess this can count as an answer to my request for a concrete case,
but it's not concrete/detailed enough.  E.g. I don't really know what
"completing variable names" means.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 13:26:02 +0000
Resent-Message-ID: <handler.77746.B77746.174463714315881 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, juri@HIDDEN
X-Debbugs-Original-Cc: bug-gnu-emacs@HIDDEN, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174463714315881
          (code B ref 77746); Mon, 14 Apr 2025 13:26:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 13:25:43 +0000
Received: from localhost ([127.0.0.1]:46398 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4Jol-000485-1J
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 09:25:43 -0400
Received: from iguana.tulip.relay.mailchannels.net ([23.83.218.253]:31397)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4Joh-00047q-EH
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 09:25:40 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 9156B161C4D;
 Mon, 14 Apr 2025 13:25:37 +0000 (UTC)
Received: from pdx1-sub0-mail-a230.dreamhost.com
 (trex-0.trex.outbound.svc.cluster.local [100.109.225.20])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 2A72E161A8F;
 Mon, 14 Apr 2025 13:25:37 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744637137; a=rsa-sha256;
 cv=none;
 b=2vu7Pk4Pn2l8yfp74TOwfLZGsuw1sMAZe65I4WqQkptSEUiPytWTUZ6SAb9okE7knpwetR
 UGBf/WHxJbJPH2IO/fYWe5oq6c9qcn00chOHtAS9w+TElnMyBSZAVb4cLF4iCPMOFAMkUY
 cVzvWccxejoHjgmAaoLLtmSw/2jmGLMi63pZmtzaxDABUmRr872j6kKxMzA0ZS+qpzpHrJ
 1mPDN1ORElT0pBUpvBdvponBmG+uZBH0sJed5As2UUOyuQTz0ScAreO38I3vG11z8ivwi5
 fxqOGBbkE5eT6ZzOn5y0ksKdB7/Fs9EtLRCePDIpB8WFgUu4rFVPT27bImz0aQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744637137;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=mMJgQQ/o4cnkH84941SHupQKrmGEe2F9uoATEtqJU/0=;
 b=KpjesXkyoVS0+ahtE9/PKSmNlNjv/srpH3FzRWEz4ljUgTzTIv2ehnSO1hUb3Rv5+yby3B
 TKBMRzhGEN2XyS5z0SaVMHy+rSxQcRImZJqbTdTKVmRW4FyOgUKE2F12im5sge1z/hm9f1
 U6/2dSBkz436QLd4HiIl54hX40nN4cAg91z/jj+OBZHHjc+V0J5i/t7rMwa1UMoLV+7jI9
 JG6DB16fgU7yIlaa4UCReDlAciwitNCdvRjvmpJA32WoT6VDKQwnwUdVAwSCAepXPmkN25
 75p3hIm73FeGHyLohZJ9Aay7kA+8vb2Q7hLTx4RknpZSbmYgIF46HqrjKYE+rw==
ARC-Authentication-Results: i=1; rspamd-865c984fb5-9h7ng;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Oafish-Towering: 219d909e41a32f61_1744637137424_2655656015
X-MC-Loop-Signature: 1744637137423:2015076125
X-MC-Ingress-Time: 1744637137423
Received: from pdx1-sub0-mail-a230.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.109.225.20 (trex/7.0.3); Mon, 14 Apr 2025 13:25:37 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a230.dreamhost.com (Postfix) with ESMTPSA id 4Zbp1Y0Kr4zQk; 
 Mon, 14 Apr 2025 06:25:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744637105;
 bh=mMJgQQ/o4cnkH84941SHupQKrmGEe2F9uoATEtqJU/0=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=SYpVdhLOk53C5WYG5HOXbyqio4xT+iQ0ydpmQciUkPGmRlQismXcElcJ60YlZjI+f
 ydANcJoRBa7PWUkdXYgqGcfqFPbpomQYNumu1ftSzC/5aFSFHV6PZUcRnbOEpOeyMS
 uF1VOQ0ojl0tsW6U/3mynHfH+9QATonISB4k7zDFN5adKkuOFuaQj3LFJicmKilHFK
 kSgSFkBsCFOs9wcQvivkccnj9dJCeQt/OaiQbrA5NiwmBhmppJSCwoH4sS5XksE7qG
 hVis0Focr3wR7TK/2G853r8sqMQTbb1CwYRiYFuMRn042mbnqbtEajiega4Wn6tUMG
 LsKpA9nTGg7TA==
Message-ID: <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
Date: Mon, 14 Apr 2025 09:25:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.0 (/)
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 2025-04-13 13:33, Stefan Monnier wrote:
>>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>>> function names.
> 
> I'm not positive about all of them, but at least some of those can
> appear in the names of commands.
> 
>>> Assigning them the "_" syntax causes Emacs to treat them as word
>>> constituents,
> 
> Not quite: it makes them appear as "symbol constituents".
> 
>>> disrupting navigation and completion (e.g. dabbrev-expand,
>>> forward-word, etc.).
> 
> `forward-word` for example shouldn't be affected (unless you enable
> `superword-mode`).  `dabbrev-expand` OTOH is affected, indeed.
> 
>>> The attached patch updates the syntax table in sh-mode to mark
>>> these characters as punctuation, correcting the issue.
>> TBH, such a change sounds scary, as it could cause all kinds of
>> unintended changes in behavior.
> 
> It's indeed risky/delicate.  The syntax-tables are a fairly crude tool,
> so we often need to use different tables at different places.
> 
> Rather than go straight to changing the syntax-table, I suggest you
> start by providing some concrete examples of behaviors you consider
> incorrect with the current code.  Maybe changing the main syntax-table
> of that mode will be the better option, but if so, it'll probably
> require changing other code to keep using the current
> syntax-table there.
> [ I haven't tested it, but I'd expect trouble with your patch either in
>    font-lock or indentation if you have commands with names like
>    `if-config`.  ]
> 
> 
>          Stefan
> 

I primarily wrote this patch to prevent Emacs from including
the characters !%^~:., in symbols when highlighting a
symbol at point or completing a variable name.

Actually, the ones I specifically need in my case are: .:,
I often include variable names in comments followed by these
characters.

This patch addresses two issues I encountered related to
symbols:

1. Completion
--------------
Given the variable name `varname` in a comment,
followed by ".":
   #!/usr/bin/env bash
   # The name of this variable is varname. Code:
   var

Completing "var" includes "varname." in the list of
completions.

(e.g. dabbrev completion. I am using Corfu/Cape,
which displays all suggestions)

2. Highlight symbol at point
----------------------------
When the cursor is on the comment `varname.`,
Emacs highlights `varname.` instead of `varname` when
using `(hi-lock-face-symbol-at-point)`:
   #!/usr/bin/env bash
   # The name of this variable is varname. Code:
   var

Please feel free to share suggestions that could help resolve such issues.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 13:27:01 +0000
Resent-Message-ID: <handler.77746.B.174463716215937 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, juri@HIDDEN
X-Debbugs-Original-Cc: bug-gnu-emacs@HIDDEN, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by submit <at> debbugs.gnu.org id=B.174463716215937
          (code B ref -1); Mon, 14 Apr 2025 13:27:01 +0000
Received: (at submit) by debbugs.gnu.org; 14 Apr 2025 13:26:02 +0000
Received: from localhost ([127.0.0.1]:46401 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4Jp3-00048q-NL
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 09:26:02 -0400
Received: from lists.gnu.org ([2001:470:142::17]:59632)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4Jp1-00048L-7m
 for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 09:26:00 -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 <contact@HIDDEN>)
 id 1u4Jol-0006gp-Mi
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 09:25:44 -0400
Received: from cyan.elm.relay.mailchannels.net ([23.83.212.47])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <contact@HIDDEN>)
 id 1u4Joj-0004my-1y; Mon, 14 Apr 2025 09:25:43 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 9156B161C4D;
 Mon, 14 Apr 2025 13:25:37 +0000 (UTC)
Received: from pdx1-sub0-mail-a230.dreamhost.com
 (trex-0.trex.outbound.svc.cluster.local [100.109.225.20])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 2A72E161A8F;
 Mon, 14 Apr 2025 13:25:37 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744637137; a=rsa-sha256;
 cv=none;
 b=2vu7Pk4Pn2l8yfp74TOwfLZGsuw1sMAZe65I4WqQkptSEUiPytWTUZ6SAb9okE7knpwetR
 UGBf/WHxJbJPH2IO/fYWe5oq6c9qcn00chOHtAS9w+TElnMyBSZAVb4cLF4iCPMOFAMkUY
 cVzvWccxejoHjgmAaoLLtmSw/2jmGLMi63pZmtzaxDABUmRr872j6kKxMzA0ZS+qpzpHrJ
 1mPDN1ORElT0pBUpvBdvponBmG+uZBH0sJed5As2UUOyuQTz0ScAreO38I3vG11z8ivwi5
 fxqOGBbkE5eT6ZzOn5y0ksKdB7/Fs9EtLRCePDIpB8WFgUu4rFVPT27bImz0aQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744637137;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=mMJgQQ/o4cnkH84941SHupQKrmGEe2F9uoATEtqJU/0=;
 b=KpjesXkyoVS0+ahtE9/PKSmNlNjv/srpH3FzRWEz4ljUgTzTIv2ehnSO1hUb3Rv5+yby3B
 TKBMRzhGEN2XyS5z0SaVMHy+rSxQcRImZJqbTdTKVmRW4FyOgUKE2F12im5sge1z/hm9f1
 U6/2dSBkz436QLd4HiIl54hX40nN4cAg91z/jj+OBZHHjc+V0J5i/t7rMwa1UMoLV+7jI9
 JG6DB16fgU7yIlaa4UCReDlAciwitNCdvRjvmpJA32WoT6VDKQwnwUdVAwSCAepXPmkN25
 75p3hIm73FeGHyLohZJ9Aay7kA+8vb2Q7hLTx4RknpZSbmYgIF46HqrjKYE+rw==
ARC-Authentication-Results: i=1; rspamd-865c984fb5-9h7ng;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Oafish-Towering: 219d909e41a32f61_1744637137424_2655656015
X-MC-Loop-Signature: 1744637137423:2015076125
X-MC-Ingress-Time: 1744637137423
Received: from pdx1-sub0-mail-a230.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.109.225.20 (trex/7.0.3); Mon, 14 Apr 2025 13:25:37 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a230.dreamhost.com (Postfix) with ESMTPSA id 4Zbp1Y0Kr4zQk; 
 Mon, 14 Apr 2025 06:25:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744637105;
 bh=mMJgQQ/o4cnkH84941SHupQKrmGEe2F9uoATEtqJU/0=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=SYpVdhLOk53C5WYG5HOXbyqio4xT+iQ0ydpmQciUkPGmRlQismXcElcJ60YlZjI+f
 ydANcJoRBa7PWUkdXYgqGcfqFPbpomQYNumu1ftSzC/5aFSFHV6PZUcRnbOEpOeyMS
 uF1VOQ0ojl0tsW6U/3mynHfH+9QATonISB4k7zDFN5adKkuOFuaQj3LFJicmKilHFK
 kSgSFkBsCFOs9wcQvivkccnj9dJCeQt/OaiQbrA5NiwmBhmppJSCwoH4sS5XksE7qG
 hVis0Focr3wR7TK/2G853r8sqMQTbb1CwYRiYFuMRn042mbnqbtEajiega4Wn6tUMG
 LsKpA9nTGg7TA==
Message-ID: <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
Date: Mon, 14 Apr 2025 09:25:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: pass client-ip=23.83.212.47;
 envelope-from=contact@HIDDEN; helo=cyan.elm.relay.mailchannels.net
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,
 RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
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: -0.1 (/)

On 2025-04-13 13:33, Stefan Monnier wrote:
>>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>>> function names.
> 
> I'm not positive about all of them, but at least some of those can
> appear in the names of commands.
> 
>>> Assigning them the "_" syntax causes Emacs to treat them as word
>>> constituents,
> 
> Not quite: it makes them appear as "symbol constituents".
> 
>>> disrupting navigation and completion (e.g. dabbrev-expand,
>>> forward-word, etc.).
> 
> `forward-word` for example shouldn't be affected (unless you enable
> `superword-mode`).  `dabbrev-expand` OTOH is affected, indeed.
> 
>>> The attached patch updates the syntax table in sh-mode to mark
>>> these characters as punctuation, correcting the issue.
>> TBH, such a change sounds scary, as it could cause all kinds of
>> unintended changes in behavior.
> 
> It's indeed risky/delicate.  The syntax-tables are a fairly crude tool,
> so we often need to use different tables at different places.
> 
> Rather than go straight to changing the syntax-table, I suggest you
> start by providing some concrete examples of behaviors you consider
> incorrect with the current code.  Maybe changing the main syntax-table
> of that mode will be the better option, but if so, it'll probably
> require changing other code to keep using the current
> syntax-table there.
> [ I haven't tested it, but I'd expect trouble with your patch either in
>    font-lock or indentation if you have commands with names like
>    `if-config`.  ]
> 
> 
>          Stefan
> 

I primarily wrote this patch to prevent Emacs from including
the characters !%^~:., in symbols when highlighting a
symbol at point or completing a variable name.

Actually, the ones I specifically need in my case are: .:,
I often include variable names in comments followed by these
characters.

This patch addresses two issues I encountered related to
symbols:

1. Completion
--------------
Given the variable name `varname` in a comment,
followed by ".":
   #!/usr/bin/env bash
   # The name of this variable is varname. Code:
   var

Completing "var" includes "varname." in the list of
completions.

(e.g. dabbrev completion. I am using Corfu/Cape,
which displays all suggestions)

2. Highlight symbol at point
----------------------------
When the cursor is on the comment `varname.`,
Emacs highlights `varname.` instead of `varname` when
using `(hi-lock-face-symbol-at-point)`:
   #!/usr/bin/env bash
   # The name of this variable is varname. Code:
   var

Please feel free to share suggestions that could help resolve such issues.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 17:25:01 +0000
Resent-Message-ID: <handler.77746.B.174465147530484 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: eliz@HIDDEN, 77746 <at> debbugs.gnu.org, juri@HIDDEN
X-Debbugs-Original-Cc: Eli Zaretskii <eliz@HIDDEN>, 77746 <at> debbugs.gnu.org, bug-gnu-emacs@HIDDEN, Juri Linkov <juri@HIDDEN>
Received: via spool by submit <at> debbugs.gnu.org id=B.174465147530484
          (code B ref -1); Mon, 14 Apr 2025 17:25:01 +0000
Received: (at submit) by debbugs.gnu.org; 14 Apr 2025 17:24:35 +0000
Received: from localhost ([127.0.0.1]:48805 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4NXv-0007vb-A4
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 13:24:35 -0400
Received: from lists.gnu.org ([2001:470:142::17]:54400)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4NXs-0007vH-Fn
 for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 13:24:33 -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 <monnier@HIDDEN>)
 id 1u4NXa-0006C9-BF
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 13:24:18 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <monnier@HIDDEN>)
 id 1u4NXW-00067i-4i; Mon, 14 Apr 2025 13:24:12 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id DED4210004C;
 Mon, 14 Apr 2025 13:24:05 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744651441;
 bh=dhI68L0e3Y+NXLHgxqG7Dzi2bztao0FevABFc+Lr7WU=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=YcLo30cLmth4nk1qmsfW3M+UNN1BFhp08ql90GP7eE0hUhxLW+ataWRooeTgm+ZFW
 t7X/gmVy2J6CKlGvZTBLkvOa59jp+wMn59NqdaEabyfSXn+9qy67qIs3r0U7QyKSGa
 O1d50x0rhXlCgubmVkMrPebqZrRI5D1I1juBqzon0ufHjAAaA49oDTTTmOxdU28ozm
 biI9lhI63+I9lahyTynco8TBzTaC2GyRdD6NID1PNx+9n+EhBaCo2wiXcLbAcQ58Yn
 lkyCCaiEuB2P8WwvI0Vigq0JLDno0Anqvwkb7raQ7V22Z+Vn21Pa5i5qQAWBYUajLQ
 g2MVr6snmsAng==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 11F0A100029;
 Mon, 14 Apr 2025 13:24:01 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id DAAB21204D5;
 Mon, 14 Apr 2025 13:24:00 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
Message-ID: <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
Date: Mon, 14 Apr 2025 13:23:59 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.229 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
Received-SPF: pass client-ip=132.204.25.50;
 envelope-from=monnier@HIDDEN; helo=mailscanner.iro.umontreal.ca
X-Spam_score_int: -42
X-Spam_score: -4.3
X-Spam_bar: ----
X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.0 (/)
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 (-)

> 1. Completion
> --------------
> Given the variable name `varname` in a comment,
> followed by ".":
>   #!/usr/bin/env bash
>   # The name of this variable is varname. Code:
>   var
>
> Completing "var" includes "varname." in the list of
> completions.

`varname.` is a valid command name and at the spot where you have `var`
above, you could very well be completing a command rather than a variable.

> (e.g. dabbrev completion. I am using Corfu/Cape,
> which displays all suggestions)

dabbrev doesn't even try to distinguish whether you're completing a var
or a command or a type or anything else for that matter, so it's mostly
unavoidable that it includes "useless" candidates (and that it misses
valid candidates, as well).  IOW you can't argue that it's correct or
not: you need to argue whether something will be usually useless or not.

> 2. Highlight symbol at point
> ----------------------------
> When the cursor is on the comment `varname.`,
> Emacs highlights `varname.` instead of `varname` when
> using `(hi-lock-face-symbol-at-point)`:
>   #!/usr/bin/env bash
>   # The name of this variable is varname. Code:
>   var

Same here.  `varname.` is a valid command name so it can make perfect
sense to highlight it.  Admittedly, I'd never seen a command with a `.`
at the end, but removing `.` from the symbol constituents would rule out
not just `varname.` but also all commands with a `.` in the middle of
their names:

    % ls /usr/bin/??*.* | wc
        180     180    4274
    %


- Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 17:25:02 +0000
Resent-Message-ID: <handler.77746.B77746.174465145530444 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: eliz@HIDDEN, 77746 <at> debbugs.gnu.org, juri@HIDDEN
X-Debbugs-Original-Cc: Eli Zaretskii <eliz@HIDDEN>, 77746 <at> debbugs.gnu.org, bug-gnu-emacs@HIDDEN, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174465145530444
          (code B ref 77746); Mon, 14 Apr 2025 17:25:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 17:24:15 +0000
Received: from localhost ([127.0.0.1]:48801 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4NXa-0007ux-L0
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 13:24:15 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:32212)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4NXX-0007uf-Fm
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 13:24:11 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id DED4210004C;
 Mon, 14 Apr 2025 13:24:05 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744651441;
 bh=dhI68L0e3Y+NXLHgxqG7Dzi2bztao0FevABFc+Lr7WU=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=YcLo30cLmth4nk1qmsfW3M+UNN1BFhp08ql90GP7eE0hUhxLW+ataWRooeTgm+ZFW
 t7X/gmVy2J6CKlGvZTBLkvOa59jp+wMn59NqdaEabyfSXn+9qy67qIs3r0U7QyKSGa
 O1d50x0rhXlCgubmVkMrPebqZrRI5D1I1juBqzon0ufHjAAaA49oDTTTmOxdU28ozm
 biI9lhI63+I9lahyTynco8TBzTaC2GyRdD6NID1PNx+9n+EhBaCo2wiXcLbAcQ58Yn
 lkyCCaiEuB2P8WwvI0Vigq0JLDno0Anqvwkb7raQ7V22Z+Vn21Pa5i5qQAWBYUajLQ
 g2MVr6snmsAng==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 11F0A100029;
 Mon, 14 Apr 2025 13:24:01 -0400 (EDT)
Received: from alfajor (unknown [23.233.149.155])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id DAAB21204D5;
 Mon, 14 Apr 2025 13:24:00 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
Message-ID: <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
Date: Mon, 14 Apr 2025 13:23:59 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.229 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
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.3 (---)

> 1. Completion
> --------------
> Given the variable name `varname` in a comment,
> followed by ".":
>   #!/usr/bin/env bash
>   # The name of this variable is varname. Code:
>   var
>
> Completing "var" includes "varname." in the list of
> completions.

`varname.` is a valid command name and at the spot where you have `var`
above, you could very well be completing a command rather than a variable.

> (e.g. dabbrev completion. I am using Corfu/Cape,
> which displays all suggestions)

dabbrev doesn't even try to distinguish whether you're completing a var
or a command or a type or anything else for that matter, so it's mostly
unavoidable that it includes "useless" candidates (and that it misses
valid candidates, as well).  IOW you can't argue that it's correct or
not: you need to argue whether something will be usually useless or not.

> 2. Highlight symbol at point
> ----------------------------
> When the cursor is on the comment `varname.`,
> Emacs highlights `varname.` instead of `varname` when
> using `(hi-lock-face-symbol-at-point)`:
>   #!/usr/bin/env bash
>   # The name of this variable is varname. Code:
>   var

Same here.  `varname.` is a valid command name so it can make perfect
sense to highlight it.  Admittedly, I'd never seen a command with a `.`
at the end, but removing `.` from the symbol constituents would rule out
not just `varname.` but also all commands with a `.` in the middle of
their names:

    % ls /usr/bin/??*.* | wc
        180     180    4274
    %


- Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 18:59:01 +0000
Resent-Message-ID: <handler.77746.B77746.174465711615726 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>, 77746 <at> debbugs.gnu.org
Cc: eliz@HIDDEN, juri@HIDDEN
X-Debbugs-Original-Cc: Eli Zaretskii <eliz@HIDDEN>, bug-gnu-emacs@HIDDEN, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174465711615726
          (code B ref 77746); Mon, 14 Apr 2025 18:59:01 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 18:58:36 +0000
Received: from localhost ([127.0.0.1]:49082 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4P0t-00045Y-Hm
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 14:58:35 -0400
Received: from panther.cherry.relay.mailchannels.net ([23.83.223.141]:15541)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4P0r-00045N-IJ
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 14:58:34 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id A42B77822BD;
 Mon, 14 Apr 2025 18:58:31 +0000 (UTC)
Received: from pdx1-sub0-mail-a310.dreamhost.com
 (100-103-158-85.trex-nlb.outbound.svc.cluster.local [100.103.158.85])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 2ED937824F7;
 Mon, 14 Apr 2025 18:58:31 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744657111; a=rsa-sha256;
 cv=none;
 b=WePUGSmqmqbX7PQbSS+s+qx1OjbCb6RR2ogcbY9ppRIVqdElLIyc56zs5tqD+B/LlmZZ8z
 fc/o4HU0oBISzDdO4zFWAqqijutOfwbx/cYjVQNgM936+vG+8m+LKZwsr+g7tJMgPtZVBP
 HQWN4K+RJM/HdKVG/jWD1YIHNWs5LBe2ZmhnUe+hc7ebzJUaieXwUDo9R4sog2Hn3d4Umr
 itJ75oR28359MU2uX7ngv2zLNlEt2GTxsaJNzsH79yvt1NOMIeeWNVAI4wPM7UNsG42Uhn
 xnGGpDb4l4OBj6/FV3ZHKSpnn7JrYqTFwKzPKZj2qCpuzoOdrlkPx76QDYxV/Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744657111;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=HDWakIc9mWoDWSvCStPwVCm/5sOxst/7eakcrbKOfpk=;
 b=buy9cf+V6kbuV75Kkl4wQp6FH3sW1q1xSbkjIduSZAs8PlN/yJJ9j+Om34AqQlrUnG4W9V
 ONVPXLtCC+I38qT1pLGS+6hPMMNu47nJ8KNdyYPZl9MiZZv35ZwgZTuY4Tuc1P8czcEiD8
 zTlCkRIPeePmH0E09jfNcPI168TvzWJ9SdO/xlI2fS2aXoY6eQmMw6UuugGZDWKCVK6B/d
 QynFm5lAV6C0rNjsjTdXXl4KmGQ4YFwPQl7Sz/zyUUl/5CFfYh/ygqrqXtStsnBP8Wlpik
 6hIRebsYZxzkGsoxe7rRbLOzpMvBTcuKpr0RDgDo10neIRuuFmCROkMiWW3pcQ==
ARC-Authentication-Results: i=1; rspamd-67f59c8b45-k8n5w;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Rock-Society: 4ad83ade11cd968d_1744657111468_2765971724
X-MC-Loop-Signature: 1744657111468:1287551965
X-MC-Ingress-Time: 1744657111468
Received: from pdx1-sub0-mail-a310.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.103.158.85 (trex/7.0.3); Mon, 14 Apr 2025 18:58:31 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a310.dreamhost.com (Postfix) with ESMTPSA id 4ZbxQG356XzR5; 
 Mon, 14 Apr 2025 11:58:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744657110;
 bh=HDWakIc9mWoDWSvCStPwVCm/5sOxst/7eakcrbKOfpk=;
 h=Date:Subject:To:From:Cc:Content-Type:Content-Transfer-Encoding;
 b=omJ03sVc1TG6FQuzj/Emc8IJbgBtRdXpV2EylOEikYRpBuFjauLzloTiHVT6Lr1/C
 nkXU90BqfHc4RgixSMLTwNMXfEzRPG3gK6ufRWI9LElbmJI+oqto96MUBiZ90O+ZMM
 QWbzqnxKztjfOTdQzNiJihNtDD+kO9/q4xmWtyt3U2fZjkmS2H6ofnMWxG7RuBCUXZ
 KUeqC62T4eWA+jUK42mt6Bhya2eoft4n5D4nO2g0YQtyu6u994i1kYA5F+nUdfdJTA
 M7Y/hrGuCuK+G4/2SuDFmmXKptLyM2UNmU48MfUkXsnAWIKXxFRbz0elLVpPu/SiSv
 EYj2t6yflhFSQ==
Message-ID: <83c2ca6c-a469-4a28-a1a8-d83e8adc429c@HIDDEN>
Date: Mon, 14 Apr 2025 14:58:29 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
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 2025-04-14 13:23, Stefan Monnier via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
>> 1. Completion
>> --------------
>> Given the variable name `varname` in a comment,
>> followed by ".":
>>    #!/usr/bin/env bash
>>    # The name of this variable is varname. Code:
>>    var
>>
>> Completing "var" includes "varname." in the list of
>> completions.
> 
> `varname.` is a valid command name and at the spot where you have `var`
> above, you could very well be completing a command rather than a variable.
> 
>> (e.g. dabbrev completion. I am using Corfu/Cape,
>> which displays all suggestions)
> 
> dabbrev doesn't even try to distinguish whether you're completing a var
> or a command or a type or anything else for that matter, so it's mostly
> unavoidable that it includes "useless" candidates (and that it misses
> valid candidates, as well).  IOW you can't argue that it's correct or
> not: you need to argue whether something will be usually useless or not.
> 
>> 2. Highlight symbol at point
>> ----------------------------
>> When the cursor is on the comment `varname.`,
>> Emacs highlights `varname.` instead of `varname` when
>> using `(hi-lock-face-symbol-at-point)`:
>>    #!/usr/bin/env bash
>>    # The name of this variable is varname. Code:
>>    var
> 
> Same here.  `varname.` is a valid command name so it can make perfect
> sense to highlight it.  Admittedly, I'd never seen a command with a `.`
> at the end, but removing `.` from the symbol constituents would rule out
> not just `varname.` but also all commands with a `.` in the middle of
> their names:
> 
>      % ls /usr/bin/??*.* | wc
>          180     180    4274
>      %
Yes, I agree that 'varname.' is:
- A valid command in both Sh and Bash,
- A valid function name in Bash (not in Sh).

However, it is an *invalid* variable name in both
Sh and Bash.

This is what complicates addressing this issue.

Applying this patch will impose the same limitations on
function names as those applied to variables, specifically
in terms of what is considered a valid symbol when
developing Sh or Bash scripts.

Here, in my opinion, is the difference between merging and
not merging this patch:

- Merging this patch: The symbol representation of variable
   names will be more accurate. However, functions/commands
   containing characters like !%^~:.,
   will be treated as two separate symbols.

- Not merging this patch: The symbol representation of
   functions/commands containing !%^~:. will be more accurate.
   However, for variables, characters like !%^~:., will be
   included in symbols, leading to extraneous characters when
   completing or highlighting symbols.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 19:00:02 +0000
Resent-Message-ID: <handler.77746.B.174465714715808 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>, 77746 <at> debbugs.gnu.org
Cc: eliz@HIDDEN, juri@HIDDEN
X-Debbugs-Original-Cc: Eli Zaretskii <eliz@HIDDEN>, bug-gnu-emacs@HIDDEN, Juri Linkov <juri@HIDDEN>
Received: via spool by submit <at> debbugs.gnu.org id=B.174465714715808
          (code B ref -1); Mon, 14 Apr 2025 19:00:02 +0000
Received: (at submit) by debbugs.gnu.org; 14 Apr 2025 18:59:07 +0000
Received: from localhost ([127.0.0.1]:49086 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4P1P-00046u-6S
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 14:59:07 -0400
Received: from lists.gnu.org ([2001:470:142::17]:60080)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4P1M-00046E-L9
 for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 14:59:05 -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 <contact@HIDDEN>)
 id 1u4P0y-00033r-2q
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 14:58:45 -0400
Received: from iguana.tulip.relay.mailchannels.net ([23.83.218.253])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <contact@HIDDEN>)
 id 1u4P0u-0007OS-6L; Mon, 14 Apr 2025 14:58:38 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id A42B77822BD;
 Mon, 14 Apr 2025 18:58:31 +0000 (UTC)
Received: from pdx1-sub0-mail-a310.dreamhost.com
 (100-103-158-85.trex-nlb.outbound.svc.cluster.local [100.103.158.85])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 2ED937824F7;
 Mon, 14 Apr 2025 18:58:31 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744657111; a=rsa-sha256;
 cv=none;
 b=WePUGSmqmqbX7PQbSS+s+qx1OjbCb6RR2ogcbY9ppRIVqdElLIyc56zs5tqD+B/LlmZZ8z
 fc/o4HU0oBISzDdO4zFWAqqijutOfwbx/cYjVQNgM936+vG+8m+LKZwsr+g7tJMgPtZVBP
 HQWN4K+RJM/HdKVG/jWD1YIHNWs5LBe2ZmhnUe+hc7ebzJUaieXwUDo9R4sog2Hn3d4Umr
 itJ75oR28359MU2uX7ngv2zLNlEt2GTxsaJNzsH79yvt1NOMIeeWNVAI4wPM7UNsG42Uhn
 xnGGpDb4l4OBj6/FV3ZHKSpnn7JrYqTFwKzPKZj2qCpuzoOdrlkPx76QDYxV/Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744657111;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=HDWakIc9mWoDWSvCStPwVCm/5sOxst/7eakcrbKOfpk=;
 b=buy9cf+V6kbuV75Kkl4wQp6FH3sW1q1xSbkjIduSZAs8PlN/yJJ9j+Om34AqQlrUnG4W9V
 ONVPXLtCC+I38qT1pLGS+6hPMMNu47nJ8KNdyYPZl9MiZZv35ZwgZTuY4Tuc1P8czcEiD8
 zTlCkRIPeePmH0E09jfNcPI168TvzWJ9SdO/xlI2fS2aXoY6eQmMw6UuugGZDWKCVK6B/d
 QynFm5lAV6C0rNjsjTdXXl4KmGQ4YFwPQl7Sz/zyUUl/5CFfYh/ygqrqXtStsnBP8Wlpik
 6hIRebsYZxzkGsoxe7rRbLOzpMvBTcuKpr0RDgDo10neIRuuFmCROkMiWW3pcQ==
ARC-Authentication-Results: i=1; rspamd-67f59c8b45-k8n5w;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Rock-Society: 4ad83ade11cd968d_1744657111468_2765971724
X-MC-Loop-Signature: 1744657111468:1287551965
X-MC-Ingress-Time: 1744657111468
Received: from pdx1-sub0-mail-a310.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.103.158.85 (trex/7.0.3); Mon, 14 Apr 2025 18:58:31 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a310.dreamhost.com (Postfix) with ESMTPSA id 4ZbxQG356XzR5; 
 Mon, 14 Apr 2025 11:58:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744657110;
 bh=HDWakIc9mWoDWSvCStPwVCm/5sOxst/7eakcrbKOfpk=;
 h=Date:Subject:To:From:Cc:Content-Type:Content-Transfer-Encoding;
 b=omJ03sVc1TG6FQuzj/Emc8IJbgBtRdXpV2EylOEikYRpBuFjauLzloTiHVT6Lr1/C
 nkXU90BqfHc4RgixSMLTwNMXfEzRPG3gK6ufRWI9LElbmJI+oqto96MUBiZ90O+ZMM
 QWbzqnxKztjfOTdQzNiJihNtDD+kO9/q4xmWtyt3U2fZjkmS2H6ofnMWxG7RuBCUXZ
 KUeqC62T4eWA+jUK42mt6Bhya2eoft4n5D4nO2g0YQtyu6u994i1kYA5F+nUdfdJTA
 M7Y/hrGuCuK+G4/2SuDFmmXKptLyM2UNmU48MfUkXsnAWIKXxFRbz0elLVpPu/SiSv
 EYj2t6yflhFSQ==
Message-ID: <83c2ca6c-a469-4a28-a1a8-d83e8adc429c@HIDDEN>
Date: Mon, 14 Apr 2025 14:58:29 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: pass client-ip=23.83.218.253;
 envelope-from=contact@HIDDEN;
 helo=iguana.tulip.relay.mailchannels.net
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,
 RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
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: -0.1 (/)

On 2025-04-14 13:23, Stefan Monnier via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
>> 1. Completion
>> --------------
>> Given the variable name `varname` in a comment,
>> followed by ".":
>>    #!/usr/bin/env bash
>>    # The name of this variable is varname. Code:
>>    var
>>
>> Completing "var" includes "varname." in the list of
>> completions.
> 
> `varname.` is a valid command name and at the spot where you have `var`
> above, you could very well be completing a command rather than a variable.
> 
>> (e.g. dabbrev completion. I am using Corfu/Cape,
>> which displays all suggestions)
> 
> dabbrev doesn't even try to distinguish whether you're completing a var
> or a command or a type or anything else for that matter, so it's mostly
> unavoidable that it includes "useless" candidates (and that it misses
> valid candidates, as well).  IOW you can't argue that it's correct or
> not: you need to argue whether something will be usually useless or not.
> 
>> 2. Highlight symbol at point
>> ----------------------------
>> When the cursor is on the comment `varname.`,
>> Emacs highlights `varname.` instead of `varname` when
>> using `(hi-lock-face-symbol-at-point)`:
>>    #!/usr/bin/env bash
>>    # The name of this variable is varname. Code:
>>    var
> 
> Same here.  `varname.` is a valid command name so it can make perfect
> sense to highlight it.  Admittedly, I'd never seen a command with a `.`
> at the end, but removing `.` from the symbol constituents would rule out
> not just `varname.` but also all commands with a `.` in the middle of
> their names:
> 
>      % ls /usr/bin/??*.* | wc
>          180     180    4274
>      %
Yes, I agree that 'varname.' is:
- A valid command in both Sh and Bash,
- A valid function name in Bash (not in Sh).

However, it is an *invalid* variable name in both
Sh and Bash.

This is what complicates addressing this issue.

Applying this patch will impose the same limitations on
function names as those applied to variables, specifically
in terms of what is considered a valid symbol when
developing Sh or Bash scripts.

Here, in my opinion, is the difference between merging and
not merging this patch:

- Merging this patch: The symbol representation of variable
   names will be more accurate. However, functions/commands
   containing characters like !%^~:.,
   will be treated as two separate symbols.

- Not merging this patch: The symbol representation of
   functions/commands containing !%^~:. will be more accurate.
   However, for variables, characters like !%^~:., will be
   included in symbols, leading to extraneous characters when
   completing or highlighting symbols.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 19:30:02 +0000
Resent-Message-ID: <handler.77746.B77746.174465899321496 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>
Cc: eliz@HIDDEN, 77746 <at> debbugs.gnu.org, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174465899321496
          (code B ref 77746); Mon, 14 Apr 2025 19:30:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 19:29:53 +0000
Received: from localhost ([127.0.0.1]:49121 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4PVA-0005ad-La
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 15:29:53 -0400
Received: from cornsilk.maple.relay.mailchannels.net ([23.83.214.40]:35333)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4PV7-0005a9-1G
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 15:29:50 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 08F722C2803;
 Mon, 14 Apr 2025 19:29:47 +0000 (UTC)
Received: from pdx1-sub0-mail-a310.dreamhost.com
 (100-103-65-62.trex-nlb.outbound.svc.cluster.local [100.103.65.62])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id A71472C2F58;
 Mon, 14 Apr 2025 19:29:46 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744658986; a=rsa-sha256;
 cv=none;
 b=J9ZzQiAwJA7LPeuFj30H9EjfKqUsax8HLT6x2VgkE8CdDf6Fif4vSYlszJmE/uk2w0uj92
 c3JUhcBHLyzD65/jV+VAm7LuxkovGhEnCT2zTB0e3YklB7Uiu9zwusL0VpzbLqDK+r3wB8
 ZteDXdW9Z/O2TS7dxs0tS7u895wL0oC23DnBdSy4DgyhobuQ3qHxeqD4HEk8j/v+zkUZP2
 9JmDNUNBMlcGJkqGB+Jsa3Sx09bhAS+TgyljuPpFIgxcR8ONOttsiehXm87HU2ueRWcBkp
 SC8Q0NYwpAMslLU8hTKaqwnOZYdw0xq8gjQBgW/xg/Et+J799RABjV0ElDv/BA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744658986;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=VQZy/6uG+hncgkXuSJPniSdCrxKpT69wLL33zdz15EY=;
 b=JbklB96Ph5ugIhOqR+GDz2qWe7Kp4Hdf9yVgCbBkriM636kSJgYSvuofR2zuLtXlJ8yLBc
 +p9WZ/I+lRy7P/S99/mHW4s9Uoh8b9axF7ccb5MI0rIsBPlW1L7JQMUZrOI3LZw/t6dIrw
 FiTSYif/716KdDdk8Jr6CCtM/ayrpg58iIB05W0boDN4t1YYd4dq79ZZvPBD4dceAFpCMx
 qGLCICu6yRzpyvI1Z5GV8aotEHL/LVWxBqVVCNxGYmT5T8j5NC22GhzWAGtKVIO4CYGewA
 GIjTNYTRipcA0SlxP9uiSZ3zaDDdIMm8QjGA+QWD7+G2OZNXqXI87zoaWYfxZg==
ARC-Authentication-Results: i=1; rspamd-67f59c8b45-x27dg;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Glossy-Spot: 043222875864362d_1744658986910_727813279
X-MC-Loop-Signature: 1744658986910:3090549225
X-MC-Ingress-Time: 1744658986910
Received: from pdx1-sub0-mail-a310.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.103.65.62 (trex/7.0.3); Mon, 14 Apr 2025 19:29:46 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a310.dreamhost.com (Postfix) with ESMTPSA id 4Zby6L0tbGzR5; 
 Mon, 14 Apr 2025 12:29:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744658986;
 bh=VQZy/6uG+hncgkXuSJPniSdCrxKpT69wLL33zdz15EY=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=nf3Uu9dPZVfm2oqvT3vcvqxjYG8hJawDR8YvU3tsi+RZ9G0FNwCSViJ+MXmB5F1rY
 K/ixBao/zLoWcHhrShic3Oed6t0KPw6bZukF0RHedDTGk6R9863LoGo6uYJljz6jru
 5op8hj1csVSrZMtbb4MFk7kNpDdvI7Oc8ZzW81XDe0OnkPWXhQz1XLNth7MzYBRL55
 a5BpSOUG5d4ognYl1eQH46mkVLbbhOO9y2qQIX+GXnLvJYGOZb3elTGZwWN7RLLR6l
 kIaB8OWhRkYpVNqVwHG4rfm4cSLHJhKZy52KDFj+QDX9NcIR98HpgH2UXJTuIfQku/
 nA+1FGeLqmvkQ==
Message-ID: <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
Date: Mon, 14 Apr 2025 15:29:44 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
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 2025-04-14 13:23, Stefan Monnier via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
>> 1. Completion
>> --------------
>> Given the variable name `varname` in a comment,
>> followed by ".":
>>    #!/usr/bin/env bash
>>    # The name of this variable is varname. Code:
>>    var
>>
>> Completing "var" includes "varname." in the list of
>> completions.
> 
> `varname.` is a valid command name and at the spot where you have `var`
> above, you could very well be completing a command rather than a variable.
> 
>> (e.g. dabbrev completion. I am using Corfu/Cape,
>> which displays all suggestions)
> 
> dabbrev doesn't even try to distinguish whether you're completing a var
> or a command or a type or anything else for that matter, so it's mostly
> unavoidable that it includes "useless" candidates (and that it misses
> valid candidates, as well).  IOW you can't argue that it's correct or
> not: you need to argue whether something will be usually useless or not.
> 
>> 2. Highlight symbol at point
>> ----------------------------
>> When the cursor is on the comment `varname.`,
>> Emacs highlights `varname.` instead of `varname` when
>> using `(hi-lock-face-symbol-at-point)`:
>>    #!/usr/bin/env bash
>>    # The name of this variable is varname. Code:
>>    var
> 
> Same here.  `varname.` is a valid command name so it can make perfect
> sense to highlight it.  Admittedly, I'd never seen a command with a `.`
> at the end, but removing `.` from the symbol constituents would rule out
> not just `varname.` but also all commands with a `.` in the middle of
> their names:
> 
>      % ls /usr/bin/??*.* | wc
>          180     180    4274
>      %
Yes, commands like mkfs.ext4 contain '.' and are valid.
However, while :,!%^~ are valid characters for commands,
it's rare to see them used in command names. For instance, I
have no commands on my system that contain :,!%^~ despite
having 3,843 files in /usr/bin/.

Perhaps this patch could be adjusted by removing '.' (given
its common use in command names), and keeping :,!%^~
as punctuation for variable names.

(Removing '.' would not only cover the majority of
command/function names but also prevent using `!%^~:,` as
symbol constituents, resulting in more accurate variable
symbols.)

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 19:40:02 +0000
Resent-Message-ID: <handler.77746.B77746.174465957223433 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, Juri Linkov <juri@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174465957223433
          (code B ref 77746); Mon, 14 Apr 2025 19:40:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 19:39:32 +0000
Received: from localhost ([127.0.0.1]:49158 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4PeW-00065q-3D
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 15:39:32 -0400
Received: from caracal.ash.relay.mailchannels.net ([23.83.222.30]:16251)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4PeT-00065d-65
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 15:39:29 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 04B978A3B14;
 Mon, 14 Apr 2025 19:39:27 +0000 (UTC)
Received: from pdx1-sub0-mail-a310.dreamhost.com
 (100-109-60-75.trex-nlb.outbound.svc.cluster.local [100.109.60.75])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 89C138A4276;
 Mon, 14 Apr 2025 19:39:26 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744659566; a=rsa-sha256;
 cv=none;
 b=vv33qLwplRW7jCdeCddvKvajDXhimABcaB212k4xfNcHoUBpQdUTBrfSn82S/Q3MTD29g7
 Ah9SBFnHqnXwp/oEXcOyoiGtcOrHwnyiSsGz79A9J+5/weWzBfnkCTr3p9x7yWSo6HdO2O
 boDfDjY0UP5sZyeOWoZO89Ywbb+Vb2u2rkoxeDbijcHJjdzjUaDYKk312tg3R8OJMO75dC
 jJX4QAM2HHgEZ5WccZOjndbeOxyuhwhYRRsAdKHM/6XKQwA1fPJqxwBq6MSr3GwshFp4/k
 3koHW8T2WYz4QneKkqTTRj9NEOiNrlLRLeG/YpH8uzegrRfsSIdGgJY4W7b6Kw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744659566;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=LdzuM6yI/DPHLWWxCbzBVYC+6e1KmT+65ouhxY0UrGg=;
 b=u5aZ2e9ybWO2kIl7ncZ3BbE4NtIJ1HYmEHxbc8SRZA3ZpPjBfwnmJhnSTKdqz/3CkiFepy
 BE+bSuHHjCnpiDhKZv9az78y/NysYu5B984h2tjTpbt3fr5Wp/Gr5XRIhhHriQ8tRn20Ti
 gyMaceNR3qb7VObP4x2OtHxqBgOXmv1p6lRGGgAj9WsthbE7YgV4LX0EHIyK9Msh8wS2nr
 Z18Z1SrJLaoP05SfNm32DvTslzQoHbK/9PozRLwg1X5lpOgoagzttOaUhi+q36zu5DOE11
 66afuo1WAzJa5ZgZQfLruRVYqFzEJIJjDLc2cS25IJVhXzpttZE6nq8fpj1m+g==
ARC-Authentication-Results: i=1; rspamd-865c984fb5-9h7ng;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Exultant-Soft: 6a2bd4a9782da12c_1744659566804_3287534819
X-MC-Loop-Signature: 1744659566804:2637107973
X-MC-Ingress-Time: 1744659566804
Received: from pdx1-sub0-mail-a310.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.109.60.75 (trex/7.0.3); Mon, 14 Apr 2025 19:39:26 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a310.dreamhost.com (Postfix) with ESMTPSA id 4ZbyKT6vl7zSC; 
 Mon, 14 Apr 2025 12:39:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744659566;
 bh=LdzuM6yI/DPHLWWxCbzBVYC+6e1KmT+65ouhxY0UrGg=;
 h=Content-Type:Date:Subject:To:Cc:From;
 b=Cl/he2+ajaHxFfltdjYzYSgJu7ONuJ6slbOYDS8Rx+I4jZxEaY7FJ8ObXnf80JiDv
 T2XI5QCqrM3EvFTjcFxH3HHnwFQmRZ0fTS0/yoqmWgSI0fOu8Y/1Oj/XHKwxwTsk7k
 jhYMgnowQk6m4Z5wbvaZpKtnjpp6Svm3wpX2o0weEu0FHK4BKi01B0adHKKUn+T7xB
 0w7+34jwJwEPzpqZvHXVz+cAA0eSdO0aXUspgMA0Ai6jqsWi6f2glmJ+x5LSZ97ke9
 O0M0UV4fw1CPbV94N5DzqD+fDwR6IPLOnH+n79ADTU2UD90cJW/Ic94kMcyZhKsQzs
 ynf8x+zyavxtg==
Content-Type: multipart/mixed; boundary="------------Qw6hYyfRDCP7iNDKGmIght2j"
Message-ID: <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
Date: Mon, 14 Apr 2025 15:39:24 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <86y0w4jsye.fsf@HIDDEN>
X-Spam-Score: 0.0 (/)
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 (-)

This is a multi-part message in MIME format.
--------------Qw6hYyfRDCP7iNDKGmIght2j
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Attached: v2 of this patch

This patch marks only the following characters as
punctuation: !%^~:,

I removed . because it is commonly used in command names
(e.g., mkfs.ext4).

(Excluding '.' not only covers the majority of command and
function names but also prevents using ,!%^~: as
symbol constituents, resulting in more accurate
variable symbols.)

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/

On 2025-04-13 05:45, Eli Zaretskii wrote:
>> Date: Fri, 11 Apr 2025 10:55:02 -0400
>> From: James Cherti <contact@HIDDEN>
>>
>> In sh and Bash, the characters !%^~:.,= and are not valid in variable or
>> function names.
>>
>> Assigning them the "_" syntax causes Emacs to treat them as word
>> constituents, disrupting navigation and completion
>> (e.g. dabbrev-expand, forward-word, etc.).
>>
>> The attached patch updates the syntax table in sh-mode to mark
>> these characters as punctuation, correcting the issue.
> 
> Thanks.
> 
> TBH, such a change sounds scary, as it could cause all kinds of
> unintended changes in behavior.
> 
> I've added a couple of people who might know this mode better than I
> do, in the hope that they will have comments or opinions.

--------------Qw6hYyfRDCP7iNDKGmIght2j
Content-Type: text/x-patch; charset=UTF-8;
 name="fix-sh-mode-syntax-table-v2.patch"
Content-Disposition: attachment; filename="fix-sh-mode-syntax-table-v2.patch"
Content-Transfer-Encoding: base64

RnJvbSA0ZDllMDgzMGU4ZWE3YjkwMzgxY2FjZTM3NTkxMDQzYjkxNzg3MDIwIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBDaGVydGkgPGNvbnRhY3RAamFtZXNjaGVy
dGkuY29tPgpEYXRlOiBGcmksIDExIEFwciAyMDI1IDEwOjE4OjE5IC0wNDAwClN1YmplY3Q6
IFtQQVRDSF0gTWFyayAhJV5+OiwgYXMgcHVuY3R1YXRpb24gcmF0aGVyIHRoYW4gc3ltYm9s
IGNvbnN0aXR1ZW50cwoKSW4gc2ggYW5kIEJhc2gsIHRoZSBjaGFyYWN0ZXJzICElXn46LCBh
bmQgYXJlIG5vdCB2YWxpZCBpbiB2YXJpYWJsZQpuYW1lcy4gQXNzaWduaW5nIHRoZW0gdGhl
ICJfIiBzeW50YXggY2F1c2VzIEVtYWNzIHRvIHRyZWF0IHRoZW0KYXMgc3ltYm9sIGNvbnN0
aXR1ZW50cy4KCiogbGlzcC9wcm9nbW9kZXMvc2gtc2NyaXB0LmVsOiBNYXJrICElXn46LCBh
cyBwdW5jdHVhdGlvbiBpbiB0aGUKICBzaC1tb2RlLXN5bnRheC10YWJsZSBzeW50YXggdGFi
bGUuCgpDb3B5cmlnaHQtcGFwZXJ3b3JrLWV4ZW1wdDogeWVzCi0tLQogbGlzcC9wcm9nbW9k
ZXMvc2gtc2NyaXB0LmVsIHwgMTIgKysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBp
bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21v
ZGVzL3NoLXNjcmlwdC5lbCBiL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbAppbmRleCA5
NDA2MWUyZWNiNS4uZWEzY2YzYmQ0Y2EgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL3No
LXNjcmlwdC5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwKQEAgLTM5NSwx
MyArMzk1LDEzIEBAIHNoLW1vZGUtc3ludGF4LXRhYmxlCiAJOzsgdG8gd29yayBmaW5lLiBU
aGlzIGlzIG5lZWRlZCBzbyB0aGF0IGRhYmJyZXYtZXhwYW5kCiAJOzsgJFZBUk5BTUUgd29y
a3MuCiAJPyQgIiciCi0JPyEgIl8iCi0JPyUgIl8iCi0JPzogIl8iCisJPyEgIi4iCisJPyUg
Ii4iCisJPzogIi4iCiAJPy4gIl8iCi0JP14gIl8iCi0JP34gIl8iCi0JPywgIl8iCisJP14g
Ii4iCisJP34gIi4iCisJPywgIi4iCiAJPz0gIi4iCiAgICAgICAgID8vICIuIgogCT9cOyAi
LiIKLS0gCjIuNDkuMAoK

--------------Qw6hYyfRDCP7iNDKGmIght2j--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 21:35:02 +0000
Resent-Message-ID: <handler.77746.B77746.174466649812342 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174466649812342
          (code B ref 77746); Mon, 14 Apr 2025 21:35:02 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 21:34:58 +0000
Received: from localhost ([127.0.0.1]:49321 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4RSD-0003D0-OY
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 17:34:58 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:11377)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4RSC-0003Ck-Dc
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 17:34:56 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 075568087A;
 Mon, 14 Apr 2025 17:34:50 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744666489;
 bh=axafbs8VhiVtL+X7FxXQ9JOXpm8h/AoHHDReoUqUwH4=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=VbDYv90/JcIXT9k02ePBu4Y19tUYfdqApyqRRg0bkEz6v5nGgPFYRrwDWf1ufOkbK
 +61wlnmnsoFHt/b9Z0BKBOd5aGF2WUx+Pv3d3ifbiDcFeT4tWRYztmB12O2PL3wgWu
 lMIh8D0NlA8OoO3bmNdQZRr07ZjmEQmB0ajE12ydzLUDpZr+6alkq1D4y/wDtVqPpT
 lY6CqTxthntl8cTVFYQBkCETHbiggs3rejMXpOnVALGxCrJh4nYD+tlxT7ixgtFuIY
 95tx8hjsdr6r7yHgREBrCCOkq2PnOp2fc2NRFkfI2JUhhdMFe60kYA2jEDvVu979/f
 Zhvu7h0pboQhA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 5257F8014E;
 Mon, 14 Apr 2025 17:34:49 -0400 (EDT)
Received: from alfajor (unknown [104.247.242.5])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1BFF912076B;
 Mon, 14 Apr 2025 17:34:49 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
Message-ID: <jwvjz7mig6w.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
 <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
Date: Mon, 14 Apr 2025 17:34:47 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.372 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
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.3 (---)

> This patch marks only the following characters as
> punctuation: !%^~:,

Same problem as before: by just changing the syntax-table willy-nilly
you're affecting a lot more code than the one you care about, and we
don't know what the impact will be.

You may want to set `dabbrev-abbrev-char-regexp` instead, for example.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 21:54:01 +0000
Resent-Message-ID: <handler.77746.B77746.174466758215737 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174466758215737
          (code B ref 77746); Mon, 14 Apr 2025 21:54:01 +0000
Received: (at 77746) by debbugs.gnu.org; 14 Apr 2025 21:53:02 +0000
Received: from localhost ([127.0.0.1]:49343 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4Rjh-00045g-QW
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 17:53:02 -0400
Received: from cross.elm.relay.mailchannels.net ([23.83.212.46]:12775)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4Rje-00045S-A4
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 17:52:59 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id A9CC68C4208;
 Mon, 14 Apr 2025 21:52:56 +0000 (UTC)
Received: from pdx1-sub0-mail-a231.dreamhost.com
 (trex-8.trex.outbound.svc.cluster.local [100.99.49.159])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 49EE88C400F;
 Mon, 14 Apr 2025 21:52:56 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744667576; a=rsa-sha256;
 cv=none;
 b=rpEVMwt7H+5p58ckxDfdCc/IzAdRLz2smNrKlNCtd3plS4rKJIh59/M68xlYblsVX0dygr
 ewZZ+mWR/mUCWa8bu3RnrISyiZlBywfDhiybFwbO7/VpokkjaVctaEiX2FU8SWq+g3WcMd
 yk/zM+IBcF+IMeEdexLQ2n3WQm7EK+WndGycodFudLgRxnm4jm32GxFW5td/XkMBnKQMNp
 6zOdXIgZIs0YVzbCFyEhXPTEfBYNmJ00oxg1AP/MPPRGxUt5LTxR4FUwGGB1jUR/YYXhEu
 Lqat20pew2kqIZhWIXjFoUQJsU7ntuk+xpRUidMMsMdBD+JBXIr6EQMl6wsolg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744667576;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=K/nfIUiGgqVNDftKdJaMHhzNl3HtnIbxGwQST2W6E1E=;
 b=Cu3CQrXuwmJnZwUXJuSFuZJKyOv6EC9cBYkH9JWQBuegqk5r0Spl9ALUMl3HvgbSH84eP3
 z4IqqpHfUIgNRB+g2Boe0EBP0EdpjRUEyq4oKJiuqCcxoEappgdOYD6DdI7G4db6LGSBRT
 FAuOlXY6RWh51ASC3CXtKmwZcQrDs2yDiFoXx4+Zbr8D8WLrbcghLK4MfGjdSL0vmvl1nT
 ld+e88TVLiOzgdJt3g1ZGjcIK6bnj+6vVef+N6fw946fwfRdMQHKH13FaxLby4IUz5u8d+
 xrhIDaJxyYu5WFylCgID5gwhOt4Q2dHQxoByFBtbGhLrH4bPy29aK1jrV0aOsQ==
ARC-Authentication-Results: i=1; rspamd-67f59c8b45-rr4bd;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Share-Squirrel: 2fc05c675fa7b614_1744667576528_3002869483
X-MC-Loop-Signature: 1744667576528:3873703358
X-MC-Ingress-Time: 1744667576528
Received: from pdx1-sub0-mail-a231.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.99.49.159 (trex/7.0.3); Mon, 14 Apr 2025 21:52:56 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a231.dreamhost.com (Postfix) with ESMTPSA id 4Zc1HW5FDZzC9; 
 Mon, 14 Apr 2025 14:52:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744667576;
 bh=K/nfIUiGgqVNDftKdJaMHhzNl3HtnIbxGwQST2W6E1E=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=e7QuRdusMuRi28LFRzduKcv8a9phr18BLpxvBwOGkBJGC2+9wniZeeuX/cPmJLRZG
 jhLtsQpotmNuOegoMn8BlOqpayes7QIK++EbOGpATSz4i4SMcPvWSJUo3FvoogwzDA
 EW2uaaPjOJaDo1KY/JKcaMiCckBTcU65Y++5Z9hoh2cLBq3/K0UDzvJMdqSJ/sCxaY
 l4YciCsqBh2M0kpGFyYSvgkzYEKzRkhWW9EN3mAb8xNE37k0nzB3vWywtxlw4pynYH
 qyEilislznRy3Q55j4wbobPbLM/zMbkIY+fFLAjtxKpK4PO1bF9SgapfhleVFjxZDD
 /wxRfRNj9Qv4g==
Message-ID: <649f6282-2041-43b4-a9c8-ca2549c13c7c@HIDDEN>
Date: Mon, 14 Apr 2025 17:52:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
 <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
 <jwvjz7mig6w.fsf-monnier+emacs@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <jwvjz7mig6w.fsf-monnier+emacs@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
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 2025-04-14 17:34, Stefan Monnier via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
>> This patch marks only the following characters as
>> punctuation: !%^~:,
> 
> Same problem as before: by just changing the syntax-table willy-nilly
> you're affecting a lot more code than the one you care about, and we
> don't know what the impact will be.
> 
> You may want to set `dabbrev-abbrev-char-regexp` instead, for example.
> 
> 
>          Stefan

Thank you for suggesting a solution for dabbrev. However,
this won't address the issue with symbol highlighting
using the built-in (highlight-symbol-at-point) function.

For context: I have been using the syntax table introduced
by this patch for over a year in extensive Bash scripting (I
write hundreds of Bash scripts annually), and I have not
encountered any issues with `sh-mode` or `bash-ts-mode` when
this patch is applied.

That said, I understand there may be use cases outside my
workflow where this change could impact users who use
sh-mode differently.

I'll leave the decision to your judgment, given your
long-standing experience maintaining Emacs.

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 00:24:01 +0000
Resent-Message-ID: <handler.77746.B77746.174467660222114 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 77746 <at> debbugs.gnu.org, Juri Linkov <juri@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174467660222114
          (code B ref 77746); Tue, 15 Apr 2025 00:24:01 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 00:23:22 +0000
Received: from localhost ([127.0.0.1]:49518 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4U5B-0005kc-U0
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 20:23:22 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23160)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4U59-0005kK-NU
 for 77746 <at> debbugs.gnu.org; Mon, 14 Apr 2025 20:23:20 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 8D7D580822;
 Mon, 14 Apr 2025 20:23:13 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744676592;
 bh=O32pdrVOFoGkr3Enx2rOitFXxkHRg1pn1X71EzswAmA=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=D/tfTSpkmBj6MC7DwKQjh6qGdgm6NTuKxAyWuVLD4eXzye/R71K7j4lvCy/hmZVDH
 LbGt6zxpAQWyc6jfnZxBEUIssQXM2yujCH3s21dnWvgm+D0cgX3Lsip4t6KtqJjWvg
 DPgDFWShJzKt6ABuAqjoJZKULC1R3nJu1Mby33Y2sDNjRH4vXipEZAkfr2hv9Wt4J3
 IWQx+oaIROklTC5J3XiUkLVxvKzEHaHu4sEG8U7sUQX7KZYWPrj3PUzKz233JJpGb5
 xiMf5nNC6456bE5f24z4CpBW2Mjt2faP82X1fumhWqUweQrLpMKf08LVB1fD5Ui2Bp
 WWWfoHBXfM8fw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 8B43B8014E;
 Mon, 14 Apr 2025 20:23:12 -0400 (EDT)
Received: from alfajor (unknown [104.247.242.5])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 51EBA120406;
 Mon, 14 Apr 2025 20:23:12 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <649f6282-2041-43b4-a9c8-ca2549c13c7c@HIDDEN>
Message-ID: <jwv34eai8h9.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
 <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
 <jwvjz7mig6w.fsf-monnier+emacs@HIDDEN>
 <649f6282-2041-43b4-a9c8-ca2549c13c7c@HIDDEN>
Date: Mon, 14 Apr 2025 20:23:06 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.371 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
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.3 (---)

> Thank you for suggesting a solution for dabbrev.  However,
> this won't address the issue with symbol highlighting
> using the built-in (highlight-symbol-at-point) function.

No, indeed.  There's probably another setting available that can fix
that case, tho.

> For context: I have been using the syntax table introduced
> by this patch for over a year in extensive Bash scripting (I
> write hundreds of Bash scripts annually), and I have not
> encountered any issues with `sh-mode` or `bash-ts-mode` when
> this patch is applied.

It's possible that your patch is actually safe.

Someone=E2=84=A2 just needs to take a close look at the syntax-propertize,
font-lock, and indentation code to assess the potential effects (I think
it's the only two cases that deserve such close scrutiny, because other
cases are usually more like dabbrev in the sense that there isn't as
clear a "right-vs-wrong" distinction).

Another option, might be to combine your patch with another patch which
sets the syntax-table used for font-lock, indentation, and syntax-ppss.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 06:16:02 +0000
Resent-Message-ID: <handler.77746.B77746.174469772924426 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174469772924426
          (code B ref 77746); Tue, 15 Apr 2025 06:16:02 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 06:15:29 +0000
Received: from localhost ([127.0.0.1]:50193 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4ZZw-0006Lt-J5
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 02:15:29 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:42278)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u4ZZt-0006Ld-I5
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 02:15:26 -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 <eliz@HIDDEN>)
 id 1u4ZZm-0002S7-4z; Tue, 15 Apr 2025 02:15:19 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=trvk+zWPivfAwzXUf4CSv4akbK3+DHJMzErLAN8ox8M=; b=jVsiy2JT+vSI
 b3gt922AMzQIXYsf7bM07FUysdwzddON7hc1N36DZZrGYe14+bVRIRpInwCWkPXQdmh1gWUB7OxPC
 3UE3KQw6od/TARk9me0QctQG7Ydr8xyX+a9g6IAArjW7KaaNwTjBEc3Sms56KvofOdA/DqTNu4Gnt
 nVSbD3LMXDXdXhUzCCCXJLzR73B0uTm0AoaTPfcDazP7BDF3JPJzSuN5G1GjDByYSFN6/YhfJOAMm
 rIJ0jbJx07LWvwsjAcvcGRsEb5Xpy4OzFk2oMpp/qaKkNqYXdzvKdG3NJD1EM6npAI1HwigfuwpPN
 wiXJF25DQGRiyFz5SC0Kjw==;
Date: Tue, 15 Apr 2025 09:15:12 +0300
Message-Id: <86cydehrwv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN> (message
 from James Cherti on Mon, 14 Apr 2025 15:29:44 -0400)
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
X-Spam-Score: -2.3 (--)
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.3 (---)

> Date: Mon, 14 Apr 2025 15:29:44 -0400
> Cc: eliz@HIDDEN, 77746 <at> debbugs.gnu.org, juri@HIDDEN
> From: James Cherti <contact@HIDDEN>
> 
> 
> On 2025-04-14 13:23, Stefan Monnier via Bug reports for GNU Emacs, the 
> Swiss army knife of text editors wrote:
> >> 1. Completion
> >> --------------
> >> Given the variable name `varname` in a comment,
> >> followed by ".":
> >>    #!/usr/bin/env bash
> >>    # The name of this variable is varname. Code:
> >>    var
> >>
> >> Completing "var" includes "varname." in the list of
> >> completions.
> > 
> > `varname.` is a valid command name and at the spot where you have `var`
> > above, you could very well be completing a command rather than a variable.
> > 
> >> (e.g. dabbrev completion. I am using Corfu/Cape,
> >> which displays all suggestions)
> > 
> > dabbrev doesn't even try to distinguish whether you're completing a var
> > or a command or a type or anything else for that matter, so it's mostly
> > unavoidable that it includes "useless" candidates (and that it misses
> > valid candidates, as well).  IOW you can't argue that it's correct or
> > not: you need to argue whether something will be usually useless or not.
> > 
> >> 2. Highlight symbol at point
> >> ----------------------------
> >> When the cursor is on the comment `varname.`,
> >> Emacs highlights `varname.` instead of `varname` when
> >> using `(hi-lock-face-symbol-at-point)`:
> >>    #!/usr/bin/env bash
> >>    # The name of this variable is varname. Code:
> >>    var
> > 
> > Same here.  `varname.` is a valid command name so it can make perfect
> > sense to highlight it.  Admittedly, I'd never seen a command with a `.`
> > at the end, but removing `.` from the symbol constituents would rule out
> > not just `varname.` but also all commands with a `.` in the middle of
> > their names:
> > 
> >      % ls /usr/bin/??*.* | wc
> >          180     180    4274
> >      %
> Yes, commands like mkfs.ext4 contain '.' and are valid.
> However, while :,!%^~ are valid characters for commands,
> it's rare to see them used in command names. For instance, I
> have no commands on my system that contain :,!%^~ despite
> having 3,843 files in /usr/bin/.
> 
> Perhaps this patch could be adjusted by removing '.' (given
> its common use in command names), and keeping :,!%^~
> as punctuation for variable names.
> 
> (Removing '.' would not only cover the majority of
> command/function names but also prevent using `!%^~:,` as
> symbol constituents, resulting in more accurate variable
> symbols.)

Did you try the tree-sitter based bash-ts-mode?  If you did, does it
solve this problem better than sh-mode?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 06:18:02 +0000
Resent-Message-ID: <handler.77746.B77746.174469786024693 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174469786024693
          (code B ref 77746); Tue, 15 Apr 2025 06:18:02 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 06:17:40 +0000
Received: from localhost ([127.0.0.1]:50198 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4Zc3-0006QD-Rr
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 02:17:40 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:53296)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u4Zc1-0006Pt-4s
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 02:17:37 -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 <eliz@HIDDEN>)
 id 1u4Zbv-0002j1-AP; Tue, 15 Apr 2025 02:17:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=c2EKfo7l9lCOaKAUiPGKwsP0lN4RdgilYWDkIXxPghY=; b=QJCKGKN5/fF5
 sOOBSL+uP3XKN55RXRLVzvDA0Ta7tzK4w4E555/xYhaTRaCyfkKPVkAUTWYyl2aJ0B7HkG6f1anuU
 cfoXn7P+T+cF4CyVQpGQmNwJ21JXMynqFl5yYeYrBY6RZgaIKtsxx7D2loLllMYEpGZ8tJIv0njp+
 ErgaHXSponIjjMjETtdiizj1s4OoLHfg6z9NkGZehKLq6qxQa4efAk95vRHK+vYjYGLt/FKAhA+X9
 N6D7IYaNS3y6GGE7p5g7OoVbczjlP803YyBxqDIBE6ix1QKCUmOE2hwu6B5k34ocN0om3ANLZcVDO
 DHSJeLHbLJSF4l3OecA11g==;
Date: Tue, 15 Apr 2025 09:17:21 +0300
Message-Id: <86bjsyhrta.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN> (message
 from James Cherti on Mon, 14 Apr 2025 15:39:24 -0400)
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
 <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
X-Spam-Score: -2.3 (--)
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.3 (---)

> Date: Mon, 14 Apr 2025 15:39:24 -0400
> Cc: 77746 <at> debbugs.gnu.org
> From: James Cherti <contact@HIDDEN>
> 
> Attached: v2 of this patch
> 
> This patch marks only the following characters as
> punctuation: !%^~:,
> 
> I removed . because it is commonly used in command names
> (e.g., mkfs.ext4).
> 
> (Excluding '.' not only covers the majority of command and
> function names but also prevents using ,!%^~: as
> symbol constituents, resulting in more accurate
> variable symbols.)

Should this backward-incompatible change be controlled by a user
variable?  I can easily imagine some user who'd come complaining about
this compromise.  Without a knob to get back previous behavior, we
will have no way of satisfying such users without reverting the
change.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 11:22:02 +0000
Resent-Message-ID: <handler.77746.B77746.17447160768189 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.17447160768189
          (code B ref 77746); Tue, 15 Apr 2025 11:22:02 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 11:21:16 +0000
Received: from localhost ([127.0.0.1]:50929 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4eLs-000281-39
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 07:21:16 -0400
Received: from butterfly.birch.relay.mailchannels.net ([23.83.209.27]:23517)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4eLo-00027g-V4
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 07:21:13 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id DC0D0240AF;
 Tue, 15 Apr 2025 11:21:10 +0000 (UTC)
Received: from pdx1-sub0-mail-a297.dreamhost.com
 (100-110-58-162.trex-nlb.outbound.svc.cluster.local [100.110.58.162])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 8171025142;
 Tue, 15 Apr 2025 11:21:10 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744716070; a=rsa-sha256;
 cv=none;
 b=f1jos7tVrntBhlK0jGzwrr9W+BEn2BouT7XlBtViMZhV0LFmhN6bEZEu+AQWgXUsh8AB3Y
 +z+/ccB8yPZQd81DvY6RRap75vEnzRjLcte/sweK4Agj8RHrMYrMyb5pKL3/86CPNNEwHD
 E4dN5FjPDQzUw9gscpHw+z1dsGIKTUfO44SVZoOi9JAfQ3XqB7sZIFOfsI5DdLtMNRsXtS
 vcNanxT4hfVp+zvNXxu3JJbZyVuEBqp1CbMqSRz9zZXTKpvAcfCqeNLmWlIgsL6a6Mn/XZ
 LGuYgQHQXI/9okmGLF859SPlkexNMnRjcma67+ROa1sUfpCGMmH7RILXfyOtwg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744716070;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=P6N8nCtC+3PpGJwjyBGRRACxLIc1lB+EasIkbrYwu5c=;
 b=7s1uC3vOSpYwPH1fSxRloOfNDoF9kUzGVx5eHI2AR2Ee5gHIVjGqbRqBZ+47T6eLqQnl5F
 pdf0oKQzOjVMnlc+T/7EqeVn1drjiSqli9+NY6S0aowhdH1DXQnL/hDJmFsFhTVKmE9R3Z
 ZkW/UrLosoZMBbeNM+fa0DPtJsjBahN2TB2UGE7hf060ymAfLa+loCstziWX3z/nksqAdI
 1jt1TVhgxTk+E5Xx0+A2nlwmz0w3V8A9tDz9NffnwTNah4XkZ9I2/rlGoY3YCeBNG2EVT9
 k4WjJ5P468a75Qyd3k7EgVBL8cpbw1kRh9mQvEhj3w0Jcvl5Lf7chIOMBITZaw==
ARC-Authentication-Results: i=1; rspamd-865c984fb5-9h7ng;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Average-Thread: 7acbc8f6465090fe_1744716070765_3281519374
X-MC-Loop-Signature: 1744716070765:2838103027
X-MC-Ingress-Time: 1744716070765
Received: from pdx1-sub0-mail-a297.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.110.58.162 (trex/7.0.3); Tue, 15 Apr 2025 11:21:10 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a297.dreamhost.com (Postfix) with ESMTPSA id 4ZcMD56vKxz1d; 
 Tue, 15 Apr 2025 04:21:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744716070;
 bh=P6N8nCtC+3PpGJwjyBGRRACxLIc1lB+EasIkbrYwu5c=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=e7isYb5yeaaS7N3oF1CI2YTxiQE4VDYgq/IndbUAZF3PRVVrld09lC2+M5jQ1v4Rq
 yrfPgwkD8FQcqTteDuqSS98pW18MOBizu1NwW5hedy3C7HGoCuf1nGbGENsTQjaSEp
 UIWDzaCzj/3pjzPJG2s10ZGL0hZqbWpfyNNcvnAu6xDJBNtFS5xwxs9aroSTOC3sM1
 3RTestogQGZXv7xXK+KWBaUvcIk6VCdsKob3x69jhJmhOSiHQnVuVl37Zh+P6qnt+A
 pE+sR6hlj+JuvlPSbil9AMwRUqyaLNKObq2zIRiWkm2f+unq5boD5cGiVmDhFEAWvB
 r8FMjZSpq9IxA==
Message-ID: <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
Date: Tue, 15 Apr 2025 07:21:08 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <86cydehrwv.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
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 (-)

Hello Eli,

The issue occurs in both sh-mode and bash-ts-mode.

This patch resolves it for me in both modes.

(I am using the first patch that marks !%^~:., as
punctuation. It includes '.'. In my workflow, I find little
value in completing commands within Bash scripts. I
prioritize completing variables and functions, as they are
more relevant to the script’s logic and structure.)

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/

On 2025-04-15 02:15, Eli Zaretskii wrote:
>> Date: Mon, 14 Apr 2025 15:29:44 -0400
>> Cc: eliz@HIDDEN, 77746 <at> debbugs.gnu.org, juri@HIDDEN
>> From: James Cherti <contact@HIDDEN>
>>
>>
>> On 2025-04-14 13:23, Stefan Monnier via Bug reports for GNU Emacs, the
>> Swiss army knife of text editors wrote:
>>>> 1. Completion
>>>> --------------
>>>> Given the variable name `varname` in a comment,
>>>> followed by ".":
>>>>     #!/usr/bin/env bash
>>>>     # The name of this variable is varname. Code:
>>>>     var
>>>>
>>>> Completing "var" includes "varname." in the list of
>>>> completions.
>>>
>>> `varname.` is a valid command name and at the spot where you have `var`
>>> above, you could very well be completing a command rather than a variable.
>>>
>>>> (e.g. dabbrev completion. I am using Corfu/Cape,
>>>> which displays all suggestions)
>>>
>>> dabbrev doesn't even try to distinguish whether you're completing a var
>>> or a command or a type or anything else for that matter, so it's mostly
>>> unavoidable that it includes "useless" candidates (and that it misses
>>> valid candidates, as well).  IOW you can't argue that it's correct or
>>> not: you need to argue whether something will be usually useless or not.
>>>
>>>> 2. Highlight symbol at point
>>>> ----------------------------
>>>> When the cursor is on the comment `varname.`,
>>>> Emacs highlights `varname.` instead of `varname` when
>>>> using `(hi-lock-face-symbol-at-point)`:
>>>>     #!/usr/bin/env bash
>>>>     # The name of this variable is varname. Code:
>>>>     var
>>>
>>> Same here.  `varname.` is a valid command name so it can make perfect
>>> sense to highlight it.  Admittedly, I'd never seen a command with a `.`
>>> at the end, but removing `.` from the symbol constituents would rule out
>>> not just `varname.` but also all commands with a `.` in the middle of
>>> their names:
>>>
>>>       % ls /usr/bin/??*.* | wc
>>>           180     180    4274
>>>       %
>> Yes, commands like mkfs.ext4 contain '.' and are valid.
>> However, while :,!%^~ are valid characters for commands,
>> it's rare to see them used in command names. For instance, I
>> have no commands on my system that contain :,!%^~ despite
>> having 3,843 files in /usr/bin/.
>>
>> Perhaps this patch could be adjusted by removing '.' (given
>> its common use in command names), and keeping :,!%^~
>> as punctuation for variable names.
>>
>> (Removing '.' would not only cover the majority of
>> command/function names but also prevent using `!%^~:,` as
>> symbol constituents, resulting in more accurate variable
>> symbols.)
> 
> Did you try the tree-sitter based bash-ts-mode?  If you did, does it
> solve this problem better than sh-mode?
> 
> 
> 





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 11:49:01 +0000
Resent-Message-ID: <handler.77746.B77746.174471768824547 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174471768824547
          (code B ref 77746); Tue, 15 Apr 2025 11:49:01 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 11:48:08 +0000
Received: from localhost ([127.0.0.1]:51002 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4elr-0006Nr-R6
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 07:48:08 -0400
Received: from crocodile.elm.relay.mailchannels.net ([23.83.212.45]:36861)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4elo-0006Nd-9T
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 07:48:05 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 965409047A5;
 Tue, 15 Apr 2025 11:48:01 +0000 (UTC)
Received: from pdx1-sub0-mail-a297.dreamhost.com
 (100-102-86-106.trex-nlb.outbound.svc.cluster.local [100.102.86.106])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 36545901E65;
 Tue, 15 Apr 2025 11:48:01 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744717681; a=rsa-sha256;
 cv=none;
 b=qRysTlY3VPQ5XX0TWT0IVKo7nQ8ccvBDKojWaTj6QuQgOBLQ1X1WdTzP7fTwwAp28DFtdG
 exs5HkEcKQcn6uAX7CqDhcvWY8pWUvA2bGRNt1k8GzJdevkWTfoYkxBaVCWIrZ2/Nro6kw
 lWTjkclSnkJnYtveibHOcNP9Zg5Fuh78Dg1OZZLySGVgEMorKb4ZACF7r6f1dcUNkDRbxU
 wEKdcIdyhSylDDZXxCjQYjmVaMv/PjOLewsne9Y4OlJ0y4kIiDvG0L/KWKswUgYcZndjHV
 PRtueB5ntx42twpNiaOnYAyef8ZwtigAf7k/lXUInN9ZmfUg2Q1vzoXMSgK8Rw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744717681;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=itf/fj1Uk0gEnu0CJ+fqzPeIs+Y2WwYAM553vSv3bnI=;
 b=hivGZYpNXa4/RaeQiLOI7+iqk4JtHxWDClsXmzu9G0gK8dPWpzPPDyhci2E+ImvaBSPEM3
 TFQO1AfsfTrI4jUs1wNG5FirpO+XJe+mk5VBoHfpxHduU8m3+PtJjj4BWgpw1muCm7atVy
 jpcJFAG6p65UX1jCwkUsOGDPUFksss4TJ20dBtU/FSfOG3t8w1zL/f8V+ywfYqLQhINgSf
 bP/poWzhyQeJrD90Hhjeb6DMfW7NMzOpKWX8/stmWSnK2dQ3Zq3mDyQ6wOPGZlLGQ+CF/f
 HZbmQ4ZFioSMPcKrTy1V5WCCwNoBx2MpgUl6wpdEDGz14YDtB9MpVm0Q86Q/Vg==
ARC-Authentication-Results: i=1; rspamd-67f59c8b45-mcshk;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Attack-Shrill: 0e12f34b084ac353_1744717681462_3922783259
X-MC-Loop-Signature: 1744717681462:3740849806
X-MC-Ingress-Time: 1744717681461
Received: from pdx1-sub0-mail-a297.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.102.86.106 (trex/7.0.3); Tue, 15 Apr 2025 11:48:01 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a297.dreamhost.com (Postfix) with ESMTPSA id 4ZcMq44XXQz5x; 
 Tue, 15 Apr 2025 04:48:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744717681;
 bh=itf/fj1Uk0gEnu0CJ+fqzPeIs+Y2WwYAM553vSv3bnI=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=R1DJzZzp9Mr5Yo89HacZaNc6mpbQMJnfe/GTJkXg2ZCowHRDhE0o3UyfVjE+FIutY
 K8K6YPHWrjLFqBHXx4V8kF6hMKb35Rl7ijTvEtc+sGFaeoN2K6ACDwPqeVUYgq3O1H
 J3fjNHHBq8YMZVeFcGeU76kKLV0Eo4K1y2/WirwNASlOgNBs5L3FPfCHwSW+s4d+72
 E76HV6GZ4F6ncDc7/3D4AwBWeJ+WwF/TxhnYgB+avtiO1I9R76RV6XiTQ917Q38gV1
 qThbaGJO9roHjuMTyAOBg3AgYjB771SbKMEfuGTun2ofmn6/wM5ytwcru7bXk8HvRJ
 p7NfZvCBrd0/g==
Message-ID: <d6397fd0-3f27-4dbd-80dd-8db2da390c4b@HIDDEN>
Date: Tue, 15 Apr 2025 07:47:59 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN>
 <a4bc70ad-6c1c-46f4-be00-80ce56098d9a@HIDDEN>
 <86bjsyhrta.fsf@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <86bjsyhrta.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
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 (-)

Hello Eli,

I just want to note that the second patch is not ideal, as
it omits the '.' character. If you decide to merge this
patch (or a variation of it), I recommend including '.' as
well, since '.' is not allowed in variable names.

In the context of Bash development, it is uncommon to use
characters like !%^~:. in function names. In my view, it is
more practical to treat them as punctuation rather than
symbol constituents by default, as what matters the most
in Bash development is variable names and function names.

Maintaining some degree of backward compatibility might be
beneficial in case other users prefer completing commands
that contain characters like !%^~:,. (though in practice,
this is rare that users complete commands containing
!%^~:, with the exception of '.'. Outside of command names,
the '.' character is also rarely used in function names
and never used in variable names.).

The variable for backward compatibility could be defined
as one of the following, or a variation of them:
   (defvar sh-mode-syntax-table-respect-variable-name-limits t)
   (defvar sh-mode-symbol-respect-variable-name-limits t)
   (defvar sh-mode-respect-variable-name-limits t)

(It could also default to nil, mitigating the risk of any
user encountering issues with this new behavior. As I
mentioned earlier, I haven't faced any problems with this
patch applied for several months.)

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/

On 2025-04-15 02:17, Eli Zaretskii wrote:
>> Date: Mon, 14 Apr 2025 15:39:24 -0400
>> Cc: 77746 <at> debbugs.gnu.org
>> From: James Cherti <contact@HIDDEN>
>>
>> Attached: v2 of this patch
>>
>> This patch marks only the following characters as
>> punctuation: !%^~:,
>>
>> I removed . because it is commonly used in command names
>> (e.g., mkfs.ext4).
>>
>> (Excluding '.' not only covers the majority of command and
>> function names but also prevents using ,!%^~: as
>> symbol constituents, resulting in more accurate
>> variable symbols.)
> 
> Should this backward-incompatible change be controlled by a user
> variable?  I can easily imagine some user who'd come complaining about
> this compromise.  Without a knob to get back previous behavior, we
> will have no way of satisfying such users without reverting the
> change.
> 
> 
> 





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 12:49:02 +0000
Resent-Message-ID: <handler.77746.B77746.17447213283293 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.17447213283293
          (code B ref 77746); Tue, 15 Apr 2025 12:49:02 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 12:48:48 +0000
Received: from localhost ([127.0.0.1]:51094 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4fia-0000r2-2p
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 08:48:48 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:34660)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u4fiX-0000ql-Nx
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 08:48:46 -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 <eliz@HIDDEN>)
 id 1u4fiR-00019g-RU; Tue, 15 Apr 2025 08:48:39 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=719J9PxtCVAzCI8TwbZneAMYqJujiAjFq2xFs/DzzgA=; b=jei5bhi47wB8
 eAsA9f1EiDG+cWpkmygN72iUxUtTgdPW80y8JEMVqnhVlLX/CF20CvShgasdWqXXDXzK2aH0wxQJs
 Ldx6rtBBtfu8t9C1ggJvPdl88M44MIyK5iK0LBuyyZ+9R+IcbeW8nkSATxg1KMAPy3Iy488DkGaWX
 HnDLSdHmbvNV+YVj2XAbivgNmJSoVsCc1qjJVbFv27KGPGoK4eZtIncJ3ZhCAK9MIv+3i5KKHUggD
 24IuPf+xgU7HQdXL6BW2F3VmnJkXqIcLQknVHQ5ktwydFnc6SFiDmPiBFG/LM4MQvyjkV4kBTf8zt
 UkJcRldcMJhPMIu+MvLbKA==;
Date: Tue, 15 Apr 2025 15:48:24 +0300
Message-Id: <86jz7lh9pj.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN> (message
 from James Cherti on Tue, 15 Apr 2025 07:21:08 -0400)
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
X-Spam-Score: -2.3 (--)
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.3 (---)

> Date: Tue, 15 Apr 2025 07:21:08 -0400
> Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
> From: James Cherti <contact@HIDDEN>
> 
> The issue occurs in both sh-mode and bash-ts-mode.

I'm surprised that bash-ts-mode should use syntax tables, instead of
relying on the results of parsing by tree-sitter.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 14:07:01 +0000
Resent-Message-ID: <handler.77746.B77746.174472598720102 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174472598720102
          (code B ref 77746); Tue, 15 Apr 2025 14:07:01 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 14:06:27 +0000
Received: from localhost ([127.0.0.1]:52888 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4gvj-0005EA-LR
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 10:06:27 -0400
Received: from eastern.ash.relay.mailchannels.net ([23.83.222.55]:40491)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4gvg-0005Dz-74
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 10:06:24 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 7F5528A53D2;
 Tue, 15 Apr 2025 14:06:20 +0000 (UTC)
Received: from pdx1-sub0-mail-a310.dreamhost.com
 (100-109-60-75.trex-nlb.outbound.svc.cluster.local [100.109.60.75])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id E5FD08A5BFD;
 Tue, 15 Apr 2025 14:06:19 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744725980; a=rsa-sha256;
 cv=none;
 b=NYGq1+5bHf60dpgUb1dTrCKFxj+tsUfeBReeVG4SJ+u5IZR9H8yIPuHu8K9U8aUIT7Xxzd
 fPOLx98jpYofW2C9EKI9t0l74BkYQaUpJ8pUcMn7y02KWQzWI2VFzkWK50eJHgQIjh/pA3
 TdjTJbltw3YShK0w1/pEM3DeEOVWGSVg8kzuKujel7Sldu49o/2acAXyzg3mgAm4rWouI0
 CjURJNvvt3EJPfY5XBCRcutXgwXaZhDwtRUk1/7Y8/BnN/7CzmiY+GKBc8V3gEviWqdqy8
 JVZ1U7ryTfV86KKC0dKvHWndtQoz9XOPn/OghSOqHFtpUgRw0lIUnWBcg/1HZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744725980;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=ZDz6FYZpeeUb9t5jAdr79+zuVfKenmjpZqTLmslMmrU=;
 b=NyTXSWXSUlx8GkwJFgPszNH7KSDj6I1QTvb1+wkNIGsRyjcV92ryUfYz7+5jMSxcmYFac8
 GKkBBxPXhDw6cKWgB516vZlqO1v0dgtY14pFwpEGt2ZOEbXmjX5hS/4F/ZwccRVxF17skz
 ZzQfgi1WahM/oOIMf4H6ncANfYtDzHhJFNlrLg3EDSuLNKgHyOmX0zvHB9nsb2jIpNxyOr
 Rgcgt0oWpX9Hi8BOEuBxMM0ReNlsBhvoDmQXwxxpWdVtUX4Z005NE5x3zZv9Th0tbP7Vko
 md5h/snQFqbVyKDF8ZPHOh68zoU52p8q2iCOyR3HNfOKQTlg2T/MyFU3xD2t9A==
ARC-Authentication-Results: i=1; rspamd-865c984fb5-7ngqj;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Tangy-Skirt: 4eb7b51730b16674_1744725980270_4263058228
X-MC-Loop-Signature: 1744725980270:1668058485
X-MC-Ingress-Time: 1744725980270
Received: from pdx1-sub0-mail-a310.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.109.60.75 (trex/7.0.3); Tue, 15 Apr 2025 14:06:20 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a310.dreamhost.com (Postfix) with ESMTPSA id 4ZcQtb1xrpzSC; 
 Tue, 15 Apr 2025 07:06:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744725978;
 bh=ZDz6FYZpeeUb9t5jAdr79+zuVfKenmjpZqTLmslMmrU=;
 h=Content-Type:Date:Subject:To:Cc:From;
 b=BWUT4UCE1ZIVgKSlZbqZUjnz/wiJw6M7PttcASxF0c2dl/Myao3O0WyBv14WYWp7p
 PYNYdrdSG4yweID73YoHCyhHwVT1hf8G3jC/A5T4c/XksQ/lXazJcnr9WHRYk/mO9Y
 oUo/ejHXYu8MlBsCtmGg40M5ALOjDBNiRWpBqE9n7YZjJDhX4DyrUbm9/uIMomQFDt
 ajYAlvmx/fysPNsxN5U77aVqFYjuv0HlsEFmdDszN0RyYc5HA+4WuMAgq6v9nd52kV
 l8uad3e125BbAmcZzgq/4rR5Yq3iJRd8ndJ6W5+hAU8nBkIi3+ZU9Y5I5o9azu/Qaw
 94CD9KYZ+hjqQ==
Content-Type: multipart/mixed; boundary="------------ndiGUeHOVslUxq1JDYfHGpDY"
Message-ID: <8cdcff4a-c7ec-4f6e-88f3-b6cbc1899d29@HIDDEN>
Date: Tue, 15 Apr 2025 10:06:14 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
 <86jz7lh9pj.fsf@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <86jz7lh9pj.fsf@HIDDEN>
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>

This is a multi-part message in MIME format.
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2025-04-15 08:48, Eli Zaretskii wrote:
>> Date: Tue, 15 Apr 2025 07:21:08 -0400
>> Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
>> From: James Cherti <contact@HIDDEN>
>>
>> The issue occurs in both sh-mode and bash-ts-mode.
> 
> I'm surprised that bash-ts-mode should use syntax tables, instead of
> relying on the results of parsing by tree-sitter.

Here are a few screenshots that show exactly the issue. The
mode used when I took the screenshot was bash-ts-mode.

- without-patch1-highlight.png: Only varname should have
   been highlighted
- without-patch2-highlight.png: varname in the comment
   should have been highlighted
- without-patch3-completion.png: The completion included
   invalid variable names.
- without-patch4-major-mode.png: The major mode is
   bash-ts-mode. The same issue happens with sh-mode
   without this patch.

Here are screenshots with this patch applied:
- with-patch1.png: varname highlighted correctly
- with-patch2.png: only complete valid variable names

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: image/png; name="without-patch1-highlight.png"
Content-Disposition: attachment; filename="without-patch1-highlight.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAqMAAAGNCAYAAAAl0XizAAAABHNCSVQICAgIfAhkiAAAABl0
RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAtdEVYdENyZWF0aW9uIFRpbWUA
VHVlIDE1IEFwciAyMDI1IDA5OjU1OjAzIEFNIEVEVNv0D+UAACAASURBVHic7N15eJTlvcf/
9zMzmWxkT8gesocQCBABgbBIES3igmiPtaUueLq3Ll1P/bW/1mOPP7tc1p4u2s2lloMVtXVB
cQFllU0IezaSkIXsG9kzy/P7I6FEGoSEiYPyeV2Xl3Fmct/f55m5Lj/5Pvf9jMGMu03EM/YY
3q7g422GPooiIiKXGou3CxARERGRS5fCqIiIiIh4jcKoiIiIiHiNwqiIiIiIeI1Nm27koqHP
ooiIyCVHnVERERER8RqFURERERHxGoVRDILSJzB7cRo5CTZvFzMM1SciIiKfXAqjhh/pi7KY
c0Uc4bi8Xc2/U30iIiLyCTYGrSwLoZPSWbAojoQoH+jupvZQGZveqqXFMYrRYtJZ+fV0wiqO
8JcnKulJmcRdq5LwO1zA79fU4Tzz9QlZ3P7lFIKKD/KHZ2roO9cE4yJJjbdAexPltRfhNwAN
V58lhHl3z2ZWWDNv/XwPB7vOPYw9OYMVn00mvPsEbz55hNIODx3rxX7+hjOK8/exnldEROQi
5vHOqG9GNis+m0patIXOqlZaXP4kz83lpuXRBHh6Mg/wT4sizmbSVdpI3UXY2PNMfQYh6eOJ
CbLiNz6a1FjP7Vq/2M+fiIiIXNw82xk1/Ji4II4QSx8la99j3f5eTJ8Q8r98ObOmpDLl3QZ2
Nl5M3TMbiRPDsOGgpKj137qs3uep+kxaDh7naEoS4V21HKp0X2T1iYiIyKXKs2HUEkR0jAX6
Wig80osJ4DhJ4aFOZl4ZREKyDzsb+z065QWxh5GSaoO+esrKL8K2ngfrc9VX88afqj1U2KCL
/fyJiIjIRc/DnVELdh8Dehz0DWm+9fc6MQ0D/3F2DPo5395o5q1Xce3kwZUEqZP40k8nnX5y
8jTufrCDHb/bzva60XVbbYnjmRBg4CxqpKp3yBPDru0ziF+2gP+Y60vZcxt5af+pPqCd2Msz
yJ8znthwO0Z/L81lJ9j5xjFKm4d2IO3k3nEFV6Z1s2t1McyZSG6SDz1lZax/rpzaYRa3nrW+
oaVGxPKpz2WSHe+Do6mZgnWH2VV+OvBbJ03lq5+LxT54Zd5dW8rffl9K09DShhzvu8/UE7k4
lYxYH/rr69n5jyMcOMv19w+vz0ZUXjr5c2NIiLJj6e+lvriGXW+VUd7272tfP2xeIzyZW+6d
SExrGc/+upi6wdr9puXxxZujcOzdy59fbBxVZ/Zc5w+LnfjZmcydFUXM4PvbUFzFjjfKqWgf
+rk738/BAGtUHIs/l8HE+HOfZxERkU8yz64ZNR10d5vg70+I3+mHx4X5YQFM98hCY0dVPSWl
nfSZYHadpOxwPSUV3ThNMNvbKD3cTNNZQtq5GURPjCQQF7VFzYxuGIOgyyZz43WJJAa7aDzW
yIl2C5GT0li2Mp3YYaO+jdTF6cSebKa6zSA0K4P5l/nz76s4z6M+SyDTl2cS7+qi+aRJYEw0
+Z/NJnPI4lyzvZWSg7UUHWmn61xX5y1B5C1LxL+hibIaJwHx8XzqljRirMMf+9nrMwiansvN
K5JJiTRor2yloceH2KkZXH9HFgn2kc1rtjVT0WBiCQsnMfzUmbISlxaKDSdVxaNcInDO82cQ
MS+PFdckkBDkpKG0ibouG7G5mdxwZybx9tOvG9HnwBLItBsyiHN20dQB4z70PIuIiHyyebYz
6jpJxbF+pk6P4LIro6le34QjZgJz8/wxTBdtTb3n3RUFqN26n3Wlg7vp66t5e82Q3fRVFbz2
7L/vpj9vlmBSMvzA3UZZSd+I6hoyCLGZEfjST+Hz23n9iBMMPybdNJ3LoscRE25Q23DGyBZf
bBX7+ce6Vkh3s/LmGALDA7DQ88EbI51PfYaNtm3beOn9XkxrANNvn8sVqVFkpdkoPjhwZtw1
lbzx90oITGDF90JI+rDDMQxqN+xh3aF+sAbR+pW5zI2JITOuhLqqM4/jQ+qzBJKTH4W/2cXe
p97j3QonWPzJ/cJcFmckMG1iKdUHnOc/r7uT4yXdzI4JIjHZh91N/WANJinFBxyNlJeN8lNw
rvNnCSR9SjA210l2/GkH79W5weLP9DvncUVKHJOSSqgpdTPiz4HhQ/u2rfxzTy+mPYyFX5vF
ZZFnOc8iIiKfcB6+tZOT8o1FlKRNIWPWdFbNOv2M2d/K8cqL5zKkERVJSriBWdd4xuXWkXDT
0doH+BOTPZ7wY7W09PVy5Pn3OHK2XzH7qSpqHwjRpUd56uGjo6/P3UFF6WAQdPVwrLCDBWmh
hET6YdA58oDt7qC6cvD+W64uaqr6MGN9CQ4x4IyQ9KH1WQIJDzcwu1sorxoMiu5eyos7cGeG
ERbpj0HH6frOOa9JQ0kzXfOSiE0Lw76nHkdkOInBBq7jTVT1jPRAT8/7oefP3cnO373Jzg/8
Ti8Ndf2Q6ot/oAVwM+LPgfsk5acCfH875eX95EUOf55FREQ+6Tx+n1Gz9QSv/b6biTNjSIj0
Y1xsBBOibfQW1lDa4enZhuFy0HWyF0u380PCmEFIZhQRVpOW4ibaRr253KRuWyEHJ05lSl4u
t+dOpKWikeL3K9h7oGP4e5yaDnp6zhU4zrM+043LeWosE5dz4IVWqwUDRh5GTRO36/R4bpcJ
hoHVeip0nWd9FgtWKxi+idz034lnToLFYnywvvOY11XVSGVPIpOSI4ixNdCaEkG4xaShqInO
0ea38zl/Fl8SZqUxIy+K2Cg//HwMDAPAPWRpxQg/B8PNO+x5FhER+eQbk+9vdHe2ceSdNo74
hLHwG9FMcHdzeHvDiNdlxs6byoyMIIIMsEQncOWtEbgCg/ADrInJXPPZUArXF1HcdjqNuGvL
eO4XZR8+sOFLclYwhruHiqKOC/rfv9nRwNuP76AqP5kpU6KIT4tnTloMmckFPPdyI8M17c6Z
nTxY35g4z/pMRzc1xR1nnAOTjgbHyIOyo5XyMieTcsJJjPYhMC0Ei9lJRWnPKJdYnA8rcUtm
smL+OKx93dRVNNDRZ+IXG0Vi5AdX+Y7mcyAiIiJjFEYHGIzLTWVyhEF/cTl7q0ceqYISo8lI
H9xjFRhMak7w6SdDQknPsdL0LhSfMa89yI6lp4/esy0lDIwkJcECJxspPzFclHHjcgGGBavt
VI/MwGo7y36v3g6KNhykaIOBX0wciz43mYkzs8h7v4ltNaOISuesb9BZ6nO53GMY0M6jPvfg
+XO1svu5g5Sfeh8sBlaLAe7R1OekqrgN5+QIEjNjCZpggdYmKi7kvrXnOn/WUCblBWJ1NLHx
N++zv23gdQnXLiQx8sxdWHj+cyAiInIJGLvvpreFMH1+JHazi0ObTozqUmrxmjd59DcDtyFy
lR3hjz9cz6//UkmnCc5DBfzvj7adcVsnK/FXzeVL31/EV749nUmhw3/TkF9aFPE2k+7SRmqH
W8bq7qW9zY1pCSIlw3fgcqw9hJQU+wd3vVsCybttPqvuy2N65ECo6a1r4NgJJxj+hJ5l/nM5
Z33/mj+I5PTB+qz+pE0MwmK6aG8e2UYxj9fn7qalxcTwCycj/VRo8yF1+ULu/slirps2TJA7
D73HGqlzWYi+PIVkf+gsbaLhQpYhn+v8GbaBW5W5XfT1D55RnyAmJPueMc7YfA5EREQuBWPW
GQ2YnMKUSANHSQV7PfaNP+dg8SMubdzAPTWDIkiKNTjSdmYss5E4MRwfnBwrajvLbnwHxw82
0ZcVTfJ1c1g55ST9oYH448RkyP133N1UV7uYlzmehV/OJ72yG2dgMAkJPtBdT9moNqOcT32D
TCeh+ZezMreL/rAQ4sJt0FVLUemp3zKImDGJOZl2DKs/URYwwmJY+Nkg+l0dHHi5lOMjvn58
HvW5Ozm8tYFpN0eTc2s+0ZUn6bIHkRDvBydrOFg4ui8+MDuaKK81SUz0I8Ds53BxGxe0Je5c
58/VTnWVi6z08Vz5lVlk1jkJiA1mnMXFB/6OG5PPgYiIyKVhbDqj1mCmLxiPr9nNoU01dHxU
/y92d1P2fgNtfS66q6soPD5MCPYZ/Nag/hbKy88e9boOHOX1LU209dsIjfWjZ+9htpac+XqT
hnf38s83a6jp8iEmI4qk8dBWcpw3nzrI0ZOjOPDzrG/geLsoeKmYEz6BRAVb6GmoZ/uzRynu
Pv2SgNgoMnKiyZgYTKAFDL9xTMiJJmNSGCE+Iy/v/Ooz6Sg4yAsvHKe80SQkKZKESGg5Wsa6
J49wrPssv3Yu7h6Ol3TiBsy+FsorLvDuDOc6f2Yvh18+SEF5L4SEkhhv5+TOg7x71HHGQGPw
ORAREblEGHDPJfV/SmvqJFbdmYRfyUH+8tcaRpuLxorqExERkUvJ2K0ZvSgZjM+KZJzhprao
+SLc4az6RERE5NJyaYVRSxCpmf4fvOn4xUT1iYiIyCXmkrtMLyIiIiIXj0urMyoiIiIiFxWF
URERERHxGoVREREREfEahVERERER8RqFURERERHxGoVREREREfEahVERERER8Rqb54e0EDop
jQWL4kkcb8fa10PtkeNseaOSOn1lj4iIiIgM4fHOqE9KFjd+No208QbtFS3U99pJmJHNilsS
CTE8PZuIiIiIfJx5uDNqIWF6LKEWF5Uvv8eLu3ox7eEs+sZMpqfGkRZWzd4WfeGTiIiIiAzw
cGfUwO5nBbOPpvrB7y7v76Sx2QTDhp+vZ2cTERERkY83D4dRNw3VHbgNf1JzQvEBjJDxpCca
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
6ywo7CM0O55IWz+jegtcdax/8jDXP5zL1b/5Ppl7q2kJiGPKlBCo383r73R/sr4hSkRERD6x
PH6fUdeJMl56ppiiEy6CJkQQ7ddPzd6jvPh/Of299wAAIABJREFUx2kdbYvR7eTNXQ6cgNnd
y2v7z4happMnftnEb/c5MaN9WTTRSsU/m7hvs3tUocx3xhRmhoPzSDmFvSY9m97iT680EL7s
Sq6IbuSdn7/FzrPcHH/4+ttY/5M1vLSrBWInMG3yOOrXrOaxt3tGGRpNml5azX/9YBO7ykxi
8rLITTap3LCRh+58nu2tiqIiIiLy8WDAPUouIiIiIuIVHu+MioiIiIicL4VREREREfEahVER
ERER8RqFURERERHxGoVREREREfEahVERERER8RqFURERERHxGoVREREREfEahVERERER8RqF
URERERHxGpunh5v0hU/x6YnDZFxnHa8+WECx07MzjikjgJkPfIsHb4nE0lnC4//xOC8ec3m7
qjFkI+7TN/D//HQemeM6WHfXAzy67ZN8vCIiIuJtHg6jg0wnLWXNNPcOeczVRoc5JrONEYOw
JSu47zMROBva6I1M546HFlHwhbcp6/d2bWPAFsbsb9/Gd+5IJgj4WL1VIiIi8rE1RmG0l5I3
CthW8/GNNEZMHt/88WVE9lfy1JefpGrVffzwuqv57tdKuPfR4/R5u0BPMoJY8PN7uX+pjcIn
nmRDzGf55jJvFyUiIiKXAq0ZHY41gqUPrmBepJPSP6/l+SNtbH34n2xuspH2xVu5c5Yfhrdr
9CSzg51/fIXHvvEI3/3FERoc3i5IRERELhVj0xn1ECNpEY++fgNZ1Ru455pXKHIBGAQvv4vV
P8uh54U/8YX7jwx0Ka1BTFm5jNtuzSErMQBrdxulm3fwzC83sqd2yLpHI4hlf/kx985p4tmv
vQK33ciyvADa3nubX37nHY50mthzZ3PDrAAchW/x6z9V0w/QVMDjD09j6i+msPj2yTy/Zw9N
RiKrXr2PWxOLeezL+0n+5hIWZPvTXXqI1fevZV3RkOv551GfbeYKnvrrfEKLijgUkky2s4g/
P3iYST9Yzhy/Mp740pO8XDJ4LIYfqTcu5c7bp5KbGoS1u5WSLbtY88gGdp0Y+TrPvsI9vFQI
F/lHQkRERD5hxiZ5GP5MumUB00J8MXp7aCg8zpb1ldT2jGwYs6aQ3aXXMikjnamJFooq3IAP
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
iIhjFEZFRERExDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBUR
ERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZhVEREREQcozAq
IiIiIo5RGBURERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZh
VEREREQcozAqIiIiIo5RGBURERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLiGIVREREREXGM
wqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBURERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLi
GIVREREREXGMwqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBURERERxyiMioiIiIhjFEZFRERE
xDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBURERERxyiMioiI
iIhjFEZFRERExDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBUR
ERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZhVEREREQcozAq
IiIiIo5RGBURERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZh
VEREREQcozAqIiIiIo5RGBURERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLiGIVREREREXGM
wqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBURERERxyiMioiIiIhjFEZFRERExDEKoyIiIiLi
GIVREREREXGMwqiIiIiIOEZhVEREREQcozAqIiIiIo5RGBURERERxyiMioiIiIhjFEZFRERE
xDEKoyIiIiLiGIVREREREXGMwqiIiIiIOEZhVEREREQcozAqIiIiIo75X9njS9B0Vvr2AAAA
AElFTkSuQmCC
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: image/png; name="without-patch2-highlight.png"
Content-Disposition: attachment; filename="without-patch2-highlight.png"
Content-Transfer-Encoding: base64

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
/UqtGnqcU7dbkqdVK9OVmeqV7RvQscMN2v1KtWqHx7VnztWnPzND0c1taoxKUEbouHb8sUUZ
G+co192hXb/ar/0toXPe7k+OW96ot1+pUnXn8PGNWvO/7b+PKWV9jvIzznS+nHZOp+Xq7m/n
SpIcX5P+8M8HVDGGVU1W0kx94itzlN5Rpd/8oFzNw4ccuWiJPrs5Vf733tNPf9c6dJ3DOb9v
Xi385DptyO3T24+VS5fP0cJsj/qrqvTyU9Vq+mh/FTSxXsc5v2/nNm7YzysAwP8YE/guJY66
64/pSEWPBh3J6T2hqpJjOlLTp4AjOV2dqig5rrYBg4dgx2jRzfmaFuhVW7c0Zfp0XfWJXKW7
Rh1lV4eOFDfp8KEu9f7JfrUUu3S+brkpS1lxQbVWtupol62Uebm64a48ZYzjY8+FGddS8uol
2rQxU5mxAbVUtKm5162MhQW6+VMFmu4d+/5ilyzU5ltmaEaSo87adrX4IpS1dI5uuWuWUl2j
tlu8UJs3zdSsFEtddR1q6fdo2qIC3XxvvqZ5Tt2rK96lgTa/3ElpWrc5S+7jPrkSUrV8RaJc
Y9ruzONmXJKvj31ytjJPf712rJbckKWoljZVNQYU/aHzxVF3bfMH75kz0KOa4iYdLm5S+fud
6hljZzmdx1XT4shOTFJWkjXyqjQtN0FuBVRf3jF8UfF43je3ctbnKePEcTV0WkqYna81S6Nk
nWnTj+iCv46zvm9jGzfs5xUA4KJn6C4l4eCoaecBvVAxfJeSYw169YlRdympr9GLvxnjXUrG
yvKoa9dOPffOgBxvotZ+YbmWpqSrYNoRNdcP1VGosU5bnqwbvvNEvLLPuCNbGQXJipBPZU8X
6aVDAcmK1LxbF2tp2hSlJ1lqahlbbV2Qce0Y5S2Ikzt4Qrt/sltvNYckO0qLP7Va62ZN07zs
I2ocy91o7CkqXJmqKKdX+371lt6oCkiuKbr0vsu1OjNbC7Jr9Hp1SLJjVLgqVVFOnw78d5Fe
qwxIrmgtvnel1uVkaXFBlY6WnDwTApU12rorXlNzcxRbV6dXt0Zpc36+khOj5JU+WK9/tu36
Pxi3V+89+pa21QQkO0oL716p9fmZWjSnQg0HR52BlqWm197RC+/7JFesOu5fqZXpo88XR01F
B/XCgeH3rOuYdjz1Ee5SEupR7ZE+rUiPVdZMj/a2+SRXnLJneSR/q6qrAuN/3+wIuWsO6NkX
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
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsA
AAAwiOAGAAAADCK4AQAAAIMIbgAAAMAgghsAAAAwiOAGAAAADCK4AQAAAIMIbgAAAMCg/w8M
hftKA6CGwwAAAABJRU5ErkJggg==
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: image/png; name="without-patch3-completion.png"
Content-Disposition: attachment; filename="without-patch3-completion.png"
Content-Transfer-Encoding: base64

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
3us+u+DpOMSbz5fS0NFHW/FO/vnWUc+XNvRKfSZNr6zkv3+4nm1lJjF5WeQmm1SuXcejd/2d
zS2K2yIiIiLnCwPuVToTEREREfGSUZ7hFhERERGRwRS4RURERES8SIFbRERERMSLFLhFRERE
RLxIgVtERERExIsUuEVEREREvEiBW0RERETEixS4RURERES8SIFbRERERMSLFLhFRERERLzI
NqqjWUKYfc8MpkcZQ7zp5tDf1vHKbqdnQ8akc9s30wmr2M+fnq2kO2UCdy9Pwm9fAb9bVYdn
o8m/l4XQiVksWpJEtG8fe55bz3ul7nNdlIiIiMi/1egGbhw0HaznYMOJgXtMwlhigk3cbnN0
dyfnL6sfqQumcHV+CH6AfvMiIiJysRrdwO3uomhNAUWDX7OEMPuescS4j1FTrdnNi4OdzJtm
sHCihbqNBRwImcjncs91TSIiIiLnxijPcH+aZWwUKREG5pFGyts0z3lx6KNsfQkf7Gmh8EAv
STee63pEREREzh0vB26D0KwoIiwmR4sbafVwgjtz2VVcO3Hgvs7UCXzlkQmfvDlxCvc83M6W
325mc93wgrwRnszN940npqWMF58soW6gHr8peXz5pigcO3fyzMuN/X3hFjvxMzKZNT2KmHA7
Rl8PDSVVbHm7nIoTLhzs5N45jyvTuti2sgRmjic3yYfusjLe+ls5tb0eHPDxHviwo3zwQj2R
V6SSEetDX309W/+xnz11rkHbnrk+S3I2y+8eR0BdEzX+ocS6j7Lh9QZiF44nzdbCpj8XUNBw
/JdiIyovnfxZMSRE2bH09VBfUsO2d8sob/X8QslZd4SCOtB9uSIiInKx827gNvxJzgrCcHdS
VtzhcR9ve1U9B/2CSEobg73rGOUV3bgCg0gZF4D1WCuHKltp6hn+eGbrUSoaTOLGhpMYblDX
ZAJW4tJCseGkrKRl4CZMg4jZeSy9KhRbbydHSo9hRoQSn5vJDXE+/P13xdT0nTy6jdQr0umu
O0p1ayxpWRnMuaSO1Zu7Pe9ftgSRt8hOY2UTZe4oMsfF87mbe2n4TQn9mduz+qwhVnqOOLCl
RzPvJl8OVfVhzYpi+owwCl89iguDoKm53LR0LH7OXpoqW3CEBBM7OYPr43146XdFVPfhlZti
RURERC50Xg3cRnAkqfEWaGmkbJiz0IPVbtzNmtKBVUrqq3lv1aBVSqoqeONFD1cpcXdw+GAX
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
nnYy5vu2dRERERGR043Pp5R4qg6wtQp0P6aIiIiIiFKxiIiIiIhfKXCLiIiIiPiRAreIiIiI
iB8pcIuIiIiI+JECt4iIiIiIHylwi4iIiIj4kQK3iIiIiIgfKXCLiIiIiPiRAreIiIiIiB8Z
cJd1qjshIiIiIvK/SiPcIiIiIiJ+pMAtIiIiIuJHCtwiIiIiIn6kwC0iIiIi4kcK3CIiIiIi
fqTAfQLW38Zj/W38qe6GiIiIiPwPUOAWEREREfEjBW4RERERET9S4BYRERER8SMFbhERERER
P3L4o8mEsdlMmZxIanwAto42DuZVsP6/hRQ36CnyIiIiInJm8fEIt0HkuJHMv6wf/ZMCMVxu
PAEhpIzK5is35ZAW4NtqIiIiIiJ9nW9HuG3hDJsSRzBeDnywntc/PIw3Mpk5t41gUHw6owcV
UL7d49OSIiIiIiJ9mW9HuO0hREcbYDaRv70JN2A2HmRPgQfLsBMdH6JJ4yIiIiJyRvHtCLfd
ht0ALC8d7o/na3s9ZufLdqNHzRkZ5/DYe18ht/wD7pr7Nvu8AAYRl97Ci78diuv1p7nh/t20
A9jDGX79hdx4zVBy00OwtzaQv2Id//j9UjZVers1Gs6Ff3uQ706u4eU73oYbL+PCMSE0rH2f
3//gQ3Y3a565iIiIiPiOfwecjQBSpo/m/LGB9Cxqd7Iq9rIx34s9fSAj04901cmQyf0JpI1t
Kwo7wzY2Mm++hV/dP5ERcW3kr9nHvrpgBl00l58/dxHDg0/UejATv3MBg6rz2F5uJ+2cC7h1
fkyv+ikiIiIi8mn8FriN4CjGXDuZK86Nwuby0qtxY+9BNq2qw2tPYfT40M4w7Ehj9IRgaCtg
4/rOuI09kSlzUwnoqOCf1/+W7339Kb439xH+st6NPXMcs8faP9m2PZzAjf/mgR+9wq9+vZ7y
GhdRGXGcYE8RERERkV7zw7KAgD2CSV+bQIijia0vb6JowHgumxTYi4ZMClbuo+7mKQw6awDB
r26jbUA2IxMN3Jv2srmxK8Z7K3nxsh/yYvdf9TZQsK8Za1I4kdEOwHtc0y1sXVHaOUK+6t/c
POXfvTlSEREREZHP5J/AbThwNJWz8F972FdjkT6g9025t+1mS8MUzh2XQ27AdsonZJNhN8lf
vpc6s9uO9giGX3MeV80bzKCsKCKC7BgGgLvrn8exWmlsME/wgoiIiIiI7/gncHvrWfPibvY1
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
Zb4bH2A1FXGo5GzH4746ynIWsrOoFiKHE5sURsObj7Ppw4arC57mETa/tZnqxrN8vmcdf/3E
07l1fHXk5ixkTVEtVuRwRiWFUfPm4zzb6fp8HP/LY0x74o9scZtEJ6cxMt7Cven3PDx9CZtO
K26LiIiIBAobLOjydDZixDaO15/o6jJERCSA3BDRj9LS27u6DBGRq3Zt7HCLiIiIiFyjFLhF
RERERPxIgVtERERExI8UuEVERERE/EiBW0RERETEjwLmd7hviOjX1SWIiIiIiHznAuJnAUVE
RERE/v9KLSUiIiIiIn6kwC0iIiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIi
IuJHCtwiIiIiIn6kwC0iIiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIiIuJH
CtwiIiIiIn6kwC0iIiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIiIuJHCtwi
IiIiIn6kwC0iIiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIiIuJHCtwiIiIi
In6kwC0iIiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIiIuJHCtwiIiIiIn6k
wC0iIiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIiIuJHCtwiIiIiIn6kwC0i
IiIi4kcK3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAtIiIiIuJHCtwiIiIiIn6kwC0iIiIi
4kf/F5ZZUFh3g8Y5AAAAAElFTkSuQmCC
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: image/png; name="without-patch4-major-mode.png"
Content-Disposition: attachment; filename="without-patch4-major-mode.png"
Content-Transfer-Encoding: base64

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
2XAPV29rIWpMHHFerVjHnEo2Rt5+FQ9fEIDNJ4zRDrAnjeWpNwZyqPUAf/vWcpZXW2A1sfyN
PVQvOIsLnv0en19TTN2gSCKsJswjDxMCXKW88NtMvvVSOre++X9MWFdESeBAZkwMhuLNPPde
Y6/GKyIiIiIinue0monFdLJ8UxtOwGpsZsm246KN5eSF31Tw7FYnVrQP5wyzk/+/Cu5f3bvQ
12390G/RsgrOe/wQS/ZDUrovsxJhz5parr+/krdre9moq5Lly8rb919dNkvWtB77vlnDC996
nWc/qcJKGMQ5EwLJ/8ur3P+/puPGYRA5ZgRXXDmaKy9KIMYOtpAYzr1iNFdenkLykSfiWJS+
9iY3/XoPWXW+pI4JoeKl//CTZS3HtWdR9MqrnHfbJyzZY5E0bSiz0iz2vP0R15/3Jm9XKMKK
iIiIiJwpDLhPCUBERERERKQ3DCDdghIDyt1dzJnh9JqJFRERERERkdOaQqyIiIiIiIh4DIVY
ERERERER8RgKsSIiIiIiIuIxTqtH7IiIiIiIiHytLGBbPz6uU77gtAix1vMTu7Wdcfvmfq5E
RERERERE+tNpEWKh64Da3aArIiIiIiIipy7dEysiIiIiIiIeQyFWREREREREPIZCrIiIiIiI
iHgMhVgRERERERHxGAqxIiIiIiIi4jEUYkVERERERMRjKMSKiIiIiIiIx1CIFREREREREY+h
ECsiIiIiIiIeQyFWREREREREPIZCrIiIiIiIiHgMhVgRERERERHxGAqxIiIiIiIi4jEUYkVE
RERERMRjKMSKiIiIiIiIx1CIFREREREREY+hECsiIiIiIiIeQyFWREREREREPIZCrIiIiIiI
iHgMhVgRERERERHxGAqxIiIiIiIi4jEUYkVERERERMRjONxdQF+xnp/o7hJERERERESknxlw
n+XuIkRERERERES6Q5cTi4iIiIiIiMdQiBURERERERGPoRArIiIiIiIiHkMhVkRERERERDyG
QqyIiIiIiIh4DIVYERERERER8RgKsSIiIiIiIuIxFGJFRERERETEYyjEioiIiIiIiMdQiBUR
ERERERGPoRArIiIiIiIiHsPBBMvdNYiIiIiIiIh0i2ZiRURERERExGMoxIqIiIiIiIjHUIgV
ERERERERj+GZIdYWzZW3ns+dYwMx3F2LyJc5Xc7T02UcIiIiInJa8MwQ64jmylvO55tjAz10
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
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: image/png; name="with-patch1.png"
Content-Disposition: attachment; filename="with-patch1.png"
Content-Transfer-Encoding: base64

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
2UtTfS8mQF8HjSdNMGz4+Xq3NxERERER+Wh4OTi4aahux234k5oTig9ghIwnPdHA7DpF3UnN
NoiIiIiIfBx5eamSScueYxyZNYMpc3K5qq2MU1OySPFzUv1aORV93u1NREREREQ+Ggbc7fVp
AFtUItfcOYnUIANMN4073ufvr5+kWxMOIiIiIiIfS6PwHAcbkdkxxAQamC4TNxbCMmJJ0C2V
REREREQ+trweHPyzs7l2SQR+bbW8+bvNvLC5FVdUAp+9OYVIq7d7ExERERGRj4J3g4MlkMkL
YxlHJ/vXHeZIQw9Vb+ezpcSJLXECl6QrOYiIiIiIfBx5OTiMY3y0BTqbqah29b9m9nK8+BRu
w874OH+0YElERERE5OPHu8HB7KOj04SAEOKiB5o2fIidEIjFdNPZ3of2R4uIiIiIfPx493as
rlaO7G4j98pQ5nx5PskVHTiCgomP8YVTNRwo0P1YRUREREQ+jrx/O1bDTtylGcy7dDwxEXYs
fT00lZ1gzxvHKDnp9mpXIiIiIiLy0RiV5ziIiIiIiMgnyyg8x0FERERERD5pFBxERERERMQj
BQcREREREfFIwUFERERERDxScBAREREREY8UHERERERExCMFBxERERER8UjBQUREREREPFJw
EBERERERjxQcRERERETEI5tXW7OEcNldc5gdZQzxpptjz2/ipQNOr3Y52qy51/LEc4sZv3kN
N39tDx0Xu6BRZSPus9fz//zsMjLHtbP+zgd4dLvrYhclIiIiImOAd4MDDppK6ilpODM4jEsY
T0ywidtterc78R5bGHO+eyvfuz2ZIEB/KREREREZzLvBwd1F4fp8Cge/ZgnhsrvGE+M+RU21
26vdiZcYQSz4xT3ct9RG4eon2Rjzeb697GIXJSIiIiJjiZdnHP6dZXwUKREG5olGytt0HXtM
MtvZ9adXeGx9Oa9tbGPGwxe7IBEREREZa0Y5OBiEZkURYTE5WdRI6zAnHIykRTz6+vVkVW/k
7qtfocjV32bw8jtZ8/Mcul/4M1+6r4BeAGsQU1Yu49ZbcshKDMDa1Urplp0886tN7K0dtE7f
CGLZX37KPXObePYbr8CtN7BsRgCt773Nr773DgUdwwg31kRWvXovtyQW89hXD5D87SUsyPan
q/Qwa+5bx/qivkGf9VyfbdYKnvrrfEKLijgckky2s4gnHjzCpB8tZ65fGau/8iQvlwwci+FH
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
kcq7YqGuWpGgSEl8SAQAAADw3hfiqUpeFd28XB9eEa2e7eV6uSIQ2uIBAAAAnBMhHnHwqXZL
lTbv71FF5Yim3xTa0gEAAACcGyGfqhRoO6ryNol11wAAAMD7B717AAAAAI4IDgAAAAAcERwA
AAAAOCI4AAAAAHBEcAAAAADgiOAAAAAAwBHBAQAAAIAjggMAAAAARwQHAAAAAI4M6U77XDcC
AAAAwPmNEQcAAAAAjggOAAAAABwRHAAAAAA4IjgAAAAAcERwAAAAAODIfa4bAOCDzf710nd2
4A1R4W3IecZI3nqumwAAwCkYcQAAAADgiOAAAAAAwBHBAQAAAIAjggMAAAAAR2FYHO3WtMWF
WnFRurLTvDJ9wzpW1aKdL9Sq/rg96dLMjALd9qUCJdUf1K9/06ihWXP12c9MV+SBcv3skTYF
JtW0abr6m6WaG3mmJ221bdyuR7YOyDYTtPIry7UsqUsvfH+3Kgaci/bOLNSNt8xU8uBRbXrg
oKr7Jv9ap+Jc1YuzEJOjG78+T9O7avTQvUfUYZ3rBgEAADgLcXAwlLDkAt30kTRFyZa/36dA
VLSyFhbq+iy31v/8sJp9oa1xUqxhHatsk8drSFGxmjErRp7+XtU2DsuSpZ7OScWQCQwlFExT
RpxLZmy68jIr36UO/LmqFwAAAB80oQ0OZpzmrUhVlII6+tJOrX/lhIIJmbr6cws0Oy1Xi2bX
qHn/VDvnIWCd0N4nyrVXkplTrE9+bpbiWhr1/MMtGjmrgm11VzSoctZ0JQ+06s3Gd+sW8rmq
FwAAAB80oQ0OrmglJRmS1afq/X3yS1LvMVXWBFRc6lZSWrRMndD7sXsbPNasjb9s/sDUCwAA
gA+WEAcHUy5Dkh2Uz39yykwwMBoVXC5jUsUV3Xqlrps3tn47b67+8d/nnnxy3kJ95Tt92nFf
mcrawjc9x5WWpTUfL9TsbI98x45p55MHtb8tePL5uRfoCx/PlHfspVmt1frDz6rV+bZ05FXm
hYVacdE0ZSZ7ZfiG1VV7VDs31qi6a/JR6lzVK9Or7OVFunhZmjLGymuvatKOjXWq753KeXAr
bXGhLlmRoawUj4yhQbUebtaOFxrU3G+felxpgVZcnKGc8bUzh5u144U6NYzVa86co898doai
2zrVEpWoTKtL2/7Srsx1s5Xv7tGrvytXebv1jo/7q/VWtej1F2pVN75mZ8KamM2/P6bUNXkq
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
--------------ndiGUeHOVslUxq1JDYfHGpDY
Content-Type: image/png; name="with-patch2.png"
Content-Disposition: attachment; filename="with-patch2.png"
Content-Transfer-Encoding: base64

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
aYhbSyY67X0qNNDt+nw6UmXJERmiZdMd3eHUcOiGf0lT29pMvb7U0Y8pFpbq3zmkHV0OTfni
Yi2Nt1T998PK77VsoxxBigiT5O9Sc2vPfoSlasm8qP7th79RxeV+We40XfuJ6O46Iobq2gUR
Z9fnPakjRaYcMcO17OqehzqNMN3wm2+rrf0Hev3eMKaUAACAy15gR7gdIYpLcMmQX7F5Y3Xj
6N4fmqrZsl87S/s+ZmnWdejtAktXjXVqiOnXC9s6zx4593Zp40FLd00L06+fSdZthaaG5AYp
zWXJsjOyBbpds0vP/dGjh74Vpgf+I01T93WpOtSteaNd0slWPbvZPPfRzwurtvqo3t5j6qoZ
0RpituqFt8vOPn5dFdq4zau7rh6vX297WLft7dSQSWlKc3fJOusScWjsZ5fryWvD5QiO00SX
5MyarKdeSdWpruN65qHVWt1oSZZHq185osbrxuvaX3xV791epZahiUqwPDLPLIAoyV+j5/77
oB56foIeeO2bmrq5UtURqZo3LVqq2qln/9ber/0FAAAYTAI+wh0ULMlwKS47Sbljz/4vNbqf
zZk+rd7hlU+S1d6hFXvPiWGWT8/9uE6/yPfJSgrWVaOcKv1LnR7d0L+AesFsaLdyVZ2u+cEp
rSiTsiaEaEGmdGRjs+5+tF5vNPezUn+9Vq+q7T5+LYVasbHr7M/NJj330Mv6xfoGWRlDddXU
CJX++kU9+hfPOfthKHHSGN26bKKW3ZChZKfkiEnW1bdO1LJbcpR9ZhU/SzUvvab7fnREBS0h
yp0Uo7rnX9W3VnWeU5+lyv99Udd8Zr1WHLGUNWekFoywdOSNtbr7mtf0Rh1xGwAAXP4M6RFS
DQAAAGAT+980CQAAAFzBCNwAAACAjQjcAAAAgI0I3AAAAICNCNwAAACAjQjcAAAAgI0I3AAA
AICNCNwAAACAjQjcAAAAgI0I3AAAAICNXPZU61DMuJG6/pZMJQV3ad/z6/VOoWlPUwAAAMAg
FvjA7QxR9tWT9Ik50QqRZAW8AQAAAODyEeApJUEasXymbpoTpsZNe7R2vy+w1QMAAACXmQCP
cHepeH2B1u1r1P7DncpcFtjaAQAAgMtNwKeU+GqOa0+NxPOYAAAAAKkYAAAAsBWBGwAAALAR
gRsAAACwEYEbAAAAsBGBGwAAABOjlwcAABboSURBVLARgRsAAACwEYEbAAAAsBGBGwAAALAR
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
gRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAA
sBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsA
AACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGB
GwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACw
EYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAA
ALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEb
AAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALAR
gRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAA
sBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsA
AACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGB
GwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACw
EYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAA
ALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEb
AAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALAR
gRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAA
sBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsA
AACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGB
GwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRsAAACwEYEbAAAAsBGBGwAAALARgRvA/2+3
jgUAAAAABvlbj2JfUQQAjIQbAABGwg0AACPhBgCAkXADAMBIuAEAYCTcAAAwEm4AABgJNwAA
jIQbAABGwg0AACPhBgCAkXADAMBIuAEAYCTcAAAwEm4AABgJNwAAjIQbAABGwg0AACPhBgCA
kXADAMBIuAEAYCTcAAAwEm4AABgJNwAAjIQbAABGwg0AACPhBgCAkXADAMBIuAEAYCTcAAAw
Em4AABgJNwAAjIQbAABGwg0AACPhBgCAkXADAMBIuAEAYCTcAAAwEm4AABgJNwAAjIQbAABG
wg0AACPhBgCAkXADAMBIuAEAYCTcAAAwEm4AABgJNwAAjIQbAABGwg0AACPhBgCAkXADAMBI
uAEAYBQ38h0+GfuqcwAAAABJRU5ErkJggg==

--------------ndiGUeHOVslUxq1JDYfHGpDY--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 15:18:02 +0000
Resent-Message-ID: <handler.77746.B77746.174473023412318 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: juri@HIDDEN, 77746 <at> debbugs.gnu.org, James Cherti <contact@HIDDEN>
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174473023412318
          (code B ref 77746); Tue, 15 Apr 2025 15:18:02 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 15:17:14 +0000
Received: from localhost ([127.0.0.1]:53589 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4i2E-0003Cc-Bg
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 11:17:14 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:60924)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4i2A-0003Ba-Me
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 11:17:11 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 1549B4419E0;
 Tue, 15 Apr 2025 11:17:05 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744730224;
 bh=Z7GyEB8XNdqB1H1h8yn75X2rjOalt+hFIRpsBoE/gBY=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=CUCYd1nD+MKd/WlLC6GBQ0vLBSaZlTmAQA7O+gJK14iu7/3GfoCfi2jq5saiYt60T
 E/Bqh7JZCRPS3R6gb4NE5wOWSTCODFqn67Pal9o2BhoS4E2TRKfFXYdZu56TWSW2iu
 tuwtDtdoIKurb0ETlflyFWGvZwvdGrGfDcM1Mu/ETJLRtOjHGvhrKsVn9WNJ0T7sPP
 o6qBk+ukqpDwKXbhfqj9CqMlusE2hsGGQ+X2K+iQIfNJF9qRnmmN7ia3AuWftHUeaB
 yY3TvUx1bm1ae29A2lEloRdpTC8eOW860tkLff8ZWKAnhh7oL8bzmWHcgnA1zD73Gb
 BVNhMgQxtVZvg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 25C10441745;
 Tue, 15 Apr 2025 11:17:04 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E43A31206DB;
 Tue, 15 Apr 2025 11:17:03 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <86jz7lh9pj.fsf@HIDDEN>
Message-ID: <jwvwmbl316g.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
 <86jz7lh9pj.fsf@HIDDEN>
Date: Tue, 15 Apr 2025 11:17:02 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.359 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
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.3 (---)

>> The issue occurs in both sh-mode and bash-ts-mode.
> I'm surprised that bash-ts-mode should use syntax tables, instead of
> relying on the results of parsing by tree-sitter.

It's not front-and-center in his bug report, but what he means by
"completion" seems to be mostly dabbrev completion, which doesn't make
use of tree-sitter.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 15:25:01 +0000
Resent-Message-ID: <handler.77746.B77746.174473065815896 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>
Cc: juri@HIDDEN, 77746 <at> debbugs.gnu.org, contact@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174473065815896
          (code B ref 77746); Tue, 15 Apr 2025 15:25:01 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 15:24:18 +0000
Received: from localhost ([127.0.0.1]:53651 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4i94-00048K-0r
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 11:24:18 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:47132)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u4i91-00047J-Gn
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 11:24:16 -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 <eliz@HIDDEN>)
 id 1u4i8u-00055C-4o; Tue, 15 Apr 2025 11:24:09 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=PIjodp+ilVg/BAAnqodXeK5ma59U2aMNMIPJ0n77QS0=; b=SdMnoTe1x8Bt
 taKOaSWgz2dGQzAy2bHqxZnxeXPpGEpw0rW5g0eKjJgzZOIQ4SH2/y7FWNRyNjApq6P33XLTHHHnR
 KgUK0nP1TdTeeP2+5DFKIEtPJj6KpICSDO2o7/p+ly3jtKuEbRvxqnHB894oFHEZN1TddbOHMUou+
 HrfrJt8GYdTWewL5SRhZ3KorKIZ7s8dx6x9b5mG86CB42j+oSveTaE1LOrbpgDX50qSTajbeCTxij
 qXXkoVX5/VOVuC7F9OqZwDLdar0sv/U4VawmK7Wi3VtEMGQTIO741F/LeODDEo1GP6/33SybN+TIv
 +X1c2hMJ00C0nw/rnmJYAQ==;
Date: Tue, 15 Apr 2025 18:24:03 +0300
Message-Id: <8634e9h2i4.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvwmbl316g.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Tue, 15 Apr 2025 11:17:02 -0400)
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
 <86jz7lh9pj.fsf@HIDDEN> <jwvwmbl316g.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
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.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: James Cherti <contact@HIDDEN>,  77746 <at> debbugs.gnu.org,
>   juri@HIDDEN
> Date: Tue, 15 Apr 2025 11:17:02 -0400
> 
> >> The issue occurs in both sh-mode and bash-ts-mode.
> > I'm surprised that bash-ts-mode should use syntax tables, instead of
> > relying on the results of parsing by tree-sitter.
> 
> It's not front-and-center in his bug report, but what he means by
> "completion" seems to be mostly dabbrev completion, which doesn't make
> use of tree-sitter.

He also mentioned font-lock.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: James Cherti <contact@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 16:23:01 +0000
Resent-Message-ID: <handler.77746.B77746.174473414014878 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174473414014878
          (code B ref 77746); Tue, 15 Apr 2025 16:23:01 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 16:22:20 +0000
Received: from localhost ([127.0.0.1]:54302 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4j3D-0003rq-Ow
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 12:22:20 -0400
Received: from quail.birch.relay.mailchannels.net ([23.83.209.151]:53609)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <contact@HIDDEN>)
 id 1u4j3A-0003rF-4V
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 12:22:17 -0400
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 5F4EC8196F;
 Tue, 15 Apr 2025 16:22:14 +0000 (UTC)
Received: from pdx1-sub0-mail-a231.dreamhost.com
 (100-101-172-71.trex-nlb.outbound.svc.cluster.local [100.101.172.71])
 (Authenticated sender: dreamhost)
 by relay.mailchannels.net (Postfix) with ESMTPA id 881C682269;
 Tue, 15 Apr 2025 16:22:10 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744734130; a=rsa-sha256;
 cv=none;
 b=i9sIVksIYtowZOOpTGL1UyFc0xBLFhE0tvW6eNs2h+5oGbRdIwVcOOfRY2zFsWEvEkqS7s
 BJ3ThM2189JSO52ZmvhIo8GD4xI915OnpfYDtLTfdvoGyndsidUzbzIN5+R9TjYP2IxhZi
 i9dI4VaNQS368OuDV3bQgpPgsg6FA9XK1/bTCYlBDb9FECOF23XhPY1uvuzXWmRgvB+U2v
 Jwnh8PWyUGlrmwBDLoNKUz81KIURLST35s9vgwOU4IaKxOLpBM+2Ce92PgCIcdskV3U67G
 8Kf0lsuoHhMU8hxWd9jJpiB+53cqH6ft6gG2+jyfwKNKKPXEOeoKFaBlrgbXzg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1744734130;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=sph/dMKY1A0L0LrwQ2iOyAimwYykqFFeNASffyG1lL8=;
 b=Oe8NFiPeZSkx30AKv9vOB7cTheVxzN9KTlXRVipKAu5aPesw+NbaOZnVvIgqTAh72eoetS
 A+8pfG/DdCYakLgrkZSXiZKrUJ4KoAerbYeGR0vcyDSkNMfQ1KQ0f28u/D3+U9Q00zeO+H
 /051Qiwj04PN/RNE8xwO8GWEVI5npj2YDf9E9AOOLyVZKW35RB5C9iy6tTRAyF0IANboIq
 r3frZpwtNEhpFumTWVviGKhrTatAGVXcvZSycW0VDJND04PpBLbmacQCWuy3ADdI7CUbdD
 pDjhKCTwD1VToBcKnErltfhUuHLr94/08NtwL5qdASL/AYWU1tpHq3ZD5NNL9g==
ARC-Authentication-Results: i=1; rspamd-66f96cc86b-t5bbq;
 auth=pass smtp.auth=dreamhost smtp.mailfrom=contact@HIDDEN
X-Sender-Id: dreamhost|x-authsender|contact@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|contact@HIDDEN
X-MailChannels-Auth-Id: dreamhost
X-Lettuce-Skirt: 5c35fce63b8f0d60_1744734132968_3478306309
X-MC-Loop-Signature: 1744734132968:25446492
X-MC-Ingress-Time: 1744734132968
Received: from pdx1-sub0-mail-a231.dreamhost.com (pop.dreamhost.com
 [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.101.172.71 (trex/7.0.3); Tue, 15 Apr 2025 16:22:12 +0000
Received: from [192.168.5.23] (24-212-139-93.cable.teksavvy.com
 [24.212.139.93])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 (Authenticated sender: contact@HIDDEN)
 by pdx1-sub0-mail-a231.dreamhost.com (Postfix) with ESMTPSA id 4ZcTvP4wmWzRW; 
 Tue, 15 Apr 2025 09:22:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jamescherti.com;
 s=dreamhost; t=1744734130;
 bh=sph/dMKY1A0L0LrwQ2iOyAimwYykqFFeNASffyG1lL8=;
 h=Date:Subject:To:Cc:From:Content-Type:Content-Transfer-Encoding;
 b=L3UIC8vkKmhNQjSX8ihh4vmd5Swiag/c9aUMc6q/7cDK8dhgR6jnsCYbJ3aw7XGeb
 v1OPuuP1N+zLCkHdeJvuDFXJA59GltMQzQAS2lh5hT5EWcmaPtngwdvTC1HmlmKae/
 g744XyRyGlW/5Zl7Mc6DICLnCLg6NnsOEsWyFWDL2AAFB1LVZ0il0b0etT9UOr7MD9
 Dvp1xQD1Hj8BecXOOzTXm7DsLWOVo2Bvrl8zNSBPuLaUzwE6FDn2Nvu2BvDqdhu5Bk
 tlBk7yDqU2fZ9yK37sDENLfd6uwksMFGUzymPheaMygTMWxxqRb3890DOhFKBQAM89
 9u9QHELJePYVQ==
Message-ID: <1a950969-240c-4b2a-b3fc-075901ee9a1e@HIDDEN>
Date: Tue, 15 Apr 2025 12:22:08 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
 <86jz7lh9pj.fsf@HIDDEN> <jwvwmbl316g.fsf-monnier+emacs@HIDDEN>
 <8634e9h2i4.fsf@HIDDEN>
Content-Language: en-US
From: James Cherti <contact@HIDDEN>
In-Reply-To: <8634e9h2i4.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
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 2025-04-15 11:24, Eli Zaretskii wrote:
 >> From: Stefan Monnier <monnier@HIDDEN>
 >> Cc: James Cherti <contact@HIDDEN>,  77746 <at> debbugs.gnu.org,
 >>    juri@HIDDEN
 >> Date: Tue, 15 Apr 2025 11:17:02 -0400
 >>
 >>>> The issue occurs in both sh-mode and bash-ts-mode.
 >>> I'm surprised that bash-ts-mode should use syntax tables, instead of
 >>> relying on the results of parsing by tree-sitter.
 >>
 >> It's not front-and-center in his bug report, but what he means by
 >> "completion" seems to be mostly dabbrev completion, which doesn't make
 >> use of tree-sitter.
 >
 > He also mentioned font-lock.

Yes, this patch fixes dabbrev, functions such as
(highlight-symbol-at-point), and any other function that
relies on thing-at-point for symbol detection.

(The core issue is inaccurate symbol detection. This patch
improves it by excluding characters that should not be
considered part of a valid variable name.)

--
James Cherti
GitHub: https://github.com/jamescherti
Website: https://www.jamescherti.com/




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 16:47:02 +0000
Resent-Message-ID: <handler.77746.B77746.174473560029319 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 77746 <at> debbugs.gnu.org, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174473560029319
          (code B ref 77746); Tue, 15 Apr 2025 16:47:02 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 16:46:40 +0000
Received: from localhost ([127.0.0.1]:54537 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4jQl-0007cp-Rm
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 12:46:40 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:19795)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
 id 1u4jQj-0007cW-EV
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 12:46:38 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 020CA10006B;
 Tue, 15 Apr 2025 12:46:32 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1744735587;
 bh=5toMNavvsJ4X8j7dwJ0wixA7eyz5UAT3PuxmFsLdAEY=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=OXZu5huuLvFIXMIP9xIiPO+G4aCfqYiqIjWl3NJgPVTLLVnT4KpYXRQuw4iHi2bKW
 HLgi5cCeZFQY54i1nonKHcs9yCOPwR4pXnYr6HS6LmHPLpw2HCX6Evy24mHiLWQqKk
 +T03xpJOIbfAoW1alRcody2NW9wW/Gyux2OtWFLMfTYg4RIa7JYlYMZ6yV3jzA+AU3
 v40dqHW6Mc6bD7B6toa9Eh/U/5joq9AtmBZG1XV3vG3yhi0EvAlWAjFb8VhN0m51TE
 54WuX9Lqtnt7PFs1i53Ocv2XZ3NS1I4UKtO2cGY0iw7ZaPlHQCaojKXKd8TsAu2lM6
 dT9tsCPi5TI0Q==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 422B0100027;
 Tue, 15 Apr 2025 12:46:27 -0400 (EDT)
Received: from pastel (unknown [104.247.242.5])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0AEBA120735;
 Tue, 15 Apr 2025 12:46:27 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <1a950969-240c-4b2a-b3fc-075901ee9a1e@HIDDEN>
Message-ID: <jwvzfgh1ijv.fsf-monnier+emacs@HIDDEN>
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
 <86jz7lh9pj.fsf@HIDDEN> <jwvwmbl316g.fsf-monnier+emacs@HIDDEN>
 <8634e9h2i4.fsf@HIDDEN>
 <1a950969-240c-4b2a-b3fc-075901ee9a1e@HIDDEN>
Date: Tue, 15 Apr 2025 12:46:25 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.377 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
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.3 (---)

> (The core issue is inaccurate symbol detection. This patch
> improves it by excluding characters that should not be
> considered part of a valid variable name.)

Notice how you jumped from "symbol" to "variable".
I don't know of any reason why we should presume that "variables" are
the only symbols of interest.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 18:26:03 +0000
Resent-Message-ID: <handler.77746.B77746.174474153231759 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77746
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: James Cherti <contact@HIDDEN>
Cc: 77746 <at> debbugs.gnu.org, monnier@HIDDEN, juri@HIDDEN
Received: via spool by 77746-submit <at> debbugs.gnu.org id=B77746.174474153231759
          (code B ref 77746); Tue, 15 Apr 2025 18:26:03 +0000
Received: (at 77746) by debbugs.gnu.org; 15 Apr 2025 18:25:32 +0000
Received: from localhost ([127.0.0.1]:55394 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4kyO-0008FG-7Q
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 14:25:31 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:57356)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u4kyK-0008Bl-Eq
 for 77746 <at> debbugs.gnu.org; Tue, 15 Apr 2025 14:25:25 -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 <eliz@HIDDEN>)
 id 1u4kyD-0007Zh-MT; Tue, 15 Apr 2025 14:25:17 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=P+FBhKrBu+a8DkjBjmfhHlV2QRDS2AzDwMb/jCRNrWM=; b=dxDPVTCMbAzk
 lvB8/8LT1rmunHg+0Q7xHpiM20el/EDb2pza0bvEu3BLITqmN8S6fUTKOWFmwe5IS3B9Dnn2L9tEH
 w2Zp0SSyRBEy7JLsqF5ENSWB0feynyyQ+KvFSiOWIBo12v0VMjaK5caEoEIsLq4fiZvnUtxOgqzPe
 m/oekPhCF41xIoBBg5czA2OeZn5a2lfIGV9iZhjS+07+irg9UTW3qtAqhl8FkKf6PGw+o23mLLM3v
 BwK6ng6OpvZpVUykfL7tWoZGUer0sc9S1K4GaBNeCGzL9z4JuhYe85z0HKfkHpttkmL2p0g85sLmW
 +SG3SIjYD1V+/QGb4a/PGA==;
Date: Tue, 15 Apr 2025 21:25:13 +0300
Message-Id: <86zfghffjq.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <1a950969-240c-4b2a-b3fc-075901ee9a1e@HIDDEN> (message
 from James Cherti on Tue, 15 Apr 2025 12:22:08 -0400)
References: <15814c9d-d8ce-477b-b509-73896442e6ac@HIDDEN>
 <86y0w4jsye.fsf@HIDDEN> <jwvmsck6kqm.fsf-monnier+emacs@HIDDEN>
 <1146dbd5-37df-4449-aeb8-7f4f742e5d66@HIDDEN>
 <jwvmscik6o8.fsf-monnier+emacs@HIDDEN>
 <03ca1c02-85fe-46a8-ab38-241922227da7@HIDDEN>
 <86cydehrwv.fsf@HIDDEN>
 <e7b55ce9-8047-48eb-9f99-49a96492fea6@HIDDEN>
 <86jz7lh9pj.fsf@HIDDEN> <jwvwmbl316g.fsf-monnier+emacs@HIDDEN>
 <8634e9h2i4.fsf@HIDDEN>
 <1a950969-240c-4b2a-b3fc-075901ee9a1e@HIDDEN>
X-Spam-Score: -2.3 (--)
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.3 (---)

> Date: Tue, 15 Apr 2025 12:22:08 -0400
> Cc: juri@HIDDEN, 77746 <at> debbugs.gnu.org
> From: James Cherti <contact@HIDDEN>
> 
> On 2025-04-15 11:24, Eli Zaretskii wrote:
>  >> From: Stefan Monnier <monnier@HIDDEN>
>  >> Cc: James Cherti <contact@HIDDEN>,  77746 <at> debbugs.gnu.org,
>  >>    juri@HIDDEN
>  >> Date: Tue, 15 Apr 2025 11:17:02 -0400
>  >>
>  >>>> The issue occurs in both sh-mode and bash-ts-mode.
>  >>> I'm surprised that bash-ts-mode should use syntax tables, instead of
>  >>> relying on the results of parsing by tree-sitter.
>  >>
>  >> It's not front-and-center in his bug report, but what he means by
>  >> "completion" seems to be mostly dabbrev completion, which doesn't make
>  >> use of tree-sitter.
>  >
>  > He also mentioned font-lock.
> 
> Yes, this patch fixes dabbrev, functions such as
> (highlight-symbol-at-point), and any other function that
> relies on thing-at-point for symbol detection.
> 
> (The core issue is inaccurate symbol detection. This patch
> improves it by excluding characters that should not be
> considered part of a valid variable name.)

I'd expect a parser to detect variable names correctly, and without
the help of our syntax tables and related code.





Last modified: Tue, 15 Apr 2025 18:30:04 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.