Mercurial > emacs
annotate lisp/info.el @ 11668:0d5b4a9053c2
(CANNOT_DUMP, VIRT_ADDR_VARIES, LIBS_TERMCAP)
(NO_X_DESTROY_DATABASE): Macros deleted.
(BSTRING): #undef deleted.
(SYSTEM_TYPES): Redefinition deleted.
(UNEXEC): New definition.
(LD_SWITCH_SYSTEM): Define as empty.
(C_SWITCH_MACHINE, LD_SWITCH_MACHINE): New definitions.
(OLDXMENU_OPTIONS): New definition.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 03 May 1995 21:28:14 +0000 |
parents | 7f357fe2cda5 |
children | 51816af03215 |
rev | line source |
---|---|
754
b096f4af925c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
732
diff
changeset
|
1 ;;; info.el --- info package for Emacs. |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
2 |
7298 | 3 ;; Copyright (C) 1985, 1986, 1992, 1993, 1994 Free Software Foundation, Inc. |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
4 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
5 ;; Maintainer: FSF |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
6 ;; Keywords: help |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
7 |
325 | 8 ;; This file is part of GNU Emacs. |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
325 | 13 ;; any later version. |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to | |
22 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
23 | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
24 ;;; Commentary: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
25 |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
26 ;;; Note that nowadays we expect info files to be made using makeinfo. |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
27 |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
28 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
754
diff
changeset
|
29 |
325 | 30 (defvar Info-history nil |
31 "List of info nodes user has visited. | |
32 Each element of list is a list (FILENAME NODENAME BUFFERPOS).") | |
33 | |
34 (defvar Info-enable-edit nil | |
3084
a4341d92948a
(Info-edit, Info-last-search, Info-enable-edit):
Richard M. Stallman <rms@gnu.org>
parents:
3047
diff
changeset
|
35 "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node. |
680
f99c8512cd41
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
660
diff
changeset
|
36 This is convenient if you want to write info files by hand. |
f99c8512cd41
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
660
diff
changeset
|
37 However, we recommend that you not do this. |
f99c8512cd41
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
660
diff
changeset
|
38 It is better to write a Texinfo file and generate the Info file from that, |
f99c8512cd41
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
660
diff
changeset
|
39 because that gives you a printed manual as well.") |
325 | 40 |
41 (defvar Info-enable-active-nodes t | |
42 "Non-nil allows Info to execute Lisp code associated with nodes. | |
43 The Lisp code is executed when the node is selected.") | |
44 | |
540 | 45 (defvar Info-default-directory-list nil |
46 "List of default directories to search for Info documentation files. | |
47 This value is used as the default for `Info-directory-list'. It is set | |
48 in paths.el.") | |
49 | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
50 (defvar Info-fontify t |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
51 "*Non-nil enables highlighting and fonts in Info nodes.") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
52 |
8193
0be48d0d16fd
(Info-fontify-maximum-menu-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8071
diff
changeset
|
53 (defvar Info-fontify-maximum-menu-size 30000 |
0be48d0d16fd
(Info-fontify-maximum-menu-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8071
diff
changeset
|
54 "*Maximum size of menu to fontify if `Info-fontify' is non-nil.") |
8480
7f28030d9529
(Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8461
diff
changeset
|
55 |
3330
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
56 (defvar Info-directory-list |
5482
27603dcb6260
(Info-directory-list): Change last elt to ../info (expanded).
Richard M. Stallman <rms@gnu.org>
parents:
5271
diff
changeset
|
57 (let ((path (getenv "INFOPATH")) |
9782
7224fba93c27
(Info-directory-list): Treat windows-nt like ms-dos.
Richard M. Stallman <rms@gnu.org>
parents:
9588
diff
changeset
|
58 (sep (if (or (eq system-type 'ms-dos) |
7224fba93c27
(Info-directory-list): Treat windows-nt like ms-dos.
Richard M. Stallman <rms@gnu.org>
parents:
9588
diff
changeset
|
59 (eq system-type 'windows-nt)) |
7224fba93c27
(Info-directory-list): Treat windows-nt like ms-dos.
Richard M. Stallman <rms@gnu.org>
parents:
9588
diff
changeset
|
60 ";" ":")) |
5482
27603dcb6260
(Info-directory-list): Change last elt to ../info (expanded).
Richard M. Stallman <rms@gnu.org>
parents:
5271
diff
changeset
|
61 (sibling (expand-file-name "../info/" (invocation-directory)))) |
3330
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
62 (if path |
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
63 (let ((list nil) |
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
64 idx) |
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
65 (while (> (length path) 0) |
7928
e8eb27a1d94e
(Info-directory-list): For msdos, use ";" instead of
Richard M. Stallman <rms@gnu.org>
parents:
7911
diff
changeset
|
66 (setq idx (or (string-match sep path) (length path)) |
3330
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
67 list (cons (substring path 0 idx) list) |
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
68 path (substring path (min (1+ idx) |
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
69 (length path))))) |
4fd13e6109e3
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3313
diff
changeset
|
70 (nreverse list)) |
5482
27603dcb6260
(Info-directory-list): Change last elt to ../info (expanded).
Richard M. Stallman <rms@gnu.org>
parents:
5271
diff
changeset
|
71 (if (or (member sibling Info-default-directory-list) |
7789
e974be06f4f7
(Info-directory-list): Don't use the invocation directory
Richard M. Stallman <rms@gnu.org>
parents:
7753
diff
changeset
|
72 (not (file-exists-p sibling)) |
9782
7224fba93c27
(Info-directory-list): Treat windows-nt like ms-dos.
Richard M. Stallman <rms@gnu.org>
parents:
9588
diff
changeset
|
73 ;; On DOS/NT, we use movable executables always, |
7990
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
74 ;; and we must always find the Info dir at run time. |
9782
7224fba93c27
(Info-directory-list): Treat windows-nt like ms-dos.
Richard M. Stallman <rms@gnu.org>
parents:
9588
diff
changeset
|
75 (if (or (eq system-type 'ms-dos) (eq system-type 'windows-nt)) |
7990
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
76 nil |
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
77 ;; Use invocation-directory for Info only if we used it for |
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
78 ;; exec-directory also. |
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
79 (not (string= exec-directory |
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
80 (expand-file-name "../lib-src/" |
6be46752d57f
(Info-directory-list): For msdos, don't check for
Richard M. Stallman <rms@gnu.org>
parents:
7928
diff
changeset
|
81 (invocation-directory)))))) |
5482
27603dcb6260
(Info-directory-list): Change last elt to ../info (expanded).
Richard M. Stallman <rms@gnu.org>
parents:
5271
diff
changeset
|
82 Info-default-directory-list |
27603dcb6260
(Info-directory-list): Change last elt to ../info (expanded).
Richard M. Stallman <rms@gnu.org>
parents:
5271
diff
changeset
|
83 (reverse (cons sibling (cdr (reverse Info-default-directory-list))))))) |
325 | 84 "List of directories to search for Info documentation files. |
540 | 85 nil means not yet initialized. In this case, Info uses the environment |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
86 variable INFOPATH to initialize it, or `Info-default-directory-list' |
7739
f2747ec591fd
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
7572
diff
changeset
|
87 if there is no INFOPATH variable in the environment. |
f2747ec591fd
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
7572
diff
changeset
|
88 The last element of `Info-default-directory-list' is the directory |
7753
198dd616a588
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
7739
diff
changeset
|
89 where Emacs installs the Info files that come with it. |
8461
c88361c3b940
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8369
diff
changeset
|
90 |
c88361c3b940
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8369
diff
changeset
|
91 If you run the Emacs executable from the `src' directory in the Emacs |
c88361c3b940
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8369
diff
changeset
|
92 source tree, the `info' directory in the source tree is used as the last |
c88361c3b940
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8369
diff
changeset
|
93 element, in place of the installation Info directory. This is useful |
c88361c3b940
(Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8369
diff
changeset
|
94 when you run a version of Emacs without installing it.") |
325 | 95 |
8480
7f28030d9529
(Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8461
diff
changeset
|
96 (defvar Info-additional-directory-list nil |
7f28030d9529
(Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8461
diff
changeset
|
97 "List of additional directories to search for Info documentation files. |
7f28030d9529
(Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8461
diff
changeset
|
98 These directories are not searched for merging the `dir' file.") |
7f28030d9529
(Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8461
diff
changeset
|
99 |
325 | 100 (defvar Info-current-file nil |
101 "Info file that Info is now looking at, or nil.") | |
102 | |
103 (defvar Info-current-subfile nil | |
104 "Info subfile that is actually in the *info* buffer now, | |
105 or nil if current info file is not split into subfiles.") | |
106 | |
107 (defvar Info-current-node nil | |
108 "Name of node that Info is now looking at, or nil.") | |
109 | |
110 (defvar Info-tag-table-marker (make-marker) | |
111 "Marker pointing at beginning of current Info file's tag table. | |
112 Marker points nowhere if file has no tag table.") | |
113 | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
114 (defvar Info-current-file-completions nil |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
115 "Cached completion list for current Info file.") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
116 |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
117 (defvar Info-index-alternatives nil |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
118 "List of possible matches for last Info-index command.") |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
119 |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
120 (defvar Info-standalone nil |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
121 "Non-nil if Emacs was started solely as an Info browser.") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
122 |
6566
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
123 (defvar Info-suffix-list '( (".info.Z" . "uncompress") |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
124 (".info.Y" . "unyabba") |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
125 (".info.gz" . "gunzip") |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
126 (".info.z" . "gunzip") |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
127 (".info" . nil) |
3442
ef8ca321d049
(Info-suffix-list): Handle .gz suffix.
Richard M. Stallman <rms@gnu.org>
parents:
3351
diff
changeset
|
128 (".Z" . "uncompress") |
ef8ca321d049
(Info-suffix-list): Handle .gz suffix.
Richard M. Stallman <rms@gnu.org>
parents:
3351
diff
changeset
|
129 (".Y" . "unyabba") |
ef8ca321d049
(Info-suffix-list): Handle .gz suffix.
Richard M. Stallman <rms@gnu.org>
parents:
3351
diff
changeset
|
130 (".gz" . "gunzip") |
ef8ca321d049
(Info-suffix-list): Handle .gz suffix.
Richard M. Stallman <rms@gnu.org>
parents:
3351
diff
changeset
|
131 (".z" . "gunzip") |
6566
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
132 ("" . nil)) |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
133 "List of file name suffixes and associated decoding commands. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
134 Each entry should be (SUFFIX . STRING); the file is given to |
6566
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
135 the command as standard input. If STRING is nil, no decoding is done. |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
136 Because the SUFFIXes are tried in order, the empty string should |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
137 be last in the list.") |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
138 |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
139 (defun info-insert-file-contents (filename &optional visit) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
140 "Insert the contents of an info file in the current buffer. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
141 Do the right thing if the file has been compressed or zipped." |
6566
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
142 (let ((tail Info-suffix-list) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
143 fullname decoder) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
144 (if (file-exists-p filename) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
145 (progn |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
146 (while (and tail |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
147 (not (string-match |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
148 (concat (regexp-quote (car (car tail))) "$") |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
149 filename))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
150 (setq tail (cdr tail))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
151 (setq fullname filename |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
152 decoder (cdr (car tail)))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
153 (while (and tail |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
154 (not (file-exists-p (concat filename (car (car tail)))))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
155 (setq tail (cdr tail))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
156 (setq fullname (concat filename (car (car tail))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
157 decoder (cdr (car tail))) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
158 (or tail |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
159 (error "Can't find %s or any compressed version of it!" filename))) |
9588
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
160 ;; check for conflict with jka-compr |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
161 (if (and (featurep 'jka-compr) |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
162 (jka-compr-installed-p) |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
163 (jka-compr-get-compression-info fullname)) |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
164 (setq decoder nil)) |
6566
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
165 (insert-file-contents fullname visit) |
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
166 (if decoder |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
167 (let ((buffer-read-only nil) |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
168 (default-directory (file-directory fullname))) |
6566
248eede22658
(Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents:
6537
diff
changeset
|
169 (shell-command-on-region (point-min) (point-max) decoder t))))) |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
170 |
10978
e3da01bbdc14
(same-window-buffer-names): Set this only in loaddefs.el,
Richard M. Stallman <rms@gnu.org>
parents:
10957
diff
changeset
|
171 ;;;###autoload (add-hook 'same-window-buffer-names "*info*") |
10957
6d3568e33019
(Info-menu): Bind beg with let.
Richard M. Stallman <rms@gnu.org>
parents:
10918
diff
changeset
|
172 |
6d3568e33019
(Info-menu): Bind beg with let.
Richard M. Stallman <rms@gnu.org>
parents:
10918
diff
changeset
|
173 ;;;###autoload |
325 | 174 (defun info (&optional file) |
175 "Enter Info, the documentation browser. | |
176 Optional argument FILE specifies the file to examine; | |
177 the default is the top-level directory of Info. | |
178 | |
179 In interactive use, a prefix argument directs this command | |
180 to read a file name from the minibuffer." | |
181 (interactive (if current-prefix-arg | |
182 (list (read-file-name "Info file name: " nil nil t)))) | |
183 (if file | |
184 (Info-goto-node (concat "(" file ")")) | |
185 (if (get-buffer "*info*") | |
10957
6d3568e33019
(Info-menu): Bind beg with let.
Richard M. Stallman <rms@gnu.org>
parents:
10918
diff
changeset
|
186 (pop-to-buffer "*info*") |
325 | 187 (Info-directory)))) |
188 | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
189 ;;;###autoload |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
190 (defun info-standalone () |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
191 "Run Emacs as a standalone Info reader. |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
192 Usage: emacs -f info-standalone [filename] |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
193 In standalone mode, \\<Info-mode-map>\\[Info-exit] exits Emacs itself." |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
194 (setq Info-standalone t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
195 (if (and command-line-args-left |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
196 (not (string-match "^-" (car command-line-args-left)))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
197 (condition-case err |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
198 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
199 (info (car command-line-args-left)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
200 (setq command-line-args-left (cdr command-line-args-left))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
201 (error (send-string-to-terminal |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
202 (format "%s\n" (if (eq (car-safe err) 'error) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
203 (nth 1 err) err))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
204 (save-buffers-kill-emacs))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
205 (info))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
206 |
325 | 207 ;; Go to an info node specified as separate filename and nodename. |
208 ;; no-going-back is non-nil if recovering from an error in this function; | |
209 ;; it says do not attempt further (recursive) error recovery. | |
210 (defun Info-find-node (filename nodename &optional no-going-back) | |
211 ;; Convert filename to lower case if not found as specified. | |
212 ;; Expand it. | |
213 (if filename | |
214 (let (temp temp-downcase found) | |
215 (setq filename (substitute-in-file-name filename)) | |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
216 (if (string= (downcase (file-name-nondirectory filename)) "dir") |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
217 (setq found t) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
218 (let ((dirs (if (string-match "^\\./" filename) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
219 ;; If specified name starts with `./' |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
220 ;; then just try current directory. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
221 '("./") |
9588
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
222 (if (file-name-absolute-p filename) |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
223 ;; No point in searching for an |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
224 ;; absolute file name |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
225 '(nil) |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
226 (if Info-additional-directory-list |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
227 (append Info-directory-list |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
228 Info-additional-directory-list) |
7d465ccfd45b
(info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents:
9572
diff
changeset
|
229 Info-directory-list))))) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
230 ;; Search the directory list for file FILENAME. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
231 (while (and dirs (not found)) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
232 (setq temp (expand-file-name filename (car dirs))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
233 (setq temp-downcase |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
234 (expand-file-name (downcase filename) (car dirs))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
235 ;; Try several variants of specified name. |
8369
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
236 (let ((suffix-list Info-suffix-list)) |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
237 (while (and suffix-list (not found)) |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
238 (cond ((file-exists-p |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
239 (concat temp (car (car suffix-list)))) |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
240 (setq found temp)) |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
241 ((file-exists-p |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
242 (concat temp-downcase (car (car suffix-list)))) |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
243 (setq found temp-downcase))) |
c10b35194993
(Info-find-node): Use a loop instead of mapcar and catch.
Richard M. Stallman <rms@gnu.org>
parents:
8193
diff
changeset
|
244 (setq suffix-list (cdr suffix-list)))) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
245 (setq dirs (cdr dirs))))) |
325 | 246 (if found |
247 (setq filename found) | |
248 (error "Info file %s does not exist" filename)))) | |
249 ;; Record the node we are leaving. | |
250 (if (and Info-current-file (not no-going-back)) | |
251 (setq Info-history | |
252 (cons (list Info-current-file Info-current-node (point)) | |
253 Info-history))) | |
254 ;; Go into info buffer. | |
255 (switch-to-buffer "*info*") | |
1484
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
256 (buffer-disable-undo (current-buffer)) |
325 | 257 (or (eq major-mode 'Info-mode) |
258 (Info-mode)) | |
259 (widen) | |
260 (setq Info-current-node nil) | |
261 (unwind-protect | |
262 (progn | |
263 ;; Switch files if necessary | |
264 (or (null filename) | |
265 (equal Info-current-file filename) | |
266 (let ((buffer-read-only nil)) | |
267 (setq Info-current-file nil | |
268 Info-current-subfile nil | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
269 Info-current-file-completions nil |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
270 Info-index-alternatives nil |
325 | 271 buffer-file-name nil) |
272 (erase-buffer) | |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
273 (if (eq filename t) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
274 (Info-insert-dir) |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
275 (info-insert-file-contents filename t) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
276 (setq default-directory (file-name-directory filename))) |
325 | 277 (set-buffer-modified-p nil) |
278 ;; See whether file has a tag table. Record the location if yes. | |
279 (set-marker Info-tag-table-marker nil) | |
280 (goto-char (point-max)) | |
281 (forward-line -8) | |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
282 ;; Use string-equal, not equal, to ignore text props. |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
283 (or (string-equal nodename "*") |
325 | 284 (not (search-forward "\^_\nEnd tag table\n" nil t)) |
285 (let (pos) | |
286 ;; We have a tag table. Find its beginning. | |
287 ;; Is this an indirect file? | |
288 (search-backward "\nTag table:\n") | |
289 (setq pos (point)) | |
290 (if (save-excursion | |
291 (forward-line 2) | |
292 (looking-at "(Indirect)\n")) | |
293 ;; It is indirect. Copy it to another buffer | |
294 ;; and record that the tag table is in that buffer. | |
295 (save-excursion | |
296 (let ((buf (current-buffer))) | |
297 (set-buffer (get-buffer-create " *info tag table*")) | |
1484
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
298 (buffer-disable-undo (current-buffer)) |
325 | 299 (setq case-fold-search t) |
300 (erase-buffer) | |
301 (insert-buffer-substring buf) | |
302 (set-marker Info-tag-table-marker | |
303 (match-end 0)))) | |
998 | 304 (set-marker Info-tag-table-marker pos)))) |
325 | 305 (setq Info-current-file |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
306 (if (eq filename t) "dir" |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
307 (file-name-sans-versions buffer-file-name))))) |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
308 ;; Use string-equal, not equal, to ignore text props. |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
309 (if (string-equal nodename "*") |
325 | 310 (progn (setq Info-current-node nodename) |
311 (Info-set-mode-line)) | |
312 ;; Search file for a suitable node. | |
990
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
313 (let ((guesspos (point-min)) |
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
314 (regexp (concat "Node: *" (regexp-quote nodename) " *[,\t\n\177]"))) |
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
315 ;; First get advice from tag table if file has one. |
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
316 ;; Also, if this is an indirect info file, |
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
317 ;; read the proper subfile into this buffer. |
325 | 318 (if (marker-position Info-tag-table-marker) |
319 (save-excursion | |
320 (set-buffer (marker-buffer Info-tag-table-marker)) | |
321 (goto-char Info-tag-table-marker) | |
990
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
322 (if (re-search-forward regexp nil t) |
325 | 323 (progn |
324 (setq guesspos (read (current-buffer))) | |
325 ;; If this is an indirect file, | |
326 ;; determine which file really holds this node | |
327 ;; and read it in. | |
328 (if (not (eq (current-buffer) (get-buffer "*info*"))) | |
329 (setq guesspos | |
330 (Info-read-subfile guesspos)))) | |
331 (error "No such node: \"%s\"" nodename)))) | |
990
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
332 (goto-char (max (point-min) (- guesspos 1000))) |
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
333 ;; Now search from our advised position (or from beg of buffer) |
d76731ebdff0
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
930
diff
changeset
|
334 ;; to find the actual node. |
325 | 335 (catch 'foo |
336 (while (search-forward "\n\^_" nil t) | |
337 (forward-line 1) | |
338 (let ((beg (point))) | |
339 (forward-line 1) | |
340 (if (re-search-backward regexp beg t) | |
341 (throw 'foo t)))) | |
342 (error "No such node: %s" nodename))) | |
343 (Info-select-node))) | |
344 ;; If we did not finish finding the specified node, | |
345 ;; go back to the previous one. | |
6716
9ce2d1a2c155
(Info-find-node): Don't try to backstep if no history.
Karl Heuer <kwzh@gnu.org>
parents:
6624
diff
changeset
|
346 (or Info-current-node no-going-back (null Info-history) |
325 | 347 (let ((hist (car Info-history))) |
348 (setq Info-history (cdr Info-history)) | |
349 (Info-find-node (nth 0 hist) (nth 1 hist) t) | |
350 (goto-char (nth 2 hist))))) | |
351 (goto-char (point-min))) | |
352 | |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
353 ;; Cache the contents of the (virtual) dir file, once we have merged |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
354 ;; it for the first time, so we can save time subsequently. |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
355 (defvar Info-dir-contents nil) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
356 |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
357 ;; Cache for the directory we decided to use for the default-directory |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
358 ;; of the merged dir text. |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
359 (defvar Info-dir-contents-directory nil) |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
360 |
3836
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
361 ;; Record the file attributes of all the files from which we |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
362 ;; constructed Info-dir-contents. |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
363 (defvar Info-dir-file-attributes nil) |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
364 |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
365 ;; Construct the Info directory node by merging the files named `dir' |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
366 ;; from various directories. Set the *info* buffer's |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
367 ;; default-directory to the first directory we actually get any text |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
368 ;; from. |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
369 (defun Info-insert-dir () |
3836
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
370 (if (and Info-dir-contents Info-dir-file-attributes |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
371 ;; Verify that none of the files we used has changed |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
372 ;; since we used it. |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
373 (eval (cons 'and |
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
374 (mapcar '(lambda (elt) |
7911
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
375 (let ((curr (file-attributes (car elt)))) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
376 ;; Don't compare the access time. |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
377 (if curr (setcar (nthcdr 4 curr) 0)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
378 (setcar (nthcdr 4 (cdr elt)) 0) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
379 (equal (cdr elt) curr))) |
3836
04f1cff889f4
(Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents:
3565
diff
changeset
|
380 Info-dir-file-attributes)))) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
381 (insert Info-dir-contents) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
382 (let ((dirs Info-directory-list) |
3212
cd8f8468a190
(Info-insert-dir): Ignore duplicate directories.
Richard M. Stallman <rms@gnu.org>
parents:
3127
diff
changeset
|
383 buffers buffer others nodes dirs-done) |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
384 |
7911
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
385 (setq Info-dir-file-attributes nil) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
386 |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
387 ;; Search the directory list for the directory file. |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
388 (while dirs |
5271
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
389 (let ((truename (file-truename (expand-file-name (car dirs))))) |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
390 (or (member truename dirs-done) |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
391 (member (directory-file-name truename) dirs-done) |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
392 ;; Try several variants of specified name. |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
393 ;; Try upcasing, appending `.info', or both. |
7911
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
394 (let* (file |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
395 (attrs |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
396 (or |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
397 (progn (setq file (expand-file-name "dir" truename)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
398 (file-attributes file)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
399 (progn (setq file (expand-file-name "DIR" truename)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
400 (file-attributes file)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
401 (progn (setq file (expand-file-name "dir.info" truename)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
402 (file-attributes file)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
403 (progn (setq file (expand-file-name "DIR.INFO" truename)) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
404 (file-attributes file))))) |
5271
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
405 (setq dirs-done |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
406 (cons truename |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
407 (cons (directory-file-name truename) |
c415cc48a084
(Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents:
5146
diff
changeset
|
408 dirs-done))) |
7911
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
409 (if attrs |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
410 (save-excursion |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
411 (or buffers |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
412 (message "Composing main Info directory...")) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
413 (set-buffer (generate-new-buffer "info dir")) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
414 (insert-file-contents file) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
415 (setq buffers (cons (current-buffer) buffers) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
416 Info-dir-file-attributes |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
417 (cons (cons file attrs) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
418 Info-dir-file-attributes)))))) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
419 (setq dirs (cdr dirs)))) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
420 |
6716
9ce2d1a2c155
(Info-find-node): Don't try to backstep if no history.
Karl Heuer <kwzh@gnu.org>
parents:
6624
diff
changeset
|
421 (or buffers |
9ce2d1a2c155
(Info-find-node): Don't try to backstep if no history.
Karl Heuer <kwzh@gnu.org>
parents:
6624
diff
changeset
|
422 (error "Can't find the info directory node")) |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
423 ;; Distinguish the dir file that comes with Emacs from all the |
3212
cd8f8468a190
(Info-insert-dir): Ignore duplicate directories.
Richard M. Stallman <rms@gnu.org>
parents:
3127
diff
changeset
|
424 ;; others. Yes, that is really what this is supposed to do. |
cd8f8468a190
(Info-insert-dir): Ignore duplicate directories.
Richard M. Stallman <rms@gnu.org>
parents:
3127
diff
changeset
|
425 ;; If it doesn't work, fix it. |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
426 (setq buffer (car buffers) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
427 others (cdr buffers)) |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
428 |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
429 ;; Insert the entire original dir file as a start; use its |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
430 ;; default directory as the default directory for the whole |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
431 ;; concatenation. |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
432 (insert-buffer buffer) |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
433 (setq Info-dir-contents-directory (save-excursion |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
434 (set-buffer buffer) |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
435 default-directory)) |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
436 |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
437 ;; Look at each of the other buffers one by one. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
438 (while others |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
439 (let ((other (car others))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
440 ;; In each, find all the menus. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
441 (save-excursion |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
442 (set-buffer other) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
443 (goto-char (point-min)) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
444 ;; Find each menu, and add an elt to NODES for it. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
445 (while (re-search-forward "^\\* Menu:" nil t) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
446 (let (beg nodename end) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
447 (forward-line 1) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
448 (setq beg (point)) |
6339
f0f62abb621b
(Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents:
6121
diff
changeset
|
449 (search-backward "\n\^_") |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
450 (search-forward "Node: ") |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
451 (setq nodename (Info-following-node-name)) |
6339
f0f62abb621b
(Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents:
6121
diff
changeset
|
452 (search-forward "\n\^_" nil 'move) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
453 (beginning-of-line) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
454 (setq end (point)) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
455 (setq nodes (cons (list nodename other beg end) nodes)))))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
456 (setq others (cdr others))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
457 ;; Add to the main menu a menu item for each other node. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
458 (re-search-forward "^\\* Menu:") |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
459 (forward-line 1) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
460 (let ((menu-items '("top")) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
461 (nodes nodes) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
462 (case-fold-search t) |
6339
f0f62abb621b
(Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents:
6121
diff
changeset
|
463 (end (save-excursion (search-forward "\^_" nil t) (point)))) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
464 (while nodes |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
465 (let ((nodename (car (car nodes)))) |
6537
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
466 (save-excursion |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
467 (or (member (downcase nodename) menu-items) |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
468 (re-search-forward (concat "^\\* " |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
469 (regexp-quote nodename) |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
470 "::") |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
471 end t) |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
472 (progn |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
473 (insert "* " nodename "::" "\n") |
f5ab0b6b9640
(Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents:
6339
diff
changeset
|
474 (setq menu-items (cons nodename menu-items)))))) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
475 (setq nodes (cdr nodes)))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
476 ;; Now take each node of each of the other buffers |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
477 ;; and merge it into the main buffer. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
478 (while nodes |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
479 (let ((nodename (car (car nodes)))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
480 (goto-char (point-min)) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
481 ;; Find the like-named node in the main buffer. |
6339
f0f62abb621b
(Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents:
6121
diff
changeset
|
482 (if (re-search-forward (concat "\n\^_.*\n.*Node: " |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
483 (regexp-quote nodename) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
484 "[,\n\t]") |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
485 nil t) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
486 (progn |
6339
f0f62abb621b
(Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents:
6121
diff
changeset
|
487 (search-forward "\n\^_" nil 'move) |
8913
65a8b9c507dc
(Info-insert-dir): Insert newlines before rather than
Richard M. Stallman <rms@gnu.org>
parents:
8805
diff
changeset
|
488 (beginning-of-line) |
65a8b9c507dc
(Info-insert-dir): Insert newlines before rather than
Richard M. Stallman <rms@gnu.org>
parents:
8805
diff
changeset
|
489 (insert "\n")) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
490 ;; If none exists, add one. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
491 (goto-char (point-max)) |
8069
dfef58fcda75
(Info-insert-dir): Capitalize `node' when inserting it.
Richard M. Stallman <rms@gnu.org>
parents:
8018
diff
changeset
|
492 (insert "\^_\nFile: dir\tNode: " nodename "\n\n* Menu:\n\n")) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
493 ;; Merge the text from the other buffer's menu |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
494 ;; into the menu in the like-named node in the main buffer. |
8913
65a8b9c507dc
(Info-insert-dir): Insert newlines before rather than
Richard M. Stallman <rms@gnu.org>
parents:
8805
diff
changeset
|
495 (apply 'insert-buffer-substring (cdr (car nodes)))) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
496 (setq nodes (cdr nodes))) |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
497 ;; Kill all the buffers we just made. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
498 (while buffers |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
499 (kill-buffer (car buffers)) |
7911
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
500 (setq buffers (cdr buffers))) |
185c1f12db67
(Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents:
7859
diff
changeset
|
501 (message "Composing main Info directory...done")) |
1979
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
502 (setq Info-dir-contents (buffer-string))) |
0582c70595f1
* info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents:
1971
diff
changeset
|
503 (setq default-directory Info-dir-contents-directory)) |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
504 |
325 | 505 (defun Info-read-subfile (nodepos) |
506 (set-buffer (marker-buffer Info-tag-table-marker)) | |
507 (goto-char (point-min)) | |
508 (search-forward "\n\^_") | |
509 (let (lastfilepos | |
510 lastfilename) | |
511 (forward-line 2) | |
512 (catch 'foo | |
513 (while (not (looking-at "\^_")) | |
514 (if (not (eolp)) | |
515 (let ((beg (point)) | |
516 thisfilepos thisfilename) | |
517 (search-forward ": ") | |
518 (setq thisfilename (buffer-substring beg (- (point) 2))) | |
519 (setq thisfilepos (read (current-buffer))) | |
520 ;; read in version 19 stops at the end of number. | |
521 ;; Advance to the next line. | |
522 (forward-line 1) | |
523 (if (> thisfilepos nodepos) | |
524 (throw 'foo t)) | |
525 (setq lastfilename thisfilename) | |
526 (setq lastfilepos thisfilepos)) | |
527 (forward-line 1)))) | |
528 (set-buffer (get-buffer "*info*")) | |
529 (or (equal Info-current-subfile lastfilename) | |
530 (let ((buffer-read-only nil)) | |
531 (setq buffer-file-name nil) | |
532 (widen) | |
533 (erase-buffer) | |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
534 (info-insert-file-contents lastfilename) |
325 | 535 (set-buffer-modified-p nil) |
536 (setq Info-current-subfile lastfilename))) | |
537 (goto-char (point-min)) | |
538 (search-forward "\n\^_") | |
539 (+ (- nodepos lastfilepos) (point)))) | |
540 | |
541 ;; Select the info node that point is in. | |
542 (defun Info-select-node () | |
543 (save-excursion | |
544 ;; Find beginning of node. | |
545 (search-backward "\n\^_") | |
546 (forward-line 2) | |
547 ;; Get nodename spelled as it is in the node. | |
548 (re-search-forward "Node:[ \t]*") | |
549 (setq Info-current-node | |
550 (buffer-substring (point) | |
551 (progn | |
552 (skip-chars-forward "^,\t\n") | |
553 (point)))) | |
554 (Info-set-mode-line) | |
555 ;; Find the end of it, and narrow. | |
556 (beginning-of-line) | |
557 (let (active-expression) | |
558 (narrow-to-region (point) | |
559 (if (re-search-forward "\n[\^_\f]" nil t) | |
560 (prog1 | |
561 (1- (point)) | |
562 (if (looking-at "[\n\^_\f]*execute: ") | |
563 (progn | |
564 (goto-char (match-end 0)) | |
565 (setq active-expression | |
566 (read (current-buffer)))))) | |
567 (point-max))) | |
4261
f9599125f7f0
(Info-select-node): Run Info-selection-hook.
Richard M. Stallman <rms@gnu.org>
parents:
3844
diff
changeset
|
568 (if Info-enable-active-nodes (eval active-expression)) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
569 (if Info-fontify (Info-fontify-node)) |
4261
f9599125f7f0
(Info-select-node): Run Info-selection-hook.
Richard M. Stallman <rms@gnu.org>
parents:
3844
diff
changeset
|
570 (run-hooks 'Info-selection-hook)))) |
325 | 571 |
572 (defun Info-set-mode-line () | |
573 (setq mode-line-buffer-identification | |
574 (concat | |
575 "Info: (" | |
576 (if Info-current-file | |
577 (file-name-nondirectory Info-current-file) | |
578 "") | |
579 ")" | |
580 (or Info-current-node "")))) | |
581 | |
582 ;; Go to an info node specified with a filename-and-nodename string | |
583 ;; of the sort that is found in pointers in nodes. | |
584 | |
585 (defun Info-goto-node (nodename) | |
586 "Go to info node named NAME. Give just NODENAME or (FILENAME)NODENAME." | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
587 (interactive (list (Info-read-node-name "Goto node: "))) |
325 | 588 (let (filename) |
589 (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)" | |
590 nodename) | |
591 (setq filename (if (= (match-beginning 1) (match-end 1)) | |
592 "" | |
593 (substring nodename (match-beginning 2) (match-end 2))) | |
594 nodename (substring nodename (match-beginning 3) (match-end 3))) | |
595 (let ((trim (string-match "\\s *\\'" filename))) | |
596 (if trim (setq filename (substring filename 0 trim)))) | |
597 (let ((trim (string-match "\\s *\\'" nodename))) | |
598 (if trim (setq nodename (substring nodename 0 trim)))) | |
599 (Info-find-node (if (equal filename "") nil filename) | |
600 (if (equal nodename "") "Top" nodename)))) | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
601 |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
602 (defun Info-read-node-name (prompt &optional default) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
603 (let* ((completion-ignore-case t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
604 (nodename (completing-read prompt (Info-build-node-completions)))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
605 (if (equal nodename "") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
606 (or default |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
607 (Info-read-node-name prompt)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
608 nodename))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
609 |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
610 (defun Info-build-node-completions () |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
611 (or Info-current-file-completions |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
612 (let ((compl nil)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
613 (save-excursion |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
614 (save-restriction |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
615 (if (marker-buffer Info-tag-table-marker) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
616 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
617 (set-buffer (marker-buffer Info-tag-table-marker)) |
6049
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
618 (widen) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
619 (goto-char Info-tag-table-marker) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
620 (while (re-search-forward "\nNode: \\(.*\\)\177" nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
621 (setq compl |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
622 (cons (list (buffer-substring (match-beginning 1) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
623 (match-end 1))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
624 compl)))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
625 (widen) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
626 (goto-char (point-min)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
627 (while (search-forward "\n\^_" nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
628 (forward-line 1) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
629 (let ((beg (point))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
630 (forward-line 1) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
631 (if (re-search-backward "Node: *\\([^,\n]*\\) *[,\n\t]" |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
632 beg t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
633 (setq compl |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
634 (cons (list (buffer-substring (match-beginning 1) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
635 (match-end 1))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
636 compl)))))))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
637 (setq Info-current-file-completions compl)))) |
325 | 638 |
540 | 639 (defun Info-restore-point (hl) |
640 "If this node has been visited, restore the point value when we left." | |
6049
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
641 (while hl |
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
642 (if (and (equal (nth 0 (car hl)) Info-current-file) |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
643 ;; Use string-equal, not equal, to ignore text props. |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
644 (string-equal (nth 1 (car hl)) Info-current-node)) |
6049
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
645 (progn |
6121
a9caf92da1d3
(Info-restore-point): Don't wipe out hl before using it.
Karl Heuer <kwzh@gnu.org>
parents:
6049
diff
changeset
|
646 (goto-char (nth 2 (car hl))) |
a9caf92da1d3
(Info-restore-point): Don't wipe out hl before using it.
Karl Heuer <kwzh@gnu.org>
parents:
6049
diff
changeset
|
647 (setq hl nil)) ;terminate the while at next iter |
6049
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
648 (setq hl (cdr hl))))) |
540 | 649 |
325 | 650 (defvar Info-last-search nil |
3084
a4341d92948a
(Info-edit, Info-last-search, Info-enable-edit):
Richard M. Stallman <rms@gnu.org>
parents:
3047
diff
changeset
|
651 "Default regexp for \\<Info-mode-map>\\[Info-search] command to search for.") |
325 | 652 |
653 (defun Info-search (regexp) | |
654 "Search for REGEXP, starting from point, and select node it's found in." | |
655 (interactive "sSearch (regexp): ") | |
656 (if (equal regexp "") | |
657 (setq regexp Info-last-search) | |
658 (setq Info-last-search regexp)) | |
659 (let ((found ()) current | |
660 (onode Info-current-node) | |
661 (ofile Info-current-file) | |
662 (opoint (point)) | |
663 (osubfile Info-current-subfile)) | |
664 (save-excursion | |
665 (save-restriction | |
666 (widen) | |
667 (if (null Info-current-subfile) | |
668 (progn (re-search-forward regexp) (setq found (point))) | |
669 (condition-case err | |
670 (progn (re-search-forward regexp) (setq found (point))) | |
671 (search-failed nil))))) | |
672 (if (not found) ;can only happen in subfile case -- else would have erred | |
673 (unwind-protect | |
674 (let ((list ())) | |
675 (set-buffer (marker-buffer Info-tag-table-marker)) | |
676 (goto-char (point-min)) | |
677 (search-forward "\n\^_\nIndirect:") | |
678 (save-restriction | |
679 (narrow-to-region (point) | |
680 (progn (search-forward "\n\^_") | |
681 (1- (point)))) | |
682 (goto-char (point-min)) | |
683 (search-forward (concat "\n" osubfile ": ")) | |
684 (beginning-of-line) | |
685 (while (not (eobp)) | |
686 (re-search-forward "\\(^.*\\): [0-9]+$") | |
687 (goto-char (+ (match-end 1) 2)) | |
688 (setq list (cons (cons (read (current-buffer)) | |
689 (buffer-substring (match-beginning 1) | |
690 (match-end 1))) | |
691 list)) | |
692 (goto-char (1+ (match-end 0)))) | |
693 (setq list (nreverse list) | |
694 current (car (car list)) | |
695 list (cdr list))) | |
696 (while list | |
697 (message "Searching subfile %s..." (cdr (car list))) | |
698 (Info-read-subfile (car (car list))) | |
699 (setq list (cdr list)) | |
8069
dfef58fcda75
(Info-insert-dir): Capitalize `node' when inserting it.
Richard M. Stallman <rms@gnu.org>
parents:
8018
diff
changeset
|
700 ;; (goto-char (point-min)) |
325 | 701 (if (re-search-forward regexp nil t) |
702 (setq found (point) list ()))) | |
703 (if found | |
704 (message "") | |
705 (signal 'search-failed (list regexp)))) | |
706 (if (not found) | |
707 (progn (Info-read-subfile opoint) | |
708 (goto-char opoint) | |
709 (Info-select-node))))) | |
710 (widen) | |
711 (goto-char found) | |
712 (Info-select-node) | |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
713 ;; Use string-equal, not equal, to ignore text props. |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
714 (or (and (string-equal onode Info-current-node) |
325 | 715 (equal ofile Info-current-file)) |
716 (setq Info-history (cons (list ofile onode opoint) | |
717 Info-history))))) | |
718 | |
719 ;; Extract the value of the node-pointer named NAME. | |
720 ;; If there is none, use ERRORNAME in the error message; | |
721 ;; if ERRORNAME is nil, just return nil. | |
722 (defun Info-extract-pointer (name &optional errorname) | |
723 (save-excursion | |
724 (goto-char (point-min)) | |
725 (forward-line 1) | |
726 (if (re-search-backward (concat name ":") nil t) | |
727 (progn | |
728 (goto-char (match-end 0)) | |
729 (Info-following-node-name)) | |
730 (if (eq errorname t) | |
731 nil | |
732 (error (concat "Node has no " (capitalize (or errorname name)))))))) | |
733 | |
1971
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
734 ;; Return the node name in the buffer following point. |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
735 ;; ALLOWEDCHARS, if non-nil, goes within [...] to make a regexp |
b540866e8a79
(Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
736 ;; saying which chas may appear in the node name. |
325 | 737 (defun Info-following-node-name (&optional allowedchars) |
738 (skip-chars-forward " \t") | |
739 (buffer-substring | |
740 (point) | |
741 (progn | |
742 (while (looking-at (concat "[" (or allowedchars "^,\t\n") "]")) | |
743 (skip-chars-forward (concat (or allowedchars "^,\t\n") "(")) | |
744 (if (looking-at "(") | |
745 (skip-chars-forward "^)"))) | |
746 (skip-chars-backward " ") | |
747 (point)))) | |
748 | |
749 (defun Info-next () | |
750 "Go to the next node of this node." | |
751 (interactive) | |
752 (Info-goto-node (Info-extract-pointer "next"))) | |
753 | |
754 (defun Info-prev () | |
755 "Go to the previous node of this node." | |
756 (interactive) | |
757 (Info-goto-node (Info-extract-pointer "prev[ious]*" "previous"))) | |
758 | |
759 (defun Info-up () | |
760 "Go to the superior node of this node." | |
761 (interactive) | |
540 | 762 (Info-goto-node (Info-extract-pointer "up")) |
763 (Info-restore-point Info-history)) | |
325 | 764 |
765 (defun Info-last () | |
766 "Go back to the last node visited." | |
767 (interactive) | |
768 (or Info-history | |
769 (error "This is the first Info node you looked at")) | |
770 (let (filename nodename opoint) | |
771 (setq filename (car (car Info-history))) | |
772 (setq nodename (car (cdr (car Info-history)))) | |
773 (setq opoint (car (cdr (cdr (car Info-history))))) | |
774 (setq Info-history (cdr Info-history)) | |
775 (Info-find-node filename nodename) | |
776 (setq Info-history (cdr Info-history)) | |
777 (goto-char opoint))) | |
778 | |
779 (defun Info-directory () | |
780 "Go to the Info directory node." | |
781 (interactive) | |
782 (Info-find-node "dir" "top")) | |
783 | |
784 (defun Info-follow-reference (footnotename) | |
785 "Follow cross reference named NAME to the node it refers to. | |
786 NAME may be an abbreviation of the reference name." | |
787 (interactive | |
788 (let ((completion-ignore-case t) | |
5555
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
789 completions default alt-default (start-point (point)) str i bol eol) |
325 | 790 (save-excursion |
5555
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
791 ;; Store end and beginning of line. |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
792 (end-of-line) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
793 (setq eol (point)) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
794 (beginning-of-line) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
795 (setq bol (point)) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
796 |
325 | 797 (goto-char (point-min)) |
798 (while (re-search-forward "\\*note[ \n\t]*\\([^:]*\\):" nil t) | |
799 (setq str (buffer-substring | |
800 (match-beginning 1) | |
801 (1- (point)))) | |
802 ;; See if this one should be the default. | |
803 (and (null default) | |
5146
aa2236a14893
(Info-follow-reference): Correct one-off error in comparing start-point.
Richard M. Stallman <rms@gnu.org>
parents:
5091
diff
changeset
|
804 (<= (match-beginning 0) start-point) |
325 | 805 (<= start-point (point)) |
806 (setq default t)) | |
5555
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
807 ;; See if this one should be the alternate default. |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
808 (and (null alt-default) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
809 (and (<= bol (match-beginning 0)) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
810 (<= (point) eol)) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
811 (setq alt-default t)) |
325 | 812 (setq i 0) |
813 (while (setq i (string-match "[ \n\t]+" str i)) | |
814 (setq str (concat (substring str 0 i) " " | |
815 (substring str (match-end 0)))) | |
816 (setq i (1+ i))) | |
817 ;; Record as a completion and perhaps as default. | |
818 (if (eq default t) (setq default str)) | |
5555
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
819 (if (eq alt-default t) (setq alt-default str)) |
325 | 820 (setq completions |
821 (cons (cons str nil) | |
822 completions)))) | |
5555
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
823 ;; If no good default was found, try an alternate. |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
824 (or default |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
825 (setq default alt-default)) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
826 ;; If only one cross-reference found, then make it default. |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
827 (if (eq (length completions) 1) |
38f8bfd91cca
(Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents:
5482
diff
changeset
|
828 (setq default (car (car completions)))) |
325 | 829 (if completions |
3565
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
830 (let ((input (completing-read (if default |
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
831 (concat "Follow reference named: (" |
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
832 default ") ") |
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
833 "Follow reference named: ") |
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
834 completions nil t))) |
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
835 (list (if (equal input "") |
bd87ecca04f6
(Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents:
3451
diff
changeset
|
836 default input))) |
325 | 837 (error "No cross-references in this node")))) |
10061
41a9afd33e98
(Info-follow-reference): Use regexp-quote.
Richard M. Stallman <rms@gnu.org>
parents:
9852
diff
changeset
|
838 (let (target beg i (str (concat "\\*note " (regexp-quote footnotename)))) |
325 | 839 (while (setq i (string-match " " str i)) |
840 (setq str (concat (substring str 0 i) "[ \t\n]+" (substring str (1+ i)))) | |
841 (setq i (+ i 6))) | |
842 (save-excursion | |
843 (goto-char (point-min)) | |
844 (or (re-search-forward str nil t) | |
845 (error "No cross-reference named %s" footnotename)) | |
846 (goto-char (+ (match-beginning 0) 5)) | |
847 (setq target | |
848 (Info-extract-menu-node-name "Bad format cross reference" t))) | |
849 (while (setq i (string-match "[ \t\n]+" target i)) | |
850 (setq target (concat (substring target 0 i) " " | |
851 (substring target (match-end 0)))) | |
852 (setq i (+ i 1))) | |
853 (Info-goto-node target))) | |
854 | |
855 (defun Info-extract-menu-node-name (&optional errmessage multi-line) | |
856 (skip-chars-forward " \t\n") | |
857 (let ((beg (point)) | |
858 str i) | |
859 (skip-chars-forward "^:") | |
860 (forward-char 1) | |
861 (setq str | |
862 (if (looking-at ":") | |
863 (buffer-substring beg (1- (point))) | |
864 (skip-chars-forward " \t\n") | |
865 (Info-following-node-name (if multi-line "^.,\t" "^.,\t\n")))) | |
866 (while (setq i (string-match "\n" str i)) | |
867 (aset str i ?\ )) | |
10918
a78b47b38c46
(Info-extract-menu-node-name): Collapse multiple spaces.
Richard M. Stallman <rms@gnu.org>
parents:
10758
diff
changeset
|
868 ;; Collapse multiple spaces. |
a78b47b38c46
(Info-extract-menu-node-name): Collapse multiple spaces.
Richard M. Stallman <rms@gnu.org>
parents:
10758
diff
changeset
|
869 (while (string-match " +" str) |
a78b47b38c46
(Info-extract-menu-node-name): Collapse multiple spaces.
Richard M. Stallman <rms@gnu.org>
parents:
10758
diff
changeset
|
870 (setq str (replace-match " " t t str))) |
325 | 871 str)) |
872 | |
7837
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
873 ;; No one calls this. |
1484
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
874 ;;(defun Info-menu-item-sequence (list) |
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
875 ;; (while list |
7837
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
876 ;; (Info-menu (car list)) |
1484
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
877 ;; (setq list (cdr list)))) |
325 | 878 |
7837
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
879 (defun Info-complete-menu-item (string predicate action) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
880 (let ((case-fold-search t)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
881 (cond ((eq action nil) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
882 (let (completions |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
883 (pattern (concat "\n\\* \\(" |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
884 (regexp-quote string) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
885 "[^:\t\n]*\\):"))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
886 (save-excursion |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
887 (set-buffer Info-complete-menu-buffer) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
888 (goto-char (point-min)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
889 (while (re-search-forward pattern nil t) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
890 (setq completions (cons (cons (format "%s" |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
891 (buffer-substring |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
892 (match-beginning 1) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
893 (match-end 1))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
894 (match-beginning 1)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
895 completions)))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
896 (try-completion string completions predicate))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
897 ((eq action t) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
898 (let (completions |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
899 (pattern (concat "\n\\* \\(" |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
900 (regexp-quote string) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
901 "[^:\t\n]*\\):"))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
902 (save-excursion |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
903 (set-buffer Info-complete-menu-buffer) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
904 (goto-char (point-min)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
905 (while (re-search-forward pattern nil t) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
906 (setq completions (cons (cons (format "%s" |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
907 (buffer-substring |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
908 (match-beginning 1) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
909 (match-end 1))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
910 (match-beginning 1)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
911 completions)))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
912 (all-completions string completions predicate))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
913 (t |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
914 (save-excursion |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
915 (set-buffer Info-complete-menu-buffer) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
916 (goto-char (point-min)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
917 (re-search-forward (concat "\n\\* " |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
918 (regexp-quote string) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
919 ":") |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
920 nil t)))))) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
921 |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
922 |
325 | 923 (defun Info-menu (menu-item) |
924 "Go to node for menu item named (or abbreviated) NAME. | |
925 Completion is allowed, and the menu item point is on is the default." | |
926 (interactive | |
927 (let ((completions '()) | |
928 ;; If point is within a menu item, use that item as the default | |
929 (default nil) | |
930 (p (point)) | |
10957
6d3568e33019
(Info-menu): Bind beg with let.
Richard M. Stallman <rms@gnu.org>
parents:
10918
diff
changeset
|
931 beg |
325 | 932 (last nil)) |
933 (save-excursion | |
934 (goto-char (point-min)) | |
935 (if (not (search-forward "\n* menu:" nil t)) | |
936 (error "No menu in this node")) | |
7837
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
937 (setq beg (point)) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
938 (and (< (point) p) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
939 (save-excursion |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
940 (goto-char p) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
941 (end-of-line) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
942 (re-search-backward "\n\\* \\([^:\t\n]*\\):" beg t) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
943 (setq default (format "%s" (buffer-substring |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
944 (match-beginning 1) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
945 (match-end 1))))))) |
325 | 946 (let ((item nil)) |
947 (while (null item) | |
7837
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
948 (setq item (let ((completion-ignore-case t) |
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
949 (Info-complete-menu-buffer (current-buffer))) |
325 | 950 (completing-read (if default |
951 (format "Menu item (default %s): " | |
952 default) | |
953 "Menu item: ") | |
7837
bad6366d4f16
(Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7789
diff
changeset
|
954 'Info-complete-menu-item nil t))) |
540 | 955 ;; we rely on the fact that completing-read accepts an input |
956 ;; of "" even when the require-match argument is true and "" | |
957 ;; is not a valid possibility | |
325 | 958 (if (string= item "") |
959 (if default | |
960 (setq item default) | |
961 ;; ask again | |
962 (setq item nil)))) | |
963 (list item)))) | |
964 ;; there is a problem here in that if several menu items have the same | |
965 ;; name you can only go to the node of the first with this command. | |
966 (Info-goto-node (Info-extract-menu-item menu-item))) | |
967 | |
968 (defun Info-extract-menu-item (menu-item) | |
969 (setq menu-item (regexp-quote menu-item)) | |
970 (save-excursion | |
971 (goto-char (point-min)) | |
972 (or (search-forward "\n* menu:" nil t) | |
973 (error "No menu in this node")) | |
4967
67810bbdfc9d
(Info-extract-menu-item): Quote `*' in the menu-item
Richard M. Stallman <rms@gnu.org>
parents:
4468
diff
changeset
|
974 (or (re-search-forward (concat "\n\\* " menu-item ":") nil t) |
67810bbdfc9d
(Info-extract-menu-item): Quote `*' in the menu-item
Richard M. Stallman <rms@gnu.org>
parents:
4468
diff
changeset
|
975 (re-search-forward (concat "\n\\* " menu-item) nil t) |
325 | 976 (error "No such item in menu")) |
977 (beginning-of-line) | |
978 (forward-char 2) | |
979 (Info-extract-menu-node-name))) | |
980 | |
981 ;; If COUNT is nil, use the last item in the menu. | |
982 (defun Info-extract-menu-counting (count) | |
983 (save-excursion | |
984 (goto-char (point-min)) | |
985 (or (search-forward "\n* menu:" nil t) | |
986 (error "No menu in this node")) | |
987 (if count | |
988 (or (search-forward "\n* " nil t count) | |
989 (error "Too few items in menu")) | |
990 (while (search-forward "\n* " nil t) | |
991 nil)) | |
992 (Info-extract-menu-node-name))) | |
993 | |
1666
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
994 (defun Info-nth-menu-item () |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
995 "Go to the node of the Nth menu item. |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
996 N is the digit argument used to invoke this command." |
325 | 997 (interactive) |
1666
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
998 (Info-goto-node |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
999 (Info-extract-menu-counting |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1000 (- (aref (this-command-keys) (1- (length (this-command-keys)))) ?0)))) |
325 | 1001 |
1002 (defun Info-top-node () | |
1003 "Go to the Top node of this file." | |
1004 (interactive) | |
1005 (Info-goto-node "Top")) | |
1006 | |
1007 (defun Info-final-node () | |
1008 "Go to the final node in this file." | |
1009 (interactive) | |
1010 (Info-goto-node "Top") | |
1011 (let (Info-history) | |
1012 ;; Go to the last node in the menu of Top. | |
1013 (Info-goto-node (Info-extract-menu-counting nil)) | |
1014 ;; If the last node in the menu is not last in pointer structure, | |
1015 ;; move forward until we can't go any farther. | |
1016 (while (Info-forward-node t t) nil) | |
1017 ;; Then keep moving down to last subnode, unless we reach an index. | |
1018 (while (and (not (string-match "\\<index\\>" Info-current-node)) | |
1019 (save-excursion (search-forward "\n* Menu:" nil t))) | |
1020 (Info-goto-node (Info-extract-menu-counting nil))))) | |
1021 | |
1022 (defun Info-forward-node (&optional not-down no-error) | |
1023 "Go forward one node, considering all nodes as forming one sequence." | |
1024 (interactive) | |
1025 (goto-char (point-min)) | |
1026 (forward-line 1) | |
1027 ;; three possibilities, in order of priority: | |
1028 ;; 1. next node is in a menu in this node (but not in an index) | |
1029 ;; 2. next node is next at same level | |
1030 ;; 3. next node is up and next | |
1031 (cond ((and (not not-down) | |
1032 (save-excursion (search-forward "\n* menu:" nil t)) | |
1033 (not (string-match "\\<index\\>" Info-current-node))) | |
2036
a71101e5abff
(Info-forward-node): Properly go to first menu item.
Richard M. Stallman <rms@gnu.org>
parents:
2032
diff
changeset
|
1034 (Info-goto-node (Info-extract-menu-counting 1)) |
325 | 1035 t) |
1036 ((save-excursion (search-backward "next:" nil t)) | |
1037 (Info-next) | |
1038 t) | |
1039 ((and (save-excursion (search-backward "up:" nil t)) | |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1040 ;; Use string-equal, not equal, to ignore text props. |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1041 (not (string-equal (downcase (Info-extract-pointer "up")) |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1042 "top"))) |
325 | 1043 (let ((old-node Info-current-node)) |
1044 (Info-up) | |
1045 (let (Info-history success) | |
1046 (unwind-protect | |
1047 (setq success (Info-forward-node t no-error)) | |
1048 (or success (Info-goto-node old-node)))))) | |
1049 (no-error nil) | |
1050 (t (error "No pointer forward from this node")))) | |
1051 | |
1052 (defun Info-backward-node () | |
1053 "Go backward one node, considering all nodes as forming one sequence." | |
1054 (interactive) | |
1055 (let ((prevnode (Info-extract-pointer "prev[ious]*" t)) | |
1056 (upnode (Info-extract-pointer "up" t))) | |
1057 (cond ((and upnode (string-match "(" upnode)) | |
1058 (error "First node in file")) | |
1059 ((and upnode (or (null prevnode) | |
11527
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1060 ;; Use string-equal, not equal, |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1061 ;; to ignore text properties. |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1062 (string-equal (downcase prevnode) |
7956811d4d9a
(info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents:
11064
diff
changeset
|
1063 (downcase upnode)))) |
325 | 1064 (Info-up)) |
1065 (prevnode | |
1066 ;; If we move back at the same level, | |
1067 ;; go down to find the last subnode*. | |
1068 (Info-prev) | |
1069 (let (Info-history) | |
1070 (while (and (not (string-match "\\<index\\>" Info-current-node)) | |
1071 (save-excursion (search-forward "\n* Menu:" nil t))) | |
1072 (Info-goto-node (Info-extract-menu-counting nil))))) | |
1073 (t | |
1074 (error "No pointer backward from this node"))))) | |
1075 | |
1076 (defun Info-exit () | |
1077 "Exit Info by selecting some other buffer." | |
1078 (interactive) | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1079 (if Info-standalone |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1080 (save-buffers-kill-emacs) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1081 (switch-to-buffer (prog1 (other-buffer (current-buffer)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1082 (bury-buffer (current-buffer)))))) |
325 | 1083 |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1084 (defun Info-next-menu-item () |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1085 (interactive) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1086 (save-excursion |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1087 (forward-line -1) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1088 (search-forward "\n* menu:" nil t) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1089 (or (search-forward "\n* " nil t) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1090 (error "No more items in menu")) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1091 (Info-goto-node (Info-extract-menu-node-name)))) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1092 |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1093 (defun Info-last-menu-item () |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1094 (interactive) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1095 (save-excursion |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1096 (forward-line 1) |
8489
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1097 (let ((beg (save-excursion |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1098 (and (search-backward "\n* menu:" nil t) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1099 (point))))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1100 (or (and beg (search-backward "\n* " beg t)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1101 (error "No previous items in menu"))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1102 (Info-goto-node (save-excursion |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1103 (goto-char (match-end 0)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1104 (Info-extract-menu-node-name))))) |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1105 |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1106 (defmacro Info-no-error (&rest body) |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1107 (list 'condition-case nil (cons 'progn (append body '(t))) '(error nil))) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1108 |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1109 (defun Info-next-preorder () |
8018
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1110 "Go to the next subnode, popping up a level if there is none." |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1111 (interactive) |
8018
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1112 (cond ((Info-no-error (Info-next-menu-item))) |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1113 ((Info-no-error (Info-up)) |
11064
bf32108711c6
(Info-next-preorder, Info-next-preorder-1):
Richard M. Stallman <rms@gnu.org>
parents:
10978
diff
changeset
|
1114 (forward-line 1) |
bf32108711c6
(Info-next-preorder, Info-next-preorder-1):
Richard M. Stallman <rms@gnu.org>
parents:
10978
diff
changeset
|
1115 (and (re-search-forward "^\\*" nil t) (beginning-of-line))) |
8018
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1116 (t |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1117 (error "No more nodes")))) |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1118 |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1119 (defun Info-next-preorder-1 () |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1120 "Go to the next subnode or the next node, or go up a level." |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1121 (interactive) |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1122 (cond ((Info-no-error (Info-next-menu-item))) |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1123 ((Info-no-error (Info-next))) |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1124 ((Info-no-error (Info-up)) |
11064
bf32108711c6
(Info-next-preorder, Info-next-preorder-1):
Richard M. Stallman <rms@gnu.org>
parents:
10978
diff
changeset
|
1125 (forward-line 1) |
bf32108711c6
(Info-next-preorder, Info-next-preorder-1):
Richard M. Stallman <rms@gnu.org>
parents:
10978
diff
changeset
|
1126 (and (re-search-forward "^\\*" nil t) (beginning-of-line))) |
8018
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1127 (t |
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1128 (error "No more nodes")))) |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1129 |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1130 (defun Info-last-preorder () |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1131 "Go to the last node, popping up a level if there is none." |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1132 (interactive) |
8489
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1133 (cond ((Info-no-error |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1134 (Info-last-menu-item) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1135 ;; If we go down a menu item, go to the end of the node |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1136 ;; so we can scroll back through it. |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1137 (goto-char (point-max)))) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1138 ((Info-no-error (Info-up)) (forward-line -1)) |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1139 (t (error "No previous nodes")))) |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1140 |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1141 (defun Info-scroll-up () |
9222
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1142 "Scroll one screenful forward in Info, considering all nodes as one sequence. |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1143 Once you scroll far enough in a node that its menu appears on the screen, |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1144 the next scroll moves into its first subnode. When you scroll past |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1145 the end of a node, that goes back to the parent node." |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1146 (interactive) |
8489
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1147 (if (or (< (window-start) (point-min)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1148 (> (window-start) (point-max))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1149 (set-window-start (selected-window) (point))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1150 (let ((virtual-end (save-excursion |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1151 (goto-char (point-min)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1152 (if (search-forward "\n* Menu:" nil t) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1153 (point) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1154 (point-max))))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1155 (if (or (< virtual-end (window-start)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1156 (pos-visible-in-window-p virtual-end)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1157 (Info-next-preorder) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1158 (scroll-up)))) |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1159 |
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1160 (defun Info-scroll-down () |
9222
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1161 "Scroll one screenful back in Info, considering all nodes as one sequence. |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1162 If you are within the menu of a node, this follows the previous |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1163 menu item, so that you scroll through all the subnodes, ordered |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1164 as if they appeared in place of the menu. When you scroll past |
b18f51df31b3
(Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
8913
diff
changeset
|
1165 the beginning of a node, that goes back to the parent node." |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1166 (interactive) |
8489
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1167 (if (or (< (window-start) (point-min)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1168 (> (window-start) (point-max))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1169 (set-window-start (selected-window) (point))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1170 (let ((virtual-end (save-excursion |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1171 (goto-char (point-min)) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1172 (search-forward "\n* Menu:" nil t)))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1173 (if (or virtual-end (pos-visible-in-window-p (point-min))) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1174 (Info-last-preorder) |
c6088e3005cf
(Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents:
8480
diff
changeset
|
1175 (scroll-down)))) |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1176 |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1177 (defun Info-next-reference () |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1178 "Move cursor to the next cross-reference or menu item in the node." |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1179 (interactive) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1180 (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1181 (old-pt (point))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1182 (or (eobp) (forward-char 1)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1183 (or (re-search-forward pat nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1184 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1185 (goto-char (point-min)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1186 (or (re-search-forward pat nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1187 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1188 (goto-char old-pt) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1189 (error "No cross references in this node"))))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1190 (goto-char (match-beginning 0)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1191 (if (looking-at "\\* Menu:") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1192 (Info-next-reference)))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1193 |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1194 (defun Info-prev-reference () |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1195 "Move cursor to the previous cross-reference or menu item in the node." |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1196 (interactive) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1197 (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1198 (old-pt (point))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1199 (or (re-search-backward pat nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1200 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1201 (goto-char (point-max)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1202 (or (re-search-backward pat nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1203 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1204 (goto-char old-pt) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1205 (error "No cross references in this node"))))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1206 (goto-char (match-beginning 0)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1207 (if (looking-at "\\* Menu:") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1208 (Info-prev-reference)))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1209 |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1210 (defun Info-index (topic) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1211 "Look up a string in the index for this file. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1212 The index is defined as the first node in the top-level menu whose |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1213 name contains the word \"Index\", plus any immediately following |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1214 nodes whose names also contain the word \"Index\". |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1215 If there are no exact matches to the specified topic, this chooses |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1216 the first match which is a case-insensitive substring of a topic. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1217 Use the `,' command to see the other matches. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1218 Give a blank topic name to go to the Index node itself." |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1219 (interactive "sIndex topic: ") |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1220 (let ((orignode Info-current-node) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1221 (rnode nil) |
8071
184f2c23ff45
(Info-index): Fix typo: t => \t.
Richard M. Stallman <rms@gnu.org>
parents:
8069
diff
changeset
|
1222 (pattern (format "\n\\* \\([^\n:]*%s[^\n:]*\\):[ \t]*\\([^.\n]*\\)\\.[ \t]*\\([0-9]*\\)" |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1223 (regexp-quote topic))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1224 node) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1225 (Info-goto-node "Top") |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1226 (or (search-forward "\n* menu:" nil t) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1227 (error "No index")) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1228 (or (re-search-forward "\n\\* \\(.*\\<Index\\>\\)" nil t) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1229 (error "No index")) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1230 (goto-char (match-beginning 1)) |
10758
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1231 ;; Here, and subsequently in this function, |
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1232 ;; we bind Info-history to nil for internal node-switches |
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1233 ;; so that we don't put junk in the history. |
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1234 ;; In the first Info-goto-node call, above, we do update the history |
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1235 ;; because that is what the user's previous node choice into it. |
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1236 (let ((Info-history nil)) |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1237 (Info-goto-node (Info-extract-menu-node-name))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1238 (or (equal topic "") |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1239 (let ((matches nil) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1240 (exact nil) |
10758
a66a29e6efc9
(Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents:
10061
diff
changeset
|
1241 (Info-history nil) |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1242 found) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1243 (while |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1244 (progn |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1245 (goto-char (point-min)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1246 (while (re-search-forward pattern nil t) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1247 (setq matches |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1248 (cons (list (buffer-substring (match-beginning 1) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1249 (match-end 1)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1250 (buffer-substring (match-beginning 2) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1251 (match-end 2)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1252 Info-current-node |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1253 (string-to-int (concat "0" |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1254 (buffer-substring |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1255 (match-beginning 3) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1256 (match-end 3))))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1257 matches))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1258 (and (setq node (Info-extract-pointer "next" t)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1259 (string-match "\\<Index\\>" node))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1260 (Info-goto-node node)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1261 (or matches |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1262 (progn |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1263 (Info-last) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1264 (error "No \"%s\" in index" topic))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1265 ;; Here it is a feature that assoc is case-sensitive. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1266 (while (setq found (assoc topic matches)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1267 (setq exact (cons found exact) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1268 matches (delq found matches))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1269 (setq Info-index-alternatives (nconc exact (nreverse matches))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1270 (Info-index-next 0))))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1271 |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1272 (defun Info-index-next (num) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1273 "Go to the next matching index item from the last `i' command." |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1274 (interactive "p") |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1275 (or Info-index-alternatives |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1276 (error "No previous `i' command in this file")) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1277 (while (< num 0) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1278 (setq num (+ num (length Info-index-alternatives)))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1279 (while (> num 0) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1280 (setq Info-index-alternatives |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1281 (nconc (cdr Info-index-alternatives) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1282 (list (car Info-index-alternatives))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1283 num (1- num))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1284 (Info-goto-node (nth 1 (car Info-index-alternatives))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1285 (if (> (nth 3 (car Info-index-alternatives)) 0) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1286 (forward-line (nth 3 (car Info-index-alternatives))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1287 (forward-line 3) ; don't search in headers |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1288 (let ((name (car (car Info-index-alternatives)))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1289 (if (or (re-search-forward (format |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1290 "\\(Function\\|Command\\): %s\\( \\|$\\)" |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1291 (regexp-quote name)) nil t) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1292 (search-forward (format "`%s'" name) nil t) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1293 (and (string-match "\\`.*\\( (.*)\\)\\'" name) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1294 (search-forward |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1295 (format "`%s'" (substring name 0 (match-beginning 1))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1296 nil t)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1297 (search-forward name nil t)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1298 (beginning-of-line) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1299 (goto-char (point-min))))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1300 (message "Found \"%s\" in %s. %s" |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1301 (car (car Info-index-alternatives)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1302 (nth 2 (car Info-index-alternatives)) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1303 (if (cdr Info-index-alternatives) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1304 "(Press `,' for more)" |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1305 "(Only match)"))) |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1306 |
325 | 1307 (defun Info-undefined () |
1308 "Make command be undefined in Info." | |
1309 (interactive) | |
1310 (ding)) | |
1311 | |
1312 (defun Info-help () | |
1313 "Enter the Info tutorial." | |
1314 (interactive) | |
1315 (delete-other-windows) | |
1316 (Info-find-node "info" | |
1317 (if (< (window-height) 23) | |
1318 "Help-Small-Screen" | |
1319 "Help"))) | |
1320 | |
1321 (defun Info-summary () | |
1322 "Display a brief summary of all Info commands." | |
1323 (interactive) | |
1324 (save-window-excursion | |
1325 (switch-to-buffer "*Help*") | |
1326 (erase-buffer) | |
1327 (insert (documentation 'Info-mode)) | |
9852
b3a6fdcd63df
(Info-summary): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents:
9782
diff
changeset
|
1328 (help-mode) |
325 | 1329 (goto-char (point-min)) |
1330 (let (ch flag) | |
1331 (while (progn (setq flag (not (pos-visible-in-window-p (point-max)))) | |
1332 (message (if flag "Type Space to see more" | |
1333 "Type Space to return to Info")) | |
2032
20cc6c34421c
(Info-summary): Handle any event when flushing the display.
Richard M. Stallman <rms@gnu.org>
parents:
1979
diff
changeset
|
1334 (if (not (eq ?\ (setq ch (read-event)))) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1667
diff
changeset
|
1335 (progn (setq unread-command-events (list ch)) nil) |
325 | 1336 flag)) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1337 (scroll-up))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1338 (bury-buffer "*Help*"))) |
325 | 1339 |
1340 (defun Info-get-token (pos start all &optional errorstring) | |
1341 "Return the token around POS, | |
1342 POS must be somewhere inside the token | |
1343 START is a regular expression which will match the | |
1344 beginning of the tokens delimited string | |
1345 ALL is a regular expression with a single | |
1346 parenthized subpattern which is the token to be | |
1347 returned. E.g. '{\(.*\)}' would return any string | |
1348 enclosed in braces around POS. | |
1349 SIG optional fourth argument, controls action on no match | |
1350 nil: return nil | |
1351 t: beep | |
1352 a string: signal an error, using that string." | |
1353 (save-excursion | |
1354 (goto-char pos) | |
1355 (re-search-backward start (max (point-min) (- pos 200)) 'yes) | |
3351
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1356 (let (found) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1357 (while (and (re-search-forward all (min (point-max) (+ pos 200)) 'yes) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1358 (not (setq found (and (<= (match-beginning 0) pos) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1359 (> (match-end 0) pos)))))) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1360 (if (and found (<= (match-beginning 0) pos) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1361 (> (match-end 0) pos)) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1362 (buffer-substring (match-beginning 1) (match-end 1)) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1363 (cond ((null errorstring) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1364 nil) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1365 ((eq errorstring t) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1366 (beep) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1367 nil) |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1368 (t |
1795290d0fc8
(Info-get-token): Check that thesecond search succeeded.
Richard M. Stallman <rms@gnu.org>
parents:
3330
diff
changeset
|
1369 (error "No %s around position %d" errorstring pos))))))) |
325 | 1370 |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1371 (defun Info-mouse-follow-nearest-node (click) |
1309
aa286e6e7bec
(Info-follow-nearest-node): Handle line breaks after *note.
Richard M. Stallman <rms@gnu.org>
parents:
998
diff
changeset
|
1372 "\\<Info-mode-map>Follow a node reference near point. |
aa286e6e7bec
(Info-follow-nearest-node): Handle line breaks after *note.
Richard M. Stallman <rms@gnu.org>
parents:
998
diff
changeset
|
1373 Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], \\[Info-prev] or \\[Info-up] command, depending on where you click. |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1374 At end of the node's text, moves to the next node, or up if none." |
1309
aa286e6e7bec
(Info-follow-nearest-node): Handle line breaks after *note.
Richard M. Stallman <rms@gnu.org>
parents:
998
diff
changeset
|
1375 (interactive "e") |
1484
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
1376 (let* ((start (event-start click)) |
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
1377 (window (car start)) |
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
1378 (pos (car (cdr start)))) |
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
1379 (select-window window) |
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
1380 (goto-char pos)) |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1381 (and (not (Info-try-follow-nearest-node)) |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1382 (save-excursion (forward-line 1) (eobp)) |
8018
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1383 (Info-next-preorder-1))) |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1384 |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1385 (defun Info-follow-nearest-node () |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1386 "\\<Info-mode-map>Follow a node reference near point. |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1387 Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], \\[Info-prev] or \\[Info-up] command, depending on where point is. |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1388 If no reference to follow, moves to the next node, or up if none." |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1389 (interactive) |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1390 (or (Info-try-follow-nearest-node) |
8018
518971c497f5
(Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7990
diff
changeset
|
1391 (Info-next-preorder-1))) |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1392 |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1393 ;; Common subroutine. |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1394 (defun Info-try-follow-nearest-node () |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1395 "Follow a node reference near point. Return non-nil if successful." |
325 | 1396 (let (node) |
1397 (cond | |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1398 ((setq node (Info-get-token (point) "\\*note[ \n]" |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1399 "\\*note[ \n]\\([^:]*\\):")) |
325 | 1400 (Info-follow-reference node)) |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1401 ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\)::")) |
325 | 1402 (Info-goto-node node)) |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1403 ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\):")) |
325 | 1404 (Info-menu node)) |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1405 ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)")) |
325 | 1406 (Info-goto-node node)) |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1407 ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)")) |
325 | 1408 (Info-goto-node node)) |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1409 ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)")) |
325 | 1410 (Info-goto-node "Top")) |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1411 ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)")) |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1412 (Info-goto-node node))) |
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1413 node)) |
325 | 1414 |
1415 (defvar Info-mode-map nil | |
1416 "Keymap containing Info commands.") | |
1417 (if Info-mode-map | |
1418 nil | |
1419 (setq Info-mode-map (make-keymap)) | |
1420 (suppress-keymap Info-mode-map) | |
1421 (define-key Info-mode-map "." 'beginning-of-buffer) | |
929
27262a6c632a
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
846
diff
changeset
|
1422 (define-key Info-mode-map " " 'Info-scroll-up) |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1423 (define-key Info-mode-map "\C-m" 'Info-follow-nearest-node) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1424 (define-key Info-mode-map "\t" 'Info-next-reference) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1425 (define-key Info-mode-map "\e\t" 'Info-prev-reference) |
1666
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1426 (define-key Info-mode-map "1" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1427 (define-key Info-mode-map "2" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1428 (define-key Info-mode-map "3" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1429 (define-key Info-mode-map "4" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1430 (define-key Info-mode-map "5" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1431 (define-key Info-mode-map "6" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1432 (define-key Info-mode-map "7" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1433 (define-key Info-mode-map "8" 'Info-nth-menu-item) |
c12fbca81b63
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1613
diff
changeset
|
1434 (define-key Info-mode-map "9" 'Info-nth-menu-item) |
1667
9c0e14881b8f
(Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents:
1666
diff
changeset
|
1435 (define-key Info-mode-map "0" 'undefined) |
325 | 1436 (define-key Info-mode-map "?" 'Info-summary) |
1437 (define-key Info-mode-map "]" 'Info-forward-node) | |
1438 (define-key Info-mode-map "[" 'Info-backward-node) | |
1439 (define-key Info-mode-map "<" 'Info-top-node) | |
1440 (define-key Info-mode-map ">" 'Info-final-node) | |
1441 (define-key Info-mode-map "b" 'beginning-of-buffer) | |
1442 (define-key Info-mode-map "d" 'Info-directory) | |
1443 (define-key Info-mode-map "e" 'Info-edit) | |
1444 (define-key Info-mode-map "f" 'Info-follow-reference) | |
1445 (define-key Info-mode-map "g" 'Info-goto-node) | |
1446 (define-key Info-mode-map "h" 'Info-help) | |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1447 (define-key Info-mode-map "i" 'Info-index) |
325 | 1448 (define-key Info-mode-map "l" 'Info-last) |
1449 (define-key Info-mode-map "m" 'Info-menu) | |
1450 (define-key Info-mode-map "n" 'Info-next) | |
1451 (define-key Info-mode-map "p" 'Info-prev) | |
1452 (define-key Info-mode-map "q" 'Info-exit) | |
1453 (define-key Info-mode-map "s" 'Info-search) | |
8739
f89682e90658
(Info-mode-map): Bind M-s like s.
Richard M. Stallman <rms@gnu.org>
parents:
8692
diff
changeset
|
1454 ;; For consistency with Rmail. |
f89682e90658
(Info-mode-map): Bind M-s like s.
Richard M. Stallman <rms@gnu.org>
parents:
8692
diff
changeset
|
1455 (define-key Info-mode-map "\M-s" 'Info-search) |
3313
34f2db3916fe
(Info-mode-map): Correct Info-top to Info-top-node.
Richard M. Stallman <rms@gnu.org>
parents:
3225
diff
changeset
|
1456 (define-key Info-mode-map "t" 'Info-top-node) |
325 | 1457 (define-key Info-mode-map "u" 'Info-up) |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1458 (define-key Info-mode-map "," 'Info-index-next) |
930
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1459 (define-key Info-mode-map "\177" 'Info-scroll-down) |
7007
52b0ebfd3191
(Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents:
6716
diff
changeset
|
1460 (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node) |
540 | 1461 ) |
325 | 1462 |
1463 ;; Info mode is suitable only for specially formatted data. | |
1464 (put 'info-mode 'mode-class 'special) | |
1465 | |
1466 (defun Info-mode () | |
1467 "\\<Info-mode-map> | |
1468 Info mode provides commands for browsing through the Info documentation tree. | |
1469 Documentation in Info is divided into \"nodes\", each of which discusses | |
1470 one topic and contains references to other nodes which discuss related | |
1471 topics. Info has commands to follow the references and show you other nodes. | |
1472 | |
1473 \\[Info-help] Invoke the Info tutorial. | |
1474 | |
1475 Selecting other nodes: | |
8564 | 1476 \\[Info-mouse-follow-nearest-node] |
1477 Follow a node reference you click on. | |
1478 This works with menu items, cross references, and | |
1479 the \"next\", \"previous\" and \"up\", depending on where you click. | |
325 | 1480 \\[Info-next] Move to the \"next\" node of this node. |
3127
dfbada800489
(Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents:
3084
diff
changeset
|
1481 \\[Info-prev] Move to the \"previous\" node of this node. |
325 | 1482 \\[Info-up] Move \"up\" from this node. |
1483 \\[Info-menu] Pick menu item specified by name (or abbreviation). | |
1484 Picking a menu item causes another node to be selected. | |
540 | 1485 \\[Info-directory] Go to the Info directory node. |
325 | 1486 \\[Info-follow-reference] Follow a cross reference. Reads name of reference. |
1487 \\[Info-last] Move to the last node you were at. | |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1488 \\[Info-index] Look up a topic in this file's Index and move to that node. |
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1489 \\[Info-index-next] (comma) Move to the next match from a previous `i' command. |
325 | 1490 |
1491 Moving within a node: | |
5041 | 1492 \\[Info-scroll-up] Normally, scroll forward a full screen. If the end of the buffer is |
930
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1493 already visible, try to go to the next menu entry, or up if there is none. |
5041 | 1494 \\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is |
930
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1495 already visible, try to go to the previous menu entry, or up if there is none. |
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1496 \\[beginning-of-buffer] Go to beginning of node. |
325 | 1497 |
1498 Advanced commands: | |
1499 \\[Info-exit] Quit Info: reselect previously selected buffer. | |
1500 \\[Info-edit] Edit contents of selected node. | |
1501 1 Pick first item in node's menu. | |
1502 2, 3, 4, 5 Pick second ... fifth item in node's menu. | |
1503 \\[Info-goto-node] Move to node specified by name. | |
1504 You may include a filename as well, as (FILENAME)NODENAME. | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1505 \\[universal-argument] \\[info] Move to new Info file with completion. |
325 | 1506 \\[Info-search] Search through this Info file for specified regexp, |
930
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1507 and select the node in which the next occurrence is found. |
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1508 \\[Info-next-preorder] Next-preorder; that is, try to go to the next menu item, |
1dac458b5117
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
929
diff
changeset
|
1509 and if that fails try to move up, and if that fails, tell user |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1510 he/she is done reading. |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1511 \\[Info-next-reference] Move cursor to next cross-reference or menu item. |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1512 \\[Info-prev-reference] Move cursor to previous cross-reference or menu item." |
325 | 1513 (kill-all-local-variables) |
1514 (setq major-mode 'Info-mode) | |
1515 (setq mode-name "Info") | |
1516 (use-local-map Info-mode-map) | |
1517 (set-syntax-table text-mode-syntax-table) | |
1518 (setq local-abbrev-table text-mode-abbrev-table) | |
1519 (setq case-fold-search t) | |
1520 (setq buffer-read-only t) | |
1521 (make-local-variable 'Info-current-file) | |
1522 (make-local-variable 'Info-current-subfile) | |
1523 (make-local-variable 'Info-current-node) | |
1524 (make-local-variable 'Info-tag-table-marker) | |
1525 (make-local-variable 'Info-history) | |
2561
1bd4cf98df68
(Info-find-node, Info-insert-subfile): Do the right thing if info files have
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2038
diff
changeset
|
1526 (make-local-variable 'Info-index-alternatives) |
9572 | 1527 (if (memq (framep (selected-frame)) '(x pc)) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1528 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1529 (make-face 'info-node) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1530 (make-face 'info-menu-5) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1531 (make-face 'info-xref) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1532 (or (face-differs-from-default-p 'info-node) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1533 (if (face-differs-from-default-p 'bold-italic) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1534 (copy-face 'bold-italic 'info-node) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1535 (copy-face 'bold 'info-node))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1536 (or (face-differs-from-default-p 'info-menu-5) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1537 (set-face-underline-p 'info-menu-5 t)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1538 (or (face-differs-from-default-p 'info-xref) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1539 (copy-face 'bold 'info-xref))) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1540 (setq Info-fontify nil)) |
325 | 1541 (Info-set-mode-line) |
1542 (run-hooks 'Info-mode-hook)) | |
1543 | |
1544 (defvar Info-edit-map nil | |
1545 "Local keymap used within `e' command of Info.") | |
1546 (if Info-edit-map | |
1547 nil | |
1548 (setq Info-edit-map (nconc (make-sparse-keymap) text-mode-map)) | |
1549 (define-key Info-edit-map "\C-c\C-c" 'Info-cease-edit)) | |
1550 | |
1551 ;; Info-edit mode is suitable only for specially formatted data. | |
1552 (put 'info-edit-mode 'mode-class 'special) | |
1553 | |
1554 (defun Info-edit-mode () | |
1555 "Major mode for editing the contents of an Info node. | |
1477 | 1556 Like text mode with the addition of `Info-cease-edit' |
325 | 1557 which returns to Info mode for browsing. |
1558 \\{Info-edit-map}" | |
8805
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1559 (use-local-map Info-edit-map) |
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1560 (setq major-mode 'Info-edit-mode) |
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1561 (setq mode-name "Info Edit") |
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1562 (kill-local-variable 'mode-line-buffer-identification) |
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1563 (setq buffer-read-only nil) |
11580
7f357fe2cda5
(Info-edit-mode, Info-cease-edit): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents:
11527
diff
changeset
|
1564 (force-mode-line-update) |
8805
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1565 (buffer-enable-undo (current-buffer)) |
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1566 (run-hooks 'Info-edit-mode-hook)) |
325 | 1567 |
1568 (defun Info-edit () | |
1569 "Edit the contents of this Info node. | |
1570 Allowed only if variable `Info-enable-edit' is non-nil." | |
1571 (interactive) | |
1572 (or Info-enable-edit | |
1573 (error "Editing info nodes is not enabled")) | |
8805
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1574 (Info-edit-mode) |
325 | 1575 (message (substitute-command-keys |
8805
6d8297d65d78
(Info-edit): Move the customary mode-initialization calls out of here.
Karl Heuer <kwzh@gnu.org>
parents:
8739
diff
changeset
|
1576 "Editing: Type \\<Info-edit-map>\\[Info-cease-edit] to return to info"))) |
325 | 1577 |
1578 (defun Info-cease-edit () | |
1579 "Finish editing Info node; switch back to Info proper." | |
1580 (interactive) | |
1581 ;; Do this first, so nothing has changed if user C-g's at query. | |
1582 (and (buffer-modified-p) | |
1583 (y-or-n-p "Save the file? ") | |
1584 (save-buffer)) | |
1585 (use-local-map Info-mode-map) | |
1586 (setq major-mode 'Info-mode) | |
1587 (setq mode-name "Info") | |
1588 (Info-set-mode-line) | |
1589 (setq buffer-read-only t) | |
11580
7f357fe2cda5
(Info-edit-mode, Info-cease-edit): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents:
11527
diff
changeset
|
1590 (force-mode-line-update) |
325 | 1591 (and (marker-position Info-tag-table-marker) |
1592 (buffer-modified-p) | |
1593 (message "Tags may have changed. Use Info-tagify if necessary"))) | |
359 | 1594 |
1595 (defun Info-find-emacs-command-nodes (command) | |
1596 "Return a list of locations documenting COMMAND in the Emacs Info manual. | |
1597 The locations are of the format used in Info-history, i.e. | |
1598 \(FILENAME NODENAME BUFFERPOS\)." | |
1599 (require 'info) | |
1600 (let ((where '()) | |
1601 (cmd-desc (concat "^\\* " (regexp-quote (symbol-name command)) | |
1602 ":\\s *\\(.*\\)\\.$"))) | |
1603 (save-excursion | |
1604 (Info-find-node "emacs" "Command Index") | |
1605 ;; Take the index node off the Info history. | |
1606 (setq Info-history (cdr Info-history)) | |
1607 (goto-char (point-max)) | |
1608 (while (re-search-backward cmd-desc nil t) | |
1609 (setq where (cons (list Info-current-file | |
1610 (buffer-substring | |
1611 (match-beginning 1) | |
1612 (match-end 1)) | |
1613 0) | |
1614 where))) | |
1615 where))) | |
1616 | |
1617 ;;;###autoload | |
1618 (defun Info-goto-emacs-command-node (command) | |
4468
5e9224dac452
(Info-goto-emacs-command-node, Info-goto-emacs-key-command-node): Doc fix.
Roland McGrath <roland@gnu.org>
parents:
4410
diff
changeset
|
1619 "Go to the Info node in the Emacs manual for command COMMAND. |
5e9224dac452
(Info-goto-emacs-command-node, Info-goto-emacs-key-command-node): Doc fix.
Roland McGrath <roland@gnu.org>
parents:
4410
diff
changeset
|
1620 The command is found by looking up in Emacs manual's Command Index." |
359 | 1621 (interactive "CFind documentation for command: ") |
1622 (or (commandp command) | |
1623 (signal 'wrong-type-argument (list 'commandp command))) | |
1624 (let ((where (Info-find-emacs-command-nodes command))) | |
1625 (if where | |
1626 (let ((num-matches (length where))) | |
1627 ;; Get Info running, and pop to it in another window. | |
1628 (save-window-excursion | |
1629 (info)) | |
1630 (pop-to-buffer "*info*") | |
1631 (Info-find-node (car (car where)) | |
1632 (car (cdr (car where)))) | |
1633 (if (> num-matches 1) | |
1634 (progn | |
1635 ;; Info-find-node already pushed (car where) onto | |
1636 ;; Info-history. Put the other nodes that were found on | |
1637 ;; the history. | |
1638 (setq Info-history (nconc (cdr where) Info-history)) | |
1639 (message (substitute-command-keys | |
6049
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
1640 "Found %d other entr%s. Use \\[Info-last] to see %s.") |
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
1641 (1- num-matches) |
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
1642 (if (> num-matches 2) "ies" "y") |
32df2b4d67cf
(Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents:
5555
diff
changeset
|
1643 (if (> num-matches 2) "them" "it"))))) |
359 | 1644 (error "Couldn't find documentation for %s." command)))) |
1645 | |
1646 ;;;###autoload | |
1647 (defun Info-goto-emacs-key-command-node (key) | |
1648 "Go to the Info node in the Emacs manual the command bound to KEY, a string. | |
4468
5e9224dac452
(Info-goto-emacs-command-node, Info-goto-emacs-key-command-node): Doc fix.
Roland McGrath <roland@gnu.org>
parents:
4410
diff
changeset
|
1649 Interactively, if the binding is execute-extended-command, a command is read. |
5e9224dac452
(Info-goto-emacs-command-node, Info-goto-emacs-key-command-node): Doc fix.
Roland McGrath <roland@gnu.org>
parents:
4410
diff
changeset
|
1650 The command is found by looking up in Emacs manual's Command Index." |
359 | 1651 (interactive "kFind documentation for key:") |
1652 (let ((command (key-binding key))) | |
1653 (cond ((null command) | |
1484
6c2a714566d3
Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents:
1477
diff
changeset
|
1654 (message "%s is undefined" (key-description key))) |
359 | 1655 ((and (interactive-p) |
1656 (eq command 'execute-extended-command)) | |
1657 (Info-goto-emacs-command-node | |
1658 (read-command "Find documentation for command: "))) | |
1659 (t | |
1660 (Info-goto-emacs-command-node command))))) | |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1661 |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1662 (defun Info-fontify-node () |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1663 (save-excursion |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1664 (let ((buffer-read-only nil)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1665 (goto-char (point-min)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1666 (if (looking-at "^File: [^,: \t]+,?[ \t]+") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1667 (progn |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1668 (goto-char (match-end 0)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1669 (while |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1670 (looking-at "[ \t]*[^:, \t\n]+:[ \t]+\\([^:,\t\n]+\\),?") |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1671 (goto-char (match-end 0)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1672 (put-text-property (match-beginning 1) (match-end 1) |
6624
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1673 'face 'info-xref) |
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1674 (put-text-property (match-beginning 1) (match-end 1) |
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1675 'mouse-face 'highlight)))) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1676 (goto-char (point-min)) |
7859
1d1693211560
(Info-fontify-node): Require some whitespace after *Note.
Richard M. Stallman <rms@gnu.org>
parents:
7837
diff
changeset
|
1677 (while (re-search-forward "\\*Note[ \n\t]+\\([^:]*\\):" nil t) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1678 (if (= (char-after (1- (match-beginning 0))) ?\") ; hack |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1679 nil |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1680 (put-text-property (match-beginning 1) (match-end 1) |
6624
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1681 'face 'info-xref) |
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1682 (put-text-property (match-beginning 1) (match-end 1) |
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1683 'mouse-face 'highlight))) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1684 (goto-char (point-min)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1685 (if (and (search-forward "\n* Menu:" nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1686 (not (string-match "\\<Index\\>" Info-current-node)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1687 ;; Don't take time to annotate huge menus |
8193
0be48d0d16fd
(Info-fontify-maximum-menu-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8071
diff
changeset
|
1688 (< (- (point-max) (point)) Info-fontify-maximum-menu-size)) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1689 (let ((n 0)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1690 (while (re-search-forward "^\\* \\([^:\t\n]*\\):" nil t) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1691 (setq n (1+ n)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1692 (if (memq n '(5 9)) ; visual aids to help with 1-9 keys |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1693 (put-text-property (match-beginning 0) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1694 (1+ (match-beginning 0)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1695 'face 'info-menu-5)) |
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1696 (put-text-property (match-beginning 1) (match-end 1) |
6624
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1697 'face 'info-node) |
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1698 (put-text-property (match-beginning 1) (match-end 1) |
ca39bae3744d
(Info-fontify-node): Add mouse-face properties.
Richard M. Stallman <rms@gnu.org>
parents:
6566
diff
changeset
|
1699 'mouse-face 'highlight)))) |
4410
25fb71fc2643
(Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4261
diff
changeset
|
1700 (set-buffer-modified-p nil)))) |
584 | 1701 |
1702 (provide 'info) | |
1703 | |
660
08eb386dd0f3
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
1704 ;;; info.el ends here |