From: Lars Ingebrigtsen Date: Mon, 1 Nov 2021 02:57:31 +0000 (+0100) Subject: Make xref symbol marking work again after describe-keymap changes X-Git-Tag: emacs-29.0.90~3671^2~309 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7a46461950172483e45c1512d9a191203f61077b;p=emacs.git 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. --- diff --git a/lisp/help-mode.el b/lisp/help-mode.el index b76c7dadaf8..0f80c265733 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 fcb23fa0459..d12f388c45f 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