X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b0915a3104ef1167e4b2a4cd570e996d836b9654..937640a621a4ce2e5e56eaecca37a2a28a584318:/lisp/help.el diff --git a/lisp/help.el b/lisp/help.el index c27bcc4905..5ec9b1f529 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -267,7 +267,7 @@ If that doesn't give a function, return nil." (and (symbolp obj) (fboundp obj) obj)))) (error nil)))) (let* ((str (find-tag-default)) - (obj (if str (read str)))) + (obj (if str (intern str)))) (and (symbolp obj) (fboundp obj) obj)))) @@ -573,14 +573,14 @@ the last key hit are used." (if (symbolp defn) defn (prin1-to-string defn))))))))) -(defun describe-key (key &optional untranslated) +(defun describe-key (key &optional untranslated up-event) "Display documentation of the function invoked by KEY. KEY should be a key sequence--when calling from a program, pass a string or a vector. If non-nil UNTRANSLATED is a vector of the untranslated events. It can also be a number in which case the untranslated events from the last key hit are used." - (interactive "kDescribe key: \np") + (interactive "kDescribe key: \np\nU") (if (numberp untranslated) (setq untranslated (this-single-command-raw-keys))) (save-excursion @@ -608,6 +608,17 @@ the last key hit are used." (prin1 defn) (princ "\n which is ") (describe-function-1 defn) + (when up-event + (let ((defn (or (string-key-binding up-event) (key-binding up-event)))) + (unless (or (null defn) (integerp defn) (equal defn 'undefined)) + (princ "\n\n-------------- up event ---------------\n\n") + (princ (key-description up-event)) + (if (windowp window) + (princ " at that spot")) + (princ " runs the command ") + (prin1 defn) + (princ "\n which is ") + (describe-function-1 defn)))) (print-help-return-message)))))))