annotate lisp/help-macro.el @ 69478:e8bb5df2ba7a

Add index entries around each paragraph rather than depend on entries from beginning of node. Doing so ensures that index entries are less likely to be forgotten if text is cut and pasted, and are necessary anyway if the references are on a separate page. It seems that makeinfo is now (v. 4.8) only producing one index entry per node, so there is no longer any excuse not to. Use subheading instead of heading. The incorrect use of heading produced very large fonts in Info--as large as the main heading. (From Bill Wohler): MH-E never did appear in Emacs 21--MH-E versions 6 and 7 appeared *around* the time of these Emacs releases.
author Bill Wohler <wohler@newt.com>
date Wed, 15 Mar 2006 00:26:12 +0000
parents 3bd95f4f2941
children 99a4797cbaf6 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 25298
diff changeset
1 ;;; help-macro.el --- makes command line help such as help-for-help
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1993, 1994, 2002, 2003, 2004,
68651
3bd95f4f2941 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 67558
diff changeset
4 ;; 2005, 2006 Free Software Foundation, Inc.
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
5
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6 ;; Author: Lynn Slater <lrs@indetech.com>
17976
852464ce5d6a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14316
diff changeset
7 ;; Maintainer: FSF
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 25298
diff changeset
8 ;; Created: Mon Oct 1 11:42:39 1990
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 ;; Adapted-By: ESR
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; any later version.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 59521
diff changeset
25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 59521
diff changeset
26 ;; Boston, MA 02110-1301, USA.
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28 ;;; Commentary:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
29
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
30 ;; This file supplies the macro make-help-screen which constructs
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; single character dispatching with browsable help such as that provided
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 ;; by help-for-help. This can be used to make many modes easier to use; for
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 25298
diff changeset
33 ;; example, the GNU Emacs Empire Tool uses this for every "nested" mode map
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
34 ;; called from the main mode map.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35
2530
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
diff changeset
36 ;; The name of this package was changed from help-screen.el to
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
diff changeset
37 ;; help-macro.el in order to fit in a 14-character limit.
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
diff changeset
38
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
39 ;;-> *********************** Example of use *********************************
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 ;;->(make-help-screen help-for-empire-redistribute-map
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 ;;-> "c:civ m:mil p:population f:food ?"
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 ;;-> "You have discovered the GEET redistribution commands
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44 ;;-> From here, you can use the following options:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 ;;->c Redistribute civs from overfull sectors into connected underfull ones
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 ;;-> The functions typically named by empire-ideal-civ-fcn control
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
48 ;;-> based in part on empire-sector-civ-threshold
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 ;;->m Redistribute military using levels given by empire-ideal-mil-fcn
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;;->p Redistribute excess population to highways for max pop growth
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;;-> Excess is any sector so full babies will not be born.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 ;;->f Even out food on highways to highway min and leave levels
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;-> This is good to pump max food to all warehouses/dist pts
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 ;;->Use \\[help-for-empire-redistribute-map] for help on redistribution.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 ;;->Use \\[help-for-empire-extract-map] for help on data extraction.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58 ;;->Please use \\[describe-key] to find out more about any of the other keys."
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 ;;-> empire-shell-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61 ;;-> (define-key c-mp "\C-h" 'help-for-empire-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 ;;-> (define-key c-mp help-character 'help-for-empire-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 ;;; Change Log:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;;
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
66 ;; 22-Jan-1991 Lynn Slater x2048
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 ;; Last Modified: Mon Oct 1 11:43:52 1990 #3 (Lynn Slater)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;; documented better
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70 ;;; Code:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72 (require 'backquote)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
74 ;;;###autoload
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
75 (defcustom three-step-help nil
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
76 "*Non-nil means give more info about Help command in three steps.
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
77 The three steps are simple prompt, prompt with all options,
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
78 and window listing and describing the options.
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
79 A value of nil means skip the middle step, so that
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
80 \\[help-command] \\[help-command] gives the window that lists the options."
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
81 :type 'boolean
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
82 :group 'help)
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
83
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
84 (defmacro make-help-screen (fname help-line help-text helped-map)
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
85 "Construct help-menu function name FNAME.
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
86 When invoked, FNAME shows HELP-LINE and reads a command using HELPED-MAP.
8709
258aaa4b66ed (make-help-screen): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 8661
diff changeset
87 If the command is the help character, FNAME displays HELP-TEXT
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
88 and continues trying to read a command using HELPED-MAP.
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
89 If HELP-TEXT contains the sequence `%THIS-KEY%', that is replaced
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
90 with the key sequence that invoked FNAME.
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
91 When FNAME finally does get a command, it executes that command
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
92 and then returns."
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
93 (let ((doc-fn (intern (concat (symbol-name fname) "-doc"))))
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
94 `(progn
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
95 (defun ,doc-fn () ,help-text)
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
96 (defun ,fname ()
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
97 "Help command."
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
98 (interactive)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99 (let ((line-prompt
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
100 (substitute-command-keys ,help-line)))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
101 (if three-step-help
14316
d3b19c9e0bac (make-help-screen): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
102 (message "%s" line-prompt))
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
103 (let* ((help-screen (documentation (quote ,doc-fn)))
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
104 ;; We bind overriding-local-map for very small
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
105 ;; sections, *excluding* where we switch buffers
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
106 ;; and where we execute the chosen help command.
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
107 (local-map (make-sparse-keymap))
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
108 (minor-mode-map-alist nil)
8260
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
109 (prev-frame (selected-frame))
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
110 config new-frame key char)
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
111 (if (string-match "%THIS-KEY%" help-screen)
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
112 (setq help-screen
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
113 (replace-match (key-description (substring (this-command-keys) 0 -1))
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
114 t t help-screen)))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
115 (unwind-protect
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
116 (progn
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
117 (setcdr local-map ,helped-map)
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
118 (define-key local-map [t] 'undefined)
20029
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
119 ;; Make the scroll bar keep working normally.
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
120 (define-key local-map [vertical-scroll-bar]
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
121 (lookup-key global-map [vertical-scroll-bar]))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
122 (if three-step-help
11424
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
123 (progn
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
124 (setq key (let ((overriding-local-map local-map))
59521
0a0437db07fc Whitespace change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
125 (read-key-sequence nil)))
11424
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
126 ;; Make the HELP key translate to C-h.
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
127 (if (lookup-key function-key-map key)
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
128 (setq key (lookup-key function-key-map key)))
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
129 (setq char (aref key 0)))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
130 (setq char ??))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
131 (if (or (eq char ??) (eq char help-char)
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
132 (memq char help-event-list))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
133 (progn
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
134 (setq config (current-window-configuration))
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
135 (switch-to-buffer-other-window "*Help*")
8661
7615ef8778de (make-help-screen): Don't call window-frame in a non-multi-frame Emacs.
Richard M. Stallman <rms@gnu.org>
parents: 8260
diff changeset
136 (and (fboundp 'make-frame)
7615ef8778de (make-help-screen): Don't call window-frame in a non-multi-frame Emacs.
Richard M. Stallman <rms@gnu.org>
parents: 8260
diff changeset
137 (not (eq (window-frame (selected-window))
7615ef8778de (make-help-screen): Don't call window-frame in a non-multi-frame Emacs.
Richard M. Stallman <rms@gnu.org>
parents: 8260
diff changeset
138 prev-frame))
7615ef8778de (make-help-screen): Don't call window-frame in a non-multi-frame Emacs.
Richard M. Stallman <rms@gnu.org>
parents: 8260
diff changeset
139 (setq new-frame (window-frame (selected-window))
7615ef8778de (make-help-screen): Don't call window-frame in a non-multi-frame Emacs.
Richard M. Stallman <rms@gnu.org>
parents: 8260
diff changeset
140 config nil))
18449
b32c3c07962c (make-help-screen): Clear buffer-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
141 (setq buffer-read-only nil)
67558
3e8f8913897e (make-help-screen): Bind `inhibit-read-only' to t
Juri Linkov <juri@jurta.org>
parents: 64762
diff changeset
142 (let ((inhibit-read-only t))
3e8f8913897e (make-help-screen): Bind `inhibit-read-only' to t
Juri Linkov <juri@jurta.org>
parents: 64762
diff changeset
143 (erase-buffer)
3e8f8913897e (make-help-screen): Bind `inhibit-read-only' to t
Juri Linkov <juri@jurta.org>
parents: 64762
diff changeset
144 (insert help-screen))
9855
9caa80b065fc (make-help-screen): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8709
diff changeset
145 (help-mode)
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
146 (goto-char (point-min))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
147 (while (or (memq char (append help-event-list
49838
a5a1a55693ed (make-help-screen): Fix character constant.
Juanma Barranquero <lekktu@gmail.com>
parents: 38412
diff changeset
148 (cons help-char '(?? ?\C-v ?\s ?\177 delete backspace vertical-scroll-bar ?\M-v))))
8260
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
149 (eq (car-safe char) 'switch-frame)
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
150 (equal key "\M-v"))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
151 (condition-case nil
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
152 (progn
8260
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
153 (if (eq (car-safe char) 'switch-frame)
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
154 (handle-switch-frame char))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
155 (if (memq char '(?\C-v ?\ ))
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
156 (scroll-up))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
157 (if (or (memq char '(?\177 ?\M-v
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
158 delete backspace))
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
159 (equal key "\M-v"))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
160 (scroll-down)))
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
161 (error nil))
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
162 (let ((cursor-in-echo-area t)
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
163 (overriding-local-map local-map))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
164 (setq key (read-key-sequence
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
165 (format "Type one of the options listed%s: "
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
166 (if (pos-visible-in-window-p
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
167 (point-max))
21120
116fb3c03737 (make-help-screen): Mention DEL in the prompt.
Richard M. Stallman <rms@gnu.org>
parents: 20029
diff changeset
168 "" ", or SPACE or DEL to scroll")))
20029
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
169 char (aref key 0)))
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
170
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
171 ;; If this is a scroll bar command, just run it.
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
172 (when (eq char 'vertical-scroll-bar)
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
173 (command-execute (lookup-key local-map key) nil key)))))
18656
52a3dec2b6cc (make-help-screen): Clear the prompt when we get a real command.
Richard M. Stallman <rms@gnu.org>
parents: 18449
diff changeset
174 ;; We don't need the prompt any more.
52a3dec2b6cc (make-help-screen): Clear the prompt when we get a real command.
Richard M. Stallman <rms@gnu.org>
parents: 18449
diff changeset
175 (message "")
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
176 ;; Mouse clicks are not part of the help feature,
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
177 ;; so reexecute them in the standard environment.
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
178 (if (listp char)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
179 (setq unread-command-events
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
180 (cons char unread-command-events)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
181 config nil)
10477
b0ac61aef336 (make-help-screen): Use *only* local-map to look up keys.
Richard M. Stallman <rms@gnu.org>
parents: 9855
diff changeset
182 (let ((defn (lookup-key local-map key)))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
183 (if defn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
184 (progn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
185 (if config
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
186 (progn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
187 (set-window-configuration config)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
188 (setq config nil)))
8260
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
189 (if new-frame
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
190 (progn (iconify-frame new-frame)
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
191 (setq new-frame nil)))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
192 (call-interactively defn))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
193 (ding)))))
8260
1ad35b4d9128 (make-help-screen): Handle case where *Help* comes up in a separate frame.
Richard M. Stallman <rms@gnu.org>
parents: 8242
diff changeset
194 (if new-frame (iconify-frame new-frame))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
195 (if config
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
196 (set-window-configuration config))))))
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
197 )))
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
198
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
199 (provide 'help-macro)
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
200
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49838
diff changeset
201 ;;; arch-tag: 59fee949-1686-485a-8a05-83418073e257
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
202 ;;; help-macro.el ends here