;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
;; Author: Lynn Slater <lrs@indetech.com>
+;; Maintainer: FSF
;; Created: : Mon Oct 1 11:42:39 1990
;; Adapted-By: ESR
;; 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, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; 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.
;;; Commentary:
-;;
-;; This file supplies the macro make-help-screen which constructs
+
+;; This file supplies the macro make-help-screen which constructs
;; single character dispatching with browsable help such as that provided
;; by help-for-help. This can be used to make many modes easier to use; for
;; example, the Gnu Emacs Empire Tool uses this for every "nested" mode map
(let ((line-prompt
(substitute-command-keys (, help-line))))
(if three-step-help
- (message line-prompt))
+ (message "%s" line-prompt))
(let* ((help-screen (documentation (quote (, fname))))
;; We bind overriding-local-map for very small
;; sections, *excluding* where we switch buffers
(progn
(setcdr local-map (, helped-map))
(define-key local-map [t] 'undefined)
+ ;; Make the scroll bar keep working normally.
+ (define-key local-map [vertical-scroll-bar]
+ (lookup-key global-map [vertical-scroll-bar]))
(if three-step-help
(progn
(setq key (let ((overriding-local-map local-map))
prev-frame))
(setq new-frame (window-frame (selected-window))
config nil))
+ (setq buffer-read-only nil)
(erase-buffer)
(insert help-screen)
(help-mode)
(goto-char (point-min))
(while (or (memq char (append help-event-list
- (cons help-char '(?? ?\C-v ?\ ?\177 delete backspace ?\M-v))))
+ (cons help-char '(?? ?\C-v ?\ ?\177 delete backspace vertical-scroll-bar ?\M-v))))
(eq (car-safe char) 'switch-frame)
(equal key "\M-v"))
(condition-case nil
(format "Type one of the options listed%s: "
(if (pos-visible-in-window-p
(point-max))
- "" " or Space to scroll")))
- char (aref key 0))))))
+ "" ", or SPACE or DEL to scroll")))
+ char (aref key 0)))
+
+ ;; If this is a scroll bar command, just run it.
+ (when (eq char 'vertical-scroll-bar)
+ (command-execute (lookup-key local-map key) nil key)))))
+ ;; We don't need the prompt any more.
+ (message "")
;; Mouse clicks are not part of the help feature,
;; so reexecute them in the standard environment.
(if (listp char)