X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c07bb40b73856e3c40daf1dc6007ea13e3870912..b336bfcdf39f1e4d35bff4a7bd01d3b4bca8f516:/lisp/ehelp.el diff --git a/lisp/ehelp.el b/lisp/ehelp.el index 80242ff2b0..7de4fd0ba6 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el @@ -1,17 +1,19 @@ ;;; ehelp.el --- bindings for electric-help mode -;; Copyright (C) 1986, 1995, 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007 Free Software Foundation, Inc. +;; Copyright (C) 1986, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +;; Author: Richard Mlynarik +;; (according to ack.texi and authors.el) ;; Maintainer: FSF ;; Keywords: help, extensions ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,9 +21,7 @@ ;; GNU General Public License for more details. ;; 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., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -40,8 +40,6 @@ ;;; Code: (require 'electric) -(defvar electric-help-map () - "Keymap defining commands available in `electric-help-mode'.") (defvar electric-help-form-to-execute nil) @@ -61,8 +59,8 @@ :group 'electric-help) (put 'electric-help-undefined 'suppress-keymap t) -(if electric-help-map - () + +(defvar electric-help-map (let ((map (make-keymap))) ;; allow all non-self-inserting keys - search, scroll, etc, but ;; let M-x and C-x exit ehelp mode and retain buffer: @@ -93,12 +91,12 @@ (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) - - (setq electric-help-map map))) + map) + "Keymap defining commands available in `electric-help-mode'.") (defun electric-help-mode () "`with-electric-help' temporarily places its buffer in this mode. -\(On exit from `with-electric-help', the buffer is put in `default-major-mode'.)" +\(On exit from `with-electric-help', the buffer is put in default `major-mode'.)" (setq buffer-read-only t) (setq mode-name "Help") (setq major-mode 'help) @@ -119,13 +117,13 @@ erased before THUNK is called unless NOERASE is non-nil. THUNK will be called while BUFFER is current and with `standard-output' bound to the buffer specified by BUFFER. -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. +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. -After THUNK has been called, this function \"electrically\" pops up a window -in which BUFFER is displayed and allows the user to scroll through that buffer -in `electric-help-mode'. The window's height will be at least MINHEIGHT if -this value is non-nil. +After THUNK has been called, this function \"electrically\" pops up a +window in which BUFFER is displayed and allows the user to scroll +through that buffer in `electric-help-mode'. The window's height will +be at least MINHEIGHT if this value is non-nil. 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. @@ -133,7 +131,7 @@ 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'), and -BUFFER is put into `default-major-mode' (or `fundamental-mode')." +BUFFER is put into default `major-mode' (or `fundamental-mode')." (setq buffer (get-buffer-create (or buffer "*Help*"))) (let ((one (one-window-p t)) (config (current-window-configuration)) @@ -145,8 +143,7 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode')." (goto-char (window-start (selected-window)))) (let ((pop-up-windows t)) (pop-to-buffer buffer)) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (when (and minheight (< (window-height) minheight)) (enlarge-window (- minheight (window-height)))) (electric-help-mode) @@ -179,7 +176,7 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode')." ;; 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)) + (funcall (or (default-value 'major-mode) 'fundamental-mode)) (error nil)) (set-window-configuration config) @@ -294,7 +291,7 @@ will select it.)" (let ((name (or name "*Help*"))) (if (save-window-excursion ;; kludge-o-rama - (let* ((p (symbol-function 'print-help-return-message)) + (let* ((p (symbol-function 'help-print-return-message)) (b (get-buffer name)) (m (buffer-modified-p b))) (and b (not (get-buffer-window b)) @@ -324,20 +321,18 @@ will select it.)" ;;>> suspend updating of the tick in order to allow ;;>> things like momentary-string-display) (and b - (save-excursion - (set-buffer b) + (with-current-buffer b (set-buffer-modified-p t))) - (fset 'print-help-return-message 'ignore) + (fset 'help-print-return-message 'ignore) (call-interactively fun) (and (get-buffer name) (get-buffer-window (get-buffer name)) (or (not b) (not (eq b (get-buffer name))) (not (buffer-modified-p b))))) - (fset 'print-help-return-message p) + (fset 'help-print-return-message p) (and b (buffer-name b) - (save-excursion - (set-buffer b) + (with-current-buffer b (set-buffer-modified-p m)))))) (with-electric-help 'ignore name t)))) @@ -404,9 +399,7 @@ will select it.)" ;;;; ehelp-map -(defvar ehelp-map ()) -(if ehelp-map - nil +(defvar ehelp-map (let ((map (copy-keymap help-map))) (substitute-key-definition 'apropos 'electric-apropos map) (substitute-key-definition 'command-apropos 'electric-command-apropos map) @@ -417,8 +410,7 @@ will select it.)" (substitute-key-definition 'describe-variable 'electric-describe-variable map) (substitute-key-definition 'describe-bindings 'electric-describe-bindings map) (substitute-key-definition 'describe-syntax 'electric-describe-syntax map) - - (setq ehelp-map map))) + map)) ;;;###(autoload 'ehelp-command "ehelp" "Prefix command for ehelp." t 'keymap) (defalias 'ehelp-command ehelp-map) @@ -426,5 +418,5 @@ will select it.)" (provide 'ehelp) -;;; arch-tag: e0e3037f-42c0-433e-ba18-322c5d951f46 +;; arch-tag: e0e3037f-42c0-433e-ba18-322c5d951f46 ;;; ehelp.el ends here