changeset 68795:687ce2ace7b8

(describe-key-briefly, describe-key): Populate yank-menu if empty.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Feb 2006 16:02:38 +0000
parents eb282d2484e6
children 07772c811eb0
files lisp/help.el
diffstat 1 files changed, 28 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/help.el	Sat Feb 11 13:56:14 2006 +0000
+++ b/lisp/help.el	Sat Feb 11 16:02:38 2006 +0000
@@ -564,13 +564,24 @@
 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 clicking on disabled items and buttons."
+temporarily enables it to allow getting help on disabled items and buttons."
   (interactive)
-  (let ((enable-disabled-menus-and-buttons t))
+  (let ((enable-disabled-menus-and-buttons t)
+	(save-yank-menu))
     (if key
 	;; Non-interactive invocation
 	(describe-key-briefly-internal key insert untranslated)
-      (call-interactively 'describe-key-briefly-internal))))
+      ;; 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.
@@ -629,13 +640,24 @@
 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 clicking on disabled items and buttons."
+temporarily enables it to allow getting help on disabled items and buttons."
   (interactive)
-  (let ((enable-disabled-menus-and-buttons t))
+  (let ((enable-disabled-menus-and-buttons t)
+	(save-yank-menu))
     (if key
 	;; Non-interactive invocation
 	(describe-key-internal key untranslated up-event)
-      (call-interactively 'describe-key-internal))))
+      ;; 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.