# HG changeset patch # User Richard M. Stallman # Date 864282042 0 # Node ID 2a41f677885fa87cecb04937a68df674caf7811f # Parent 2cfc288846643f1801134fbe0085ab0d6ae90064 (describe-key-briefly, where-is): Prefix arg means insert help text into current buffer. diff -r 2cfc28884664 -r 2a41f677885f lisp/help.el --- a/lisp/help.el Thu May 22 03:32:45 1997 +0000 +++ b/lisp/help.el Thu May 22 06:20:42 1997 +0000 @@ -168,9 +168,10 @@ (goto-char (point-min)) (set-buffer-modified-p nil)))) -(defun describe-key-briefly (key) - "Print the name of the function KEY invokes. KEY is a string." - (interactive "kDescribe key briefly: ") +(defun describe-key-briefly (key &optional insert) + "Print the name of the function KEY invokes. KEY is a string. +If INSERT (the prefix arg) is non-nil, insert the message in the buffer." + (interactive "kDescribe key briefly: \nP") ;; If this key seq ends with a down event, discard the ;; following click or drag event. Otherwise that would ;; erase the message. @@ -181,6 +182,7 @@ (read-event))) (save-excursion (let ((modifiers (event-modifiers (aref key 0))) + (standard-output (if insert (current-buffer) t)) window position) ;; For a mouse button event, go to the button it applies to ;; to get the right key bindings. And go to the right place @@ -194,14 +196,17 @@ (set-buffer (window-buffer window)) (goto-char position))) ;; Ok, now look up the key and name the command. - (let ((defn (key-binding key))) + (let ((defn (key-binding key)) + (key-desc (key-description key))) (if (or (null defn) (integerp defn)) - (message "%s is undefined" (key-description key)) - (message (if (windowp window) - "%s at that spot runs the command %s" - "%s runs the command %s") - (key-description key) - (if (symbolp defn) defn (prin1-to-string defn)))))))) + (princ (format "%s is undefined" key-desc)) + (princ (format (if insert + "%s (%s)" + (if (windowp window) + "%s at that spot runs the command %s" + "%s runs the command %s")) + key-desc + (if (symbolp defn) defn (prin1-to-string defn))))))))) (defun print-help-return-message (&optional function) "Display or return message saying how to restore windows after help command. @@ -646,9 +651,10 @@ (buffer-string)))) (message "You did not specify a variable"))) -(defun where-is (definition) +(defun where-is (definition &optional insert) "Print message listing key sequences that invoke specified command. -Argument is a command definition, usually a symbol with a function definition." +Argument is a command definition, usually a symbol with a function definition. +If INSERT (the prefix arg) is non-nil, insert the message in the buffer." (interactive (let ((fn (function-called-at-point)) (enable-recursive-minibuffers t) @@ -658,12 +664,18 @@ "Where is command: ") obarray 'fboundp t)) (list (if (equal val "") - fn (intern val))))) + fn (intern val)) + current-prefix-arg))) (let* ((keys (where-is-internal definition overriding-local-map nil nil)) - (keys1 (mapconcat 'key-description keys ", "))) - (if (> (length keys1) 0) - (message "%s is on %s" definition keys1) - (message "%s is not on any key" definition))) + (keys1 (mapconcat 'key-description keys ", ")) + (standard-output (if insert (current-buffer) t))) + (if insert + (if (> (length keys1) 0) + (princ (format "%s (%s)" keys1 definition)) + (princ (format "M-x %s RET" definition))) + (if (> (length keys1) 0) + (princ (format "%s is on %s" definition keys1)) + (princ (format "%s is not on any key" definition))))) nil) (defun locate-library (library &optional nosuffix path interactive-call)