From: Richard M. Stallman Date: Mon, 21 Mar 2005 17:41:41 +0000 (+0000) Subject: (where-is): Don't mention aliases with no key bindings. X-Git-Tag: ttn-vms-21-2-B4~1664 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=740b479c63d2e380e49b3222e75cda29f2fe481e;p=emacs.git (where-is): Don't mention aliases with no key bindings. --- diff --git a/lisp/help.el b/lisp/help.el index a544af59c84..aeffaf732a5 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -486,6 +486,7 @@ If INSERT (the prefix arg) is non-nil, insert the message in the buffer." (let ((func (indirect-function definition)) (defs nil) (standard-output (if insert (current-buffer) t))) + ;; In DEFS, find all symbols that are aliases for DEFINITION. (mapatoms (lambda (symbol) (and (fboundp symbol) (not (eq symbol definition)) @@ -493,27 +494,37 @@ If INSERT (the prefix arg) is non-nil, insert the message in the buffer." (indirect-function symbol) (error symbol))) (push symbol defs)))) - (princ (mapconcat - #'(lambda (symbol) - (let* ((remapped (command-remapping symbol)) - (keys (where-is-internal - symbol overriding-local-map nil nil remapped)) - (keys (mapconcat 'key-description keys ", "))) - (if insert - (if (> (length keys) 0) - (if remapped - (format "%s (%s) (remapped from %s)" - keys remapped symbol) - (format "%s (%s)" keys symbol)) - (format "M-x %s RET" symbol)) - (if (> (length keys) 0) - (if remapped - (format "%s is remapped to %s which is on %s" - definition symbol keys) - (format "%s is on %s" symbol keys)) - (format "%s is not on any key" symbol))))) - (cons definition defs) - ";\nand "))) + ;; Look at all the symbols--first DEFINITION, + ;; then its aliases. + (dolist (symbol (cons definition defs)) + (let* ((remapped (command-remapping symbol)) + (keys (where-is-internal + symbol overriding-local-map nil nil remapped)) + (keys (mapconcat 'key-description keys ", ")) + string) + (setq string + (if insert + (if (> (length keys) 0) + (if remapped + (format "%s (%s) (remapped from %s)" + keys remapped symbol) + (format "%s (%s)" keys symbol)) + (format "M-x %s RET" symbol)) + (if (> (length keys) 0) + (if remapped + (format "%s is remapped to %s which is on %s" + definition symbol keys) + (format "%s is on %s" symbol keys)) + ;; If this is the command the user asked about, + ;; and it is not on any key, say so. + ;; For other symbols, its aliases, say nothing + ;; about them unless they are on keys. + (if (eq symbol definition) + (format "%s is not on any key" symbol))))) + (when string + (unless (eq symbol definition) + (princ ";\n its alias ")) + (princ string))))) nil) (defun string-key-binding (key)