Mercurial > emacs
annotate lisp/info-look.el @ 47000:005cc008b551
(redisplay_window): Do not `goto try_to_scroll' when we
end up on a partially visible line; this reverts a specific part
of the 2002-07-07 change by Richard M. Stallman to "fix" a nasty
display error which has been reported several times now.
However it introduces the problem that changes was supposed to fix.
See my comments in the source if you want to debug this further.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Thu, 22 Aug 2002 16:52:56 +0000 |
parents | d09ed551daf4 |
children | 78987e4bee15 |
rev | line source |
---|---|
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
36605
diff
changeset
|
1 ;;; info-look.el --- major-mode-sensitive Info index lookup facility |
18322 | 2 ;; An older version of this was known as libc.el. |
3 | |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
4 ;; Copyright (C) 1995,96,97,98,99,2001 Free Software Foundation, Inc. |
18322 | 5 |
30110
23cb074f9d88
Change author's mail address.
Gerd Moellmann <gerd@gnu.org>
parents:
28112
diff
changeset
|
6 ;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org> |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
7 ;; (did not show signs of life (Nov 2001) -stef) |
18322 | 8 ;; Keywords: help languages |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
25 ;; Boston, MA 02111-1307, USA. | |
26 | |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
27 ;;; Commentary: |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
28 |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
29 ;; Really cool code to lookup info indexes. |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
30 ;; Try especially info-lookup-symbol (aka C-h TAB). |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
31 |
18322 | 32 ;;; Code: |
33 | |
34 (require 'info) | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
35 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
36 (defgroup info-lookup nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
37 "Major mode sensitive help agent." |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
38 :group 'help :group 'languages) |
18322 | 39 |
40 (defvar info-lookup-mode nil | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
41 "Symbol of the current buffer's help mode. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
42 Help is provided according to the buffer's major mode if value is nil. |
18322 | 43 Automatically becomes buffer local when set in any fashion.") |
44 (make-variable-buffer-local 'info-lookup-mode) | |
45 | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
46 (defcustom info-lookup-other-window-flag t |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
47 "Non-nil means pop up the Info buffer in another window." |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
48 :group 'info-lookup :type 'boolean) |
18322 | 49 |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
50 (defcustom info-lookup-highlight-face 'highlight |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
51 "Face for highlighting looked up help items. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
52 Setting this variable to nil disables highlighting." |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
53 :group 'info-lookup :type 'face) |
18322 | 54 |
55 (defvar info-lookup-highlight-overlay nil | |
56 "Overlay object used for highlighting.") | |
57 | |
22281 | 58 (defcustom info-lookup-file-name-alist |
46525
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
59 '(("\\`ac\\(local\\|site\\|include\\)\\.m4\\'" . autoconf-mode)) |
22281 | 60 "Alist of file names handled specially. |
61 List elements are cons cells of the form | |
62 | |
63 (REGEXP . MODE) | |
64 | |
65 If a file name matches REGEXP, then use help mode MODE instead of the | |
66 buffer's major mode." | |
67 :group 'info-lookup :type '(repeat (cons (string :tag "Regexp") | |
68 (symbol :tag "Mode")))) | |
69 | |
18322 | 70 (defvar info-lookup-history nil |
71 "History of previous input lines.") | |
72 | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
73 (defvar info-lookup-alist nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
74 "Alist of known help topics. |
18322 | 75 Cons cells are of the form |
76 | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
77 (HELP-TOPIC . HELP-DATA) |
18322 | 78 |
79 HELP-TOPIC is the symbol of a help topic. | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
80 HELP-DATA is a HELP-TOPIC's public data set. |
18322 | 81 Value is an alist with elements of the form |
82 | |
83 (HELP-MODE REGEXP IGNORE-CASE DOC-SPEC PARSE-RULE OTHER-MODES) | |
84 | |
85 HELP-MODE is a mode's symbol. | |
86 REGEXP is a regular expression matching those help items whose | |
87 documentation can be looked up via DOC-SPEC. | |
88 IGNORE-CASE is non-nil if help items are case insensitive. | |
89 DOC-SPEC is a list of documentation specifications of the form | |
90 | |
91 (INFO-NODE TRANS-FUNC PREFIX SUFFIX) | |
92 | |
93 INFO-NODE is the name (including file name part) of an Info index. | |
94 TRANS-FUNC is a function translating index entries into help items; | |
95 nil means add only those index entries matching REGEXP, a string | |
96 means prepend string to the first word of all index entries. | |
97 PREFIX and SUFFIX are parts of a regular expression. If one of | |
98 them is non-nil then search the help item's Info node for the | |
99 first occurrence of the regular expression `PREFIX ITEM SUFFIX'. | |
100 ITEM will be highlighted with `info-lookup-highlight-face' if this | |
101 variable is not nil. | |
102 PARSE-RULE is either the symbol name of a function or a regular | |
103 expression for guessing the default help item at point. Fuzzy | |
104 regular expressions like \"[_a-zA-Z0-9]+\" do a better job if | |
105 there are no clear delimiters; do not try to write too complex | |
106 expressions. PARSE-RULE defaults to REGEXP. | |
107 OTHER-MODES is a list of cross references to other help modes.") | |
108 | |
109 (defsubst info-lookup->topic-value (topic) | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
110 (cdr (assoc topic info-lookup-alist))) |
18322 | 111 |
112 (defsubst info-lookup->mode-value (topic mode) | |
113 (assoc mode (info-lookup->topic-value topic))) | |
114 | |
115 (defsubst info-lookup->regexp (topic mode) | |
116 (nth 1 (info-lookup->mode-value topic mode))) | |
117 | |
118 (defsubst info-lookup->ignore-case (topic mode) | |
119 (nth 2 (info-lookup->mode-value topic mode))) | |
120 | |
121 (defsubst info-lookup->doc-spec (topic mode) | |
122 (nth 3 (info-lookup->mode-value topic mode))) | |
123 | |
124 (defsubst info-lookup->parse-rule (topic mode) | |
125 (nth 4 (info-lookup->mode-value topic mode))) | |
126 | |
127 (defsubst info-lookup->other-modes (topic mode) | |
128 (nth 5 (info-lookup->mode-value topic mode))) | |
129 | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
130 (defun info-lookup-add-help (&rest arg) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
131 "Add or update a help specification. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
132 Function arguments are one or more options of the form |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
133 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
134 KEYWORD ARGUMENT |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
135 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
136 KEYWORD is either `:topic', `:mode', `:regexp', `:ignore-case', |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
137 `:doc-spec', `:parse-rule', or `:other-modes'. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
138 ARGUMENT has a value as explained in the documentation of the |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
139 variable `info-lookup-alist'. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
140 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
141 If no topic or mode option has been specified, then the help topic defaults |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
142 to `symbol', and the help mode defaults to the current major mode." |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
143 (apply 'info-lookup-add-help* nil arg)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
144 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
145 (defun info-lookup-maybe-add-help (&rest arg) |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
146 "Add a help specification iff none is defined. |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
147 See the documentation of the function `info-lookup-add-help' |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
148 for more details." |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
149 (apply 'info-lookup-add-help* t arg)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
150 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
151 (defun info-lookup-add-help* (maybe &rest arg) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
152 (let (topic mode regexp ignore-case doc-spec |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
153 parse-rule other-modes keyword value) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
154 (setq topic 'symbol |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
155 mode major-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
156 regexp "\\w+") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
157 (while arg |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
158 (setq keyword (car arg)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
159 (or (symbolp keyword) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
160 (error "Junk in argument list \"%S\"" arg)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
161 (setq arg (cdr arg)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
162 (and (null arg) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
163 (error "Keyword \"%S\" is missing an argument" keyword)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
164 (setq value (car arg) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
165 arg (cdr arg)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
166 (cond ((eq keyword :topic) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
167 (setq topic value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
168 ((eq keyword :mode) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
169 (setq mode value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
170 ((eq keyword :regexp) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
171 (setq regexp value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
172 ((eq keyword :ignore-case) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
173 (setq ignore-case value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
174 ((eq keyword :doc-spec) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
175 (setq doc-spec value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
176 ((eq keyword :parse-rule) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
177 (setq parse-rule value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
178 ((eq keyword :other-modes) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
179 (setq other-modes value)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
180 (t |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
181 (error "Unknown keyword \"%S\"" keyword)))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
182 (or (and maybe (info-lookup->mode-value topic mode)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
183 (let* ((data (list regexp ignore-case doc-spec parse-rule other-modes)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
184 (topic-cell (or (assoc topic info-lookup-alist) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
185 (car (setq info-lookup-alist |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
186 (cons (cons topic nil) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
187 info-lookup-alist))))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
188 (mode-cell (assoc mode topic-cell))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
189 (if (null mode-cell) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
190 (setcdr topic-cell (cons (cons mode data) (cdr topic-cell))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
191 (setcdr mode-cell data)))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
192 nil)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
193 |
18322 | 194 (defvar info-lookup-cache nil |
195 "Cache storing data maintained automatically by the program. | |
196 Value is an alist with cons cell of the form | |
197 | |
198 (HELP-TOPIC . ((HELP-MODE INITIALIZED COMPLETIONS REFER-MODES) ...)) | |
199 | |
200 HELP-TOPIC is the symbol of a help topic. | |
201 HELP-MODE is a mode's symbol. | |
202 INITIALIZED is nil if HELP-MODE is uninitialized, t if | |
203 HELP-MODE is initialized, and `0' means HELP-MODE is | |
204 initialized but void. | |
205 COMPLETIONS is an alist of documented help items. | |
206 REFER-MODES is a list of other help modes to use.") | |
207 | |
208 (defsubst info-lookup->cache (topic) | |
209 (or (assoc topic info-lookup-cache) | |
210 (car (setq info-lookup-cache | |
211 (cons (cons topic nil) | |
212 info-lookup-cache))))) | |
213 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
214 (defun info-lookup->topic-cache (topic) |
18322 | 215 (cdr (info-lookup->cache topic))) |
216 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
217 (defun info-lookup->mode-cache (topic mode) |
18322 | 218 (assoc mode (info-lookup->topic-cache topic))) |
219 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
220 (defun info-lookup->initialized (topic mode) |
18322 | 221 (nth 1 (info-lookup->mode-cache topic mode))) |
222 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
223 (defun info-lookup->completions (topic mode) |
18322 | 224 (or (info-lookup->initialized topic mode) |
225 (info-lookup-setup-mode topic mode)) | |
226 (nth 2 (info-lookup->mode-cache topic mode))) | |
227 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
228 (defun info-lookup->refer-modes (topic mode) |
18322 | 229 (or (info-lookup->initialized topic mode) |
230 (info-lookup-setup-mode topic mode)) | |
231 (nth 3 (info-lookup->mode-cache topic mode))) | |
232 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
233 (defun info-lookup->all-modes (topic mode) |
18322 | 234 (cons mode (info-lookup->refer-modes topic mode))) |
235 | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
236 (defun info-lookup-quick-all-modes (topic mode) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
237 (cons mode (info-lookup->other-modes topic mode))) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
238 |
18322 | 239 ;;;###autoload |
240 (defun info-lookup-reset () | |
241 "Throw away all cached data. | |
242 This command is useful if the user wants to start at the beginning without | |
243 quitting Emacs, for example, after some Info documents were updated on the | |
244 system." | |
245 (interactive) | |
246 (setq info-lookup-cache nil)) | |
247 | |
248 ;;;###autoload | |
249 (defun info-lookup-symbol (symbol &optional mode) | |
24829
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
250 "Display the definition of SYMBOL, as found in the relevant manual. |
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
251 When this command is called interactively, it reads SYMBOL from the minibuffer. |
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
252 In the minibuffer, use M-n to yank the default argument value |
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
253 into the minibuffer so you can edit it. |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
254 The default symbol is the one found at point. |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
255 |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
256 With prefix arg a query for the symbol help mode is offered." |
18322 | 257 (interactive |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
258 (info-lookup-interactive-arguments 'symbol current-prefix-arg)) |
18322 | 259 (info-lookup 'symbol symbol mode)) |
260 | |
261 ;;;###autoload | |
262 (defun info-lookup-file (file &optional mode) | |
263 "Display the documentation of a file. | |
24829
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
264 When this command is called interactively, it reads FILE from the minibuffer. |
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
265 In the minibuffer, use M-n to yank the default file name |
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
266 into the minibuffer so you can edit it. |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
267 The default file name is the one found at point. |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
268 |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
269 With prefix arg a query for the file help mode is offered." |
18322 | 270 (interactive |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
271 (info-lookup-interactive-arguments 'file current-prefix-arg)) |
18322 | 272 (info-lookup 'file file mode)) |
273 | |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
274 (defun info-lookup-interactive-arguments (topic &optional query) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
275 "Read and return argument value (and help mode) for help topic TOPIC. |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
276 If optional argument QUERY is non-nil, query for the help mode." |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
277 (let* ((mode (cond (query |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
278 (info-lookup-change-mode topic)) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
279 ((info-lookup->mode-value topic (info-lookup-select-mode)) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
280 info-lookup-mode) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
281 ((info-lookup-change-mode topic)))) |
18322 | 282 (completions (info-lookup->completions topic mode)) |
283 (default (info-lookup-guess-default topic mode)) | |
284 (completion-ignore-case (info-lookup->ignore-case topic mode)) | |
285 (enable-recursive-minibuffers t) | |
286 (value (completing-read | |
24829
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
287 (if default |
18322 | 288 (format "Describe %s (default %s): " topic default) |
289 (format "Describe %s: " topic)) | |
24829
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
290 completions nil nil nil 'info-lookup-history default))) |
18322 | 291 (list (if (equal value "") default value) mode))) |
292 | |
22281 | 293 (defun info-lookup-select-mode () |
294 (when (and (not info-lookup-mode) (buffer-file-name)) | |
295 (let ((file-name (file-name-nondirectory (buffer-file-name))) | |
296 (file-name-alist info-lookup-file-name-alist)) | |
297 (while (and (not info-lookup-mode) file-name-alist) | |
298 (when (string-match (caar file-name-alist) file-name) | |
299 (setq info-lookup-mode (cdar file-name-alist))) | |
300 (setq file-name-alist (cdr file-name-alist))))) | |
301 (or info-lookup-mode (setq info-lookup-mode major-mode))) | |
302 | |
18322 | 303 (defun info-lookup-change-mode (topic) |
304 (let* ((completions (mapcar (lambda (arg) | |
305 (cons (symbol-name (car arg)) (car arg))) | |
306 (info-lookup->topic-value topic))) | |
307 (mode (completing-read | |
308 (format "Use %s help mode: " topic) | |
309 completions nil t nil 'info-lookup-history))) | |
310 (or (setq mode (cdr (assoc mode completions))) | |
311 (error "No %s help available" topic)) | |
312 (or (info-lookup->mode-value topic mode) | |
313 (error "No %s help available for `%s'" topic mode)) | |
314 (setq info-lookup-mode mode))) | |
315 | |
316 (defun info-lookup (topic item mode) | |
317 "Display the documentation of a help item." | |
22281 | 318 (or mode (setq mode (info-lookup-select-mode))) |
18322 | 319 (or (info-lookup->mode-value topic mode) |
320 (error "No %s help available for `%s'" topic mode)) | |
321 (let ((entry (or (assoc (if (info-lookup->ignore-case topic mode) | |
322 (downcase item) item) | |
323 (info-lookup->completions topic mode)) | |
324 (error "Not documented as a %s: %s" topic (or item "")))) | |
325 (modes (info-lookup->all-modes topic mode)) | |
326 (window (selected-window)) | |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
327 found doc-spec node prefix suffix doc-found) |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
328 (if (or (not info-lookup-other-window-flag) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
329 (eq (current-buffer) (get-buffer "*info*"))) |
18322 | 330 (info) |
30348
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
331 (progn |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
332 (save-window-excursion (info)) |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
333 ;; Determine whether or not the Info buffer is visible in |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
334 ;; another frame on the same display. If it is, simply raise |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
335 ;; that frame. Otherwise, display it in another window. |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
336 (let* ((window (get-buffer-window "*info*" t)) |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
337 (info-frame (and window (window-frame window)))) |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
338 (if (and info-frame |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
339 (display-multi-frame-p) |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
340 (memq info-frame (frames-on-display-list))) |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
341 (select-frame info-frame) |
2dc989936987
(info-lookup): If *info* is shown in another frame
Gerd Moellmann <gerd@gnu.org>
parents:
30110
diff
changeset
|
342 (switch-to-buffer-other-window "*info*"))))) |
18322 | 343 (while (and (not found) modes) |
344 (setq doc-spec (info-lookup->doc-spec topic (car modes))) | |
345 (while (and (not found) doc-spec) | |
346 (setq node (nth 0 (car doc-spec)) | |
347 prefix (nth 2 (car doc-spec)) | |
348 suffix (nth 3 (car doc-spec))) | |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
349 (when (condition-case error-data |
25310 | 350 (progn |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
351 (Info-goto-node node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
352 (setq doc-found t)) |
25310 | 353 (error |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
354 (message "Cannot access Info node %s" node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
355 (sit-for 1) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
356 nil)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
357 (condition-case nil |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
358 (progn |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
359 (Info-menu (or (cdr entry) item)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
360 (setq found t) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
361 (if (or prefix suffix) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
362 (let ((case-fold-search |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
363 (info-lookup->ignore-case topic (car modes))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
364 (buffer-read-only nil)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
365 (goto-char (point-min)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
366 (re-search-forward |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
367 (concat prefix (regexp-quote item) suffix)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
368 (goto-char (match-beginning 0)) |
28112
853a7fcaf7f0
(info-lookup): Use display-color-p.
Dave Love <fx@gnu.org>
parents:
25364
diff
changeset
|
369 (and (display-color-p) info-lookup-highlight-face |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
370 ;; Search again for ITEM so that the first |
42942 | 371 ;; occurrence of ITEM will be highlighted. |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
372 (re-search-forward (regexp-quote item)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
373 (let ((start (match-beginning 0)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
374 (end (match-end 0))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
375 (if (overlayp info-lookup-highlight-overlay) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
376 (move-overlay info-lookup-highlight-overlay |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
377 start end (current-buffer)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
378 (setq info-lookup-highlight-overlay |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
379 (make-overlay start end)))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
380 (overlay-put info-lookup-highlight-overlay |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
381 'face info-lookup-highlight-face))))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
382 (error nil))) |
18322 | 383 (setq doc-spec (cdr doc-spec))) |
384 (setq modes (cdr modes))) | |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
385 (or doc-found |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
386 (error "Info documentation for lookup was not found")) |
18322 | 387 ;; Don't leave the Info buffer if the help item couldn't be looked up. |
388 (if (and info-lookup-other-window-flag found) | |
389 (select-window window)))) | |
390 | |
391 (defun info-lookup-setup-mode (topic mode) | |
392 "Initialize the internal data structure." | |
393 (or (info-lookup->initialized topic mode) | |
394 (let (cell data (initialized 0) completions refer-modes) | |
395 (if (not (info-lookup->mode-value topic mode)) | |
396 (message "No %s help available for `%s'" topic mode) | |
397 ;; Recursively setup cross references. | |
398 ;; But refer only to non-void modes. | |
399 (mapcar (lambda (arg) | |
400 (or (info-lookup->initialized topic arg) | |
401 (info-lookup-setup-mode topic arg)) | |
402 (and (eq (info-lookup->initialized topic arg) t) | |
403 (setq refer-modes (cons arg refer-modes)))) | |
404 (info-lookup->other-modes topic mode)) | |
405 (setq refer-modes (nreverse refer-modes)) | |
406 ;; Build the full completion alist. | |
407 (setq completions | |
25041
d45a32b777f6
(info-lookup-setup-mode): Don't give up, if
Karl Heuer <kwzh@gnu.org>
parents:
24829
diff
changeset
|
408 (nconc (condition-case nil |
d45a32b777f6
(info-lookup-setup-mode): Don't give up, if
Karl Heuer <kwzh@gnu.org>
parents:
24829
diff
changeset
|
409 (info-lookup-make-completions topic mode) |
d45a32b777f6
(info-lookup-setup-mode): Don't give up, if
Karl Heuer <kwzh@gnu.org>
parents:
24829
diff
changeset
|
410 (error nil)) |
18322 | 411 (apply 'append |
412 (mapcar (lambda (arg) | |
413 (info-lookup->completions topic arg)) | |
414 refer-modes)))) | |
415 (setq initialized t)) | |
416 ;; Update `info-lookup-cache'. | |
417 (setq cell (info-lookup->mode-cache topic mode) | |
418 data (list initialized completions refer-modes)) | |
419 (if (not cell) | |
420 (setcdr (info-lookup->cache topic) | |
421 (cons (cons mode data) (info-lookup->topic-cache topic))) | |
422 (setcdr cell data)) | |
423 initialized))) | |
424 | |
425 (defun info-lookup-make-completions (topic mode) | |
426 "Create a unique alist from all index entries." | |
20519
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
427 (let ((doc-spec (info-lookup->doc-spec topic mode)) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
428 (regexp (concat "^\\(" (info-lookup->regexp topic mode) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
429 "\\)\\([ \t].*\\)?$")) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
430 node trans entry item prefix result doc-found |
20519
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
431 (buffer (get-buffer-create " temp-info-look"))) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
432 (with-current-buffer buffer |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
433 (Info-mode)) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
434 (while doc-spec |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
435 (setq node (nth 0 (car doc-spec)) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
436 trans (cond ((eq (nth 1 (car doc-spec)) nil) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
437 (lambda (arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
438 (if (string-match regexp arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
439 (match-string 1 arg)))) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
440 ((stringp (nth 1 (car doc-spec))) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
441 (setq prefix (nth 1 (car doc-spec))) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
442 (lambda (arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
443 (if (string-match "^\\([^: \t\n]+\\)" arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
444 (concat prefix (match-string 1 arg))))) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
445 (t (nth 1 (car doc-spec))))) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
446 (with-current-buffer buffer |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
447 (message "Processing Info node `%s'..." node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
448 (when (condition-case error-data |
25310 | 449 (progn |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
450 (Info-goto-node node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
451 (setq doc-found t)) |
25310 | 452 (error |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
453 (message "Cannot access Info node `%s'" node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
454 (sit-for 1) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
455 nil)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
456 (condition-case nil |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
457 (progn |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
458 (goto-char (point-min)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
459 (and (search-forward "\n* Menu:" nil t) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
460 (while (re-search-forward "\n\\* \\([^:\t\n]*\\):" nil t) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
461 (setq entry (match-string 1) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
462 item (funcall trans entry)) |
23365
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
463 ;; `trans' can return nil if the regexp doesn't match. |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
464 (when (and item |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
465 ;; Sometimes there's more than one Menu: |
25310 | 466 (not (string= entry "Menu"))) |
23365
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
467 (and (info-lookup->ignore-case topic mode) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
468 (setq item (downcase item))) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
469 (and (string-equal entry item) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
470 (setq entry nil)) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
471 (and (or (assoc item result) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
472 (setq result (cons (cons item entry) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
473 result)))))))) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
474 (error nil)))) |
20519
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
475 (message "Processing Info node `%s'...done" node) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
476 (setq doc-spec (cdr doc-spec))) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
477 (or doc-found |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
478 (error "Info documentation for lookup was not found")) |
20519
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
479 result)) |
18322 | 480 |
481 (defun info-lookup-guess-default (topic mode) | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
482 "Return a guess for a symbol to look up, based on text around point. |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
483 Try all related modes applicable to TOPIC and MODE. |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
484 Return nil if there is nothing appropriate in the buffer near point." |
18322 | 485 (let ((modes (info-lookup->all-modes topic mode)) |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
486 guess) |
18322 | 487 (while (and (not guess) modes) |
488 (setq guess (info-lookup-guess-default* topic (car modes)) | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
489 modes (cdr modes))) |
18322 | 490 ;; Collapse whitespace characters. |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
491 (when guess |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
492 (let ((pos 0)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
493 (while (string-match "[ \t\n]+" guess pos) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
494 (setq pos (1+ (match-beginning 0))) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
495 (setq guess (replace-match " " t t guess))))) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
496 guess)) |
18322 | 497 |
498 (defun info-lookup-guess-default* (topic mode) | |
499 (let ((case-fold-search (info-lookup->ignore-case topic mode)) | |
500 (rule (or (info-lookup->parse-rule topic mode) | |
501 (info-lookup->regexp topic mode))) | |
502 (start (point)) end regexp subexp result) | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
503 (save-excursion |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
504 (if (symbolp rule) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
505 (setq result (funcall rule)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
506 (if (consp rule) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
507 (setq regexp (car rule) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
508 subexp (cdr rule)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
509 (setq regexp rule |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
510 subexp 0)) |
25310 | 511 ;; If at start of symbol, don't go back to end of previous one. |
512 (if (save-match-data | |
513 (looking-at "[ \t\n]")) | |
514 (skip-chars-backward " \t\n")) | |
515 (setq end (point)) | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
516 (while (and (re-search-backward regexp nil t) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
517 (looking-at regexp) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
518 (>= (match-end 0) end)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
519 (setq result (match-string subexp))) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
520 (if (not result) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
521 (progn |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
522 (goto-char start) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
523 (skip-chars-forward " \t\n") |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
524 (and (looking-at regexp) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
525 (setq result (match-string subexp))))))) |
18322 | 526 result)) |
527 | |
528 (defun info-lookup-guess-c-symbol () | |
529 "Get the C symbol at point." | |
530 (condition-case nil | |
531 (progn | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
532 (skip-syntax-backward "w_") |
18322 | 533 (let ((start (point)) prefix name) |
534 ;; Test for a leading `struct', `union', or `enum' keyword | |
535 ;; but ignore names like `foo_struct'. | |
536 (setq prefix (and (< (skip-chars-backward " \t\n") 0) | |
537 (< (skip-chars-backward "_a-zA-Z0-9") 0) | |
538 (looking-at "\\(struct\\|union\\|enum\\)\\s ") | |
539 (concat (match-string 1) " "))) | |
540 (goto-char start) | |
541 (and (looking-at "[_a-zA-Z][_a-zA-Z0-9]*") | |
542 (setq name (match-string 0))) | |
543 ;; Caveat! Look forward if point is at `struct' etc. | |
544 (and (not prefix) | |
545 (or (string-equal name "struct") | |
546 (string-equal name "union") | |
547 (string-equal name "enum")) | |
548 (looking-at "[a-z]+\\s +\\([_a-zA-Z][_a-zA-Z0-9]*\\)") | |
549 (setq prefix (concat name " ") | |
550 name (match-string 1))) | |
551 (and (or prefix name) | |
552 (concat prefix name)))) | |
553 (error nil))) | |
554 | |
555 ;;;###autoload | |
556 (defun info-complete-symbol (&optional mode) | |
557 "Perform completion on symbol preceding point." | |
18323
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
558 (interactive) |
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
559 (info-complete 'symbol |
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
560 (or mode |
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
561 (if (info-lookup->mode-value |
22281 | 562 'symbol (info-lookup-select-mode)) |
563 info-lookup-mode | |
18323
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
564 (info-lookup-change-mode 'symbol))))) |
18322 | 565 |
566 ;;;###autoload | |
567 (defun info-complete-file (&optional mode) | |
568 "Perform completion on file preceding point." | |
20973
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
569 (interactive) |
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
570 (info-complete 'file |
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
571 (or mode |
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
572 (if (info-lookup->mode-value |
22281 | 573 'file (info-lookup-select-mode)) |
574 info-lookup-mode | |
20973
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
575 (info-lookup-change-mode 'file))))) |
18322 | 576 |
577 (defun info-complete (topic mode) | |
578 "Try to complete a help item." | |
579 (barf-if-buffer-read-only) | |
22281 | 580 (or mode (setq mode (info-lookup-select-mode))) |
18322 | 581 (or (info-lookup->mode-value topic mode) |
582 (error "No %s completion available for `%s'" topic mode)) | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
583 (let ((modes (info-lookup-quick-all-modes topic mode)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
584 (start (point)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
585 try) |
18322 | 586 (while (and (not try) modes) |
587 (setq mode (car modes) | |
588 modes (cdr modes) | |
589 try (info-lookup-guess-default* topic mode)) | |
590 (goto-char start)) | |
591 (and (not try) | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
592 (error "Found no %S to complete" topic)) |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
593 (let ((completions (info-lookup->completions topic mode)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
594 (completion-ignore-case (info-lookup->ignore-case topic mode)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
595 completion) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
596 (setq completion (try-completion try completions)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
597 (cond ((not completion) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
598 (ding) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
599 (message "No match")) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
600 ((stringp completion) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
601 (or (assoc completion completions) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
602 (setq completion (completing-read |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
603 (format "Complete %S: " topic) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
604 completions nil t completion |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
605 info-lookup-history))) |
25310 | 606 ;; Find the original symbol and zap it. |
607 (end-of-line) | |
608 (while (and (search-backward try nil t) | |
609 (< start (point)))) | |
610 (replace-match "") | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
611 (insert completion)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
612 (t |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
613 (message "%s is complete" |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
614 (capitalize (prin1-to-string topic)))))))) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
615 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
616 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
617 ;;; Initialize some common modes. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
618 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
619 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
620 :mode 'c-mode :topic 'symbol |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
621 :regexp "\\(struct \\|union \\|enum \\)?[_a-zA-Z][_a-zA-Z0-9]*" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
622 :doc-spec '(("(libc)Function Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
623 "^[ \t]+- \\(Function\\|Macro\\): .*\\<" "\\>") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
624 ("(libc)Variable Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
625 "^[ \t]+- \\(Variable\\|Macro\\): .*\\<" "\\>") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
626 ("(libc)Type Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
627 "^[ \t]+- Data Type: \\<" "\\>") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
628 ("(termcap)Var Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
629 "^[ \t]*`" "'")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
630 :parse-rule 'info-lookup-guess-c-symbol) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
631 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
632 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
633 :mode 'c-mode :topic 'file |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
634 :regexp "[_a-zA-Z0-9./+-]+" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
635 :doc-spec '(("(libc)File Index"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
636 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
637 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
638 :mode 'bison-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
639 :regexp "[:;|]\\|%\\([%{}]\\|[_a-z]+\\)\\|YY[_A-Z]+\\|yy[_a-z]+" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
640 :doc-spec '(("(bison)Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
641 "`" "'")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
642 :parse-rule "[:;|]\\|%\\([%{}]\\|[_a-zA-Z][_a-zA-Z0-9]*\\)" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
643 :other-modes '(c-mode)) |
20899
d1f6ac340403
(info-complete): Display completions on second invocation at same point
Richard M. Stallman <rms@gnu.org>
parents:
20690
diff
changeset
|
644 |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
645 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
646 :mode 'makefile-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
647 :regexp "\\$[^({]\\|\\.[_A-Z]*\\|[_a-zA-Z][_a-zA-Z0-9-]*" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
648 :doc-spec '(("(make)Name Index" nil |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
649 "^[ \t]*`" "'") |
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
650 ("(automake)Macro and Variable Index" nil |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
651 "^[ \t]*`" "'")) |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
652 :parse-rule "\\$[^({]\\|\\.[_A-Z]*\\|[_a-zA-Z0-9-]+" |
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
653 :other-modes '(automake-mode)) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
654 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
655 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
656 :mode 'texinfo-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
657 :regexp "@\\([a-zA-Z]+\\|[^a-zA-Z]\\)" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
658 :doc-spec '(("(texinfo)Command and Variable Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
659 ;; Ignore Emacs commands and prepend a `@'. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
660 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
661 (if (string-match "^\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\( .*\\)?$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
662 (concat "@" (match-string 1 item)))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
663 "`" "'"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
664 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
665 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
666 :mode 'm4-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
667 :regexp "[_a-zA-Z][_a-zA-Z0-9]*" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
668 :doc-spec '(("(m4)Macro index")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
669 :parse-rule "[_a-zA-Z0-9]+") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
670 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
671 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
672 :mode 'autoconf-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
673 :regexp "A[CM]_[_A-Z0-9]+" |
46525
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
674 :doc-spec '(("(autoconf)Autoconf Macro Index" "AC_" |
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
675 "^[ \t]+- \\(Macro\\|Variable\\): .*\\<" "\\>") |
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
676 ("(automake)Macro and Variable Index" nil |
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
677 "^[ \t]*`" "'") |
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
678 ;; These are for older versions (probably pre autoconf 2.5x): |
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
679 ("(autoconf)Macro Index" "AC_" |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
680 "^[ \t]+- \\(Macro\\|Variable\\): .*\\<" "\\>") |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
681 ("(automake)Macro and Variable Index" nil |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
682 "^[ \t]*`" "'")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
683 ;; Autoconf symbols are M4 macros. Thus use M4's parser. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
684 :parse-rule 'ignore |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
685 :other-modes '(m4-mode)) |
18322 | 686 |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
687 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
688 :mode 'awk-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
689 :regexp "[_a-zA-Z]+" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
690 :doc-spec '(("(gawk)Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
691 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
692 (let ((case-fold-search nil)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
693 (cond |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
694 ;; `BEGIN' and `END'. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
695 ((string-match "^\\([A-Z]+\\) special pattern\\b" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
696 (match-string 1 item)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
697 ;; `if', `while', `do', ... |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
698 ((string-match "^\\([a-z]+\\) statement\\b" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
699 (if (not (string-equal (match-string 1 item) "control")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
700 (match-string 1 item))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
701 ;; `NR', `NF', ... |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
702 ((string-match "^[A-Z]+$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
703 item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
704 ;; Built-in functions (matches to many entries). |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
705 ((string-match "^[a-z]+$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
706 item)))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
707 "`" "\\([ \t]*([^)]*)\\)?'"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
708 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
709 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
710 :mode 'perl-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
711 :regexp "[$@%][^a-zA-Z]\\|\\$\\^[A-Z]\\|[$@%]?[a-zA-Z][_a-zA-Z0-9]*" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
712 :doc-spec '(("(perl5)Function Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
713 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
714 (if (string-match "^\\([a-zA-Z0-9]+\\)" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
715 (match-string 1 item))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
716 "^" "\\b") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
717 ("(perl5)Variable Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
718 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
719 ;; Work around bad formatted array variables. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
720 (let ((sym (cond ((or (string-match "^\\$\\(.\\|@@\\)$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
721 (string-match "^\\$\\^[A-Z]$" item)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
722 item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
723 ((string-match |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
724 "^\\([$%@]\\|@@\\)?[_a-zA-Z0-9]+" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
725 (match-string 0 item)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
726 (t "")))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
727 (if (string-match "@@" sym) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
728 (setq sym (concat (substring sym 0 (match-beginning 0)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
729 (substring sym (1- (match-end 0)))))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
730 (if (string-equal sym "") nil sym))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
731 "^" "\\b")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
732 :parse-rule "[$@%]?\\([_a-zA-Z0-9]+\\|[^a-zA-Z]\\)") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
733 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
734 (info-lookup-maybe-add-help |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
735 :mode 'cperl-mode |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
736 :regexp "[$@%][^a-zA-Z]\\|\\$\\^[A-Z]\\|[$@%]?[a-zA-Z][_a-zA-Z0-9]*" |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
737 :other-modes '(perl-mode)) |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
738 |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
739 (info-lookup-maybe-add-help |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
740 :mode 'latex-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
741 :regexp "\\\\\\([a-zA-Z]+\\|[^a-zA-Z]\\)" |
25041
d45a32b777f6
(info-lookup-setup-mode): Don't give up, if
Karl Heuer <kwzh@gnu.org>
parents:
24829
diff
changeset
|
742 :doc-spec '(("(latex)Command Index" nil |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
743 "`" "\\({[^}]*}\\)?'"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
744 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
745 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
746 :mode 'emacs-lisp-mode |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
747 :regexp "[^][()'\" \t\n]+" |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
748 :doc-spec '(("(emacs)Command Index") |
20973
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
749 ("(emacs)Variable Index") |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
750 ("(elisp)Index"))) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
751 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
752 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
753 :mode 'lisp-interaction-mode |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
754 :regexp "[^][()'\" \t\n]+" |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
755 :parse-rule 'ignore |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
756 :other-modes '(emacs-lisp-mode)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
757 |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
758 (info-lookup-maybe-add-help |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
759 :mode 'lisp-mode |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
760 :regexp "[^()'\" \t\n]+" |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
761 :parse-rule 'ignore |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
762 :other-modes '(emacs-lisp-mode)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
763 |
22281 | 764 (info-lookup-maybe-add-help |
765 :mode 'scheme-mode | |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
766 :regexp "[^()'\" \t\n]+" |
22281 | 767 :ignore-case t |
23365
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
768 ;; Aubrey Jaffer's rendition from <URL:ftp://ftp-swiss.ai.mit.edu/pub/scm> |
22281 | 769 :doc-spec '(("(r5rs)Index" nil |
770 "^[ \t]+- [^:]+:[ \t]*" "\\b"))) | |
771 | |
23346 | 772 (info-lookup-maybe-add-help |
773 :mode 'octave-mode | |
774 :regexp "[_a-zA-Z0-9]+" | |
25364
d593a9e28430
Octave-mode support: for the function index entries, allow the prefix
Stephen Eglen <stephen@gnu.org>
parents:
25310
diff
changeset
|
775 :doc-spec '(("(octave)Function Index" nil |
d593a9e28430
Octave-mode support: for the function index entries, allow the prefix
Stephen Eglen <stephen@gnu.org>
parents:
25310
diff
changeset
|
776 "^ - [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil) |
23346 | 777 ("(octave)Variable Index" nil "^ - [^:]+:[ ]+" nil) |
778 ;; Catch lines of the form "xyz statement" | |
25310 | 779 ("(octave)Concept Index" |
23346 | 780 (lambda (item) |
781 (cond | |
782 ((string-match "^\\([A-Z]+\\) statement\\b" item) | |
783 (match-string 1 item)) | |
784 (t nil))) | |
785 nil; "^ - [^:]+:[ ]+" don't think this prefix is useful here. | |
786 nil))) | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
787 |
18322 | 788 (provide 'info-look) |
789 | |
790 ;;; info-look.el ends here |