Mercurial > emacs
changeset 31792:bad7093b5361
(electric-help): New defgroup.
(electric-help-shrink-window): New user-option.
(with-electric-help): Use it.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Wed, 20 Sep 2000 20:39:20 +0000 |
parents | 0ac4efb76ef6 |
children | 8ddefe8b533e |
files | lisp/ehelp.el |
diffstat | 1 files changed, 41 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ehelp.el Wed Sep 20 19:32:17 2000 +0000 +++ b/lisp/ehelp.el Wed Sep 20 20:39:20 2000 +0000 @@ -44,6 +44,16 @@ (defvar electric-help-form-to-execute nil) +(defgroup electric-help () + "Electric help facility." + :version "21.1" + :group 'help) + +(defcustom electric-help-shrink-window t + "If set, adjust help window sizes to buffer sizes when displaying help." + :type 'boolean + :group 'electric-help) + (put 'electric-help-undefined 'suppress-keymap t) (if electric-help-map () @@ -113,8 +123,8 @@ this value is non-nil. If THUNK returns nil, we display BUFFER starting at the top, and -shrink the window to fit. If THUNK returns non-nil, we don't do those -things. +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') @@ -126,48 +136,54 @@ (electric-help-form-to-execute nil)) (unwind-protect (save-excursion - (if one (goto-char (window-start (selected-window)))) + (when one + (goto-char (window-start (selected-window)))) (let ((pop-up-windows t)) (pop-to-buffer buffer)) (save-excursion (set-buffer buffer) - (if (and minheight (< (window-height) minheight)) - (enlarge-window (- minheight (window-height)))) + (when (and minheight (< (window-height) minheight)) + (enlarge-window (- minheight (window-height)))) (electric-help-mode) (setq buffer-read-only nil) - (or noerase - (erase-buffer))) + (unless noerase + (erase-buffer))) (let ((standard-output buffer)) - (if (not (funcall thunk)) - (progn - (set-buffer buffer) - (set-buffer-modified-p nil) - (goto-char (point-min)) - (if one (shrink-window-if-larger-than-buffer (selected-window)))))) + (unless (funcall thunk) + (set-buffer buffer) + (set-buffer-modified-p nil) + (goto-char (point-min)) + (when (and one electric-help-shrink-window) + (shrink-window-if-larger-than-buffer)))) (set-buffer buffer) (run-hooks 'electric-help-mode-hook) (setq buffer-read-only t) - (if (eq (car-safe (electric-help-command-loop)) - 'retain) + (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))) + (when (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) + + ;; 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 + ;; 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) - (if bury - (progn - ;;>> 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 - (bury-buffer buffer))) + (when bury + ;;>> 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 + (bury-buffer buffer)) (eval electric-help-form-to-execute)))) (defun electric-help-command-loop ()