X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/e024a2f4ab5c253fe040d3fd2edf7be902e21823..a2236dc611360edfb8f5f891b4e63d586793f38f:/lisp/ehelp.el diff --git a/lisp/ehelp.el b/lisp/ehelp.el index 5964157d74..3656521f68 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el @@ -88,7 +88,7 @@ (setq major-mode 'help) (setq mode-line-buffer-identification '(" Help: %b")) (use-local-map electric-help-map) - (setq mouse-leave-buffer-hook '(electric-help-retain)) + (add-hook 'mouse-leave-buffer-hook 'electric-help-retain) (view-mode -1) ;; this is done below in with-electric-help ;(run-hooks 'electric-help-mode-hook) @@ -150,7 +150,10 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit." (if (eq (car-safe (electric-help-command-loop)) 'retain) (setq config (current-window-configuration)) - (setq bury t))) + (setq bury t)) + ;; Remove the hook. + (if (memq 'electric-help-retain mouse-leave-buffer-hook) + (remove-hook 'mouse-leave-buffer-hook 'electric-help-retain))) (message "") (set-buffer buffer) (setq buffer-read-only nil) @@ -221,9 +224,15 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit." ; (scroll-up arg))) (defun electric-help-exit () - ">>>Doc" + "Exit `electric-help', restoring the previous window/buffer configuration. +\(The *Help* buffer will be buried.)" (interactive) - (throw 'exit t)) + ;; Make sure that we don't throw twice, even if two events cause + ;; calling this function: + (if (memq 'electric-help-retain mouse-leave-buffer-hook) + (progn + (remove-hook 'mouse-leave-buffer-hook 'electric-help-retain) + (throw 'exit t)))) (defun electric-help-retain () "Exit `electric-help', retaining the current window/buffer configuration. @@ -232,10 +241,10 @@ will select it.)" (interactive) ;; Make sure that we don't throw twice, even if two events cause ;; calling this function: - (if mouse-leave-buffer-hook - (progn - (setq mouse-leave-buffer-hook nil) - (throw 'exit '(retain))))) + (if (memq 'electric-help-retain mouse-leave-buffer-hook) + (progn + (remove-hook 'mouse-leave-buffer-hook 'electric-help-retain) + (throw 'exit '(retain))))) (defun electric-help-undefined () @@ -260,8 +269,8 @@ will select it.)" ;;;###autoload -(defun electric-helpify (fun) - (let ((name "*Help*")) +(defun electric-helpify (fun &optional name) + (let ((name (or name "*Help*"))) (if (save-window-excursion ;; kludge-o-rama (let* ((p (symbol-function 'print-help-return-message)) @@ -363,7 +372,7 @@ will select it.)" (defun electric-command-apropos () (interactive) - (electric-helpify 'command-apropos)) + (electric-helpify 'command-apropos "*Apropos*")) ;(define-key help-map "a" 'electric-command-apropos)