X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/d05c87ac11567ca289e758759cb9c903ee7f113a..4601d7c4544636174f18e028b64f7b1e5a531275:/lisp/ehelp.el diff --git a/lisp/ehelp.el b/lisp/ehelp.el index 9bb48b1bbd..39f08d51f1 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el @@ -1,6 +1,7 @@ ;;; ehelp.el --- bindings for electric-help mode -;; Copyright (C) 1986, 1995 Free Software Foundation, Inc. +;; Copyright (C) 1986, 1995, 2000, 2001, 2002, 2003, 2004, +;; 2005, 2006 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: help, extensions @@ -19,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -54,6 +55,11 @@ :type 'boolean :group 'electric-help) +(defcustom electric-help-mode-hook nil + "Hook run by `with-electric-help' after initializing the buffer." + :type 'hook + :group 'electric-help) + (put 'electric-help-undefined 'suppress-keymap t) (if electric-help-map () @@ -80,11 +86,11 @@ (define-key map "<" 'beginning-of-buffer) (define-key map ">" 'end-of-buffer) ;(define-key map "\C-g" 'electric-help-exit) - (define-key map "q" 'electric-help-exit) (define-key map "Q" 'electric-help-exit) + (define-key map "q" 'electric-help-exit) ;;a better key than this? - (define-key map "r" 'electric-help-retain) (define-key map "R" 'electric-help-retain) + (define-key map "r" 'electric-help-retain) (define-key map "\ex" 'electric-help-execute-extended) (define-key map "\C-x" 'electric-help-ctrl-x-prefix) @@ -126,8 +132,8 @@ If THUNK returns nil, we display BUFFER starting at the top, and shrink the window to fit if `electric-help-shrink-window' is non-nil. If THUNK returns non-nil, we don't do those things. -When the user exits (with `electric-help-exit', or otherwise) the help -buffer's window disappears (i.e., we use `save-window-excursion') +When the user exits (with `electric-help-exit', or otherwise), the help +buffer's window disappears (i.e., we use `save-window-excursion'), and BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit." (setq buffer (get-buffer-create (or buffer "*Help*"))) (let ((one (one-window-p t)) @@ -170,16 +176,16 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit." ;; We should really get a usable *Help* buffer when retaining ;; the electric one with `r'. The problem is that a simple - ;; call to help-mode won't cut it; at least RET is vound wrong + ;; call to help-mode won't cut it; at least RET is bound wrong ;; afterwards. It's also not clear that `help-mode' is always ;; the right thing, maybe we should add an optional parameter. (condition-case () (funcall (or default-major-mode 'fundamental-mode)) (error nil)) - + (set-window-configuration config) (when bury - ;;>> Perhaps this shouldn't be done. + ;;>> Perhaps this shouldn't be done, ;; so that when we say "Press space to bury" we mean it (replace-buffer-in-windows buffer) ;; must do this outside of save-window-excursion @@ -191,26 +197,26 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit." (if (pos-visible-in-window-p (point-max)) (progn (message "%s" (substitute-command-keys "<<< Press Space to bury the help buffer, Press \\[electric-help-retain] to retain it >>>")) (if (equal (setq unread-command-events (list (read-event))) - '(?\ )) + '(?\s)) (progn (setq unread-command-events nil) (throw 'exit t))))) (let (up down both neither - (standard (and (eq (key-binding " ") + (standard (and (eq (key-binding " " nil t) 'scroll-up) - (eq (key-binding "\^?") + (eq (key-binding "\^?" nil t) 'scroll-down) - (eq (key-binding "q") + (eq (key-binding "q" nil t) 'electric-help-exit) - (eq (key-binding "r") + (eq (key-binding "r" nil t) 'electric-help-retain)))) (Electric-command-loop 'exit (function (lambda () - (sit-for 0) ;necessary if last command was end-of-buffer or - ;beginning-of-buffer - otherwise pos-visible-in-window-p + (sit-for 0) ;necessary if last command was end-of-buffer or + ;beginning-of-buffer - otherwise pos-visible-in-window-p ;will yield a wrong result. (let ((min (pos-visible-in-window-p (point-min))) - (max (pos-visible-in-window-p (point-max)))) + (max (pos-visible-in-window-p (1- (point-max))))) (cond (isearch-mode 'noprompt) ((and min max) (cond (standard "Press q to exit, r to retain ") @@ -267,7 +273,7 @@ will select it.)" (interactive) (error "%s is undefined -- Press %s to exit" (mapconcat 'single-key-description (this-command-keys) " ") - (if (eq (key-binding "q") 'electric-help-exit) + (if (eq (key-binding "q" nil t) 'electric-help-exit) "q" (substitute-command-keys "\\[electric-help-exit]")))) @@ -275,10 +281,10 @@ will select it.)" ;>>> this needs to be hairified (recursive help, anybody?) (defun electric-help-help () (interactive) - (if (and (eq (key-binding "q") 'electric-help-exit) - (eq (key-binding " ") 'scroll-up) - (eq (key-binding "\^?") 'scroll-down) - (eq (key-binding "r") 'electric-help-retain)) + (if (and (eq (key-binding "q" nil t) 'electric-help-exit) + (eq (key-binding " " nil t) 'scroll-up) + (eq (key-binding "\^?" nil t) 'scroll-down) + (eq (key-binding "r" nil t) 'electric-help-retain)) (message "SPC scrolls up, DEL scrolls down, q exits burying help buffer, r exits") (message "%s" (substitute-command-keys "\\[scroll-up] scrolls up, \\[scroll-down] scrolls down, \\[electric-help-exit] exits burying help buffer, \\[electric-help-retain] exits"))) (sit-for 2)) @@ -338,7 +344,7 @@ will select it.)" -;; This is to be bound to M-x in ehelp mode. Retains ehelp buffer and then +;; This is to be bound to M-x in ehelp mode. Retains ehelp buffer and then ;; continues with execute-extended-command. (defun electric-help-execute-extended (prefixarg) (interactive "p") @@ -402,7 +408,7 @@ will select it.)" (defvar ehelp-map ()) (if ehelp-map nil - (let ((map (copy-keymap help-map))) + (let ((map (copy-keymap help-map))) (substitute-key-definition 'apropos 'electric-apropos map) (substitute-key-definition 'command-apropos 'electric-command-apropos map) (substitute-key-definition 'describe-key 'electric-describe-key map) @@ -413,9 +419,13 @@ will select it.)" (substitute-key-definition 'describe-bindings 'electric-describe-bindings map) (substitute-key-definition 'describe-syntax 'electric-describe-syntax map) - (setq ehelp-map map) - (fset 'ehelp-command map))) + (setq ehelp-map map))) + +;;;###(autoload 'ehelp-command "ehelp" "Prefix command for ehelp." t 'keymap) +(defalias 'ehelp-command ehelp-map) +(put 'ehelp-command 'documentation "Prefix command for ehelp.") -(provide 'ehelp) +(provide 'ehelp) +;;; arch-tag: e0e3037f-42c0-433e-ba18-322c5d951f46 ;;; ehelp.el ends here