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--
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
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.
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
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.
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.
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."
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/
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
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/
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/
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
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
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/
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/
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/
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--
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
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/
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
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?
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.
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? > > >
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. > > >
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.
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 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 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 M2KCSEz2YXtTH1iDSUrxAUcj5WUDo1kCSZ8UjM11jC1/3MJHdW6w+DP1rtnMS4ljQtJBak5e bcPii61iN/9Y0wLpbm67KYbA8AAsdOP6dCWnZxjUrt3Bmr19YA2i5WuzmBUTQ2bcQeqqTI/r cx6q4J1NIYxNSyWospL33vHnpowMIsL8sQPdlkBy8qPwNzvZ+dxHfFDhBIs/uV+axRUZCUwZ X0r1Hienuil24ORS16YefREREZGTeTVwB2SMJc5q0nGwkQaPU6c3mDQcPErn7CRi08Kw76jH ERlOYrCB63ATVd0Dm7k72Prbd9g6+KPuHhrq+iDVF/9AC3BSuDT7qCpu678AKD3Ac48dGHmZ 7naqKx39P7s6qanqxYz1JTjEgCrT4/pMtwnmwCumiWma/T8bBgaAJZDwcAOzq5nyKue/xisv acedGUZYpD8G7ZhD3RQrIiIiIqflxcDtQ9L4UKz0UVHU6vksr5e4qhqp7E5kQnIEMbYGWlIi CLeYNBQ30TF4Et7iS8L0NKblRREb5Yefj4FhALgZan4X00F39yjdFGqauF3Hxxr42TCwWgcF aU/rOx2LBasVDN9EbvyfxJOLwWLpD+amJYCsz2eQHjxk0dR/tJcdhzXLLSIiIjKY9wK3XwRp KTboqqdshCEsdvZkpmUEEWSAJTqBK5dF4AoMwg+wJiaz8IuhFL1VTIknN/U5WigvczIhJ5zE aB8C00KwmB1UlA7utbYSt+BSls4Zg7W3i7qKBtp7Tfxio0iMPHWc/fetwTKy+s7EdHRRU9JO 94mv0t7gGDg2H6IyY8g6RQ+37cB+BW4RERGRk3gtcPukjCXRF3r3NvbfcDcCQYnRZKQPrHIR GExqzqCp1ZBQ0nOsNH0AJR6N6qSqpBXnxAgSM2MJGmeBliYqGgfFZWsoE/ICsTqaWPfrj9nd agIGCddeTmKkfWQH86+hw8nKDsLW2kzJgXY8uOfTe/W53bhcgKuF7X8rpPx4Y7zFwGoxwO3u D9zuNjY+8TYbR1KziIiIyEXKS4HbQvz4CPxwcujAUTxZGW+wklXv8IQXHu3ec6iROlcUcZel EOoPHXubTuwxN2zYfQxwu+jtGwjiPkGMS/blrOaxLUFMv20aM2ItGKaDxBc/ZM1eh+fjjHZ9 7i6am02M6HAy0u2UF/UBPqQuzueGPB/KX17PP3eO8KpJRERE5CLnncBtCyU1ww7OJsoOjSBQ epnZ3kR5rUlioh8BZh/7Sk7qMXe1UV3lIit9LFd+bTqZdU4CYoMZY3FxVutKW/wIDrX091gb NoLDfDBweB6RR7s+dwf7NjYw5aZocpblE115jE57EAnxfnCshsIihW0RERGRkfLKU0ks8WNJ DjJwVTZS0emNPZwldzeHD3bgBszeZsorTrql0+xh36uFFJT3QEgoifF2jm0t5IMDZ3nx4Gxh 7+Zm2ntddNcfoWDvCNbo9kp9Ju0Fhbz00mHKG01CkiJJiITmA2WsWbGfQ10jHFZEREREMOBe PW9dRERERMRL9NxtEREREREvUuAWEREREfEiBW4RERERES9S4BYRERER8SIFbhERERERL1Lg FhERERHxIgVuEREREREvUuAWEREREfEiBW4RERERES9S4BYRERER8SIrzHjQKyMbfuTeOY9b bkoh6mgNJfWuEQ1jiUnnS/dPZ15qH/sK2nClTuDL372E/OgOPt7bgXuUy5bRZCF04nhu/Ool LLgqicDKSsqazXNdlIiIiMi/lc1rAyclc0maDbOxjO17+7y1GzlfWf1IXTCFq/ND8AMUs0VE RORi5Z2WEsOP7HkJhBoOKj48TN3IJrflM8tO5k0zuD4/gJaNBawrdJ7rgkRERETOGa/McNsS xzEt3YZ5tJxthb3e2IWc1/ooW1/CB3taKDzQS9KN57oeERERkXPHC4Hbl8y5CYQaTio2HKb2 LCY3M5ddxbUTBybhUyfwlUcmfPLmxCnc83A7W367mc11w2tYMMKTufm+8cS0lPHikyXUDTSA +03J48s3ReHYuZNnXm7ECWCxEz8jk1nTo4gJt2P09dBQUsWWt8upaBu8Pzu5d87jyrQutq0s gZnjyU3yobusjLf+Vk6tJ9cblhBm3zOD6WFH+eCFeiKvSCUj1oe++nq2/mM/ewb/qWAY9VmS s1l+9zgC6pqo8Q8l1n2UDa83ELtwPGm2Fjb9uYCChuNd8Dai8tLJnxVDQpQdS18P9SU1bHu3 jPJWzxtCnHVHKKgD3ZcrIiIiF7tRD9yW6ATyMn3A3Y09PZOrYrupL65hX0kXDg/Haq+q56Bf EElpY7B3HaO8ohtXYBAp4wKwHmvlUGUrTT3DH89sPUpFg0nc2HASww3qmkzASlxaKDaclJW0 9IdtDCJm57H0qlBsvZ0cKT2GGRFKfG4mN8T58PffFVPzqbZ0G6lXpNNdd5Tq1ljSsjKYc0kd qzd3e96/bAkib5GdxsomytxRZI77/9m7z/A4qvvt49/Zot57t2xZknuvuIFtwJgSsOk1ARIC JCGkECAkkH86CQESSPIAoSQBE0oIzdgOGPeOe5XViyXLqlZZSbs787yQbGRjwBK7WI7vz3X5 Qp4dnd+Z2QXuOXvmTCozr2qn+om8ruk5PeufPdJO2wE3joGJnH15IAVlHdhz45kwKZodb9Xi xSB89Agun5dAkKedmtJ63JERJI/M5pJUJ6//eS/lHXx8QRBvnKDTJgWvLOXNbZo+IiIiItKd jwO3QdLYVOLtYBBM6vBgUoGhE/sx5MNNvPpBQ49Cd+WqbbybP5Dr7xxI9MFy3l9Qiqv/EG65 OYOgsmIWvlxFj+Kd2UzJ/lYmJYWTnulkY00H2CPI6O8E9yGKCrtas4UycHgEDu9h1j29jrVV JtiCGf21qZzdP4UhGfupyD9ufRRbII7ibbzxbj0MNLn+8iRCY0Kw4aLHU9gNg8oPNvHuzg6w h1P/zbM4KymJnJT9VJVZPe6fp6CYJasjScgaQHhpKe8vCeby7Gxio4MJAFy2UIZOiSfYamHz 82tZVuwBWzAjbjiLWdlpjBqUT/l2D+CmZv9B9lefOHBXNWrNGBEREZHj+TZw20LJGBCMYZnU bd7B2+8doj0hgznXZ5M+fRAjt61nU82pXK/Conp/LS1TM0jOiiZg00HccTGkRxh4S2ooc3Xt Zjaz/sklrO/+q2Yb1VUdMCCQ4FAbHL8godVB2b7GzguA/D08/5s9ve+m2UR5adelibeFirJ2 rORAIiINKLN63D/LtMDq2mJZWJbV+bNhYADYQomJMbBa6ygq8xxtryivCTMnmui4YAyasMxW 9r67lb29PzIRERGRM46PA3cI0TEGlqeGTYsrqXUBJcWs3ZJG+pQIMgcEsKnm1N5E6S07RKkr nSGZsSQ5qqnvH0uMzaJ6Xw3N3a8FbIGkTchi3Jh4kuODCHIaGAaAyYnGd7HcuFw+upiwLEzv kba6fjYM7PZuQbqn/fssNht2OxiB6cz/v/TjO4PN1hnMLVsIuXOyGRhxwk5zcO1ONpVolFtE RESkO59PKbEZgMtF49G51RaH69owCSY4LACD9pOe05w8dSTjssMJNzrnhs++JhZvaDhBgD09 k7lXR7F30T7yenJTn7ueokIPQ4bGkJ7oJDQrEpvVTHF+97nWdlLOHc+8aWHY21upKq6mqd0i KDme9LhPj7Nf3th97/r3eSx3KxV5TbhJpF6XAAAgAElEQVSO3UpTtbvr2JzE5ySR+ylzuB17 ditwi4iIiBzHt4Hb6qC11YIgJ4E2ODJ5OSDIgYGFu71ns5nD0xPJHti1ykVoBAOGdhtajYxi 4FA7Ncsgr0eteijLa8AzLJb0nGTC+9mgvobiQ93isj2KIWNCsbtrWPqnj9jWYAEGaRfNID0u oEfVjmePiiF3cASOhlr27WmiV+P9vu6faeL1At56Nr6yg6IjE+NtBnabAabZGbjNRlY9tphV vemziIiIyBnKt2u2eZsoL/FAYAyDBgd2Tm1whjNoWBiG2UH1gbYejQLnLVjCY3/Kp8YEb+Fu nnpgEY//rZRmCzw7t/LHn6w+6SUBu2srOESV10bixP5kBkNzfg3V3a8FDAcBTgNML+0dXe07 w+mXGdjjWsewhTPh+nGcf9EgZl83gdnDnb1rx9f9M1upq7MwgmLIHngksDsZcOkMvvPQLC4e 9cUuMkRERETOZD6eUuKhcFUxBwdnk335WVw39jAdUVGkxhp0FBWxpY9MN7CaaiiqtEhPDyLE 6mBXXsOxK4l4Gykv85I7MIHZ35xATpWHkOQIwmxevtA1ii2IiChb54WI4SAqNhADd8+novi6 f2Yzu1ZVM+ryRIZeM4XE0sO0BISTlhoEhyvYsfcTayCKiIiIyEny+VNJvAcKefMfeew74CW8 XyyJQR1UbN7Dv18qob5v5G0wXZTsb8YErPY6ioqPm+pitbHrrR1sLWqDyCjSUwM4vH4Hy/b0 dCXx43jq2bG6lqYOC8syaW44+fns/u2fRdPWHbz+eglFhywiM+JIi4O6PYW8+9xuClp72ayI iIiIYMBdp3KdvjOQjYTZk7lmagfLHtvUNf9aRERERP5X6bnbX7KAtAHMnhJG265S9ilsi4iI iPzPU+D+EhnRqVxwfRaJnhpWv19ND55KLyIiIiKnKR/fNCmfxWqsYetHVTSU7WFnvUa3RURE RM4EmsMtIiIiIuJHmlIiIiIiIuJHCtwiIiIiIn6kwC0iIiIi4kcK3CIiIiIifqTALSIiIiLi RwrcIiIiIiJ+5ON1uB0MuWEmcwadIMd7qnjn51vJ8/i2ooiIiIhIX+afB99YHuoKa6nt/ihF bwNNWvFbRERERM4wfgrcbexfvJXVFUrYIiIiInJm0xxuERERERE/UuAWEREREfEj/0wpMYIZ ctV0RkUGYrS5qN5bwspFpVS6/FJNRERERKTP8s8It2EnLMrG4aIaqloDSB07mMuuziBK4+ki IiIicobxTwS2TCqXbODF5zfz2pMb2VAFgQMyGZFm+KWciIiIiEhf5eMpJSYH1uxk8U4vtXmt mACeJvL2NDM+OZSk1CCMUhdau0REREREzhQ+D9wNBQdoOG6rq9mNhUFgsH+mjIuIiIiI9FU+ nlLiJHFYOiPGJxAX8PHW4DAnBhbtLrdvy4mIiIiI9HE+n8MdNSKXWV8ZzpRhQRgAzghyh4Rh mG1UVbRrOomIiIiInFF8PMfDTcGqUmpyBzDg0slcP7qJjsgoUmKgPb+IbWWK2yIiIiJyZrHD pId82aDZWEdhhUVEYgSJqWGE0kbltv0serOMWo8vK4mIiIiI9H0G3KVhZxERERERP9GjaERE RERE/EiBW0RERETEjxS4RURERET8SIFbRERERMSPFLhFRERERPxIz1oXkVPKqpt+qrtwWjNi VpzqLoiIyOfQCLeIiIiIiB8pcIuIiIiI+JECt4iIiIiIHylwi4iIiIj4kX9vmgxOZO7do8h1 1rH08U1sa+j5U+RtSQO5/s6BRBfv5m/PluLqP4Rbbs4gaNdW/rygCk9PGnMkMOe+MQwJOtGL FlWLV7FgRQuWLZKp35nEhOha/vvwJna0fH7TAZnZzLs6k5jWAyx5bjf5TT0/1t44VXXlCwhN Y949w8ioLeDFJ/ZzyDzVHRIRERF/8mPgNoge15+BIdC8qYjdvQjbPme2cXBPFc4AA4LD6Nc/ FGdzI4WlbZiY1Nf0KL53YxA5MIGkcDu2sEQGJO/5koLvqaorIiIiIifLf4E7IJaxkyKxexvZ uroWt98K9YB5mC2vbWULYEvL5abb+hNeUcqilypo/0INW9TtKGFP/wxiWirZWfplDVmeqroi IiIicrL8FLgNIkb1Z3AktO0oZseh//1RV+/BchY/XX7G1BURERGRk+OfwO2IZNSUGBxWC5tX VdPWy2ZyrjmPi4Z13dc5YAjf+MWQj18cNorv/LyJdU+uYU2V/wK9PT6FWddmMyjVScfBg6x/ Yzfbq7wfvz5kJLdfm0yA0fl3szKff/45n5pPDDYHkDwxmymTE0iOCcDoaKO28ADrFxeQX9vz kelTVRdbAKmTcjhrQjxJXe1V55WxbnERxY29eR8cxI/NZtqUJFJinRiuVir3lbPuvyWUN1vH 7jdmIFPOSiItPgBbRxsH95Wz7r9FlHTVtWUO5uZb+hFSVUNFcBTJZi0r36kmee4gshz1rP77 VrZWmye936fWzatgw38LKToyTarbnP9l/zhI3KwBZCef6PNiI+ea2R9/phOzuOHnWQBYHZW8 /ctt5PdgVpMRk8lV3x1EUn0hLz+eR1VXl4NGjeHrl8fj3ryZZ/59qPM+h5N+3wIY8dWzmZ3V yoYX82DyIEZkOHEVFrLolSIqv9hXQSdkFpUzdXIhGzPSWbOmP+O7/qtU+69d9LujlrBrh1H4 pxhCALwdrHy6mAefq2NjiRtPSCCjZyfx4IPpnJ9qfNyo1cFTl2/gtpVB3PuP/vD/Cnlqg5v4 6ek89//SmRwOeJq4f+pWfl0cxaMvx7HzN2W8tsNDxKBYHvjjQL4x1P5xeydR172mgOyvVFA9 NJqpDYdZ74jmN7+JZe0DBbzVFskvXx7CnYO6+mh52bagmAf+Xw0r8jrwhAUxZmYi9/0knblp 3Y5DRET+J/hllZKQof0ZFmvQsb+YfR0RpPSLJOqENyp+tqayg+zPb6bdAqvlMIW7DrK/uBWP BVZjA/m7aqnpbZo/GbZQRn0lmxRPCzVNEJaaysyrskjq9v9hq7Ge/Tsq2be7kZZPza8G4WOH cdnF6aRHeDlUcIgDjTbihmRx4fUDSe7FZc+pqWsQO3UM8+amkRbuoTq/hqoWB8kjcvjK13JI Deh5e+FjRnD5Zf3oF2PRUFJHdUcg6WMHcdn1/Ym3d9tv9Agun5dJ/ziDxtJ6ql1OUkbl8JWb sklxHtuqPdJOW40bR0wiZ1+ejqO2A3tUPBMmRWPv0X4nrps8MptLvppL2vHHawtnzIXpBFfX UFjhIeQTnxeLppKqo++Z1dZM8Y5K9u2oJG9nA809vF6xGmoprrawRceQHnMkpNlJyYrCgYey vPqum4p78745GDBrIMmHaylvMIjKzWba2GD8EQVtGdHMyTXwlDTwYcmRk2CyZsVhXDg4+9zI zrCNxa4nd3PBj6tYUW1n9IxoJsR52PB6MZfMK2Jl6wkat7y8+5sS1idHMT3DIm9xCfe+2MYx /8p4W3j8/koO5UZz0Sg71VsP8q2vl7Gx42gjParbfsAkZqATV1ENd99RSVv/ANrLavnVM40c abL05b2c+50K3t1vMWBCJKMj3ax7rZjL5hey/CRu0hYRkdOL7wO3LZwRU+MJtFrZvfIgkWeP 46qvj2FcWs9LVa7axrvvVdFkgXmwnPcXbGHhBzW0Ad6yYha+vJc8f96MaThpXL2efz63iX/9 6SM211jY4pLISfk4dpgVpSz+1zbe/U/ZZ6w2YSM5J5ZAOtj72hpefmEzrz2xlv9ubaTOE0ZS TM9jzCmpawtl4PAIHN7DrHt6Nf/6+0e88vgalhV5scWlMCSjh++xLYyhZ8UTbLWw9e+r+Oez m/jX4+tZVebFkZrB8CPt2UIZOiWeYKuV7f9YyT/+tpGXH1/LskIP9oR0Rucce+XgKShmyfuV NFpglZby/uID1JkGwdHBBPRkv6N1W9jyfFfdx9awdL8bW1waowYdd8ViGFR+sIk339jFe89+ xPrK4z8vFpVrth99z6zGg6x8ZRvvvryNd18vodsXJyfHbKZkfyumLZz0zK6rDnsEGf2d4K6n qNBz9Pz1+H2zBeIo3sMbr+9i4bsV1De7CY0J8c8Vuj2E888JwuFpYekaNxaAu4mlqz1YwZFc MKXrisXbyhtvNNMWEMZP3h7Lin8NY/maMTw61Ya7oJp/rD/Bfwu8HbjOyuLdJ7NZ8MtEcuMd HCx2Hbu6kWUx8UfD+c/j2fzzjWHcP9zAvf8Qr2y3elU3ZEYqz9wfzwA7GOOT+cuDCQxxQG1J G40W4G3hhb/WccgWwl2vjWfzmyNYtW4MT8x04Mmv4onFvb15W0RE+iqfTykJzM1kZLINb0kp W4q9xI7zdYUvkXmYov3tnQGgo5Giog7GxAUSEWlAWU+CvklTfTsQTNLgBGIKKqlrb2P3a2vZ 7Z+e+6eu2cz6J5ew/phtbVRXdcCAQIJDbUAPpqnYQoiJMbBc9RSVdIUMbwt7P9iPs7+D+iPT F2yhnfu11VFQfGQ/FwV7m5ieFUVMQhDGruajzVqmBVZXTywLy7I6fzaMY0ZoP3e/I3Vb6ygq 8xw93qK8JsycaKLjgjFo4ugnwWyivNR99DgqytqxknvzeTlZFtX7a2mZmkFyVjQBmw7ijosh PcLAW1JDmetIv3rxvlkdlO1r7Aym+Xt4/jd7/ND/IwxGzYom+ckDrF9+mOYb4gjJb2RZpUXg 5GhmRXftZg/lgQ+n8kD3X3UEMmpoALaVHRyqNeGY7zAAm5NzZocTDHDOQPbsHfjJ8o5Qpk9w dr7nASFMHR+AbUc7xRUWjDN6XNdmNzBsRucWm4Hd3vWz2fX5crvYU2Rhi45k7jh7Z11HEHPP DcXxwWH257fjxXH8kYiIyGnMt4HbFsLQaUmE0M7uVeU0WBDr0wJfMsvE6zkSlCy8HhMMA7u9 h8ESi6rVe9kxaCTDx4zgphGDqCs+RN5HxWze3vQFV0j5kuvaAkmbkMW4MfEkxwcR5DQwDACz 59MNbDbsdsDl7TbiaNGUX8ya/M/fz+vpfA9sdptfpjocqWsEpjP//9KPe9HCZusM5kejtGVh ej/+vJheq5efl5PnLTtEqSudIZmxJDmqqe8fS4zNonpfzbFTVHr6vlluXK4v72bnwHExzIo+ wN/XNrChPY6cVQ3s8RiMnh1NcvdhdU8HK54r5eEFdazPa6fOZWFaADasE3XX5iAu6vM+HQYB 3f5LGBBgYFjg7ujWYE/rfhbTot0NZnMl5yVVfqIvHo/Fl3fmRUTky+DbwO2IJDXVjmHYGXr9 bIZ2KzPia7MJfWUpb247+a9Lk6eOZFx2OOEG2BLTmH1NLN7QcIIAe3omc6+OYu+iff6dVuIj VlM17/91HWVTMhk+PJ7UrFQmZyWRk7mVV946hOvzm+gDde2knDueedPCsLe3UlVcTVO7RVBy POlx/7s3elnuVirymo47VxZN1e5TH4y6po4MGRpDeqKT0KxIbFYzxfmubn3r3fv2pR5bcARz pzp44Z0Glu52U7WiiQ57CHPOCeo20muy+pc7OP+PLbjDgxg/OZaMCIPa7XUsLfj03hpf+KPZ u7qfxwgOZvrsUOKO3Ur6IIceASwi8j/Gt4HbdFGx/QCeo/+3MAjvl0RqlElDYRVl9T0b5QtP TyR7YFdjoREMGBrx8YuRUQwcaqdmGeT5ou9fhrYm9n2wg30fGAQlpXDOtcMYND6XMR/VsLrC j/HGV3XtUQwZE4rdXcPSP33U9eRQg7SLZpAe1+M7JsE08XoBp73bB9EgPLsfwzMdNOwqZPcB 8+P9Ao7dz+7o/Gx4vSadPfGxI3W99Wx8ZQdFR64VbQZ2mwGm2btQanWNYBpdfXaGkzMhjnBX A3u21NPao0Y9lOU14BkWS3pOMuH9bFBfQ3H3pTh9/b51Y4+KIXdwOI6GOvL2NPV6RSJwcPbs CELerOfD96spX+/FlhHN+Tnd3tWORv7+UgvtIdE8uXIYt6d3fr+w/N4NLCvw40r/vq5rMwh0 ghEQwT1P5TI3sGu716LdbWE4bZ8I3O3ljbyysBlXWhRXXBBK9P/u9a2IyP8k3w6keBrY/Pp2 3nv1yJ8dfFTiBTyUrdjF5h4+mCVvwRIe+1PnUnfewt089cAiHv9bKc0WeHZu5Y8/We3XJQF9 xhbKmBuncfPdYxgd1/k/67aqagoOeMAIJupzv/LuI3UNBwFOA0wv7Ue+bneG0y8z8LN/79OY rdTVWRjB0fTv1xWl7aEMnpnDxOlpJAUdt19QDFmZR/YLJmtQODbLQ311m39GY7vVzR54JJg6 GXDpDL7z0CwuHtXLsNrRQWuHhRERRmwQ2JKSmTInl6njInF+/m9/QlvBIaq8NhIn9iczGJrz a6jufgOmr9+3I2zhTLh+HOdfNJjZ101g1rDe9P5jsWfHMMFp8dGz5SyqN0g+J4bR3Zs0TZpd gN1OZGjXZ9fVwvtrO/w0YcdPdZ3BDOpvYDY28vqyrm9JLA/vfHcDoalrmP+v47458bTwm2u3 c9O9Bdx243Zuf8tz6r9ZERGRHvHjo93PBAax44YwOScAwx5MvA2M6CRmXB1Oh7eJ7W/lU+IC zFbKy71MzUlgxm1TGFjaiic0grQ0J7QepLDHN9SdorreRsrLvOQOTGD2NyeQU+UhJDmCMJuX Xl27mc3sWnOI0fMSGHXjVFJKm/FERZISY8NTXsqOEvPj/VYfYtT8BEbcMI2UsibckZEkxzjw VheyOc9PqzqYzexaVc2oyxMZes0UEksP0xIQTlpqEByuYMfejs9v40Q89ezb1c6QcQmcfetE xgRFEmV4qdxziMO9SFJWUw1FlRbp6UGEWB3symvgmAVPfP2+HWELIiKqa/684SAi2olB76fZ 2BKjuWC4wYcftVNtc3LT7HCOuSQICGPaODsLltXwzfO28epQO9U7W6hw2zH8Gbl9Xdceys13 xPLnO2t47qaP2DQpjOTmFlZuaYfkRG4933nstzXedorKu74VMT0Ul7oxdVOliMhpRVMFv6CQ 5HiyhyaSPSiCUBsYQWH0G5pI9pBoIo+OzllUL9vMf5ZUUNHiJCk7nowEaNhfwpLnd7CnFynr lNS12tj11g62FrVBZBTpqQEcXr+DZXt6+3W+RdPm7bz+RgkldQYxmTEkBndQsWUvb/yziEPe bvtt6dyvuBYiM2JJCHZTuX0/b72wn0q/zSawaNq6g9dfL6HokEVkRhxpcVC3p5B3n9tNwYnW fT4pHooXbeHDrY14oiKJdbooXbODRWtaehdWTRcl+5sxAau9jqLi49YX9Pn7duQw6tm5po6m di+ugwfYutP1xUZe7UGcNysEB2CERTF38vErjgRy8+9z+NaUIIzyJj7c6ibza7k8eqHDPzfN +rFu2pW5LPlTKnNzDIrX1bO8AAbNTeelf2fzlePvNA+I5NZvRpERbiduSALfviRIYVtE5DRj wF36dlJEThmrbvqp7sJpzYhZcaq7ICIin0Mj3CIiIiIifqTALSIiIiLiRwrcIiIiIiJ+pMAt IiIiIuJHCtwiIiIiIn6kdbhF5JTSKhsiIvK/TiPcIiIiIiJ+pMAtIiIiIuJHCtwiIiIiIn6k wC0iIiIi4kd+uGnSIGzgAKbPSiUzOQhHh4vKvWWsWVxCRYueIi8iIiIiZxafj3DbU7O49Pps clMdtJTXU90eSNqYQVx6dQZRGk8XERERkTOMj0e4baSPTyfe4aVi4TpeW9OK6Yxi6u0TmZCZ wbCUUlaVa5RbRERERM4cPg7cBm3l5WxqdVO2y4UJ4D5MSXE74xOCiI62QbnXtyVFRERERPow HwduL1Wb9lN1zDYboWEOsNy0NJu+LSciIiIi0sf59UmThiOAuOG5TMp1YB4qYXeZppOIiIiI yJnFf4HbkcD5941hSBB4aw+w5MUCqjx+qyYiIiIi0if5b90Qs53q/DpqW0xs0fGMHB1FkN+K iYiIiIj0TXaY9JBfWrbaqdxZwbaNtdiy0hg0PI7AknKK6jWtRERERETOHP5fGbutgY/W1OAx ghgwNFKPthQRERGRM4pv868jgmFzBjNjZiKR3Vr2tHnwYBAQ6MDwaUERERERkb7Nt4HbshE7 JIMxZ2cxNOlI0wFkDo8lCJPaqma0MKCIiIiInEl8u0qJt5Fta+oYdlEsE2+dRr/SFjyREaTE B0BjBZu2tKIZ3CIiIiJyJjHgLh9nYAfxY7OZelYSqXFObO52DhUcYOOSAvJrNb4tIiIiImcW PwRuERERERE5QouGiIiIiIj4kQK3iIiIiIgfKXCLiIiIiPiRAreIiIiIiB8pcIuIiIiI+JEC t4iIiIiIHylwi4iIiIj4kQK3iIiIiIgfKXCLiIiIiPiRAreIiIiIiB85fN+kjaihA5k+I5n0 hEBs7a1U7illzZIyDrTqKfKnu8BLb+DQv8cSbnT+3b31PcaOW8wO76ntl4iIiEhf5fMR7uDB Q7ni6gFkJdo4XFZPjTuI9HFDmHd9P2I1nn7aMytKefP1bbz+ThlVCtkiIiIin8vHI9yBZE9K Jox29r6ymvd2dYAzgslfn8Sk9ExG9CvlwyLTtyXlS+XeuJwbrliOkTCJ90qvZuap7pCIiIhI H+fbMWfDRktRKVvW5LMlr6Nzm7uJwnwXli2A2HinT8uJiIiIiPR1vg3clouCZXtZ9l4ZVe6P N9vtBoYFXm/PRrdtqRGsWZaJe0E04+0fb4+dk0Dzqkyq7gsm5OjOdqZdGcfSl9JpWtYP16I0 1jwYyfkJxrGNGna+8Wg/rBWp/HpKCL9+LJXa9zPY+9tIJoce6XAAv3qxH9ayRL47Ppxn/ppG wwcZlD4TxzeyjmvvJOo6R8VQvDKT1ucSWfJaBo3/SuD2SWH8/cUMGl5L4M7+3do0bIycG8Pb z6fR+GE/WhamsvLBKOYmHlf3ZM5f1jmsaX8M996LGX/0uwyD2Btupdl8lKq/Dfn4/NnDmXbX 1Szd83Oa2h/BVfcT1rx4Luen20/c+GdxpPOr3X/Aavsmtx49D3amPvpTPNbv+M91gd2ON4iR X72Mt7c8RKPrEVoOPcDKf57H3Ixe1BURERHpg/w/qzogipxBwWA2c6DM06NfNSvbWFRs4UgJ 4pyUI1sNzhoXSDAmy9a109q1beg1Cbz3nTCmx5ps2dTGhnobE86N5q3HopkWdILGDRsX3hLF xJo2VlRBzpQofnOh49gTYg/grrvCiS928c4+k4RBYTzxsyjGHx2o71ndwHiDulKT4NQQHn0g nKAKL4FJIdw/P5CArn0y5sTx3/siuDDDoHBnG1sO25l0bhRvPBrNjOCunY4EWuuxE/z5ONCa xXtZtNuLY8BAzhlw5MicnDWrP8G0sey9wq7zZ2Po92/hvUcnMj2pjS3v72NDdTATrpnLW0su YloofmKQceN1/PdvM7gw16BwbQFb6kOYdO0FvLH4YmaE+auuiIiIyJfHv4E7IJwRl49gVCw0 bdnP9uoerlJiulm8wYPHHsDMUXYMAEfXz21tvLe5a8Tc5uCyWQEEuTv4+Z0HmP6Dg8y4/gB3 b7Fwpodyw4gTjA7b7ARvrePCX9RyzR+b2Vdnkpjq/MSk9vXPVnHpb2q5/q5qfrXfwtkvhCtz jF7Vbd10mFufaaHQBGtXE7f/pZndXohNdhBpADYnN10VTLzl5vHvVTDm2weZet0BvrXexJER xremdL1dloudS7bx+usn+rODNaVd58V7kMVL6vA4Upg5PbTz/DnTmDkjGKO1gPeWtXfuZ0/k sqtSCWqv4Odn/5bpFz7FjGGPcPcyN86ccdwwxU+jzfYkbvruEOLNgzw+59eMmflnpg55hG8t bsORO4lvXRT8+W2IiIiI9HF+WBawq+HYZM6+ZijDk2w07dnNf945hKvHrVhsXddG5TXhTBwX SNjbrbRmBHN2PLRvc/HB4a7dTDe/uLmEX3T/Va+XrflezDF24iMN4Liwb3r5cF17Z5821DH4 krpPlve6WbHD7PxNt5tVO03MbAeZicCuntc1TbC84AUwLbxm1882o/PKx+FkcKqB2djGwl1d db0eFq7twDMpkOx0B3Y68HpreOm7L/DS554/k62L9lH5/SlMnDWAsGe20ZqbzdmpBu0r9/JB XVffvJX8YuwPjz0OTwNbtzdjnhNOfJyDrp76ljOewVk2zNoCFq5r6zxeTx0LF1bgmdOf7Jwo 7Lj8UVlERETkS+OXwG2LTWPurUPJCvdSvXYLb713iKZeLk7SvruVDxrDuXFkMBOcreSNDmKw 3WLLOheV3TO03c70S6O458JgJmbYiQkysBkAFsaJpj9bJjWHT7D92J3o6DYLpsNtYRngdHQL 0j2t+1lsBoEOsMWEs2RZ+Cf64nDQOUptj+Xqh+dyaeqJvqDwsumJf/H7VZ2T6NvX7+aD2inc OC2HCYHbyTs7m8EOky3v7aWy+3viiGD6N8/jnq8OZuKgKGJC7F3H4e75cZwsu4NAp4Et8SyW tJ913IsmDmfXtxoiIiIipzHfB257OOOuGExWuEn1io94bUk97V+kvbZ2Fm4xuWlGEDOz7CSN CyDAdLNovafbyKfBlG8ksvi6AJwtHjZuc1HaYhGbE8LM9E9v2vrCz+HpXd3PY7W5WbHeTc0x /bMoKzIxAYwQRlwwmqsGnyhwuwl6+1V+v6rrr62FLFzWxk3zspg5PJSkWekEeKtYtKSu2/kL YMovbmfxPUk4D9exceUuShu9xI4eyswc/0deq7WGFYsqjjtek7JdLrSIpIiIiJzufB64gwYP YGyaHW/FfhZ/8AXDNgAmy9a203pOEOdMDiVtuA3zgIvFJd12cQZx49wAAttc3HlTNX+psgCD GXencnZvVtk4Wb6ua1q0e8Byt/PwgzUsPLLSS9fIt+WxOgOop4z7h3yP+0+q0XaWvVdE6xW5 nHPBGNLOCsAs2sfiPd2ibEB/btDDWHIAACAASURBVPxqEoEt+7hz5FP8pcQE7Mz44wOcndOb OxdNOtyA4SCo24IkQcGOY0esvR7a3RZWRyEPX/sSC498WOx2Ap0GlturwC0iIiKnPR/fNGkn dVAcQXgoWVdGjY8m39ZuamWDx2DsZZHMiYTKjS62dF/wxDAICwK8Fo2urmHSICezR9r9e1eo r+t6POytsLCFBzF/gq0znBo2Lro3lZalGbw+x9aLKRYWte/vZkOHjbG3z2JOrEXlf/ewpduy jdgCCAsBvB00NncdR0gKs6dF9O44vPUUlnqxnKlccH5kZxth/bhgRtix7bkPsbfAxBY1kPnn dt3UaYRw0dM/oaX1V7x+Q4imlIiIiMhpz7cj3LYgYuIcGHiJHjOUiwd3f9Gkas0ONhb3fMzS rGnjvTyLc4baSTC9vLCu/diRc3cHK3dZXDM+hL8+lcQV+SYJ2QGkOiwsf0Y2X9c1O3j2ZRd3 /DiEr/0ylXHbO6gMdjJtsAMONfPMavP4Wz9PrtnKfby31eSciZEkmM288F7Jseevo4yV69xc c+5w/rruTq7Y1k7CqFRSnR1Yx3xEbAy95XIevCAUW2AMIx1gzxzNI6+kcLjjAE/dsYQl9RZY Lpa8spf6ucO54Inv8dGVFTT1iyfOcmEeXQAR8Fbx7B92ccfzI/jaaz9i3OpyKsNSmDY+Eio2 8sw7rb06XhEREZG+xOcj3AGBgOEgZkAi2UOP/ZMS2ctypoclG9x4AKu1jYXbjothlodnf1/D E1s8WImBnDPITvF/arh7Re8C6knzQ93yxTWc96vDLCyBzBFBzMiAvSsbufbuWt5s7GWj3lqW LK7uPH9N+Sxc2XHs62YDz96xgCeW12Gl9+OccWEU//VF7v6P67jjMIgfNYR580cy/6J0kuxg i0ri3HkjmX9ZFgOOruJnUfXSa9z4u73kNQWRPSqKmudf5ceL249rz6L8ny9y3s3LWbjXInNK LjNyLPa+uZRrz3uNN2sUt0VEROT0Z8BdSjUiIiIiIn7i/ydNioiIiIicwRS4RURERET8SIFb RERERMSPFLhFRERERPxIgVtERERExI8UuEVERERE/EiBW0RERETEjxS4RURERET8SIFbRERE RMSPFLhFRERERPzI4Z9mbUQNy+XCyzJIDOxg+/PLeT/f9E8pEREREZE+zPeB2x7EgHNHcf6U SIIAy+cFREREREROHz6eUhJAzuWTuGRKCPWrtrJ0h8e3zYuIiIiInGZ8PMLdQeHyPJZtr2fH 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--
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
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.
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/
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
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.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.