Mercurial > emacs
annotate lisp/=word-help.el @ 24419:30e478cd167e
(shell-command-default-error-buffer): Renamed from
shell-command-on-region-default-error-buffer.
(shell-command-on-region): Mention in echo area when there
is some error output. Mention success or failure, too.
Accumulate multiple error outputs
going forward, with formfeed in between. Display the error buffer
when we have put something in it.
(shell-command): Add the ERROR-BUFFER argument feature.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Mon, 01 Mar 1999 03:19:32 +0000 |
parents | 727cf56647a4 |
children |
rev | line source |
---|---|
16811 | 1 ;;; word-help.el --- keyword help for any language doc'd in TeXinfo. |
2 | |
3 ;; Copyright (c) 1996 Free Software Foundation, Inc. | |
4 | |
17977 | 5 ;; Author: Jens T. Berger Thielemann <jensthi@ifi.uio.no> |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
6 ;; Keywords: help, keyword, languages, completion |
16811 | 7 |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; This program is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; This program is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
24 | |
25 ;;; Commentary: | |
26 | |
27 ;; This package provides a rather general interface for doing keyword | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
28 ;; help in most languages. In short, it'll determine which TeXinfo |
16811 | 29 ;; file which is relevant for the current mode; cache the index and |
30 ;; use regexps to give you help on the keyword you're looking at. | |
31 | |
32 ;; Installation | |
33 ;; ************ | |
34 | |
35 ;; For the default setup to work for all supported modes, make sure | |
36 ;; the Texinfo files from the following packages are installed: | |
37 | |
38 ;; Texinfo file | Available in archive or URL | Notes | |
39 ;; autoconf.info | autoconf-2.10.tar.gz | - | |
40 ;; bison.info | bison-1.25.tar.gz | - | |
41 ;; libc.info | glibc-1.09.1.tar.gz | - | |
42 ;; elisp.info | elisp-manual-19-2.4.tar.gz | - | |
43 ;; latex.info | ftp://ftp.dante.de/pub/tex/info/latex2e-help-texinfo/latex2e.texi | |
44 ;; groff.info | groff-1.10.tar.gz | - | |
45 ;; m4.info | m4-1.4.tar.gz | - | |
46 ;; make.info | make-3.75.tar.gz | - | |
47 ;; perl.info | http://www.perl.com/CPAN/doc/manual/info/ | |
48 ;; simula.info | Mail bjort@ifi.uio.no | Written in Norwegian | |
49 ;; texinfo.info | texinfo-3.9.tar.gz | - | |
50 | |
51 ;; BTW: We refer to Texinfo files by just their last component, not | |
52 ;; with an absolute file name. You must thus set up | |
53 ;; `Info-directory-list' and `Info-default-directory-list' so that | |
54 ;; these can automatically be located. | |
55 | |
56 ;; Usage | |
57 ;; ***** | |
58 ;; | |
59 ;; Place the cursor over the function/variable/type/whatever you want | |
60 ;; help on. Type "C-h C-i". `word-help' will then make a suggestion | |
61 ;; to an index topic; press return to accept this. If not, you may use | |
62 ;; tab-completion to find the topic you're interested in. | |
63 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
64 ;; `word-help' is also able to do symbol completion via the |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
65 ;; `word-help-complete' function. Bind this function to C-TAB by |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
66 ;; adding the following line to your .emacs file: |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
67 ;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
68 ;; (global-set-key [?\M-\t] 'word-help-complete) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
69 ;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
70 ;; Note that some modes automatically override this key; you may |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
71 ;; therefore wish to either put the above statement in a hook or |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
72 ;; associate the function with an other key. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
73 |
16811 | 74 ;; Usually, `word-help' is able to determine the relevant Texinfo |
75 ;; file from looking at the buffer's `mode-name'; if not, you can use | |
76 ;; the interactive function `set-help-file' to set this. | |
77 | |
78 ;; Customizing | |
79 ;; *********** | |
80 ;; | |
81 ;; User interface | |
82 ;; -------------- | |
83 ;; | |
84 ;; Two variables control the behaviour of the user-interface of | |
85 ;; `word-help': `word-help-split-window' and | |
86 ;; `word-help-magic-index'. Do C-h v to get more information on | |
87 ;; these. | |
88 | |
89 ;; Adding more Texinfo files | |
90 ;; ------------------------- | |
91 ;; | |
92 ;; Associations between mode-names and Texinfo files can be done | |
93 ;; through the `word-help-mode-alist' variable, which defines an | |
94 ;; `alist' making `set-help-file' able to initialize the necessary | |
95 ;; variable. | |
96 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
97 ;; NOTE: If you have to customize the regexps, it is *CRUCIAL* that |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
98 ;; none of your regexps match the empty string! Not adhering to this |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
99 ;; restriction will make `word-help' enter an infinite loop. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
100 |
16811 | 101 ;; Contacting the author |
102 ;; ********************* | |
103 ;; | |
104 ;; If you wish to contact me for any reason, please feel free to write | |
105 ;; to: | |
106 | |
107 ;; Jens Berger | |
108 ;; Spektrumveien 4 | |
109 ;; N-0666 Oslo | |
110 ;; Norway | |
111 ;; | |
112 ;; E-mail: <jensthi@ifi.uio.no> | |
113 | |
114 ;; Have fun. | |
115 | |
116 ;; | |
117 ;;; Code: | |
118 ;; | |
119 | |
120 (require 'info) | |
121 | |
122 ;;;-------------------- | |
123 ;;; USER OPTIONS | |
124 ;;;-------------------- | |
125 | |
126 (defvar word-help-split-window t | |
127 "*Non-nil means that the info buffer will pop up in a separate window. | |
128 If nil, we will just switch to it.") | |
129 | |
130 (defvar word-help-magic-index t | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
131 "*Non-nil means that the keyword will be searched for in the requested node. |
16811 | 132 This is done by determining whether the line the point is positioned |
133 on after using `Info-goto-node', actually contains the keyword. If | |
134 not, we will search for the first occurence of the keyword. This may | |
135 help when the info file isn't correctly indexed.") | |
136 | |
137 ;;; ---- end of user configurable variables | |
138 | |
139 ;;;------------------------- | |
140 ;;; ADVANCED USER OPTIONS | |
141 ;;;------------------------- | |
142 | |
143 (defvar word-help-mode-alist | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
144 '( |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
145 ("autoconf" |
16811 | 146 (("autoconf" "Macro Index") ("m4" "Macro index")) |
147 (("AC_\\([A-Za-z0-9_]+\\)" 1) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
148 ("[a-z]+")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
149 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
150 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
151 (("AC_\\([A-Za-z0-9_]+\\)" 1 nil (("^[A-Z_]+$"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
152 ("[a-z_][a-z_]*" 0 nil (("^[a-z_]+$"))))) |
16811 | 153 |
154 ("Bison" | |
155 (("bison" "Index") | |
156 ("libc" "Type Index" "Function Index" "Variable Index")) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
157 (("%[A-Za-z]*") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
158 ("[A-Za-z_][A-Za-z0-9_]*")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
159 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
160 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
161 (("%[A-Za-z]*" nil nil (("^%"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
162 ("[A-Za-z_][A-Za-z0-9_]*" nil nil (("[A-Za-z_][A-Za-z0-9_]*"))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
163 |
16811 | 164 ("YACC" . "Bison") |
165 | |
166 ("C" (("libc" "Type Index" "Function Index" "Variable Index"))) | |
167 ("C++" . "C") | |
168 | |
169 ("Emacs-Lisp" | |
170 (("elisp" "Index")) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
171 (("[^][ ()\n\t.\"'#]+")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
172 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
173 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
174 lisp-complete-symbol) |
16811 | 175 |
176 ("LaTeX" | |
177 (("latex" "Command Index")) | |
178 (("\\\\\\(begin\\|end\\){\\([^}\n]+\\)}" 2 0) | |
179 ("\\\\[A-Za-z]+") | |
180 ("\\\\[^A-Za-z]") | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
181 ("[A-Za-z]+")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
182 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
183 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
184 (("\\\\begin{\\([A-Za-z]*\\)" 1 "}" (("^[A-Za-z]+$"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
185 ("\\\\end{\\([A-Za-z]*\\)" 1 "}" (("^[A-Za-z]+$"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
186 ("\\\\renewcommand{\\(\\\\?[A-Za-z]*\\)" 1 "}" (("^\\\\[A-Za-z]+"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
187 ("\\\\renewcommand\\(\\\\?[A-Za-z]*\\)" 1 "" (("^\\\\[A-Za-z]+"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
188 ("\\\\renewenvironment{?\\([A-Za-z]*\\)" 1 "}"(("^[A-Za-z]+$"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
189 ("\\\\[A-Za-z]*" 0 "" (("^\\\\[A-Za-z]+"))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
190 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
191 ("latex" . "LaTeX") |
16811 | 192 |
193 ("Nroff" | |
194 (("groff" "Macro Index" "Register Index" "Request Index")) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
195 (("\\.[^A-Za-z]") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
196 ("\\.[A-Za-z]+") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
197 ("\\.\\([A-Za-z]+\\)" 1)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
198 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
199 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
200 (("\\.[A-Za-z]*" nil nil (("^\\.[A-Za-z]+$"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
201 ("\\.\\([A-Za-z]*\\)" 1 nil (("^[A-Za-z]+$"))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
202 |
16811 | 203 ("Groff" . "Nroff") |
204 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
205 ("m4" |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
206 (("m4" "Macro index")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
207 (("\\([mM]4_\\)?\\([A-Za-z_][A-Za-z_0-9]*\\)" 2)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
208 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
209 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
210 (("[mM]4_\\([A-Za-z_]?[A-Za-z_0-9]*\\)" 1) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
211 ("[A-Za-z_][A-Za-z_0-9]*"))) |
16811 | 212 |
213 ("Makefile" | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
214 (("make" "Name Index")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
215 (("\\.[A-Za-z]+") ;; .SUFFIXES |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
216 ("\\$[^()]") ;; $@ |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
217 ("\\$([^A-Za-z].)") ;; $(<@) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
218 ("\\$[\(\{]\\([a-zA-Z+]\\)" 1) ;; $(wildcard) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
219 ("[A-Za-z]+")) ;; foreach |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
220 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
221 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
222 (("\\.[A-Za-z]*" nil ":" (("^\\.[A-Za-z]+$"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
223 ("\\$(\\([A-Z]*\\)" 1 ")" (("^[A-Z]"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
224 ("[a-z]+" nil nil (("^[a-z]+$"))))) |
16811 | 225 |
226 ("Perl" | |
227 (("perl" "Variable Index" "Function Index")) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
228 (("\\$[^A-Za-z^]") ;; $@ |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
229 ("\\$\\^[A-Za-z]?") ;; $^D |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
230 ("\\$[A-Za-z][A-Za-z_0-9]+") ;; $foobar |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
231 ("[A-Za-z_][A-Za-z_0-9]+")) ;; dbmopen |
16811 | 232 nil |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
233 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
234 (("\\$[A-Za-z]*" nil nil (("^\\$[A-Za-z]+$"))) ;; $variable |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
235 ("[A-Za-z_][A-Za-z_0-9]*" nil nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
236 (("^[A-Za-z_][A-Za-z_0-9]*$"))))) ;; function |
16811 | 237 |
238 ("Simula" (("simula" "Index")) nil t) | |
239 ("Ifi Simula" . "Simula") | |
240 ("SIMULA" . "Simula") | |
241 | |
242 ("Texinfo" | |
243 (("texinfo" "Command and Variable Index")) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
244 (("@\\([A-Za-z]+\\)" 1)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
245 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
246 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
247 (("@\\([A-Za-z]*\\)" 1))) |
16811 | 248 |
249 ) | |
250 "Assoc list between `mode-name' and Texinfo files. | |
251 The variable should be initialized with a list of elements with the | |
252 following form: | |
253 | |
254 \(mode-name (word-help-info-files) (word-help-keyword-regexps) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
255 word-help-ignore-case word-help-index-mapper |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
256 word-help-complete-list) |
16811 | 257 |
258 where `word-help-info-files', `word-help-keyword-regexps' and so | |
259 forth of course are the values which should be put in these variables | |
260 for this mode. Note that `mode-name' doesn't have to be a legal | |
261 mode-name; the user may use the call `set-help-file', where | |
262 `mode-name' will be used in the `completing-read'. | |
263 | |
264 Example entry (for C): | |
265 | |
266 \(\"C\" ((\"libc\" \"Type Index\" \"Function Index\" \"Variable Index\")) | |
267 ((\"[A-Za-z_][A-Za-z0-9]+\"))) | |
268 | |
269 The two first variables must be initialized; the two remaining will | |
270 get default values if you omit them or set them to nil. The default | |
271 values are: | |
272 | |
273 word-help-keyword-regexps: (\"[A-Za-z_][A-Za-z0-9]+\") | |
274 word-help-ignore-case: nil | |
275 | |
276 More settings may be defined in the future. | |
277 | |
278 You may also define aliases, if there are several relevant mode-names | |
279 to a single entry. These should be of the form: | |
280 | |
281 \(MODE-NAME-ALIAS . MODE-NAME-REAL) | |
282 | |
283 For C++, you would use the alias | |
284 | |
285 \(\"C++\" . \"C\") | |
286 | |
287 to make C++ mode use the same help files as C files do. Please note | |
288 that you can shoot yourself in the foot with this possibility, by | |
289 defining recursive aliases.") | |
290 | |
291 ;;; --- end of advanced user options | |
292 | |
293 (defvar word-help-ignore-case nil | |
294 "Non-nil means that case is ignored when doing lookup.") | |
295 (make-variable-buffer-local 'word-help-ignore-case) | |
296 | |
297 (defvar word-help-info-files nil | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
298 "List of info files with respective nodes, for the current mode. |
16811 | 299 |
300 This should be a list of the following form: | |
301 | |
302 \((INFO-FILE-1 NODE-NAME-1 NODE-NAME-2 ...) | |
303 (INFO-FILE-1 NODE-NAME-1 NODE-NAME-2 ...) | |
304 : : : | |
305 (INFO-FILE-1 NODE-NAME-1 NODE-NAME-2 ...)) | |
306 | |
307 An example entry for e.g. C would be: | |
308 | |
309 \((\"/local/share/gnu/info/libc\" \"Function Index\" \"Type Index\" | |
310 \"Variable Index\")) | |
311 | |
312 The files and nodes will be searched/cached in the order specified. | |
313 This variable is usually set by the `word-help-switch-help-file' | |
314 function, which utilizes the `word-help-mode-alist'.") | |
315 (make-variable-buffer-local 'word-help-info-files) | |
316 | |
317 (defvar word-help-keyword-regexps nil | |
318 "Regexps for finding keywords in the current mode. | |
319 | |
320 This is constructed as a list of the following form: | |
321 | |
322 \((REGEXP SUBMATCH-LOOKUP SUBMATCH-CURSOR) | |
323 (REGEXP SUBMATCH-LOOKUP SUBMATCH-CURSOR) | |
324 : : : | |
325 (REGEXP SUBMATCH-LOOKUP SUBMATCH-CURSOR)) | |
326 | |
327 The regexps will be searched in order for a match which the cursor is | |
328 within. | |
329 | |
330 submatch-lookup is the submatch number which will be looked for in the | |
331 index. May be omitted; defaults to 0 (e.g. the entire pattern). This is | |
332 useful in for instance configure lookup; each command is there prefixed | |
333 with 'AC_', which must be ignored when doing a lookup. Example regexp | |
334 entry for this: | |
335 | |
336 \(\"AC_\\\\([A-Za-z0-9]+\\\\)\" 1) | |
337 | |
338 submatch-cursor is the part of the match which the cursor must be within. | |
339 May be omitted; defaults to 0 (e.g. the entire pattern).") | |
340 (make-variable-buffer-local 'word-help-keyword-regexps) | |
341 (set-default 'word-help-keyword-regexps '(("[A-Za-z_][A-Za-z_0-9]*"))) | |
342 | |
343 (defvar word-help-index-mapper nil | |
344 "Regexps to use for massaging index-entries into keywords. | |
345 This variable should contain a list of regexps with sub-expressions, | |
346 where we will only look for the sub-expression in the user text. | |
347 | |
348 The regexp list should be formatted as: | |
349 | |
350 ((REGEXP SUBEXP) (REGEXP SUBEXP) ... ) | |
351 | |
352 If the index entry does not match any of the regexps, it will be ignored. | |
353 | |
354 Example: | |
355 | |
356 Perl has index entries of the following form: | |
357 | |
358 * abs VALUE: perlfunc. | |
359 * accept NEWSOCKET,GENERICSOCKET: perlfunc. | |
360 * alarm SECONDS: perlfunc. | |
361 * atan2 Y,X: perlfunc. | |
362 * bind SOCKET,NAME: perlfunc. | |
363 : : : | |
364 | |
365 We will thus try to extract the first word in the index entry - | |
366 \"abs\" from \"abs VALUE\", etc. This is done by the following entry: | |
367 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
368 \((\"^\\\\([^ \\t\\n]+\\\\)\" 1)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
369 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
370 This value is btw. the default one, and works with most Texinfo files") |
16811 | 371 (make-variable-buffer-local 'word-help-index-mapper) |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
372 (set-default 'word-help-index-mapper '(("^\\([^ \t\n]+\\)" 1))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
373 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
374 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
375 (defvar word-help-complete-list nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
376 "Regexps or function to use for completion of symbols. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
377 The list should have the following format: |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
378 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
379 ((REGEXP SUBMATCH TEXT-APPEND (RE-FILTER-1 REG-FILTER-2 ...) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
380 : : : : : |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
381 (REGEXP SUBMATCH TEXT-APPEND (RE-FILTER-1 REG-FILTER-2 ...)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
382 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
383 The two first entries are similar to `word-help-keyword-regexps', |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
384 REGEXP is a regular expression which should match any relevant |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
385 expression, and where SUBMATCH should be used for look up. By |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
386 specifying non-nil REGEXP-FILTERs, we'll only include entries in the |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
387 index which matches the regexp specified. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
388 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
389 If the contents of this variable is a symbol of a function, this |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
390 function will be called instead. This is useful for modes providing |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
391 a more intelligent function (like `lisp-complete-symbol' in Emacs Lisp mode). |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
392 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
393 If you would like to use another function instead, you may. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
394 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
395 Non-nil TEXT-APPEND means that this text will be inserted after the |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
396 completion, if we manage to do make a completion.") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
397 (make-variable-buffer-local 'word-help-complete-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
398 (set-default 'word-help-complete-list '(("[A-Za-z_][A-Za-z_0-9]*"))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
399 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
400 ;;; Work variables |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
401 |
16811 | 402 |
403 (defvar word-help-main-index nil | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
404 "List of all index entries. |
16811 | 405 |
406 See `word-help-process-indexes' for structure formatting. | |
407 | |
408 Minor note: This variable is a list if it is initialized, t if | |
409 initializing failed and nil if uninitialized.") | |
410 (make-variable-buffer-local 'word-help-main-index) | |
411 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
412 (defvar word-help-complete-index nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
413 "List of regexps for completion, with matching index entries. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
414 Value is nil if uninitialized, t if initialized but not accessible, |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
415 a list if we're feeling ok.") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
416 (make-variable-buffer-local 'word-help-complete-index) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
417 |
16811 | 418 (defvar word-help-main-obarray nil |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
419 "Global work variable for `word-help' system. |
16811 | 420 Do Not mess with this!") |
421 | |
422 (defvar word-help-history nil | |
423 "History for `word-help' minibuffer queries.") | |
424 (make-local-variable 'word-help-history) | |
425 | |
426 (defvar word-help-current-help-file nil | |
427 "Current help file active for this mode.") | |
428 | |
429 (defvar word-help-index-alist nil | |
430 "An assoc list mapping help files to info indexes. | |
431 This means that `word-help-mode-index' can be init'ed faster.") | |
432 | |
433 (defvar word-help-help-mode nil | |
434 "Which mode the help system is bound to for the current mode.") | |
435 (make-variable-buffer-local 'word-help-help-mode) | |
436 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
437 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
438 ;;;;;;;;;;;;;;;;;;;;;;;;;;; User Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
439 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
16811 | 440 |
441 ;;; Debugging | |
442 | |
443 ;;;###autoload | |
444 (defun reset-word-help () | |
445 "Clear all cached indexes in the `word-help' system. | |
446 You should only need this when installing new info files, and/or | |
447 adding more Texinfo files to the `word-help' system." | |
448 (interactive) | |
449 (setq word-help-index-alist nil | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
450 word-help-main-index nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
451 word-help-info-files nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
452 word-help-complete-index nil)) |
16811 | 453 |
454 | |
455 ;;; Changing help file | |
456 | |
457 ;;;###autoload | |
17906
a8d2103ea2b4
(set-word-help-file): Renamed from set-help-file.
Richard M. Stallman <rms@gnu.org>
parents:
16813
diff
changeset
|
458 (defun set-word-help-file () |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
459 "Change which set of Texinfo files used for word-help. |
16811 | 460 |
461 `word-help' maintains a list over which Texinfo files which are | |
462 relevant for each programming language (`word-help-mode-alist'). It | |
463 usually selects the correct one, based upon the value of `mode-name'. | |
464 If this guess is incorrect, you may also use this function manually to | |
465 instruct future `word-help' calls which Texinfo files to use." | |
466 (interactive) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
467 (let (helpfile helpguess (completion-ignore-case t)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
468 ;; Try to make a guess |
16811 | 469 (setq helpguess (cond |
470 (word-help-current-help-file) | |
471 ((word-help-guess-help-file)))) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
472 ;; Ask the user |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
473 (setq helpfile (completing-read |
16811 | 474 (if helpguess |
475 (format "Select help mode (default %s): " helpguess) | |
476 "Select help mode: ") | |
477 word-help-mode-alist | |
478 nil t nil nil)) | |
479 (if (equal "" helpfile) | |
480 (setq helpfile helpguess)) | |
481 (if helpfile | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
482 (word-help-switch-help-file helpfile)))) |
16811 | 483 |
484 ;;; Main user interface | |
485 | |
486 ;;;###autoload | |
487 (defun word-help () | |
488 "Find documentation on the keyword under the cursor. | |
489 The determination of which language the keyword belongs to, is based upon | |
490 The relevant info file is selected by matching `mode-name' (the major | |
491 mode) against the assoc list `word-help-mode-alist'. | |
492 | |
493 If this is not possible, `set-help-file' will be invoked for selecting | |
494 the relevant info file. `set-help-file' may also be invoked | |
495 interactively by the user. | |
496 | |
497 If the keyword you are looking at is not available in any index, no | |
498 default suggestion will be presented. " | |
499 (interactive) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
500 (let (myguess guess index-info |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
501 (completion-ignore-case word-help-ignore-case)) |
16811 | 502 ;; Set necessary variables for later lookup |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
503 (word-help-find-help-file) |
16811 | 504 ;; Have we previously cached datas? |
505 (word-help-process-indexes) | |
506 (if | |
507 (atom word-help-main-index) | |
508 (message "No help file available for this mode.") | |
509 ;; First make a guess at what the user is looking for | |
510 (setq myguess (word-help-guess | |
511 (point) | |
512 (cond | |
513 ((not (atom word-help-main-index)) | |
514 (car word-help-main-index))) | |
515 word-help-keyword-regexps)) | |
516 ;; Ask the user himself | |
517 (setq guess (completing-read | |
518 ; Format string | |
519 (if myguess | |
520 (format "Look up keyword (default %s): " myguess) | |
521 "Look up keyword: ") | |
522 ; Collection | |
523 (car word-help-main-index) | |
524 nil t nil 'word-help-history)) | |
525 (if (equal guess "") | |
526 (setq guess myguess)) | |
527 ;; If we've got anything meaningful to lookup, do so | |
528 (if (not guess) | |
529 (message "Help aborted.") | |
530 (setq index-info (word-help-find-index-node | |
531 guess | |
532 word-help-main-index)) | |
533 (if (not index-info) | |
534 (message "Oops, I could not find \"%s\" anyway! Bug?" guess) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
535 (word-help-goto-index-node (nconc index-info (list guess)))))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
536 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
537 ;;;###autoload |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
538 (defun word-help-complete () |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
539 "Perform completion on the symbol preceding the point. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
540 The determination of which language the keyword belongs to, is based upon |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
541 The relevant info file is selected by matching `mode-name' (the major |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
542 mode) against the assoc list `word-help-mode-alist'. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
543 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
544 If this is not possible, `set-help-file' will be invoked for selecting |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
545 the relevant info file. `set-help-file' may also be invoked |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
546 interactively by the user. |
16811 | 547 |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
548 The keywords are extracted from the index of the info file defined for |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
549 this mode, by using the `word-help-complete-list' variable." |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
550 (interactive) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
551 (word-help-make-complete) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
552 (cond |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
553 ((not word-help-complete-index) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
554 (message "No completion available for this mode.")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
555 ((symbolp word-help-complete-index) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
556 (call-interactively word-help-complete-index)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
557 ((listp word-help-complete-index) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
558 (let ((all-match (word-help-guess-all (point) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
559 word-help-complete-index t)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
560 (completion-ignore-case word-help-ignore-case) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
561 (c-list word-help-complete-index) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
562 c-entry word-match completion completed) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
563 ;; Loop over and try to find a match |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
564 (while (and all-match (not completed)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
565 (setq word-match (car all-match) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
566 c-entry (car c-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
567 c-list (cdr c-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
568 all-match (cdr all-match)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
569 ;; Check whether the current pattern matched |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
570 (if word-match |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
571 (let ((close (nth 3 c-entry)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
572 (words (nth 4 c-entry))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
573 ;; Find the maximum completion for this word |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
574 ; (print word-match) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
575 ; (print c-entry) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
576 ; (print close) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
577 (setq completion (try-completion word-match words)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
578 ;; Was the match exact |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
579 (cond ((eq completion t) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
580 (and close |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
581 (not (looking-at (regexp-quote close))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
582 (insert close)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
583 (setq completed t)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
584 ;; Silently ignore non-matches |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
585 ((not completion)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
586 ;; May we complete more unambiguously |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
587 ((not (string-equal completion word-match)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
588 (delete-region (- (point) (length word-match)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
589 (point)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
590 (insert completion) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
591 (if (eq t (try-completion completion words)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
592 (progn |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
593 (and close |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
594 (not (looking-at (regexp-quote close))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
595 (insert close)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
596 (setq completed t)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
597 (t |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
598 (message "Making completion list...") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
599 (let ((list (all-completions word-match words nil))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
600 (setq completed list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
601 (with-output-to-temp-buffer "*Completions*" |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
602 (display-completion-list list))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
603 (message "Making completion list...done")))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
604 (if (not completed) (message "No match.")))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
605 (t (message "No completion available for this mode.")))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
606 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
607 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
608 ;;;;;;;;;;;;;;;;;;;;;;;;;;; Index mapping ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
609 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
610 |
16811 | 611 |
612 (defun word-help-map-index-entries (str re-list) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
613 "Transform an Info index entry into a programming keyword. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
614 Uses this by mapping the entries through `word-help-index-mapper'." |
16811 | 615 (let ((regexp (car (car re-list))) |
616 (subexp (car (cdr (car re-list)))) | |
617 (next (cdr re-list))) | |
618 (cond | |
619 ((string-match regexp str) | |
620 (substring str (match-beginning subexp) (match-end subexp))) | |
621 (next | |
622 (word-help-map-index-entries str next))))) | |
623 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
624 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
625 ;;;;;;;;;;;;;;;;;;;;;;;;; Switch mode files ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
626 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
16811 | 627 |
628 ;;; Mode lookup | |
629 | |
630 (defun word-help-guess-help-file () | |
631 "Guesses a relevant help file based on mode name. | |
632 Returns nil if no guess could be made. Uses `word-help-mode-alist'." | |
633 (let (guess) | |
634 (cond | |
635 ((setq guess (assoc mode-name word-help-mode-alist)) | |
636 (car guess))))) | |
637 | |
638 | |
639 (defun word-help-switch-help-file (helpfile) | |
640 "Changes the help-file to the mode name given. | |
641 Uses `word-help-mode-alist'." | |
642 (if helpfile | |
643 (let (helpdesc) | |
644 (if (not (setq helpdesc (assoc helpfile word-help-mode-alist))) | |
645 (message "No help defined for \"%s\"." helpfile) | |
646 (if (stringp (cdr helpdesc)) | |
647 (word-help-switch-help-file (cdr helpdesc)) | |
648 (word-help-make-default-map | |
649 helpdesc | |
650 (list 'word-help-help-mode | |
651 'word-help-info-files | |
652 'word-help-keyword-regexps | |
653 'word-help-ignore-case | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
654 'word-help-index-mapper |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
655 'word-help-complete-list)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
656 (setq word-help-main-index nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
657 word-help-complete-index nil)))) |
16811 | 658 |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
659 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
660 ;;;;;;;;;;;;;;;;;;;;;;;;;; Index collection ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
661 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
16811 | 662 |
663 | |
664 (defun word-help-extract-index (file-name index-list index-map ignore-case) | |
665 "Extract index from filename and the first node name in index list. | |
666 `file-name' is the name of the info file, while `index-list' is a list | |
667 of node-names to search." | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
668 (let (cmd1 cmdlow nodename ob-array next (case-fold-search word-help-ignore-case)) |
16811 | 669 (setq nodename (car index-list)) |
670 (setq ob-array (make-vector 211 0)) | |
671 (message "Processing \"%s\" in %s..." nodename file-name) | |
672 (save-window-excursion | |
673 (Info-goto-node (concat "(" file-name ")" nodename)) | |
674 (end-of-buffer) | |
675 (while (re-search-backward "\\* \\([^\n:]+\\):" nil t) | |
676 (setq cmd1 (buffer-substring (match-beginning 1) (match-end 1))) | |
677 (setq cmdlow (if ignore-case (downcase cmd1) cmd1)) | |
678 (if index-map | |
679 (setq cmdlow (word-help-map-index-entries cmdlow | |
680 index-map))) | |
681 ;; We have to do this workaround to support case-insensitive matching | |
682 (cond | |
683 (cmdlow | |
684 (put (intern cmdlow ob-array) 'word-help-real-name cmd1) | |
685 (intern cmdlow word-help-main-obarray))))) | |
686 (setq next (cond | |
687 ((cdr index-list) | |
688 (word-help-extract-index file-name (cdr index-list) | |
689 index-map ignore-case)))) | |
690 (nconc (list (list nodename ob-array)) next))) | |
691 | |
692 | |
693 (defun word-help-collect-indexes (info-file) | |
694 "Process all the indexes in an info file. | |
695 | |
696 Uses `word-help-extract-index' on each node, and returns an entry | |
697 suitable for merging into `word-help-process-indexes'. `info-file' | |
698 is an entry of the form | |
699 | |
700 \(FILE-NAME INDEX-NAME-1 INDEX-NAME-2 ...)" | |
701 (let ((file (car info-file)) | |
702 (nodes (cdr info-file))) | |
703 (nconc (list file) (word-help-extract-index file nodes | |
704 word-help-index-mapper | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
705 word-help-ignore-case)))) |
16811 | 706 |
707 (defun word-help-process-indexes () | |
708 "Process all the entries in the global variable `word-help-info-files'. | |
709 Returns a list formatted as follows: | |
710 | |
711 \(all-entries-ob | |
712 (file-name-1 (node-name-1 this-node-entries-ob) | |
713 (node-name-2 this-node-entries-ob) | |
714 : : : | |
715 (node-name-n this-node-entries-ob)) | |
716 (file-name-2 (node-name-1 this-node-entries-ob) | |
717 (node-name-2 this-node-entries-ob) | |
718 : : : | |
719 (node-name-n this-node-entries-ob)) | |
720 : : : : : : : : : | |
721 (file-name-n (node-name-1 this-node-entries-ob) | |
722 (node-name-2 this-node-entries-ob) | |
723 : : : | |
724 (node-name-n this-node-entries-ob))) | |
725 | |
726 The symbols in the obarrays may contain the additional property | |
727 `word-help-real-name', which tells the *real* node to go to. | |
728 | |
729 Note that we use `word-help-index-alist' to speed up the process. Note | |
730 that `word-help-switch-help-file' must have been called before this function. | |
731 | |
732 This structure is then later searched by `word-help-find-index-node'." | |
733 (let (index-words old-index) | |
734 (if (not word-help-main-index) | |
735 (cond | |
736 ((setq old-index | |
737 (assoc word-help-help-mode word-help-index-alist)) | |
738 (setq word-help-main-index (nth 1 old-index))) | |
739 (word-help-info-files | |
740 (setq word-help-main-obarray (make-vector 307 0) | |
741 index-words (mapcar 'word-help-collect-indexes | |
742 word-help-info-files) | |
743 word-help-main-index | |
744 (append (list word-help-main-obarray) index-words)) | |
745 (setq word-help-index-alist (cons (list word-help-help-mode | |
746 word-help-main-index) | |
747 word-help-index-alist))) | |
748 (t (setq word-help-main-index t)))))) | |
749 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
750 (defun word-help-find-help-file () |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
751 "Tries to find and set a relevant help file for the current mode." |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
752 (let (helpguess) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
753 (if (not word-help-info-files) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
754 (if (setq helpguess (word-help-guess-help-file)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
755 (word-help-switch-help-file helpguess) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
756 (set-help-file))))) |
16811 | 757 |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
758 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
759 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
760 ;;;;;;;;;;;;;;;;;;;;;;;;;;; Keyword guess ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
761 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
762 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
763 (defun word-help-guess-all (cur-point re-list |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
764 &optional copy-to-point) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
765 "Guesses *all* keywords the user possibly may be looking at. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
766 Returns a list of all possible keywords. " |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
767 (let ((regexp (car (car re-list))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
768 (submatch (cond ((nth 1 (car re-list))) (0))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
769 (cursmatch (cond ((nth 2 (car re-list))) (0))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
770 (guess nil) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
771 (next-guess nil) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
772 (case-fold-search word-help-ignore-case) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
773 (end-point nil)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
774 (save-excursion |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
775 (end-of-line) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
776 (setq end-point (point)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
777 ;; Start at the beginning |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
778 (beginning-of-line) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
779 (while (and (not guess) (re-search-forward regexp end-point t)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
780 ;; Look whether the cursor is within the match |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
781 (if (and (<= (match-beginning cursmatch) cur-point) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
782 (>= (match-end cursmatch) cur-point)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
783 (if (or (not copy-to-point) (<= cur-point (match-end submatch))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
784 (setq guess (buffer-substring (match-beginning submatch) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
785 (if copy-to-point |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
786 cur-point |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
787 (match-end submatch))))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
788 ;; If we found anything, return it and call ourselves again |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
789 (if (cdr re-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
790 (setq next-guess (word-help-guess-all cur-point (cdr re-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
791 copy-to-point)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
792 (cons guess next-guess))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
793 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
794 (defun word-help-guess-match (all-match cmd-array) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
795 (let ((sym (car all-match))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
796 (cond |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
797 ((and sym (intern-soft (if word-help-ignore-case |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
798 (downcase sym) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
799 sym) cmd-array) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
800 sym)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
801 ((cdr all-match) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
802 (word-help-guess-match (cdr all-match) cmd-array))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
803 |
16811 | 804 |
805 (defun word-help-guess (cur-point cmd-array re-list) | |
806 "Guesses what keyword the user is looking at, and returns that. | |
807 CUR-POINT should be the current value of `point', CMD-ARRAY an obarray | |
808 of all the keywords which are defined for the current mode, and | |
809 RE-LIST a list of regexps use for the hunt. See also | |
810 `word-help-keyword-regexps'." | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
811 (let ((all-matches (word-help-guess-all cur-point re-list))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
812 ; (print all-matches) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
813 (word-help-guess-match all-matches cmd-array))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
814 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
815 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
816 ;;;;;;;;;;;;;;;;;;;;;;; Show node for keyword ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
817 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
16811 | 818 |
819 ;;; Find an index entry | |
820 | |
821 (defun word-help-find-index-node (node index-reg) | |
822 "Finds the node named `node' in the index-register `index-reg'. | |
823 `index-reg' has the format as returned (and documented) by the | |
824 `word-help-process-indexes' call. In most cases, this will be equal to | |
825 `word-help-main-index'. | |
826 | |
827 Returns a list with format | |
828 (file-name index-node-name index-entry) | |
829 which contains the file and index where the entry can be found. | |
830 Returns nil if the entry can't be found." | |
831 (let (file-info node-name) | |
832 (setq node-name (cond (word-help-ignore-case (downcase node)) (node))) | |
833 (if (intern-soft node-name (car index-reg)) | |
834 (setq file-info (word-help-index-search-file node-name | |
835 (cdr index-reg)))) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
836 file-info)) |
16811 | 837 |
838 (defun word-help-index-search-file (entry file-data) | |
839 "Searches a cached file for the index-entry `entry'." | |
840 (let (this-file next-files file-name node node-infos) | |
841 (setq this-file (car file-data) | |
842 next-files (cdr file-data) | |
843 file-name (car this-file) | |
844 node-infos (cdr this-file) | |
845 node (word-help-index-search-nodes entry node-infos)) | |
846 (cond | |
847 (node | |
848 (cons file-name node)) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
849 (next-files (word-help-index-search-file entry next-files))))) |
16811 | 850 |
851 (defun word-help-index-search-nodes (entry node-info) | |
852 "Searches a cached list of nodes for the entry `entry'." | |
853 (let (this-node next-nodes node-name node-ob node-sym) | |
854 (setq this-node (car node-info) | |
855 next-nodes (cdr node-info) | |
856 node-name (car this-node) | |
857 node-ob (car (cdr this-node)) | |
858 node-sym (intern-soft entry node-ob)) | |
859 (cond | |
860 (node-sym | |
861 (list node-name (get node-sym 'word-help-real-name))) | |
862 (next-nodes (word-help-index-search-nodes entry next-nodes))))) | |
863 | |
864 ;;; Switch to a node in an index | |
865 | |
866 (defun word-help-goto-index-node (index-info) | |
867 "Jumps to an index node. | |
868 `index-info' should be a list with the following format: | |
869 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
870 \(FILE-NAME INDEX-NODE-NAME INDEX-ENTRY KEYWORD)" |
16811 | 871 |
872 (let* ((file-name (car index-info)) | |
873 (node-name (nth 1 index-info)) | |
874 (entry-name (nth 2 index-info)) | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
875 (kw-name (nth 3 index-info)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
876 (buffer (current-buffer))) |
16811 | 877 (if word-help-split-window |
878 (pop-to-buffer nil)) | |
879 (Info-goto-node (concat "(" file-name ")" node-name)) | |
880 (Info-menu entry-name) | |
881 ;; Do magic keyword search | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
882 (if word-help-magic-index |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
883 (let (end-point regs this-re found entry-re) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
884 (setq entry-re (regexp-quote kw-name) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
885 regs (list (concat |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
886 (if (string-match "^[A-Za-z]" entry-name) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
887 "\\<" "") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
888 entry-re |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
889 (if (string-match "[A-Za-z]$" entry-name) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
890 "\\>" "")) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
891 (concat "[`\"\(]" entry-re) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
892 (concat "^" entry-re |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
893 (if (string-match "[A-Za-z]$" entry-name) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
894 "\\>" "")))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
895 (end-of-line) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
896 (setq end-point (point)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
897 (beginning-of-line) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
898 (if (not (re-search-forward (car regs) end-point t)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
899 (while (and (not found) (car regs)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
900 (setq this-re (car regs) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
901 regs (cdr regs) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
902 found (re-search-forward this-re nil t)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
903 (recenter 0))) |
16811 | 904 (if word-help-split-window |
905 (pop-to-buffer buffer)))) | |
906 | |
16813
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
907 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
908 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
909 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Completion ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
910 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
911 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
912 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
913 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
914 (defun word-help-extract-matches (from-ob dest-ob re-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
915 "Takes atoms from from-ob, and puts them in dest-ob if they match re-list." |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
916 (let ((regexp (car (car re-list)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
917 (mapatoms (lambda (x) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
918 (if (or (not regexp) (string-match regexp (symbol-name x))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
919 (intern (symbol-name x) dest-ob))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
920 from-ob) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
921 (if (cdr re-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
922 (word-help-extract-matches from-ob dest-ob (cdr re-list)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
923 dest-ob) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
924 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
925 (defun word-help-make-complete () |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
926 "Generates the `word-help-complete-index'." |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
927 (if word-help-complete-index |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
928 nil |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
929 (word-help-find-help-file) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
930 (cond |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
931 ((symbolp word-help-complete-list) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
932 (setq word-help-complete-index word-help-complete-list)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
933 (t |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
934 (word-help-process-indexes) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
935 (if (not (atom word-help-main-index)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
936 (let ((from-ob (car word-help-main-index))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
937 (message "Processing keywords...") |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
938 (setq word-help-complete-index |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
939 (mapcar |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
940 (lambda (cmpl) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
941 (let |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
942 ((regexp (car cmpl)) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
943 (subm (cond ((nth 1 cmpl)) (0))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
944 (app (cond ((nth 2 cmpl)) (""))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
945 (re-list (cond ((nth 3 cmpl)) ('(("."))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
946 (obarr (make-vector 47 0))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
947 (list regexp subm subm app |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
948 (word-help-extract-matches from-ob obarr |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
949 re-list)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
950 word-help-complete-list)))))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
951 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
952 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
953 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Misc. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
954 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
955 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
956 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
957 ;;; Default mapping |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
958 |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
959 (defun word-help-make-default-map (list vars) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
960 "Makes a default mapping for `vars', which must be listed in order. |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
961 vars is a list of quoted symbols. If the nth entry in the list is |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
962 non-nil, the nth variable will be given this value. If nil, the var |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
963 will be given the global default value." |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
964 (set (car vars) (cond ((car list)) ((default-value (car vars))))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
965 (if (cdr vars) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
966 (word-help-make-default-map (cdr list) (cdr vars)))) |
56bf42e4fb29
(word-help-mode-alist, reset-word-help)
Richard M. Stallman <rms@gnu.org>
parents:
16811
diff
changeset
|
967 |
16811 | 968 (provide 'word-help) |
969 | |
970 ;;; word-help.el ends here |