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

From: James Cherti <[email-masked]>
Date: Tue, 15 Apr 2025 07:47:59 -0400

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: [email-masked]
>> From: James Cherti <[email-masked]>
>>
>> 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.
> 
> 
>