GNU bug report logs - #77746
[PATCH] sh-mode: Fix incorrect word syntax for punctuation in sh-mode

Previous Next

Package: emacs;

Reported by: James Cherti <contact <at> jamescherti.com>

Date: Fri, 11 Apr 2025 14:56:02 UTC

Severity: normal

Tags: patch

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #116 received at 77746 <at> debbugs.gnu.org (full text, mbox):

From: James Cherti <contact <at> jamescherti.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 77746 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca, juri <at> linkov.net
Subject: Re: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for
 punctuation in sh-mode
Date: Thu, 17 Apr 2025 09:01:31 -0400
[Message part 1 (text/plain, inline)]
Hello Eli,

Attached is v3 of this patch.

(I have updated the commit message to include more details
and reintroduced the '.' character.)

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

On 2025-04-15 07:47, James Cherti wrote:
> 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 <at> jamescherti.com>
>>>
>>> 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.
>>
>>
>>
> 
> 
> 
> 
[fix-sh-mode-syntax-table-v3.patch (text/x-patch, attachment)]

This bug report was last modified 107 days ago.

Previous Next


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