Mercurial > emacs
annotate lisp/info-look.el @ 62149:e64f1e2ecec2
(easy-mmode-pretty-mode-name): Explain
more about the LIGHTER arg's usage in the doc string. Add
commentary to clarify what the code does. Fix the regexp that
strips whitespace from LIGHTER. Quote LIGHTER before using it,
since it could have characters special to regular expressions.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 07 May 2005 15:05:00 +0000 |
parents | 2b92855c9d6e |
children | 6fb026ad601f cb67264d6096 |
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 | |
59560 | 4 ;; Copyright (C) 1995,96,97,98,99,2001,03,04,05 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. |
53770
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
30 ;; Try especially info-lookup-symbol (aka C-h S). |
36605
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 |
58990
a009e1bf75be
(info-lookup-highlight-face): Change default from `highlight' to `match'.
Juri Linkov <juri@jurta.org>
parents:
58798
diff
changeset
|
50 (defcustom info-lookup-highlight-face 'match |
20909
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 | |
57469
2967bbb0802b
(info-lookup-file): Add info-file property.
Richard M. Stallman <rms@gnu.org>
parents:
55238
diff
changeset
|
248 ;;;###autoload (put 'info-lookup-symbol 'info-file "emacs") |
18322 | 249 ;;;###autoload |
250 (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
|
251 "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
|
252 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
|
253 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
|
254 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
|
255 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
|
256 |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
257 With prefix arg a query for the symbol help mode is offered." |
18322 | 258 (interactive |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
259 (info-lookup-interactive-arguments 'symbol current-prefix-arg)) |
18322 | 260 (info-lookup 'symbol symbol mode)) |
261 | |
57469
2967bbb0802b
(info-lookup-file): Add info-file property.
Richard M. Stallman <rms@gnu.org>
parents:
55238
diff
changeset
|
262 ;;;###autoload (put 'info-lookup-file 'info-file "emacs") |
18322 | 263 ;;;###autoload |
264 (defun info-lookup-file (file &optional mode) | |
265 "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
|
266 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
|
267 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
|
268 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
|
269 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
|
270 |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
271 With prefix arg a query for the file help mode is offered." |
18322 | 272 (interactive |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
273 (info-lookup-interactive-arguments 'file current-prefix-arg)) |
18322 | 274 (info-lookup 'file file mode)) |
275 | |
25057
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
276 (defun info-lookup-interactive-arguments (topic &optional query) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
277 "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
|
278 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
|
279 (let* ((mode (cond (query |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
280 (info-lookup-change-mode topic)) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
281 ((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
|
282 info-lookup-mode) |
6019ba9c1a95
(info-lookup-interactive-arguments): Add optional
Karl Heuer <kwzh@gnu.org>
parents:
25041
diff
changeset
|
283 ((info-lookup-change-mode topic)))) |
18322 | 284 (completions (info-lookup->completions topic mode)) |
285 (default (info-lookup-guess-default topic mode)) | |
286 (completion-ignore-case (info-lookup->ignore-case topic mode)) | |
287 (enable-recursive-minibuffers t) | |
288 (value (completing-read | |
24829
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
289 (if default |
18322 | 290 (format "Describe %s (default %s): " topic default) |
291 (format "Describe %s: " topic)) | |
24829
749c12791859
(info-lookup-file, info-lookup-symbol): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24769
diff
changeset
|
292 completions nil nil nil 'info-lookup-history default))) |
18322 | 293 (list (if (equal value "") default value) mode))) |
294 | |
22281 | 295 (defun info-lookup-select-mode () |
296 (when (and (not info-lookup-mode) (buffer-file-name)) | |
297 (let ((file-name (file-name-nondirectory (buffer-file-name))) | |
298 (file-name-alist info-lookup-file-name-alist)) | |
299 (while (and (not info-lookup-mode) file-name-alist) | |
300 (when (string-match (caar file-name-alist) file-name) | |
301 (setq info-lookup-mode (cdar file-name-alist))) | |
302 (setq file-name-alist (cdr file-name-alist))))) | |
303 (or info-lookup-mode (setq info-lookup-mode major-mode))) | |
304 | |
18322 | 305 (defun info-lookup-change-mode (topic) |
306 (let* ((completions (mapcar (lambda (arg) | |
307 (cons (symbol-name (car arg)) (car arg))) | |
308 (info-lookup->topic-value topic))) | |
309 (mode (completing-read | |
310 (format "Use %s help mode: " topic) | |
311 completions nil t nil 'info-lookup-history))) | |
312 (or (setq mode (cdr (assoc mode completions))) | |
313 (error "No %s help available" topic)) | |
314 (or (info-lookup->mode-value topic mode) | |
315 (error "No %s help available for `%s'" topic mode)) | |
316 (setq info-lookup-mode mode))) | |
317 | |
318 (defun info-lookup (topic item mode) | |
319 "Display the documentation of a help item." | |
22281 | 320 (or mode (setq mode (info-lookup-select-mode))) |
18322 | 321 (or (info-lookup->mode-value topic mode) |
322 (error "No %s help available for `%s'" topic mode)) | |
48940
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
323 (let* ((completions (info-lookup->completions topic mode)) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
324 (ignore-case (info-lookup->ignore-case topic mode)) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
325 (entry (or (assoc (if ignore-case (downcase item) item) completions) |
53407
0e54e5e10501
(info-lookup): Use assoc-string.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
326 (assoc-string item completions t) |
48940
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
327 (error "Not documented as a %s: %s" topic (or item "")))) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
328 (modes (info-lookup->all-modes topic mode)) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
329 (window (selected-window)) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
330 found doc-spec node prefix suffix doc-found) |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
331 (if (not (eq major-mode 'Info-mode)) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
332 (if (not info-lookup-other-window-flag) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
333 (info) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
334 (progn |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
335 (save-window-excursion (info)) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
336 ;; Determine whether or not the Info buffer is visible in |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
337 ;; another frame on the same display. If it is, simply raise |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
338 ;; that frame. Otherwise, display it in another window. |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
339 (let* ((window (get-buffer-window "*info*" t)) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
340 (info-frame (and window (window-frame window)))) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
341 (if (and info-frame |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
342 (display-multi-frame-p) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
343 (memq info-frame (frames-on-display-list)) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
344 (not (eq info-frame (selected-frame)))) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
345 (select-frame info-frame) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
346 (switch-to-buffer-other-window "*info*")))))) |
18322 | 347 (while (and (not found) modes) |
348 (setq doc-spec (info-lookup->doc-spec topic (car modes))) | |
349 (while (and (not found) doc-spec) | |
350 (setq node (nth 0 (car doc-spec)) | |
351 prefix (nth 2 (car doc-spec)) | |
352 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
|
353 (when (condition-case error-data |
25310 | 354 (progn |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
355 (Info-goto-node node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
356 (setq doc-found t)) |
25310 | 357 (error |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
358 (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
|
359 (sit-for 1) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
360 nil)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
361 (condition-case nil |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
362 (progn |
48940
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
363 ;; Don't use Info-menu, it forces case-fold-search to t |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
364 (let ((case-fold-search nil)) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
365 (re-search-forward |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
366 (concat "^\\* " (regexp-quote (or (cdr entry) (car entry))) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
367 ":"))) |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
368 (Info-follow-nearest-node) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
369 (setq found t) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
370 (if (or prefix suffix) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
371 (let ((case-fold-search |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
372 (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
|
373 (buffer-read-only nil)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
374 (goto-char (point-min)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
375 (re-search-forward |
48940
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
376 (concat prefix (regexp-quote (car entry)) suffix)) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
377 (goto-char (match-beginning 0)) |
28112
853a7fcaf7f0
(info-lookup): Use display-color-p.
Dave Love <fx@gnu.org>
parents:
25364
diff
changeset
|
378 (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
|
379 ;; Search again for ITEM so that the first |
42942 | 380 ;; occurrence of ITEM will be highlighted. |
48940
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
381 (re-search-forward (regexp-quote (car entry))) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
382 (let ((start (match-beginning 0)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
383 (end (match-end 0))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
384 (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
|
385 (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
|
386 start end (current-buffer)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
387 (setq info-lookup-highlight-overlay |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
388 (make-overlay start end)))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
389 (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
|
390 'face info-lookup-highlight-face))))) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
391 (error nil))) |
18322 | 392 (setq doc-spec (cdr doc-spec))) |
393 (setq modes (cdr modes))) | |
48940
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
394 ;; Alert the user if case was munged, and do this after bringing up the |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
395 ;; info buffer since that can print messages |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
396 (unless (or ignore-case |
78987e4bee15
(info-lookup): For ease of use try item
Richard M. Stallman <rms@gnu.org>
parents:
46525
diff
changeset
|
397 (string-equal item (car entry))) |
48988
d50289791f55
(info-lookup): Fix error message typo.
Richard M. Stallman <rms@gnu.org>
parents:
48940
diff
changeset
|
398 (message "Found in different case: %s" (car entry))) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
399 (or doc-found |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
400 (error "Info documentation for lookup was not found")) |
18322 | 401 ;; Don't leave the Info buffer if the help item couldn't be looked up. |
402 (if (and info-lookup-other-window-flag found) | |
403 (select-window window)))) | |
404 | |
405 (defun info-lookup-setup-mode (topic mode) | |
406 "Initialize the internal data structure." | |
407 (or (info-lookup->initialized topic mode) | |
408 (let (cell data (initialized 0) completions refer-modes) | |
409 (if (not (info-lookup->mode-value topic mode)) | |
410 (message "No %s help available for `%s'" topic mode) | |
411 ;; Recursively setup cross references. | |
412 ;; But refer only to non-void modes. | |
55097
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
413 (dolist (arg (info-lookup->other-modes topic mode)) |
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
414 (or (info-lookup->initialized topic arg) |
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
415 (info-lookup-setup-mode topic arg)) |
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
416 (and (eq (info-lookup->initialized topic arg) t) |
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
417 (setq refer-modes (cons arg refer-modes)))) |
18322 | 418 (setq refer-modes (nreverse refer-modes)) |
419 ;; Build the full completion alist. | |
420 (setq completions | |
25041
d45a32b777f6
(info-lookup-setup-mode): Don't give up, if
Karl Heuer <kwzh@gnu.org>
parents:
24829
diff
changeset
|
421 (nconc (condition-case nil |
d45a32b777f6
(info-lookup-setup-mode): Don't give up, if
Karl Heuer <kwzh@gnu.org>
parents:
24829
diff
changeset
|
422 (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
|
423 (error nil)) |
18322 | 424 (apply 'append |
425 (mapcar (lambda (arg) | |
426 (info-lookup->completions topic arg)) | |
427 refer-modes)))) | |
428 (setq initialized t)) | |
429 ;; Update `info-lookup-cache'. | |
430 (setq cell (info-lookup->mode-cache topic mode) | |
431 data (list initialized completions refer-modes)) | |
432 (if (not cell) | |
433 (setcdr (info-lookup->cache topic) | |
434 (cons (cons mode data) (info-lookup->topic-cache topic))) | |
435 (setcdr cell data)) | |
436 initialized))) | |
437 | |
438 (defun info-lookup-make-completions (topic mode) | |
439 "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
|
440 (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
|
441 (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
|
442 "\\)\\([ \t].*\\)?$")) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
443 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
|
444 (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
|
445 (with-current-buffer buffer |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
446 (Info-mode)) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
447 (while doc-spec |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
448 (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
|
449 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
|
450 (lambda (arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
451 (if (string-match regexp arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
452 (match-string 1 arg)))) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
453 ((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
|
454 (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
|
455 (lambda (arg) |
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
456 (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
|
457 (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
|
458 (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
|
459 (with-current-buffer buffer |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
460 (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
|
461 (when (condition-case error-data |
25310 | 462 (progn |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
463 (Info-goto-node node) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
464 (setq doc-found t)) |
25310 | 465 (error |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
466 (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
|
467 (sit-for 1) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
468 nil)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
469 (condition-case nil |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
470 (progn |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
471 (goto-char (point-min)) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
472 (and (search-forward "\n* Menu:" nil t) |
50950
a7b2bce87058
(info-lookup-make-completions): Allow colons in index entries by looking for ":
Juanma Barranquero <lekktu@gmail.com>
parents:
50451
diff
changeset
|
473 (while (re-search-forward "\n\\* \\(.*\\): " nil t) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
474 (setq entry (match-string 1) |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
475 item (funcall trans entry)) |
23365
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
476 ;; `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
|
477 (when (and item |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
478 ;; Sometimes there's more than one Menu: |
25310 | 479 (not (string= entry "Menu"))) |
23365
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
480 (and (info-lookup->ignore-case topic mode) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
481 (setq item (downcase item))) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
482 (and (string-equal entry item) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
483 (setq entry nil)) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
484 (and (or (assoc item result) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
485 (setq result (cons (cons item entry) |
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
486 result)))))))) |
20690
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
487 (error nil)))) |
20519
c7b3ef0ed1ad
(info-lookup-symbol-alist): Handle Emacs Lisp mode.
Richard M. Stallman <rms@gnu.org>
parents:
18323
diff
changeset
|
488 (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
|
489 (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
|
490 (or doc-found |
a51c71dd5cda
(info-lookup): Report if Info-goto-node fails.
Richard M. Stallman <rms@gnu.org>
parents:
20519
diff
changeset
|
491 (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
|
492 result)) |
18322 | 493 |
494 (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
|
495 "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
|
496 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
|
497 Return nil if there is nothing appropriate in the buffer near point." |
18322 | 498 (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
|
499 guess) |
18322 | 500 (while (and (not guess) modes) |
501 (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
|
502 modes (cdr modes))) |
18322 | 503 ;; Collapse whitespace characters. |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
504 (when guess |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
505 (let ((pos 0)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
506 (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
|
507 (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
|
508 (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
|
509 guess)) |
18322 | 510 |
511 (defun info-lookup-guess-default* (topic mode) | |
512 (let ((case-fold-search (info-lookup->ignore-case topic mode)) | |
513 (rule (or (info-lookup->parse-rule topic mode) | |
514 (info-lookup->regexp topic mode))) | |
515 (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
|
516 (save-excursion |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
517 (if (symbolp rule) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
518 (setq result (funcall rule)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
519 (if (consp rule) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
520 (setq regexp (car rule) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
521 subexp (cdr rule)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
522 (setq regexp rule |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
523 subexp 0)) |
25310 | 524 ;; If at start of symbol, don't go back to end of previous one. |
525 (if (save-match-data | |
526 (looking-at "[ \t\n]")) | |
527 (skip-chars-backward " \t\n")) | |
528 (setq end (point)) | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
529 (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
|
530 (looking-at regexp) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
531 (>= (match-end 0) end)) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
532 (setq result (match-string subexp))) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
533 (if (not result) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
534 (progn |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
535 (goto-char start) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
536 (skip-chars-forward " \t\n") |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
537 (and (looking-at regexp) |
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
538 (setq result (match-string subexp))))))) |
18322 | 539 result)) |
540 | |
541 (defun info-lookup-guess-c-symbol () | |
542 "Get the C symbol at point." | |
543 (condition-case nil | |
544 (progn | |
25222
1802f1bb3285
(info-lookup-guess-c-symbol): Use skip-syntax-backward.
Karl Heuer <kwzh@gnu.org>
parents:
25057
diff
changeset
|
545 (skip-syntax-backward "w_") |
18322 | 546 (let ((start (point)) prefix name) |
547 ;; Test for a leading `struct', `union', or `enum' keyword | |
548 ;; but ignore names like `foo_struct'. | |
549 (setq prefix (and (< (skip-chars-backward " \t\n") 0) | |
550 (< (skip-chars-backward "_a-zA-Z0-9") 0) | |
551 (looking-at "\\(struct\\|union\\|enum\\)\\s ") | |
552 (concat (match-string 1) " "))) | |
553 (goto-char start) | |
554 (and (looking-at "[_a-zA-Z][_a-zA-Z0-9]*") | |
555 (setq name (match-string 0))) | |
556 ;; Caveat! Look forward if point is at `struct' etc. | |
557 (and (not prefix) | |
558 (or (string-equal name "struct") | |
559 (string-equal name "union") | |
560 (string-equal name "enum")) | |
561 (looking-at "[a-z]+\\s +\\([_a-zA-Z][_a-zA-Z0-9]*\\)") | |
562 (setq prefix (concat name " ") | |
563 name (match-string 1))) | |
564 (and (or prefix name) | |
565 (concat prefix name)))) | |
566 (error nil))) | |
567 | |
568 ;;;###autoload | |
569 (defun info-complete-symbol (&optional mode) | |
570 "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
|
571 (interactive) |
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
572 (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
|
573 (or mode |
64d728fb396a
(info-complete-symbol): If MODE is nil, use the default value.
Richard M. Stallman <rms@gnu.org>
parents:
18322
diff
changeset
|
574 (if (info-lookup->mode-value |
22281 | 575 'symbol (info-lookup-select-mode)) |
576 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
|
577 (info-lookup-change-mode 'symbol))))) |
18322 | 578 |
579 ;;;###autoload | |
580 (defun info-complete-file (&optional mode) | |
581 "Perform completion on file preceding point." | |
20973
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
582 (interactive) |
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
583 (info-complete 'file |
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
584 (or mode |
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
585 (if (info-lookup->mode-value |
22281 | 586 'file (info-lookup-select-mode)) |
587 info-lookup-mode | |
20973
b7e7f7c9685a
Added support for the Emacs Lisp manual.
Karl Heuer <kwzh@gnu.org>
parents:
20909
diff
changeset
|
588 (info-lookup-change-mode 'file))))) |
18322 | 589 |
590 (defun info-complete (topic mode) | |
591 "Try to complete a help item." | |
592 (barf-if-buffer-read-only) | |
22281 | 593 (or mode (setq mode (info-lookup-select-mode))) |
18322 | 594 (or (info-lookup->mode-value topic mode) |
595 (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
|
596 (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
|
597 (start (point)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
598 try) |
18322 | 599 (while (and (not try) modes) |
600 (setq mode (car modes) | |
601 modes (cdr modes) | |
602 try (info-lookup-guess-default* topic mode)) | |
603 (goto-char start)) | |
604 (and (not try) | |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
605 (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
|
606 (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
|
607 (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
|
608 completion) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
609 (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
|
610 (cond ((not completion) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
611 (ding) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
612 (message "No match")) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
613 ((stringp completion) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
614 (or (assoc completion completions) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
615 (setq completion (completing-read |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
616 (format "Complete %S: " topic) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
617 completions nil t completion |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
618 info-lookup-history))) |
25310 | 619 ;; Find the original symbol and zap it. |
620 (end-of-line) | |
621 (while (and (search-backward try nil t) | |
622 (< start (point)))) | |
623 (replace-match "") | |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
624 (insert completion)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
625 (t |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
626 (message "%s is complete" |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
627 (capitalize (prin1-to-string topic)))))))) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
628 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
629 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
630 ;;; Initialize some common modes. |
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 'symbol |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
634 :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
|
635 :doc-spec '(("(libc)Function Index" nil |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
636 "^[ \t]+-+ \\(Function\\|Macro\\): .*\\<" "\\>") |
59558
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
637 ;; prefix/suffix has to match things like |
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
638 ;; " -- Macro: int F_DUPFD" |
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
639 ;; " -- Variable: char * tzname [2]" |
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
640 ;; "`DBL_MAX'" (texinfo @table) |
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
641 ;; suffix "\\>" is not used because that sends DBL_MAX to |
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
642 ;; DBL_MAX_EXP ("_" is a non-word char) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
643 ("(libc)Variable Index" nil |
59558
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
644 "^\\([ \t]+-+ \\(Variable\\|Macro\\): .*\\<\\|`\\)" |
5d4f8c85454f
(c-mode/symbol): Add ^` to prefix, and change
Eli Zaretskii <eliz@gnu.org>
parents:
58990
diff
changeset
|
645 "\\( \\|'?$\\)") |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
646 ("(libc)Type Index" nil |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
647 "^[ \t]+-+ Data Type: \\<" "\\>") |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
648 ("(termcap)Var Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
649 "^[ \t]*`" "'")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
650 :parse-rule 'info-lookup-guess-c-symbol) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
651 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
652 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
653 :mode 'c-mode :topic 'file |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
654 :regexp "[_a-zA-Z0-9./+-]+" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
655 :doc-spec '(("(libc)File Index"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
656 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
657 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
658 :mode 'bison-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
659 :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
|
660 :doc-spec '(("(bison)Index" nil |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
661 "`" "'")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
662 :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
|
663 :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
|
664 |
20909
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 'makefile-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
667 :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
|
668 :doc-spec '(("(make)Name Index" nil |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
669 "^[ \t]*`" "'") |
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
670 ("(automake)Macro and Variable Index" nil |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
671 "^[ \t]*`" "'")) |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
672 :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
|
673 :other-modes '(automake-mode)) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
674 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
675 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
676 :mode 'texinfo-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
677 :regexp "@\\([a-zA-Z]+\\|[^a-zA-Z]\\)" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
678 :doc-spec '(("(texinfo)Command and Variable Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
679 ;; Ignore Emacs commands and prepend a `@'. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
680 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
681 (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
|
682 (concat "@" (match-string 1 item)))) |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
683 "`" "[' ]"))) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
684 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
685 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
686 :mode 'm4-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
687 :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
|
688 :doc-spec '(("(m4)Macro index")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
689 :parse-rule "[_a-zA-Z0-9]+") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
690 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
691 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
692 :mode 'autoconf-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
693 :regexp "A[CM]_[_A-Z0-9]+" |
51242
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
694 :doc-spec '(;; Autoconf Macro Index entries are without an "AC_" prefix, |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
695 ;; but with "AH_" or "AU_" for those. So add "AC_" if there |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
696 ;; isn't already an "A._". |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
697 ("(autoconf)Autoconf Macro Index" |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
698 (lambda (item) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
699 (if (string-match "^A._" item) item (concat "AC_" item))) |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
700 "^[ \t]+-+ \\(Macro\\|Variable\\): .*\\<" "\\>") |
51242
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
701 ;; M4 Macro Index entries are without "AS_" prefixes, and |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
702 ;; mostly without "m4_" prefixes. "dnl" is an exception, not |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
703 ;; wanting any prefix. So AS_ is added back to upper-case |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
704 ;; names, m4_ to others which don't already an m4_. |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
705 ("(autoconf)M4 Macro Index" |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
706 (lambda (item) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
707 (let ((case-fold-search nil)) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
708 (cond ((or (string-equal item "dnl") |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
709 (string-match "^m4_" item)) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
710 item) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
711 ((string-match "^[A-Z0-9_]+$" item) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
712 (concat "AS_" item)) |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
713 (t |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
714 (concat "m4_" item))))) |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
715 "^[ \t]+-+ Macro: .*\\<" "\\>") |
51242
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
716 ;; Autotest Macro Index entries are without "AT_". |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
717 ("(autoconf)Autotest Macro Index" "AT_" |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
718 "^[ \t]+-+ Macro: .*\\<" "\\>") |
51242
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
719 ;; This is for older versions (probably pre autoconf 2.5x): |
46525
d09ed551daf4
Support current auto{conf,make} manuals.
Dave Love <fx@gnu.org>
parents:
42942
diff
changeset
|
720 ("(autoconf)Macro Index" "AC_" |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
721 "^[ \t]+-+ \\(Macro\\|Variable\\): .*\\<" "\\>") |
51242
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
722 ;; Automake has index entries for its notes on various autoconf |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
723 ;; macros (eg. AC_PROG_CC). Ensure this is after the autoconf |
661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Juanma Barranquero <lekktu@gmail.com>
parents:
50950
diff
changeset
|
724 ;; index, so as to prefer the autoconf docs. |
41076
1be1f069f19f
(makefile-mode): Add info for automake.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38436
diff
changeset
|
725 ("(automake)Macro and Variable Index" nil |
20909
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 ;; 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
|
728 :parse-rule 'ignore |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
729 :other-modes '(m4-mode)) |
18322 | 730 |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
731 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
732 :mode 'awk-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
733 :regexp "[_a-zA-Z]+" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
734 :doc-spec '(("(gawk)Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
735 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
736 (let ((case-fold-search nil)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
737 (cond |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
738 ;; `BEGIN' and `END'. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
739 ((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
|
740 (match-string 1 item)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
741 ;; `if', `while', `do', ... |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
742 ((string-match "^\\([a-z]+\\) statement\\b" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
743 (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
|
744 (match-string 1 item))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
745 ;; `NR', `NF', ... |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
746 ((string-match "^[A-Z]+$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
747 item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
748 ;; Built-in functions (matches to many entries). |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
749 ((string-match "^[a-z]+$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
750 item)))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
751 "`" "\\([ \t]*([^)]*)\\)?'"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
752 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
753 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
754 :mode 'perl-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
755 :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
|
756 :doc-spec '(("(perl5)Function Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
757 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
758 (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
|
759 (match-string 1 item))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
760 "^" "\\b") |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
761 ("(perl5)Variable Index" |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
762 (lambda (item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
763 ;; Work around bad formatted array variables. |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
764 (let ((sym (cond ((or (string-match "^\\$\\(.\\|@@\\)$" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
765 (string-match "^\\$\\^[A-Z]$" item)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
766 item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
767 ((string-match |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
768 "^\\([$%@]\\|@@\\)?[_a-zA-Z0-9]+" item) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
769 (match-string 0 item)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
770 (t "")))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
771 (if (string-match "@@" sym) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
772 (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
|
773 (substring sym (1- (match-end 0)))))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
774 (if (string-equal sym "") nil sym))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
775 "^" "\\b")) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
776 :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
|
777 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
778 (info-lookup-maybe-add-help |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
779 :mode 'cperl-mode |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
780 :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
|
781 :other-modes '(perl-mode)) |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
782 |
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
783 (info-lookup-maybe-add-help |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
784 :mode 'latex-mode |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
785 :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
|
786 :doc-spec '(("(latex)Command Index" nil |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
787 "`" "\\({[^}]*}\\)?'"))) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
788 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
789 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
790 :mode 'emacs-lisp-mode |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
791 :regexp "[^][()'\" \t\n]+" |
50451
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
792 :doc-spec '(;; Commands with key sequences appear in nodes as `foo' and |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
793 ;; those without as `M-x foo'. |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
794 ("(emacs)Command Index" nil "`\\(M-x[ \t\n]+\\)?" "'") |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
795 ;; Variables normally appear in nodes as just `foo'. |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
796 ("(emacs)Variable Index" nil "`" "'") |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
797 ;; Almost all functions, variables, etc appear in nodes as |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
798 ;; " -- Function: foo" etc. A small number of aliases and |
50451
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
799 ;; symbols appear only as `foo', and will miss out on exact |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
800 ;; positions. Allowing `foo' would hit too many false matches |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
801 ;; for things that should go to Function: etc, and those latter |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
802 ;; are much more important. Perhaps this could change if some |
fedb9513a26e
(emacs-lisp-mode): Add prefix/suffix matching regexps.
Juanma Barranquero <lekktu@gmail.com>
parents:
50407
diff
changeset
|
803 ;; sort of fallback match scheme existed. |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
804 ("(elisp)Index" nil "^ -+ .*: " "\\( \\|$\\)"))) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
805 |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
806 (info-lookup-maybe-add-help |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
807 :mode 'lisp-interaction-mode |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
808 :regexp "[^][()'\" \t\n]+" |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
809 :parse-rule 'ignore |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
810 :other-modes '(emacs-lisp-mode)) |
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
811 |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
812 (info-lookup-maybe-add-help |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
813 :mode 'lisp-mode |
36605
d29b9968e84f
Docstring fixes and dead code eliminated.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30348
diff
changeset
|
814 :regexp "[^()'\" \t\n]+" |
21334
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
815 :parse-rule 'ignore |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
816 :other-modes '(emacs-lisp-mode)) |
66b3b9fe3e3c
(info-lookup->topic-cache): Use defun, not defsubst.
Richard M. Stallman <rms@gnu.org>
parents:
20973
diff
changeset
|
817 |
22281 | 818 (info-lookup-maybe-add-help |
819 :mode 'scheme-mode | |
54160
815ea37f89e4
In scheme-mode symbol regexp, disallow backquote and
Eli Zaretskii <eliz@gnu.org>
parents:
53770
diff
changeset
|
820 :regexp "[^()`',\" \t\n]+" |
22281 | 821 :ignore-case t |
23365
d400637428d1
Remove duplicate scheme-mode entry.
Dave Love <fx@gnu.org>
parents:
23346
diff
changeset
|
822 ;; Aubrey Jaffer's rendition from <URL:ftp://ftp-swiss.ai.mit.edu/pub/scm> |
22281 | 823 :doc-spec '(("(r5rs)Index" nil |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
824 "^[ \t]+-+ [^:]+:[ \t]*" "\\b"))) |
22281 | 825 |
23346 | 826 (info-lookup-maybe-add-help |
827 :mode 'octave-mode | |
828 :regexp "[_a-zA-Z0-9]+" | |
50407
41c0eed9d556
*** empty log message ***
Juanma Barranquero <lekktu@gmail.com>
parents:
50347
diff
changeset
|
829 :doc-spec '(("(octave)Function Index" nil |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
830 "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil) |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
831 ("(octave)Variable Index" nil "^ -+ [^:]+:[ ]+" nil) |
23346 | 832 ;; Catch lines of the form "xyz statement" |
25310 | 833 ("(octave)Concept Index" |
23346 | 834 (lambda (item) |
835 (cond | |
836 ((string-match "^\\([A-Z]+\\) statement\\b" item) | |
837 (match-string 1 item)) | |
838 (t nil))) | |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
839 nil; "^ -+ [^:]+:[ ]+" don't think this prefix is useful here. |
23346 | 840 nil))) |
50347
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
841 |
53770
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
842 (info-lookup-maybe-add-help |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
843 :mode 'maxima-mode |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
844 :ignore-case t |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
845 :regexp "[a-zA-Z_%]+" |
58017
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
846 :doc-spec '( ("(maxima)Function and Variable Index" nil |
57d5e5e2e4db
(info-lookup): Allow reusing in the current buffer
Juri Linkov <juri@jurta.org>
parents:
57469
diff
changeset
|
847 "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil))) |
53770
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
848 |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
849 (info-lookup-maybe-add-help |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
850 :mode 'inferior-maxima-mode |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
851 :other-modes '(maxima-mode)) |
293189a557d0
Add support for maxima-mode. Update commentary
Stephen Eglen <stephen@gnu.org>
parents:
53407
diff
changeset
|
852 |
50347
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
853 ;; coreutils and bash builtins overlap in places, eg. printf, so there's a |
50407
41c0eed9d556
*** empty log message ***
Juanma Barranquero <lekktu@gmail.com>
parents:
50347
diff
changeset
|
854 ;; question which should come first. Some of the coreutils descriptions are |
50347
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
855 ;; more detailed, but if bash is usually /bin/sh on a GNU system then the |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
856 ;; builtins will be what's normally run. |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
857 ;; |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
858 ;; Maybe special variables like $? should be matched as $?, not just ?. |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
859 ;; This would avoid a clash between variable $! and negation !, or variable |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
860 ;; $# and comment # (though comment # is not currently indexed in bash). |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
861 ;; Unfortunately if $? etc is the symbol, then we wouldn't be taken to the |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
862 ;; exact spot in the relevant node, since the bash manual has just `?' etc |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
863 ;; there. Maybe an extension to the prefix/suffix scheme could help this. |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
864 |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
865 (info-lookup-maybe-add-help |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
866 :mode 'sh-mode :topic 'symbol |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
867 ;; bash has "." and ":" in its index, but those chars will probably never |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
868 ;; work in info, so don't bother matching them in the regexp. |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
869 :regexp "\\([a-zA-Z0-9_-]+\\|[!{}@*#?$]\\|\\[\\[?\\|]]?\\)" |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
870 :doc-spec '(("(bash)Builtin Index" nil "^`" "[ .']") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
871 ("(bash)Reserved Word Index" nil "^`" "[ .']") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
872 ("(bash)Variable Index" nil "^`" "[ .']") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
873 ;; coreutils (version 4.5.10) doesn't have a separate program |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
874 ;; index, so exclude extraneous stuff (most of it) by demanding |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
875 ;; "[a-z]+" in the trans-func. |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
876 ("(coreutils)Index" |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
877 (lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
878 ;; diff (version 2.8.1) has only a few programs, index entries |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
879 ;; are things like "foo invocation". |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
880 ("(diff)Index" |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
881 (lambda (item) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
882 (if (string-match "\\`\\([a-z]+\\) invocation\\'" item) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
883 (match-string 1 item)))) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
884 ;; there's no plain "sed" index entry as such, mung another |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
885 ;; hopefully unique one to get to the invocation section |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
886 ("(sed)Concept Index" |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
887 (lambda (item) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
888 (if (string-equal item "Standard input, processing as input") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
889 "sed"))) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
890 ;; there's no plain "awk" or "gawk" index entries, mung other |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
891 ;; hopefully unique ones to get to the command line options |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
892 ("(gawk)Index" |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
893 (lambda (item) |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
894 (cond ((string-equal item "gawk, extensions, disabling") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
895 "awk") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
896 ((string-equal item "gawk, versions of, information about, printing") |
d6a0264d2fe2
(sh-mode): Add doc-specs for commands and variables.
Juanma Barranquero <lekktu@gmail.com>
parents:
48988
diff
changeset
|
897 "gawk")))))) |
55097
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
898 |
55238
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
899 ;; This misses some things which occur as node names but not in the |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
900 ;; index. Unfortunately it also picks up the wrong one of multiple |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
901 ;; entries for the same term in some cases. --fx |
55097
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
902 (info-lookup-maybe-add-help |
5c2770cd5506
Add support for cfengine-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54387
diff
changeset
|
903 :mode 'cfengine-mode |
58798
bcb4709c5b09
(info-lookup-maybe-add-help cfengine-mode): Regexp typo.
Richard M. Stallman <rms@gnu.org>
parents:
58017
diff
changeset
|
904 :regexp "[[:alnum:]_]+\\(?:()\\)?" |
55238
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
905 :doc-spec '(("(cfengine-Reference)Variable Index" |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
906 (lambda (item) |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
907 ;; Index entries may be like `IsPlain()' |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
908 (if (string-match "\\([[:alnum:]_]+\\)()" item) |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
909 (match-string 1 item) |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
910 item)) |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
911 ;; This gets functions in evaluated classes. Other |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
912 ;; possible patterns don't seem to work too well. |
373bc9e19710
(cfengine-mode): Accept a terminal ().
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55097
diff
changeset
|
913 "`" "("))) |
20909
542ae65815fb
(info-complete): Rewrite minibuffer completion code.
Richard M. Stallman <rms@gnu.org>
parents:
20899
diff
changeset
|
914 |
18322 | 915 (provide 'info-look) |
916 | |
52401 | 917 ;;; arch-tag: 0f1e3ea3-32a2-4461-bbab-3cff93539a74 |
18322 | 918 ;;; info-look.el ends here |