Subject: [PATCH] ; * lisp/help-fns.el (help-do-arg-highlight): Fix regexp.
From: Eshel Yaron <[email-masked]>
To: [email-masked]
Date: Mon, 28 Aug 2023 14:02:18 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Tags: patch

Tags: patch

This patch addresses the following existing issue:

In the output of `C-h f with-delayed-message RET`, the word `message` in
the function name is incorrectly highlighted with `help-argument-name`.

This can be seen also with a definition such as:

--8<---------------cut here---------------start------------->8---
(defun foo-bar (baz)
    "Frobnicate BAZ.

\(fn (foo bar))"
  nil)
--8<---------------cut here---------------end--------------->8---

Now `C-h f foo-bar RET` shows both `foo` and `bar` in the function name
with `help-argument-name` (as well as the `foo` and `bar` arguments).

The attached patch tweaks the regular expression that
`help-do-arg-highlight` uses to find argument occurrences such that it
skips the function name.

In GNU Emacs 30.0.50 (build 3, x86_64-apple-darwin22.5.0, NS
 appkit-2299.60 Version 13.4 (Build 22F66)) of 2023-08-27
Repository revision: c122cc831869a9a11f50187c5cf999389b223eee
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2299
System Description:  macOS 13.4

Configured using:
 'configure 'CFLAGS=-g0 -O3' --with-native-compilation --with-json
 --with-imagemagick --with-tree-sitter --enable-link-time-optimization'

From 1d7fcb5cb407f3b9c6d2040307d2bdad2632456c Mon Sep 17 00:00:00 2001
From: Eshel Yaron <[email-masked]>
Date: Mon, 28 Aug 2023 13:43:52 +0200
Subject: [PATCH] ; * lisp/help-fns.el (help-do-arg-highlight): Fix regexp.

Avoid highlighting (parts of) the function name as arguments in the
output of 'describe-function' when the function has an argument with
the same name.  Do achieve this, refine the regular expression that
'help-do-arg-highlight' uses such that it doesn't match anything in
the function name.
---
 lisp/help-fns.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 609bed18f2f..b34778773a9 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -369,7 +369,8 @@ help-do-arg-highlight
       (setq doc (replace-regexp-in-string
                  ;; This is heuristic, but covers all common cases
                  ;; except ARG1-ARG2
-                 (concat "\\<"                   ; beginning of word
+                 (concat "([^ ]+ .*"             ; skip function name
+                         "\\<"                   ; beginning of word
                          "\\(?:[a-z-]*-\\)?"     ; for xxx-ARG
                          "\\("
                          (regexp-quote arg)
-- 
2.41.0