unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Gregory Heytings <gregory@heytings.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: luangruo@yahoo.com, larsi@gnus.org, 52053@debbugs.gnu.org
Subject: bug#52053: 29.0.50; Nonsensical button "C-x C-f" in scratch buffer
Date: Thu, 25 Nov 2021 22:45:02 +0000	[thread overview]
Message-ID: <612d659daa5de288a9f9@heytings.org> (raw)
In-Reply-To: <83v90g467g.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 24 bytes --]


Updated patch attached.

[-- Attachment #2: Type: text/x-diff, Size: 4273 bytes --]

From 7098a09b3d1d53e2a0c50f57d92fc397a65b4e39 Mon Sep 17 00:00:00 2001
From: Gregory Heytings <gregory@heytings.org>
Date: Thu, 25 Nov 2021 22:37:37 +0000
Subject: [PATCH] Do not buttonize key bindings outside of *Help* buffers

* lisp/help.el (substitute-command-keys--in-help): New variable to
differentiate calls to substitute-command-keys in *Help* buffers from
other calls.
(substitute-command-keys): Use the new variable:
help-link-key-to-documentation is supposed to have an effect only
"in *Help* buffers". Fixes bug#52053.
(describe-key): Use the new variable.

* lisp/help-fns.el (describe-function, describe-variable,
describe-symbol): Use the new variable.

* lisp/help-macro.el (make-help-screen): Use the new variable.
---
 lisp/help-fns.el   | 9 ++++++---
 lisp/help-macro.el | 3 ++-
 lisp/help.el       | 7 ++++++-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 17fabe4f63..a018cc293b 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -249,7 +249,8 @@ describe-function
   ;; calling that.
   (let ((describe-function-orig-buffer
          (or describe-function-orig-buffer
-             (current-buffer))))
+             (current-buffer)))
+        (substitute-command-keys--in-help t))
 
     (help-setup-xref
      (list (lambda (function buffer)
@@ -1085,7 +1086,8 @@ describe-variable
 	(user-error "You didn't specify a variable")
       (save-excursion
 	(let ((valvoid (not (with-current-buffer buffer (boundp variable))))
-	      val val-start-pos locus)
+	      val val-start-pos locus
+	      (substitute-command-keys--in-help t))
 	  ;; Extract the value before setting up the output buffer,
 	  ;; in case `buffer' *is* the output buffer.
 	  (unless valvoid
@@ -1619,7 +1621,8 @@ describe-symbol
                                (cons name
                                      (funcall descfn symbol buffer frame))))
                            describe-symbol-backends))))
-           (single (null (cdr docs))))
+           (single (null (cdr docs)))
+           (substitute-command-keys--in-help t))
       (while (cdr docs)
         (goto-char (point-min))
         (let ((inhibit-read-only t)
diff --git a/lisp/help-macro.el b/lisp/help-macro.el
index 588efee66b..25f6b3ba46 100644
--- a/lisp/help-macro.el
+++ b/lisp/help-macro.el
@@ -93,7 +93,8 @@ make-help-screen
      "Help command."
      (interactive)
      (let ((line-prompt
-            (substitute-command-keys ,help-line)))
+            (substitute-command-keys ,help-line))
+           (substitute-command-keys--in-help t))
        (when three-step-help
          (message "%s" line-prompt))
        (let* ((help-screen ,help-text)
diff --git a/lisp/help.el b/lisp/help.el
index 9122d96271..d527f48020 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -929,7 +929,8 @@ describe-key
                                       seq (event-start event))))
                          `(,seq ,brief-desc ,defn ,locus)))
                      key-list))
-           2)))
+           2))
+         (substitute-command-keys--in-help t))
     (help-setup-xref (list (lambda (key-list buf)
                              (describe-key key-list
                                            (if (buffer-live-p buf) buf)))
@@ -1072,6 +1073,9 @@ help-link-key-to-documentation
   :version "29.1"
   :group 'help)
 
+(defvar substitute-command-keys--in-help nil
+  "Internal variable used by `substitute-command-keys'.")
+
 (defun substitute-command-keys (string)
   "Substitute key descriptions for command names in STRING.
 Each substring of the form \\\\=[COMMAND] is replaced by either a
@@ -1181,6 +1185,7 @@ substitute-command-keys
                     (delete-char (- end-point (point)))
                     (let ((key (help--key-description-fontified key)))
                       (insert (if (and help-link-key-to-documentation
+                                       substitute-command-keys--in-help
                                        (functionp fun))
                                   ;; The `fboundp' fixes bootstrap.
                                   (if (fboundp 'help-mode--add-function-link)
-- 
2.33.0


  reply	other threads:[~2021-11-25 22:45 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87czmr5gr7.fsf.ref@yahoo.com>
2021-11-23 10:05 ` bug#52053: 29.0.50; Nonsensical button "C-x C-f" in scratch buffer Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24  6:17   ` Phil Sainty
2021-11-24  7:53   ` Lars Ingebrigtsen
2021-11-24  9:28     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 10:58       ` Lars Ingebrigtsen
2021-11-24 11:15         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 11:27           ` Lars Ingebrigtsen
2021-11-24 11:36             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 16:39               ` Lars Ingebrigtsen
2021-11-24 17:05                 ` Andreas Schwab
2021-11-25  0:45                 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-25 13:34                   ` Lars Ingebrigtsen
2021-11-26  0:38                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-26 12:36                       ` Lars Ingebrigtsen
2021-11-26 12:52                         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-25 10:23   ` Gregory Heytings
2021-11-25 10:59     ` Eli Zaretskii
2021-11-25 11:07       ` Gregory Heytings
2021-11-25 11:21         ` Eli Zaretskii
2021-11-25 12:47           ` Robert Pluim
2021-11-25 13:20             ` Eli Zaretskii
2021-11-25 13:36               ` Lars Ingebrigtsen
2021-11-25 13:41           ` Gregory Heytings
2021-11-25 14:16             ` Eli Zaretskii
2021-11-25 14:55               ` Gregory Heytings
2021-11-25 15:15                 ` Eli Zaretskii
2021-11-25 22:45                   ` Gregory Heytings [this message]
2021-11-26  6:26                     ` Eli Zaretskii
2021-11-26  9:24                       ` Robert Pluim
2021-11-26 11:13                         ` Eli Zaretskii
2021-11-26 11:17                           ` Robert Pluim
2021-11-27 16:06                       ` Gregory Heytings
2021-11-27 16:08                         ` Gregory Heytings
2021-11-29 13:56                           ` Lars Ingebrigtsen
2021-11-29 14:05                             ` Eli Zaretskii
2021-11-29 14:13                               ` Lars Ingebrigtsen
2021-11-29 17:59                           ` Stefan Kangas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=612d659daa5de288a9f9@heytings.org \
    --to=gregory@heytings.org \
    --cc=52053@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=larsi@gnus.org \
    --cc=luangruo@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).