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 #35 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: James Cherti <contact <at> jamescherti.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 77746 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org,
 Juri Linkov <juri <at> linkov.net>
Subject: Re: bug#77746: [PATCH] sh-mode: Fix incorrect word syntax for
 punctuation in sh-mode
Date: Mon, 14 Apr 2025 13:23:59 -0400
> 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





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.