emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 7a46461: Make xref symbol marking work again after describe-keyma


From: Lars Ingebrigtsen
Subject: master 7a46461: Make xref symbol marking work again after describe-keymap changes
Date: Sun, 31 Oct 2021 22:57:43 -0400 (EDT)

branch: master
commit 7a46461950172483e45c1512d9a191203f61077b
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make xref symbol marking work again after describe-keymap changes
    
    * lisp/help-mode.el (help-make-xrefs): Adjust xref symbol finding
    after changes to how keymaps are output.
---
 lisp/help-mode.el | 32 ++++++++++++--------------------
 lisp/help.el      |  5 +----
 2 files changed, 13 insertions(+), 24 deletions(-)

diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index b76c7da..0f80c26 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -651,27 +651,19 @@ that."
                   (goto-char (point-min))
                   ;; Find a header and the column at which the command
                   ;; name will be found.
-
-                  ;; If the keymap substitution isn't the last thing in
-                  ;; the doc string, and if there is anything on the same
-                  ;; line after it, this code won't recognize the end of it.
-                  (while (re-search-forward "^key +binding\n\\(-+ +\\)-+\n\n"
+                  (while (re-search-forward "^Key +Binding\n.*\n"
                                             nil t)
-                    (let ((col (- (match-end 1) (match-beginning 1))))
-                      (while
-                          (and (not (eobp))
-                               ;; Stop at a pair of blank lines.
-                               (not (looking-at-p "\n\\s-*\n")))
-                        ;; Skip a single blank line.
-                        (and (eolp) (forward-line))
-                        (end-of-line)
-                        (skip-chars-backward "^ \t\n")
-                        (if (and (>= (current-column) col)
-                                 (looking-at "\\(\\sw\\|\\s_\\)+$"))
-                            (let ((sym (intern-soft (match-string 0))))
-                              (if (fboundp sym)
-                                  (help-xref-button 0 'help-function sym))))
-                        (forward-line))))))
+                    (while (looking-at 
"\\([^\t\n]+\\)\\(\t+\\|\n\t+\\)\\([^\n\t ]+\\)")
+                      (let ((key (match-string 1))
+                            (symbol (intern-soft (match-string 3))))
+                        (when (and (fboundp symbol)
+                                   (kbd-valid-p key))
+                          (help-xref-button 3 'help-function symbol))
+                        (forward-line)
+                        ;; Skip empty line.
+                        (while (or (eolp)
+                                   (looking-at-p " *(this binding"))
+                          (forward-line)))))))
             (set-syntax-table stab))
           ;; Delete extraneous newlines at the end of the docstring
           (goto-char (point-max))
diff --git a/lisp/help.el b/lisp/help.el
index fcb23fa..d12f388 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1255,10 +1255,7 @@ maps to look through.
 
 If MENTION_SHADOW is non-nil, then when something is shadowed by
 SHADOW, don't omit it; instead, mention it but say it is
-shadowed.
-
-Any inserted text ends in two newlines (used by
-`help-make-xrefs')."
+shadowed."
   (let* ((amaps (accessible-keymaps startmap prefix))
          (orig-maps (if no-menu
                         (progn



reply via email to

[Prev in Thread] Current Thread [Next in Thread]