summaryrefslogtreecommitdiff
path: root/lisp/help.el
diff options
context:
space:
mode:
authorKaroly Lorentey <lorentey@elte.hu>2006-02-12 00:15:44 +0000
committerKaroly Lorentey <lorentey@elte.hu>2006-02-12 00:15:44 +0000
commit1913a2b35da45eeeb71ef851975be7d57c11de78 (patch)
tree6cd59883fb931999da5b62c03b321ade6f77e66e /lisp/help.el
parenta5805c9d0240fab504f2a3e32db6449392005fb6 (diff)
parenta528b71e55b2b244a5dd35318713ccb20398cbbf (diff)
downloademacs-1913a2b35da45eeeb71ef851975be7d57c11de78.tar.gz
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-49 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-50 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-51 Make constrain-to-field notice overlays * emacs@sv.gnu.org/emacs--devo--0--patch-52 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-53 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-54 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-55 Merge from erc--emacs--0 * emacs@sv.gnu.org/emacs--devo--0--patch-56 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-57 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-58 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-59 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-60 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-61 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-62 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-63 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-64 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-65 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-66 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-67 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-68 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-69 rcirc: Add flexible response formatting; Add nick abbrevs * emacs@sv.gnu.org/emacs--devo--0--patch-70 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-71 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-72 Update from CVS: man/dired.texi (Tumme): More tumme documentation. * emacs@sv.gnu.org/gnus--rel--5.10--patch-18 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-19 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-20 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-21 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-22 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-23 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-24 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-25 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-26 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-27 Update from CVS: lisp/gnus.el: Remove bogus comment. * emacs@sv.gnu.org/gnus--rel--5.10--patch-28 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-29 Add sendmail.el and smptmail.el from Emacs tree to contrib/ git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-508
Diffstat (limited to 'lisp/help.el')
-rw-r--r--lisp/help.el68
1 files changed, 63 insertions, 5 deletions
diff --git a/lisp/help.el b/lisp/help.el
index 3b78194b6a3..bea404f5112 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1,7 +1,7 @@
;;; help.el --- help commands for Emacs
;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005 Free Software Foundation, Inc.
+;; 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help, internal
@@ -556,7 +556,34 @@ or `keymap' property, return the binding of KEY in the string's keymap."
string
(format "%s (translated from %s)" string otherstring))))))
-(defun describe-key-briefly (key &optional insert untranslated)
+(defun describe-key-briefly (&optional key insert untranslated)
+ "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.
+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.
+
+If KEY is a menu item or a tool-bar button that is disabled, this command
+temporarily enables it to allow getting help on disabled items and buttons."
+ (interactive)
+ (let ((enable-disabled-menus-and-buttons t)
+ (save-yank-menu))
+ (if key
+ ;; Non-interactive invocation
+ (describe-key-briefly-internal key insert untranslated)
+ ;; If yank-menu is empty, populate it temporarily, so that
+ ;; "Select and Paste" menu can generate a complete event
+ (if (null (cdr yank-menu))
+ (unwind-protect
+ (progn
+ (setq save-yank-menu (copy-sequence yank-menu))
+ (menu-bar-update-yank-menu "(any string)" nil)
+ (call-interactively 'describe-key-briefly-internal))
+ (progn (setq yank-menu (copy-sequence save-yank-menu))
+ (fset 'yank-menu (cons 'keymap yank-menu))))
+ (call-interactively 'describe-key-briefly-internal)))))
+
+(defun describe-key-briefly-internal (key &optional insert untranslated)
"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.
If non-nil UNTRANSLATED is a vector of the untranslated events.
@@ -601,7 +628,38 @@ the last key hit are used."
key-desc
(if (symbolp defn) defn (prin1-to-string defn)))))))))
-(defun describe-key (key &optional untranslated up-event)
+(defun describe-key (&optional key untranslated up-event)
+ "Display documentation of the function invoked by KEY.
+KEY can be any kind of a key sequence; it can include keyboard events,
+mouse events, and/or menu events. When calling from a program,
+pass KEY as a string or a vector.
+
+If non-nil, UNTRANSLATED is a vector of the corresponding untranslated events.
+It can also be a number, in which case the untranslated events from
+the last key sequence entered are used.
+UP-EVENT is the up-event that was discarded by reading KEY, or nil.
+
+If KEY is a menu item or a tool-bar button that is disabled, this command
+temporarily enables it to allow getting help on disabled items and buttons."
+ (interactive)
+ (let ((enable-disabled-menus-and-buttons t)
+ (save-yank-menu))
+ (if key
+ ;; Non-interactive invocation
+ (describe-key-internal key untranslated up-event)
+ ;; If yank-menu is empty, populate it temporarily, so that
+ ;; "Select and Paste" menu can generate a complete event
+ (if (null (cdr yank-menu))
+ (unwind-protect
+ (progn
+ (setq save-yank-menu (copy-sequence yank-menu))
+ (menu-bar-update-yank-menu "(any string)" nil)
+ (call-interactively 'describe-key-internal))
+ (progn (setq yank-menu (copy-sequence save-yank-menu))
+ (fset 'yank-menu (cons 'keymap yank-menu))))
+ (call-interactively 'describe-key-internal)))))
+
+(defun describe-key-internal (key &optional untranslated up-event)
"Display documentation of the function invoked by KEY.
KEY can be any kind of a key sequence; it can include keyboard events,
mouse events, and/or menu events. When calling from a program,
@@ -609,8 +667,8 @@ pass KEY as a string or a vector.
If non-nil, UNTRANSLATED is a vector of the corresponding untranslated events.
It can also be a number, in which case the untranslated events from
-the last key sequence entered are used."
- ;; UP-EVENT is the up-event that was discarded by reading KEY, or nil.
+the last key sequence entered are used.
+UP-EVENT is the up-event that was discarded by reading KEY, or nil."
(interactive "kDescribe key (or click or menu item): \np\nU")
(if (numberp untranslated)
(setq untranslated (this-single-command-raw-keys)))