annotate lisp/help-macro.el @ 14789:d68b71228abd

(bibtex-pop): New generic function which unifies the functionality of bibtex-pop-previous and bibtex-pop-next. Now, bibtex-pop moves to the end of field after the pop. Concatenated strings are now handled correctly. Delimiters are not added to non-delimited entries. Changed occurences of bibtex-text-in-cfield to bibtex-text-in-field. (bibtex-pop-previous, bibtex-pop-next): Call bibtex-pop. (bibtex-complete-string): Fixed bug that removed delimiters around the following field if current field is already undelimited on completion. (bibtex-complete-string, bibtex-remove-double-quotes-or-braces): Only remove delimiters if field text is not concatenated. (bibtex-font-lock-keywords): Use the same regexps used in all other places of bibtex.el to parse the buffer. (bibtex-mode): Changed the definition of font-lock-defaults, so that quote-delimited entries aren't fontified as strings anymore. (bibtex-parse-keys): Changed the regexp used for finding crossref entries. (bibtex-field-const, bibtex-reference-key): Fixed the regexp to match more of the characters allowed here by BibTeX/LaTeX. (bibtex-field-name): Made it less restrictive. (bibtex-field-string): Changed so that quote-delimited entries with quotes inside aren't a problem anymore. Changed nesting level of braces in entries to support three inner braces. (bibtex-validate-buffer): By giving an optional argument, the user can now let it not validate the whole buffer, but only the portion starting at point. Small modification in strategy used to find next entry. (bibtex-print-help-message): Ignore case in field name when searching for help text. (bibtex-submit-bug-report): New function.
author Richard M. Stallman <rms@gnu.org>
date Fri, 08 Mar 1996 17:42:30 +0000
parents d3b19c9e0bac
children 852464ce5d6a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2530
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
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
7298
4fd40bd394fe Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 6078
diff changeset
3 ;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
4
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
5 ;; Author: Lynn Slater <lrs@indetech.com>
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6 ;; Created: : Mon Oct 1 11:42:39 1990
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7 ;; Adapted-By: ESR
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
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 ;; 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
12 ;; 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
13 ;; the Free Software Foundation; either version 2, or (at your option)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; any later version.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; 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
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; 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
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
24 ;; Boston, MA 02111-1307, USA.
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26 ;;; Commentary:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
27
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
28 ;; This file supplies the macro make-help-screen which constructs
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
29 ;; single character dispatching with browsable help such as that provided
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
30 ;; by help-for-help. This can be used to make many modes easier to use; for
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; example, the Gnu Emacs Empire Tool uses this for every "nested" mode map
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 ;; called from the main mode map.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
33
2530
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
diff changeset
34 ;; 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
35 ;; 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
36
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37 ;;-> *********************** Example of use *********************************
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
39 ;;->(make-help-screen help-for-empire-redistribute-map
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40 ;;-> "c:civ m:mil p:population f:food ?"
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 ;;-> "You have discovered the GEET redistribution commands
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 ;;-> From here, you can use the following options:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44 ;;->c Redistribute civs from overfull sectors into connected underfull ones
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;;-> The functions typically named by empire-ideal-civ-fcn control
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 ;;-> based in part on empire-sector-civ-threshold
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 ;;->m Redistribute military using levels given by empire-ideal-mil-fcn
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48 ;;->p Redistribute excess population to highways for max pop growth
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 ;;-> Excess is any sector so full babies will not be born.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;;->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
51 ;;-> 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
52 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54 ;;->Use \\[help-for-empire-redistribute-map] for help on redistribution.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55 ;;->Use \\[help-for-empire-extract-map] for help on data extraction.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 ;;->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
57 ;;-> empire-shell-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 ;;-> (define-key c-mp "\C-h" 'help-for-empire-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60 ;;-> (define-key c-mp help-character 'help-for-empire-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 ;;; Change Log:
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 ;; 22-Jan-1991 Lynn Slater x2048
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;; 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
66 ;; documented better
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;;; Code:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69
2696
479c78c63f89 Provide help-macro, not help-screen.
Richard M. Stallman <rms@gnu.org>
parents: 2530
diff changeset
70 (provide 'help-macro)
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 (require 'backquote)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
73 ;;;###autoload
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
74 (defvar three-step-help nil
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
75 "*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
76 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
77 and window listing and describing the options.
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
78 A value of nil means skip the middle step, so that
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
79 \\[help-command] \\[help-command] gives the window that lists the options.")
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
80
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81 (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
82 "Construct help-menu function name FNAME.
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
83 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
84 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
85 and continues trying to read a command using HELPED-MAP.
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
86 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
87 and then returns."
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
88 (` (defun (, fname) ()
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
89 (, help-text)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
90 (interactive)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
91 (let ((line-prompt
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
92 (substitute-command-keys (, help-line))))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
93 (if three-step-help
14316
d3b19c9e0bac (make-help-screen): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
94 (message "%s" line-prompt))
6078
81290a55365b (make-help-screen): Initialize help-screen before changing the keymap.
Karl Heuer <kwzh@gnu.org>
parents: 5741
diff changeset
95 (let* ((help-screen (documentation (quote (, fname))))
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
96 ;; 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
97 ;; sections, *excluding* where we switch buffers
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
98 ;; 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
99 (local-map (make-sparse-keymap))
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
100 (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
101 (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
102 config new-frame key char)
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
103 (unwind-protect
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
104 (progn
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
105 (setcdr local-map (, helped-map))
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
106 (define-key local-map [t] 'undefined)
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
107 (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
108 (progn
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
109 (setq key (let ((overriding-local-map local-map))
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
110 (read-key-sequence nil)))
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
111 ;; 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
112 (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
113 (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
114 (setq char (aref key 0)))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
115 (setq char ??))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
116 (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
117 (memq char help-event-list))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
118 (progn
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
119 (setq config (current-window-configuration))
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
120 (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
121 (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
122 (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
123 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
124 (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
125 config nil))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
126 (erase-buffer)
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
127 (insert help-screen)
9855
9caa80b065fc (make-help-screen): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8709
diff changeset
128 (help-mode)
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
129 (goto-char (point-min))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
130 (while (or (memq char (append help-event-list
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
131 (cons help-char '(?? ?\C-v ?\ ?\177 delete backspace ?\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
132 (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
133 (equal key "\M-v"))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
134 (condition-case nil
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
135 (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
136 (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
137 (handle-switch-frame char))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
138 (if (memq char '(?\C-v ?\ ))
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
139 (scroll-up))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
140 (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
141 delete backspace))
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
142 (equal key "\M-v"))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
143 (scroll-down)))
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
144 (error nil))
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
145 (let ((cursor-in-echo-area t)
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
146 (overriding-local-map local-map))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
147 (setq key (read-key-sequence
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
148 (format "Type one of the options listed%s: "
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
149 (if (pos-visible-in-window-p
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
150 (point-max))
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
151 "" " or Space to scroll")))
5741
ea9f55ec6ee9 (make-help-screen): Remove debugging code.
Karl Heuer <kwzh@gnu.org>
parents: 5679
diff changeset
152 char (aref key 0))))))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
153 ;; 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
154 ;; 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
155 (if (listp char)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
156 (setq unread-command-events
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
157 (cons char unread-command-events)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
158 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
159 (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
160 (if defn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
161 (progn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
162 (if config
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
163 (progn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
164 (set-window-configuration config)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
165 (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
166 (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
167 (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
168 (setq new-frame nil)))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
169 (call-interactively defn))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
170 (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
171 (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
172 (if config
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
173 (set-window-configuration config))))))
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
174 ))
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
175
2530
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
diff changeset
176 ;;; help-macro.el
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
177