annotate lisp/help-macro.el @ 49506:ac9e2eeeb03d

New format of AUTHORS file; list each author name once followed by contributed and changed files. Improve selection of entries to include in list, and generate list of unrecognized entries indicating syntax errors in ChangeLog files. (authors-coding-system): New variable. (authors-many-files): Update doc string. (authors-aliases): Change format. Now one entry with multiple aliases per author. (authors-valid-file-names, authors-renamed-files-alist) (authors-renamed-files-regexps): New variables. (authors-canonical-file-name): New function. Validates that file exists or occurs in one of the above lists. Record unrecognized file names in global authors-invalid-file-names list. (authors-add): Change to record per-change counts. (authors-canonical-author-name): Handle new format of authors-aliases list. (authors-scan-change-log): Rename FILE arg to LOG-FILE. Change doc string to describe new entry format. Only add author entries for valid file names. (authors-print): Replace by authors-add-to-author-list. (authors-add-to-author-list): New function which reorders per-file entries and adds them to global authors-author-list. (authors): Instead of authors-print to insert in *Authors* buffer, use authors-add-to-author-list to reorder the list and then insert result in *Authors* buffer with new format. Generate *Authors Errors* compilation-mode buffer listing unrecognized ChangeLog entries.
author Kim F. Storm <storm@cua.dk>
date Wed, 29 Jan 2003 00:13:11 +0000
parents 253f761ad37b
children a5a1a55693ed d7ddb3e565de
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
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>
17976
852464ce5d6a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14316
diff changeset
6 ;; 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
7 ;; Created: Mon Oct 1 11:42:39 1990
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8 ;; Adapted-By: ESR
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; 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
13 ;; 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
14 ;; the Free Software Foundation; either version 2, or (at your option)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; any later version.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; 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
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; 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
23 ;; 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
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
25 ;; Boston, MA 02111-1307, USA.
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27 ;;; Commentary:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
28
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12423
diff changeset
29 ;; This file supplies the macro make-help-screen which constructs
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
30 ;; single character dispatching with browsable help such as that provided
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; 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
32 ;; 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
33 ;; called from the main mode map.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
34
2530
1e1a30d5d523 Name changed to fit in a 14-character limit.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2456
diff changeset
35 ;; 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
36 ;; 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
37
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38 ;;-> *********************** Example of use *********************************
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
39
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40 ;;->(make-help-screen help-for-empire-redistribute-map
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 ;;-> "c:civ m:mil p:population f:food ?"
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 ;;-> "You have discovered the GEET redistribution commands
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 ;;-> From here, you can use the following options:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44 ;;->
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;;->c Redistribute civs from overfull sectors into connected underfull ones
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 ;;-> 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
47 ;;-> based in part on empire-sector-civ-threshold
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48 ;;->m Redistribute military using levels given by empire-ideal-mil-fcn
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 ;;->p Redistribute excess population to highways for max pop growth
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;;-> Excess is any sector so full babies will not be born.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;;->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
52 ;;-> 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
53 ;;->
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 ;;->Use \\[help-for-empire-redistribute-map] for help on redistribution.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 ;;->Use \\[help-for-empire-extract-map] for help on data extraction.
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 ;;->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
58 ;;-> empire-shell-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60 ;;-> (define-key c-mp "\C-h" 'help-for-empire-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61 ;;-> (define-key c-mp help-character 'help-for-empire-redistribute-map)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 ;;; Change Log:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 ;;
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
65 ;; 22-Jan-1991 Lynn Slater x2048
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66 ;; 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
67 ;; documented better
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 ;;; Code:
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70
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
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
74 (defcustom three-step-help nil
5679
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
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
79 \\[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
80 :type 'boolean
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
81 :group 'help)
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
82
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
83 (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
84 "Construct help-menu function name FNAME.
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
85 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
86 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
87 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
88 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
89 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
90 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
91 and then returns."
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
92 (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
93 `(progn
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
94 (defun ,doc-fn () ,help-text)
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
95 (defun ,fname ()
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
96 "Help command."
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
97 (interactive)
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
98 (let ((line-prompt
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
99 (substitute-command-keys ,help-line)))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
100 (if three-step-help
14316
d3b19c9e0bac (make-help-screen): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
101 (message "%s" line-prompt))
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
102 (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
103 ;; 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
104 ;; sections, *excluding* where we switch buffers
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
105 ;; 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
106 (local-map (make-sparse-keymap))
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
107 (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
108 (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
109 config new-frame key char)
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
110 (if (string-match "%THIS-KEY%" help-screen)
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
111 (setq help-screen
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
112 (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
113 t t help-screen)))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
114 (unwind-protect
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
115 (progn
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
116 (setcdr local-map ,helped-map)
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
117 (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
118 ;; 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
119 (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
120 (lookup-key global-map [vertical-scroll-bar]))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
121 (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
122 (progn
29493ce2d1ca (make-help-screen): Explicitly translate key thru function-key-map.
Richard M. Stallman <rms@gnu.org>
parents: 10478
diff changeset
123 (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
124 (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
125 ;; 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
126 (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
127 (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
128 (setq char (aref key 0)))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
129 (setq char ??))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
130 (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
131 (memq char help-event-list))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
132 (progn
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
133 (setq config (current-window-configuration))
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
134 (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
135 (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
136 (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
137 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
138 (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
139 config nil))
18449
b32c3c07962c (make-help-screen): Clear buffer-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
140 (setq buffer-read-only nil)
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
141 (erase-buffer)
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
142 (insert help-screen)
9855
9caa80b065fc (make-help-screen): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8709
diff changeset
143 (help-mode)
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
144 (goto-char (point-min))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
145 (while (or (memq char (append help-event-list
20029
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
146 (cons help-char '(?? ?\C-v ?\ ?\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
147 (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
148 (equal key "\M-v"))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
149 (condition-case nil
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
150 (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
151 (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
152 (handle-switch-frame char))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
153 (if (memq char '(?\C-v ?\ ))
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
154 (scroll-up))
12423
ee433b44920d (make-help-screen): Handle help-event-list.
Richard M. Stallman <rms@gnu.org>
parents: 11424
diff changeset
155 (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
156 delete backspace))
5640
f0f285e628d0 (make-help-screen): Use overriding-local-map.
Richard M. Stallman <rms@gnu.org>
parents: 5378
diff changeset
157 (equal key "\M-v"))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
158 (scroll-down)))
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
159 (error nil))
8242
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
160 (let ((cursor-in-echo-area t)
824eeccd8203 (make-help-screen): Bind overriding-local-map
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
161 (overriding-local-map local-map))
5679
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
162 (setq key (read-key-sequence
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
163 (format "Type one of the options listed%s: "
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
164 (if (pos-visible-in-window-p
90ba98c692b5 (three-step-help): New option.
Richard M. Stallman <rms@gnu.org>
parents: 5640
diff changeset
165 (point-max))
21120
116fb3c03737 (make-help-screen): Mention DEL in the prompt.
Richard M. Stallman <rms@gnu.org>
parents: 20029
diff changeset
166 "" ", 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
167 char (aref key 0)))
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
168
857e1ce3f14b (make-help-screen): Make scroll bar work normally.
Richard M. Stallman <rms@gnu.org>
parents: 18656
diff changeset
169 ;; 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
170 (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
171 (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
172 ;; 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
173 (message "")
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
174 ;; 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
175 ;; 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
176 (if (listp char)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
177 (setq unread-command-events
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
178 (cons char unread-command-events)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
179 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
180 (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
181 (if defn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
182 (progn
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
183 (if config
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 (set-window-configuration config)
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
186 (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
187 (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
188 (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
189 (setq new-frame nil)))
5378
32a291ab0c5f (make-help-screen): Use read-key-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 3128
diff changeset
190 (call-interactively defn))
3128
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
191 (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
192 (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
193 (if config
2417a8dc0f14 (make-help-screen): Handle mouse events.
Richard M. Stallman <rms@gnu.org>
parents: 2696
diff changeset
194 (set-window-configuration config))))))
23331
8e860ff326de (make-help-screen): Keep HELP-TEXT
Richard M. Stallman <rms@gnu.org>
parents: 21120
diff changeset
195 )))
2456
39a58fdf2dee Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
196
25298
866b59632531 Move provide to end.
Dave Love <fx@gnu.org>
parents: 23331
diff changeset
197 (provide 'help-macro)
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 ;;; help-macro.el ends here