annotate lisp/info.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 10e66ac64b61
children 5fabe7db5188
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
105142
e2af9a73da8d * info.el (Info-try-follow-nearest-node): Use the URL extracted by
Juanma Barranquero <lekktu@gmail.com>
parents: 104791
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
62822
7f11f471aa34 (Info-goto-node): Revert autoload addition (2004-06-12).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62733
diff changeset
3 ;; Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106569
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
88108
5a688fd1bbee (bookmark-make-cell-function, bookmark-search-size)
Glenn Morris <rgm@gnu.org>
parents: 88080
diff changeset
5 ;; Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
6
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
7 ;; Maintainer: FSF
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
8 ;; Keywords: help
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
9
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94259
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94259
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94259
diff changeset
15 ;; (at your option) any later version.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94259
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
25 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
26
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
27 ;; Note that nowadays we expect Info files to be made using makeinfo.
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
28 ;; In particular we make these assumptions:
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
29 ;; - a menu item MAY contain colons but not colon-space ": "
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
30 ;; - a menu item ending with ": " (but not ":: ") is an index entry
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
31 ;; - a node name MAY NOT contain a colon
49426
7ac32aa920b9 (Info-extract-menu-node-name): When looking for end of
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49424
diff changeset
32 ;; This distinction is to support indexing of computer programming
7ac32aa920b9 (Info-extract-menu-node-name): When looking for end of
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49424
diff changeset
33 ;; language terms that may contain ":" but not ": ".
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
34
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
35 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 754
diff changeset
36
96280
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
37 (eval-when-compile (require 'jka-compr) (require 'cl))
25869
620e4683a89e Require jka-compr when compiling.
Dave Love <fx@gnu.org>
parents: 25811
diff changeset
38
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
39 (defgroup info nil
64013
9ee64186bcf1 (info): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63935
diff changeset
40 "Info subsystem."
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
41 :group 'help
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
42 :group 'docs)
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
43
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
44
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 (defvar Info-history nil
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
46 "Stack of Info nodes user has visited.
64071
5a1b36dec43a (Info-history, Info-history-forward, Info-history-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 64013
diff changeset
47 Each element of the stack is a list (FILENAME NODENAME BUFFERPOS).")
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
49 (defvar Info-history-forward nil
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
50 "Stack of Info nodes user has visited with `Info-history-back' command.
64071
5a1b36dec43a (Info-history, Info-history-forward, Info-history-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 64013
diff changeset
51 Each element of the stack is a list (FILENAME NODENAME BUFFERPOS).")
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
52
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
53 (defvar Info-history-list nil
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
54 "List of all Info nodes user has visited.
64071
5a1b36dec43a (Info-history, Info-history-forward, Info-history-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 64013
diff changeset
55 Each element of the list is a list (FILENAME NODENAME).")
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
56
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
57 (defcustom Info-enable-edit nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
58 "Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node.
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
59 This is convenient if you want to write Info files by hand.
680
f99c8512cd41 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 660
diff changeset
60 However, we recommend that you not do this.
f99c8512cd41 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 660
diff changeset
61 It is better to write a Texinfo file and generate the Info file from that,
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
62 because that gives you a printed manual as well."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
63 :type 'boolean
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
64 :group 'info)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65
15177
4935ada40f67 (Info-enable-active-nodes): Default to nil. Mark it risky.
Richard M. Stallman <rms@gnu.org>
parents: 15126
diff changeset
66 (defvar Info-enable-active-nodes nil
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 "Non-nil allows Info to execute Lisp code associated with nodes.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 The Lisp code is executed when the node is selected.")
15177
4935ada40f67 (Info-enable-active-nodes): Default to nil. Mark it risky.
Richard M. Stallman <rms@gnu.org>
parents: 15126
diff changeset
69 (put 'Info-enable-active-nodes 'risky-local-variable t)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
19043
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
71 (defface info-node
55061
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
72 '((((class color) (background light)) :foreground "brown" :weight bold :slant italic)
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
73 (((class color) (background dark)) :foreground "white" :weight bold :slant italic)
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
74 (t :weight bold :slant italic))
19043
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
75 "Face for Info node names."
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
76 :group 'info)
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
77
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
78 (defface info-title-1
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
79 '((((type tty pc) (class color) (background light))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
80 :foreground "green" :weight bold)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
81 (((type tty pc) (class color) (background dark))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
82 :foreground "yellow" :weight bold)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
83 (t :height 1.2 :inherit info-title-2))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
84 "Face for info titles at level 1."
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
85 :group 'info)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 103967
diff changeset
86 (define-obsolete-face-alias 'Info-title-1-face 'info-title-1 "22.1")
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
87
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
88 (defface info-title-2
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
89 '((((type tty pc) (class color)) :foreground "lightblue" :weight bold)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
90 (t :height 1.2 :inherit info-title-3))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
91 "Face for info titles at level 2."
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
92 :group 'info)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 103967
diff changeset
93 (define-obsolete-face-alias 'Info-title-2-face 'info-title-2 "22.1")
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
94
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
95 (defface info-title-3
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
96 '((((type tty pc) (class color)) :weight bold)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
97 (t :height 1.2 :inherit info-title-4))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
98 "Face for info titles at level 3."
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
99 :group 'info)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 103967
diff changeset
100 (define-obsolete-face-alias 'Info-title-3-face 'info-title-3 "22.1")
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
101
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
102 (defface info-title-4
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
103 '((((type tty pc) (class color)) :weight bold)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
104 (t :weight bold :inherit variable-pitch))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
105 "Face for info titles at level 4."
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
106 :group 'info)
104778
afa0e028ba97 Mark face aliases with "-face" suffix as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 103967
diff changeset
107 (define-obsolete-face-alias 'Info-title-4-face 'info-title-4 "22.1")
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
108
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
109 (defface info-menu-header
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
110 '((((type tty pc))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
111 :underline t
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
112 :weight bold)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
113 (t
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
114 :inherit variable-pitch
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
115 :weight bold))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
116 "Face for headers in Info menus."
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
117 :group 'info)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
118
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
119 (defface info-menu-star
55061
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
120 '((((class color)) :foreground "red1")
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
121 (t :underline t))
46029
65fc39bc254a (info-menu-5): Fix documentation.
Juanma Barranquero <lekktu@gmail.com>
parents: 45784
diff changeset
122 "Face for every third `*' in an Info menu."
19043
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
123 :group 'info)
104791
dba547c05661 (info-menu-5): Mark face alias as obsolete.
Glenn Morris <rgm@gnu.org>
parents: 104778
diff changeset
124 (define-obsolete-face-alias 'info-menu-5 'info-menu-star "22.1")
19043
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
125
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
126 (defface info-xref
68342
e3989d3241d5 (info-xref): Inherit from `link'.
Juri Linkov <juri@jurta.org>
parents: 68227
diff changeset
127 '((t :inherit link))
e3989d3241d5 (info-xref): Inherit from `link'.
Juri Linkov <juri@jurta.org>
parents: 68227
diff changeset
128 "Face for unvisited Info cross-references."
19043
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
129 :group 'info)
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
130
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
131 (defface info-xref-visited
68853
4e74c8b341d8 (info-xref-visited): Inherit from info-xref too.
Juri Linkov <juri@jurta.org>
parents: 68826
diff changeset
132 '((t :inherit (link-visited info-xref)))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
133 "Face for visited Info cross-references."
68342
e3989d3241d5 (info-xref): Inherit from `link'.
Juri Linkov <juri@jurta.org>
parents: 68227
diff changeset
134 :version "22.1"
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
135 :group 'info)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
136
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
137 (defcustom Info-fontify-visited-nodes t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
138 "Non-nil to fontify references to visited nodes in `info-xref-visited' face."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59472
diff changeset
139 :version "22.1"
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
140 :type 'boolean
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
141 :group 'info)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
142
76891
b219eac092dd (Info-fontify-maximum-menu-size): Revert to 100000.
Chong Yidong <cyd@stupidchicken.com>
parents: 76812
diff changeset
143 (defcustom Info-fontify-maximum-menu-size 100000
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
144 "Maximum size of menu to fontify if `font-lock-mode' is non-nil.
75750
9d47b3ad340e (Info-fontify-maximum-menu-size): Document the effect of a nil value.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
145 Set to nil to disable node fontification."
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
146 :type 'integer
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
147 :group 'info)
8480
7f28030d9529 (Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8461
diff changeset
148
31660
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
149 (defcustom Info-use-header-line t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
150 "Non-nil means to put the beginning-of-node links in an Emacs header-line.
31660
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
151 A header-line does not scroll with the rest of the buffer."
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
152 :type 'boolean
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
153 :group 'info)
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
154
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
155 (defface info-header-xref
55061
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
156 '((t :inherit info-xref))
31660
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
157 "Face for Info cross-references in a node header."
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
158 :group 'info)
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
159
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
160 (defface info-header-node
55061
966081800217 (info-node, info-menu-5, info-xref, info-header-node)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55057
diff changeset
161 '((t :inherit info-node))
31660
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
162 "Face for Info nodes in a node header."
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
163 :group 'info)
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
164
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
165 (defvar Info-directory-list nil
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 "List of directories to search for Info documentation files.
46252
0b84df44f862 (Info-directory-list): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 46139
diff changeset
167 If nil, meaning not yet initialized, 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
168 variable INFOPATH to initialize it, or `Info-default-directory-list'
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
169 if there is no INFOPATH variable in the environment, or the
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
170 concatenation of the two if INFOPATH ends with a colon.
31324
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
171
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
172 When `Info-directory-list' is initialized from the value of
34574
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
173 `Info-default-directory-list', and Emacs is installed in one of the
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
174 standard directories, the directory of Info files that come with Emacs
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
175 is put last (so that local Info files override standard ones).
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
176
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
177 When `Info-directory-list' is initialized from the value of
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
178 `Info-default-directory-list', and Emacs is not installed in one
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
179 of the standard directories, the first element of the resulting
31324
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
180 list is the directory where Emacs installs the Info files that
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
181 come with it. This is so that Emacs's own manual, which suits the
34574
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
182 version of Emacs you are using, will always be found first. This
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
183 is useful when you install an experimental version of Emacs without
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
184 removing the standard installation.
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
185
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
186 If you want to override the order of directories in
9283cc675c49 (Info-directory-list): Change doc string to reflect the
Eli Zaretskii <eliz@gnu.org>
parents: 34503
diff changeset
187 `Info-default-directory-list', set INFOPATH in the environment.
8461
c88361c3b940 (Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8369
diff changeset
188
c88361c3b940 (Info-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8369
diff changeset
189 If you run the Emacs executable from the `src' directory in the Emacs
31324
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
190 source tree, and INFOPATH is not defined, the `info' directory in the
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
191 source tree is used as the first element of `Info-directory-list', in
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
192 place of the installation Info directory. This is useful when you run
928516355e95 (Info-directory-list): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 30763
diff changeset
193 a version of Emacs without installing it.")
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
195 (defcustom Info-additional-directory-list nil
8480
7f28030d9529 (Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8461
diff changeset
196 "List of additional directories to search for Info documentation files.
48582
cb623072f5da (Info-additional-directory-list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 48287
diff changeset
197 These directories are searched after those in `Info-directory-list'."
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
198 :type '(repeat directory)
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17154
diff changeset
199 :group 'info)
8480
7f28030d9529 (Info-additional-directory-list): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8461
diff changeset
200
51709
02d430615dd4 (Info-fontify-menu-headers): Only fontify `* Menu:' at the beginning
Luc Teirlinck <teirllm@auburn.edu>
parents: 51623
diff changeset
201 (defcustom Info-scroll-prefer-subnodes nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
202 "If non-nil, \\<Info-mode-map>\\[Info-scroll-up] in a menu visits subnodes.
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
203
34182
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
204 If this is non-nil, and you scroll far enough in a node that its menu
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
205 appears on the screen, the next \\<Info-mode-map>\\[Info-scroll-up]
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
206 moves to a subnode indicated by the following menu item. This means
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
207 that you visit a subnode before getting to the end of the menu.
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
208
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
209 Setting this option to nil results in behavior similar to the stand-alone
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
210 Info reader program, which visits the first subnode from the menu only
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
211 when you hit the end of the current node."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59472
diff changeset
212 :version "22.1"
34182
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
213 :type 'boolean
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
214 :group 'info)
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
215
48107
c0a7fff00ce5 (Info-hide-note-references): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48103
diff changeset
216 (defcustom Info-hide-note-references t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
217 "If non-nil, hide the tag and section reference in *note and * menu items.
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
218 If value is non-nil but not `hide', also replaces the \"*note\" with \"see\".
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
219 If value is non-nil but not t or `hide', the reference section is still shown.
97880
b81e767914b5 (Info-hide-note-references, Info-refill-paragraphs): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 97132
diff changeset
220 `nil' completely disables this feature. If this is non-nil, you might
b81e767914b5 (Info-hide-note-references, Info-refill-paragraphs): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 97132
diff changeset
221 want to set `Info-refill-paragraphs'."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59472
diff changeset
222 :version "22.1"
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
223 :type '(choice (const :tag "No hiding" nil)
50004
14d6d1ad4a06 (Info-fontify-node): Don't hide indentation before the
Andreas Schwab <schwab@suse.de>
parents: 49879
diff changeset
224 (const :tag "Replace tag and hide reference" t)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
225 (const :tag "Hide tag and reference" hide)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
226 (other :tag "Only replace tag" tag))
48107
c0a7fff00ce5 (Info-hide-note-references): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48103
diff changeset
227 :group 'info)
c0a7fff00ce5 (Info-hide-note-references): New defcustom.
Kim F. Storm <storm@cua.dk>
parents: 48103
diff changeset
228
51731
6b3b6b76e307 Disable paragraph refilling.
Kim F. Storm <storm@cua.dk>
parents: 51709
diff changeset
229 (defcustom Info-refill-paragraphs nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
230 "If non-nil, attempt to refill paragraphs with hidden references.
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
231 This refilling may accidentally remove explicit line breaks in the Info
97880
b81e767914b5 (Info-hide-note-references, Info-refill-paragraphs): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 97132
diff changeset
232 file, so be prepared for a few surprises if you enable this feature.
b81e767914b5 (Info-hide-note-references, Info-refill-paragraphs): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 97132
diff changeset
233 This only has an effect if `Info-hide-note-references' is non-nil."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59472
diff changeset
234 :version "22.1"
51731
6b3b6b76e307 Disable paragraph refilling.
Kim F. Storm <storm@cua.dk>
parents: 51709
diff changeset
235 :type 'boolean
6b3b6b76e307 Disable paragraph refilling.
Kim F. Storm <storm@cua.dk>
parents: 51709
diff changeset
236 :group 'info)
6b3b6b76e307 Disable paragraph refilling.
Kim F. Storm <storm@cua.dk>
parents: 51709
diff changeset
237
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
238 (defcustom Info-breadcrumbs-depth 4
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
239 "Depth of breadcrumbs to display.
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
240 0 means do not display breadcrumbs."
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
241 :version "23.1"
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
242 :type 'integer
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
243 :group 'info)
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
244
58604
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
245 (defcustom Info-search-whitespace-regexp "\\s-+"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
246 "If non-nil, regular expression to match a sequence of whitespace chars.
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
247 This applies to Info search for regular expressions.
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
248 You might want to use something like \"[ \\t\\r\\n]+\" instead.
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
249 In the Customization buffer, that is `[' followed by a space,
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
250 a tab, a carriage return (control-M), a newline, and `]+'."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
251 :type 'regexp
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
252 :group 'info)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
253
60222
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
254 (defcustom Info-isearch-search t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99642
diff changeset
255 "If non-nil, isearch in Info searches through multiple nodes.
60626
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
256 Before leaving the initial Info node, where isearch was started,
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
257 it fails once with the error message [initial node], and with
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
258 subsequent C-s/C-r continues through other nodes without failing
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
259 with this error message in other nodes. When isearch fails for
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
260 the rest of the manual, it wraps aroung the whole manual and
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
261 restarts the search from the top/final node depending on
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
262 search direction.
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
263
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
264 Setting this option to nil restores the default isearch behavior
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
265 with wrapping around the current Info node."
60222
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
266 :version "22.1"
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
267 :type 'boolean
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
268 :group 'info)
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
269
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
270 (defvar Info-isearch-initial-node nil)
108471
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
271 (defvar Info-isearch-initial-history nil)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
272 (defvar Info-isearch-initial-history-list nil)
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
273
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
274 (defcustom Info-mode-hook
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
275 ;; Try to obey obsolete Info-fontify settings.
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
276 (unless (and (boundp 'Info-fontify) (null Info-fontify))
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
277 '(turn-on-font-lock))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
278 "Hooks run when `Info-mode' is called."
45458
7d835214e61e (Info-fontify): Deleted.
Colin Walters <walters@gnu.org>
parents: 45182
diff changeset
279 :type 'hook
7d835214e61e (Info-fontify): Deleted.
Colin Walters <walters@gnu.org>
parents: 45182
diff changeset
280 :group 'info)
7d835214e61e (Info-fontify): Deleted.
Colin Walters <walters@gnu.org>
parents: 45182
diff changeset
281
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
282 (defcustom Info-selection-hook nil
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
283 "Hooks run when `Info-select-node' is called."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
284 :type 'hook
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
285 :group 'info)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
286
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
287 (defvar Info-edit-mode-hook nil
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
288 "Hooks run when `Info-edit-mode' is called.")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
289
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 (defvar Info-current-file nil
12646
cd83cf47be08 (Info-current-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12433
diff changeset
291 "Info file that Info is now looking at, or nil.
cd83cf47be08 (Info-current-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12433
diff changeset
292 This is the name that was specified in Info, not the actual file name.
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
293 It doesn't contain directory names or file name extensions added by Info.")
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (defvar Info-current-subfile nil
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
296 "Info subfile that is actually in the *info* buffer now.
77710
d6d820294ed5 (Info-current-subfile): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 77453
diff changeset
297 It is nil if current Info file is not split into subfiles.")
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 (defvar Info-current-node nil
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 "Name of node that Info is now looking at, or nil.")
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
302 (defvar Info-tag-table-marker nil
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 "Marker pointing at beginning of current Info file's tag table.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 Marker points nowhere if file has no tag table.")
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
306 (defvar Info-tag-table-buffer nil
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
307 "Buffer used for indirect tag tables.")
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
308
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
309 (defvar Info-current-file-completions nil
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
310 "Cached completion list for current Info file.")
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
311
66602
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
312 (defvar Info-file-supports-index-cookies nil
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
313 "Non-nil if current Info file supports index cookies.")
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
314
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
315 (defvar Info-file-supports-index-cookies-list nil
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
316 "List of Info files with information about index cookies support.
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
317 Each element of the list is a list (FILENAME SUPPORTS-INDEX-COOKIES)
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
318 where SUPPORTS-INDEX-COOKIES can be either t or nil.")
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
319
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
320 (defvar Info-index-alternatives nil
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
321 "List of possible matches for last `Info-index' command.")
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
322
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
323 (defvar Info-point-loc nil
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
324 "Point location within a selected node.
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
325 If string, the point is moved to the proper occurrence of the
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
326 name of the followed cross reference within a selected node.
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
327 If number, the point is moved to the corresponding line.")
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
328
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
329 (defvar Info-standalone nil
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
330 "Non-nil if Emacs was started solely as an Info browser.")
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
331
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
332 (defvar Info-virtual-files nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
333 "List of definitions of virtual Info files.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
334 Each element of the list has the format (FILENAME (OPERATION . HANDLER) ...)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
335 where FILENAME is a regexp that matches a class of virtual Info file names.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
336 It should be carefully chosen to not cause file name clashes with
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
337 existing file names. OPERATION is one of the following operation
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
338 symbols `find-file', `find-node', `toc-nodes' that define what HANDLER
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
339 function to call instead of calling the default corresponding function
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
340 to override it.")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
341
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
342 (defvar Info-virtual-nodes nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
343 "List of definitions of virtual Info nodes.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
344 Each element of the list has the format (NODENAME (OPERATION . HANDLER) ...)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
345 where NODENAME is a regexp that matches a class of virtual Info node names.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
346 It should be carefully chosen to not cause node name clashes with
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
347 existing node names. OPERATION is one of the following operation
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
348 symbols `find-node' that define what HANDLER
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
349 function to call instead of calling the default corresponding function
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
350 to override it.")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
351
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
352 (defvar Info-current-node-virtual nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
353 "Non-nil if the current Info node is virtual.")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
354
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
355 (defun Info-virtual-file-p (filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
356 "Check if Info file FILENAME is virtual."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
357 (Info-virtual-fun 'find-file filename nil))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
358
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
359 (defun Info-virtual-fun (op filename nodename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
360 "Find a function that handles operations on virtual manuals.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
361 OP is an operation symbol (`find-file', `find-node' or `toc-nodes'),
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
362 FILENAME is a virtual Info file name, NODENAME is a virtual Info
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
363 node name. Return a function found either in `Info-virtual-files'
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
364 or `Info-virtual-nodes'."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
365 (or (and (stringp filename) ; some legacy code can still use a symbol
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
366 (cdr-safe (assoc op (assoc-default filename
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
367 Info-virtual-files
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
368 'string-match))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
369 (and (stringp nodename) ; some legacy code can still use a symbol
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
370 (cdr-safe (assoc op (assoc-default nodename
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
371 Info-virtual-nodes
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
372 'string-match))))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
373
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
374 (defun Info-virtual-call (virtual-fun &rest args)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
375 "Call a function that handles operations on virtual manuals."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
376 (when (functionp virtual-fun)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
377 (or (apply virtual-fun args) t)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
378
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
379
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
380 (defvar Info-suffix-list
19937
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
381 ;; The MS-DOS list should work both when long file names are
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
382 ;; supported (Windows 9X), and when only 8+3 file names are available.
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
383 (if (eq system-type 'ms-dos)
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
384 '( (".gz" . "gunzip")
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
385 (".z" . "gunzip")
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
386 (".bz2" . ("bzip2" "-dc"))
19937
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
387 (".inz" . "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
388 (".igz" . "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
389 (".info.Z" . "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
390 (".info.gz" . "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
391 ("-info.Z" . "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
392 ("-info.gz" . "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
393 ("/index.gz". "gunzip")
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
394 ("/index.z" . "gunzip")
13004
0ed37da6f0f3 (Info-suffix-list): Add .inf to MSDOS list.
Richard M. Stallman <rms@gnu.org>
parents: 12947
diff changeset
395 (".inf" . nil)
19937
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
396 (".info" . nil)
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
397 ("-info" . nil)
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
398 ("/index" . nil)
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
399 ("" . nil))
17941
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
400 '( (".info.Z". "uncompress")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
401 (".info.Y". "unyabba")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
402 (".info.gz". "gunzip")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
403 (".info.z". "gunzip")
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
404 (".info.bz2" . ("bzip2" "-dc"))
17941
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
405 (".info". nil)
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
406 ("-info.Z". "uncompress")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
407 ("-info.Y". "unyabba")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
408 ("-info.gz". "gunzip")
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
409 ("-info.bz2" . ("bzip2" "-dc"))
17941
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
410 ("-info.z". "gunzip")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
411 ("-info". nil)
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
412 ("/index.Z". "uncompress")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
413 ("/index.Y". "unyabba")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
414 ("/index.gz". "gunzip")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
415 ("/index.z". "gunzip")
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
416 ("/index.bz2". ("bzip2" "-dc"))
17941
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
417 ("/index". nil)
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
418 (".Z". "uncompress")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
419 (".Y". "unyabba")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
420 (".gz". "gunzip")
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
421 (".z". "gunzip")
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
422 (".bz2" . ("bzip2" "-dc"))
17941
2465a6a42a60 (Info-suffix-list): Accept -info as suffix;
Richard M. Stallman <rms@gnu.org>
parents: 17859
diff changeset
423 ("". 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
424 "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
425 Each entry should be (SUFFIX . STRING); the file is given to
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
426 the command as standard input.
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
427
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
428 STRING may be a list of strings. In that case, the first element is
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
429 the command name, and the rest are arguments to that command.
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
430
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
431 If STRING is nil, no decoding is done.
6566
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
432 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
433 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
434
13562
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
435 ;; Concatenate SUFFIX onto FILENAME. SUFFIX should start with a dot.
36452
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
436 ;; First, on MS-DOS with no long file names support, delete some of
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
437 ;; the extension in FILENAME to make room.
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
438 (defun info-insert-file-contents-1 (filename suffix lfn)
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
439 (if lfn ; long file names are supported
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
440 (concat filename suffix)
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
441 (let* ((sans-exts (file-name-sans-extension filename))
13562
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
442 ;; How long is the extension in FILENAME (not counting the dot).
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
443 (ext-len (max 0 (- (length filename) (length sans-exts) 1)))
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
444 ext-left)
13004
0ed37da6f0f3 (Info-suffix-list): Add .inf to MSDOS list.
Richard M. Stallman <rms@gnu.org>
parents: 12947
diff changeset
445 ;; SUFFIX starts with a dot. If FILENAME already has one,
14577
39a431eafb34 (info-insert-file-contents-1) [MSDOS]: Remove leading
Karl Heuer <kwzh@gnu.org>
parents: 14560
diff changeset
446 ;; get rid of the one in SUFFIX (unless suffix is empty).
13562
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
447 (or (and (<= ext-len 0)
13004
0ed37da6f0f3 (Info-suffix-list): Add .inf to MSDOS list.
Richard M. Stallman <rms@gnu.org>
parents: 12947
diff changeset
448 (not (eq (aref filename (1- (length filename))) ?.)))
14577
39a431eafb34 (info-insert-file-contents-1) [MSDOS]: Remove leading
Karl Heuer <kwzh@gnu.org>
parents: 14560
diff changeset
449 (= (length suffix) 0)
13004
0ed37da6f0f3 (Info-suffix-list): Add .inf to MSDOS list.
Richard M. Stallman <rms@gnu.org>
parents: 12947
diff changeset
450 (setq suffix (substring suffix 1)))
13562
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
451 ;; How many chars of that extension should we keep?
80870ef96f18 (info-insert-file-contents-1): Various rewrites.
Richard M. Stallman <rms@gnu.org>
parents: 13287
diff changeset
452 (setq ext-left (min ext-len (max 0 (- 3 (length suffix)))))
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
453 ;; Get rid of the rest of the extension, and add SUFFIX.
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
454 (concat (substring filename 0 (- (length filename)
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
455 (- ext-len ext-left)))
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
456 suffix))))
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
457
22067
5665490a6f9e (Info-find-node): Use info-file-exists-p
Richard M. Stallman <rms@gnu.org>
parents: 21910
diff changeset
458 (defun info-file-exists-p (filename)
5665490a6f9e (Info-find-node): Use info-file-exists-p
Richard M. Stallman <rms@gnu.org>
parents: 21910
diff changeset
459 (and (file-exists-p filename)
5665490a6f9e (Info-find-node): Use info-file-exists-p
Richard M. Stallman <rms@gnu.org>
parents: 21910
diff changeset
460 (not (file-directory-p filename))))
5665490a6f9e (Info-find-node): Use info-file-exists-p
Richard M. Stallman <rms@gnu.org>
parents: 21910
diff changeset
461
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
462 (defun info-insert-file-contents (filename &optional visit)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
463 "Insert the contents of an Info file in the current 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
464 Do the right thing if the file has been compressed or zipped."
36452
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
465 (let* ((tail Info-suffix-list)
49467
c057b532bd92 (info-insert-file-contents) [!MSDOS]: Avoid byte-compiler warning.
Kim F. Storm <storm@cua.dk>
parents: 49465
diff changeset
466 (lfn (if (fboundp 'msdos-long-file-names)
c057b532bd92 (info-insert-file-contents) [!MSDOS]: Avoid byte-compiler warning.
Kim F. Storm <storm@cua.dk>
parents: 49465
diff changeset
467 (msdos-long-file-names)
c057b532bd92 (info-insert-file-contents) [!MSDOS]: Avoid byte-compiler warning.
Kim F. Storm <storm@cua.dk>
parents: 49465
diff changeset
468 t))
36452
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
469 (check-short (and (fboundp 'msdos-long-file-names)
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
470 lfn))
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
471 fullname decoder done)
38679
341786a2d705 (info-insert-file-contents): Use info-file-exists-p
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
472 (if (info-file-exists-p filename)
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
473 ;; FILENAME exists--see if that name contains a suffix.
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
474 ;; If so, set DECODE accordingly.
6566
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
475 (progn
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
476 (while (and tail
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
477 (not (string-match
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
478 (concat (regexp-quote (car (car tail))) "$")
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
479 filename)))
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
480 (setq tail (cdr tail)))
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
481 (setq fullname filename
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
482 decoder (cdr (car tail))))
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
483 ;; Try adding suffixes to FILENAME and see if we can find something.
36452
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
484 (while (and tail (not done))
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
485 (setq fullname (info-insert-file-contents-1 filename
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
486 (car (car tail)) lfn))
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
487 (if (info-file-exists-p fullname)
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
488 (setq done t
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
489 ;; If we found a file with a suffix, set DECODER
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
490 ;; according to the suffix.
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
491 decoder (cdr (car tail)))
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
492 ;; When the MS-DOS port runs on Windows, we need to check
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
493 ;; the short variant of a long file name as well.
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
494 (when check-short
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
495 (setq fullname (info-insert-file-contents-1 filename
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
496 (car (car tail)) nil))
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
497 (if (info-file-exists-p fullname)
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
498 (setq done t
b42d9cfd5c8f (info-insert-file-contents-1): Accept an additional
Eli Zaretskii <eliz@gnu.org>
parents: 36092
diff changeset
499 decoder (cdr (car tail))))))
6566
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
500 (setq tail (cdr tail)))
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
501 (or tail
12927
d3cda9e7c55f (Info-suffix-list): For MS-DOS, use gunzip as the only uncompressor,
Richard M. Stallman <rms@gnu.org>
parents: 12892
diff changeset
502 (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
503 ;; check for conflict with jka-compr
67520
d08070c157fd (Info-on-current-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67374
diff changeset
504 (if (and (jka-compr-installed-p)
9588
7d465ccfd45b (info-insert-file-contents): Always check for conflict with jka-compr.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
505 (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
506 (setq decoder nil))
6566
248eede22658 (Info-suffix-list): Put empty string last.
Karl Heuer <kwzh@gnu.org>
parents: 6537
diff changeset
507 (if decoder
19937
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
508 (progn
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
509 (insert-file-contents-literally fullname visit)
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
510 (let ((inhibit-read-only t)
19937
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
511 (coding-system-for-write 'no-conversion)
101042
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
512 (inhibit-null-byte-detection t) ; Index nodes include null bytes
19937
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
513 (default-directory (or (file-name-directory fullname)
f497e74a29aa (Info-suffix-list): Add suffixes for MS-DOS version
Richard M. Stallman <rms@gnu.org>
parents: 19821
diff changeset
514 default-directory)))
34503
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
515 (or (consp decoder)
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
516 (setq decoder (list decoder)))
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
517 (apply 'call-process-region (point-min) (point-max)
00d3d092888c (Info-suffix-list): Change format for a command that
Kenichi Handa <handa@m17n.org>
parents: 34468
diff changeset
518 (car decoder) t t nil (cdr decoder))))
101042
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
519 (let ((inhibit-null-byte-detection t)) ; Index nodes include null bytes
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
520 (insert-file-contents fullname visit)))))
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
521
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
522 (defun Info-file-supports-index-cookies (&optional file)
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
523 "Return non-nil value if FILE supports Info index cookies.
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
524 Info index cookies were first introduced in 4.7, and all later
98915
328847b430cc (Info-file-supports-index-cookies): Fix typo in docstring.
Juri Linkov <juri@jurta.org>
parents: 98850
diff changeset
525 makeinfo versions output them in index nodes, so we can rely
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
526 solely on the makeinfo version. This function caches the information
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
527 in `Info-file-supports-index-cookies-list'."
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
528 (or file (setq file Info-current-file))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
529 (or (assoc file Info-file-supports-index-cookies-list)
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
530 ;; Skip virtual Info files
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
531 (and (or (not (stringp file))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
532 (Info-virtual-file-p file))
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
533 (setq Info-file-supports-index-cookies-list
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
534 (cons (cons file nil) Info-file-supports-index-cookies-list)))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
535 (save-excursion
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
536 (let ((found nil))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
537 (goto-char (point-min))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
538 (condition-case ()
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
539 (if (and (re-search-forward
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
540 "makeinfo[ \n]version[ \n]\\([0-9]+.[0-9]+\\)"
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
541 (line-beginning-position 3) t)
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
542 (not (version< (match-string 1) "4.7")))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
543 (setq found t))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
544 (error nil))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
545 (setq Info-file-supports-index-cookies-list
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
546 (cons (cons file found) Info-file-supports-index-cookies-list)))))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
547 (cdr (assoc file Info-file-supports-index-cookies-list)))
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
548
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
549
50660
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
550 (defun Info-default-dirs ()
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
551 (let ((source (expand-file-name "info/" source-directory))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
552 (sibling (if installation-directory
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
553 (expand-file-name "info/" installation-directory)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
554 (if invocation-directory
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
555 (let ((infodir (expand-file-name
75271
1841eb88b38a (Info-default-dirs): Change default info dir to
Chong Yidong <cyd@stupidchicken.com>
parents: 75165
diff changeset
556 "../share/info/"
50660
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
557 invocation-directory)))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
558 (if (file-exists-p infodir)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
559 infodir
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
560 (setq infodir (expand-file-name
75271
1841eb88b38a (Info-default-dirs): Change default info dir to
Chong Yidong <cyd@stupidchicken.com>
parents: 75165
diff changeset
561 "../../../share/info/"
50660
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
562 invocation-directory))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
563 (and (file-exists-p infodir)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
564 infodir))))))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
565 alternative)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
566 (setq alternative
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
567 (if (and sibling (file-exists-p sibling))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
568 ;; Uninstalled, Emacs builddir != srcdir.
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
569 sibling
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
570 ;; Uninstalled, builddir == srcdir
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
571 source))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
572 (if (or (member alternative Info-default-directory-list)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
573 ;; On DOS/NT, we use movable executables always,
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
574 ;; and we must always find the Info dir at run time.
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
575 (if (memq system-type '(ms-dos windows-nt))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
576 nil
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
577 ;; Use invocation-directory for Info
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
578 ;; only if we used it for exec-directory also.
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
579 (not (string= exec-directory
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
580 (expand-file-name "lib-src/"
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
581 installation-directory))))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
582 (not (file-exists-p alternative)))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
583 Info-default-directory-list
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
584 ;; `alternative' contains the Info files that came with this
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
585 ;; version, so we should look there first. `Info-insert-dir'
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
586 ;; currently expects to find `alternative' first on the list.
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
587 (cons alternative
54435
bcc27a58f6ac (Info-default-dirs): Don't ignore last part of I-d-d-l.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53409
diff changeset
588 ;; Don't drop the last part, it might contain non-Emacs stuff.
bcc27a58f6ac (Info-default-dirs): Don't ignore last part of I-d-d-l.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53409
diff changeset
589 ;; (reverse (cdr (reverse
bcc27a58f6ac (Info-default-dirs): Don't ignore last part of I-d-d-l.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53409
diff changeset
590 Info-default-directory-list)))) ;; )))
50660
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
591
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
592 (defun info-initialize ()
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
593 "Initialize `Info-directory-list', if that hasn't been done yet."
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
594 (unless Info-directory-list
50660
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
595 (let ((path (getenv "INFOPATH")))
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
596 (setq Info-directory-list
30020
fd781aee7a03 (info-initialize): Use prune-directory-list to remove non-existant
Miles Bader <miles@gnu.org>
parents: 29684
diff changeset
597 (prune-directory-list
fd781aee7a03 (info-initialize): Use prune-directory-list to remove non-existant
Miles Bader <miles@gnu.org>
parents: 29684
diff changeset
598 (if path
50660
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
599 (if (string-match ":\\'" path)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
600 (append (split-string (substring path 0 -1)
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
601 (regexp-quote path-separator))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
602 (Info-default-dirs))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
603 (split-string path (regexp-quote path-separator)))
4d6ac18fff69 (Info-default-dirs): New fun extracted from Info-initialize.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50454
diff changeset
604 (Info-default-dirs)))))))
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
605
22471
39efe6bebb46 (info-other-window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 22331
diff changeset
606 ;;;###autoload
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
607 (defun info-other-window (&optional file-or-node)
22471
39efe6bebb46 (info-other-window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 22331
diff changeset
608 "Like `info' but show the Info buffer in another window."
39efe6bebb46 (info-other-window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 22331
diff changeset
609 (interactive (if current-prefix-arg
39efe6bebb46 (info-other-window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 22331
diff changeset
610 (list (read-file-name "Info file name: " nil nil t))))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
611 (let (same-window-buffer-names same-window-regexps)
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
612 (info file-or-node)))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
613
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105674
diff changeset
614 ;;;###autoload (add-hook 'same-window-regexps (purecopy "\\*info\\*\\(\\|<[0-9]+>\\)"))
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105674
diff changeset
615
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105674
diff changeset
616 ;;;###autoload (put 'info 'info-file (purecopy "emacs"))
10957
6d3568e33019 (Info-menu): Bind beg with let.
Richard M. Stallman <rms@gnu.org>
parents: 10918
diff changeset
617 ;;;###autoload
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
618 (defun info (&optional file-or-node buffer)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
619 "Enter Info, the documentation browser.
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
620 Optional argument FILE-OR-NODE specifies the file to examine;
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621 the default is the top-level directory of Info.
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
622 Called from a program, FILE-OR-NODE may specify an Info node of the form
25311
745ff7cc2786 (info): Doc fix.
Dave Love <fx@gnu.org>
parents: 25172
diff changeset
623 `(FILENAME)NODENAME'.
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
624 Optional argument BUFFER specifies the Info buffer name;
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
625 the default buffer name is *info*. If BUFFER exists,
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
626 just switch to BUFFER. Otherwise, create a new buffer
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
627 with the top-level Info directory.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
629 In interactive use, a non-numeric prefix argument directs
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
630 this command to read a file name from the minibuffer.
56044
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
631 A numeric prefix argument selects an Info buffer with the prefix number
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
632 appended to the Info buffer name.
14529
6c886dde14b8 (info): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14424
diff changeset
633
6c886dde14b8 (info): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14424
diff changeset
634 The search path for Info files is in the variable `Info-directory-list'.
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
635 The top-level Info directory is made by combining all the files named `dir'
97132
1bee9147e1b8 (info, Info-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 97043
diff changeset
636 in all the directories in that path.
1bee9147e1b8 (info, Info-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 97043
diff changeset
637
1bee9147e1b8 (info, Info-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 97043
diff changeset
638 See a list of available Info commands in `Info-mode'."
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
639 (interactive (list
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
640 (if (and current-prefix-arg (not (numberp current-prefix-arg)))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
641 (read-file-name "Info file name: " nil nil t))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
642 (if (numberp current-prefix-arg)
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
643 (format "*info*<%s>" current-prefix-arg))))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
644 (pop-to-buffer (or buffer "*info*"))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
645 (if (and buffer (not (eq major-mode 'Info-mode)))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
646 (Info-mode))
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
647 (if file-or-node
54878
327d069f80bb (info): Always jump to *info*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54865
diff changeset
648 ;; If argument already contains parentheses, don't add another set
327d069f80bb (info): Always jump to *info*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54865
diff changeset
649 ;; since the argument will then be parsed improperly. This also
327d069f80bb (info): Always jump to *info*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54865
diff changeset
650 ;; has the added benefit of allowing node names to be included
327d069f80bb (info): Always jump to *info*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54865
diff changeset
651 ;; following the parenthesized filename.
62822
7f11f471aa34 (Info-goto-node): Revert autoload addition (2004-06-12).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62733
diff changeset
652 (Info-goto-node
67778
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
653 (if (and (stringp file-or-node) (string-match "(.*)" file-or-node))
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
654 file-or-node
0c0bb618627a (info-other-window, info): Rename function argument
Juri Linkov <juri@jurta.org>
parents: 67623
diff changeset
655 (concat "(" file-or-node ")")))
68045
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
656 (if (and (zerop (buffer-size))
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
657 (null Info-history))
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
658 ;; If we just created the Info buffer, go to the directory.
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
659 (Info-directory))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
661 ;;;###autoload
46326
6953d46b05f5 (info-emacs-manual): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46252
diff changeset
662 (defun info-emacs-manual ()
47794
c460856d1bfd (Info-next-menu-item, Info-last-menu-item)
John Paul Wallington <jpw@pobox.com>
parents: 47376
diff changeset
663 "Display the Emacs manual in Info mode."
46326
6953d46b05f5 (info-emacs-manual): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46252
diff changeset
664 (interactive)
6953d46b05f5 (info-emacs-manual): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46252
diff changeset
665 (info "emacs"))
6953d46b05f5 (info-emacs-manual): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46252
diff changeset
666
6953d46b05f5 (info-emacs-manual): New function.
Richard M. Stallman <rms@gnu.org>
parents: 46252
diff changeset
667 ;;;###autoload
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
668 (defun info-standalone ()
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
669 "Run Emacs as a standalone Info reader.
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
670 Usage: emacs -f info-standalone [filename]
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
671 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
672 (setq Info-standalone t)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
673 (if (and command-line-args-left
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
674 (not (string-match "^-" (car command-line-args-left))))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
675 (condition-case err
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
676 (progn
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
677 (info (car command-line-args-left))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
678 (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
679 (error (send-string-to-terminal
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
680 (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
681 (nth 1 err) err)))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
682 (save-buffers-kill-emacs)))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
683 (info)))
25145
784d7bc2a991 (info-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 24963
diff changeset
684
31942
55dd93c0d728 (Info-extract-pointer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31798
diff changeset
685 ;; See if the accessible portion of the buffer begins with a node
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
686 ;; delimiter, and the node header line which follows matches REGEXP.
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
687 ;; Typically, this test will be followed by a loop that examines the
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
688 ;; rest of the buffer with (search-forward "\n\^_"), and it's a pity
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
689 ;; to have the overhead of this special test inside the loop.
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
690
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
691 ;; This function changes match-data, but supposedly the caller might
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
692 ;; want to use the results of re-search-backward.
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
693
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
694 ;; The return value is the value of point at the beginning of matching
31942
55dd93c0d728 (Info-extract-pointer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31798
diff changeset
695 ;; REGEXP, if the function succeeds, nil otherwise.
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
696 (defun Info-node-at-bob-matching (regexp)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
697 (and (bobp) ; are we at beginning of buffer?
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
698 (looking-at "\^_") ; does it begin with node delimiter?
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
699 (let (beg)
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
700 (forward-line 1)
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
701 (setq beg (point))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
702 (forward-line 1) ; does the line after delimiter match REGEXP?
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
703 (re-search-backward regexp beg t))))
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
704
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
705 (defun Info-find-file (filename &optional noerror)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
706 "Return expanded FILENAME, or t, if FILENAME is \"dir\".
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
707 Optional second argument NOERROR, if t, means if file is not found
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
708 just return nil (no error)."
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 ;; Convert filename to lower case if not found as specified.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 ;; Expand it.
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
711 (cond
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
712 ((Info-virtual-call
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
713 (Info-virtual-fun 'find-file filename nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
714 filename noerror))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
715 ((stringp filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
716 (let (temp temp-downcase found)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
717 (setq filename (substitute-in-file-name filename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
718 (let ((dirs (if (string-match "^\\./" filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
719 ;; If specified name starts with `./'
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
720 ;; then just try current directory.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
721 '("./")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
722 (if (file-name-absolute-p filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
723 ;; No point in searching for an
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
724 ;; absolute file name
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
725 '(nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
726 (if Info-additional-directory-list
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
727 (append Info-directory-list
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
728 Info-additional-directory-list)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
729 Info-directory-list)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
730 ;; Search the directory list for file FILENAME.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
731 (while (and dirs (not found))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
732 (setq temp (expand-file-name filename (car dirs)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
733 (setq temp-downcase
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
734 (expand-file-name (downcase filename) (car dirs)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
735 ;; Try several variants of specified name.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
736 (let ((suffix-list Info-suffix-list)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
737 (lfn (if (fboundp 'msdos-long-file-names)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
738 (msdos-long-file-names)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
739 t)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
740 (while (and suffix-list (not found))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
741 (cond ((info-file-exists-p
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
742 (info-insert-file-contents-1
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
743 temp (car (car suffix-list)) lfn))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
744 (setq found temp))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
745 ((info-file-exists-p
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
746 (info-insert-file-contents-1
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
747 temp-downcase (car (car suffix-list)) lfn))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
748 (setq found temp-downcase))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
749 ((and (fboundp 'msdos-long-file-names)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
750 lfn
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
751 (info-file-exists-p
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
752 (info-insert-file-contents-1
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
753 temp (car (car suffix-list)) nil)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
754 (setq found temp)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
755 (setq suffix-list (cdr suffix-list))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
756 (setq dirs (cdr dirs))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
757 (if found
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
758 (setq filename found)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
759 (if noerror
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
760 (setq filename nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
761 (error "Info file %s does not exist" filename)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
762 filename))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
763
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
764 (defun Info-find-node (filename nodename &optional no-going-back)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
765 "Go to an Info node specified as separate FILENAME and NODENAME.
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
766 NO-GOING-BACK is non-nil if recovering from an error in this function;
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
767 it says do not attempt further (recursive) error recovery."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
768 (info-initialize)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
769 (setq filename (Info-find-file filename))
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
770 ;; Go into Info buffer.
60626
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
771 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
68045
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
772 ;; Record the node we are leaving, if we were in one.
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
773 (and (not no-going-back)
84897e4dbe0c (Info-find-node): Don't record previous node if have none.
Richard M. Stallman <rms@gnu.org>
parents: 67778
diff changeset
774 Info-current-file
95909
fcc6d97140b3 (Info-insert-breadcrumbs): Be careful to preserve history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95907
diff changeset
775 (push (list Info-current-file Info-current-node (point))
fcc6d97140b3 (Info-insert-breadcrumbs): Be careful to preserve history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95907
diff changeset
776 Info-history))
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
777 (Info-find-node-2 filename nodename no-going-back))
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
778
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
779 ;;;###autoload
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
780 (defun Info-on-current-buffer (&optional nodename)
67520
d08070c157fd (Info-on-current-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67374
diff changeset
781 "Use Info mode to browse the current Info buffer.
d08070c157fd (Info-on-current-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67374
diff changeset
782 With a prefix arg, this queries for the node name to visit first;
d08070c157fd (Info-on-current-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67374
diff changeset
783 otherwise, that defaults to `Top'."
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
784 (interactive
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
785 (list (if current-prefix-arg
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
786 (completing-read "Node name: " (Info-build-node-completions)
39459
a7adbd38c82a (Info-on-current-buffer): Default arg to "Top".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39382
diff changeset
787 nil t "Top"))))
a7adbd38c82a (Info-on-current-buffer): Default arg to "Top".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39382
diff changeset
788 (unless nodename (setq nodename "Top"))
29410
935f96194020 (Info-on-current-buffer): Initialize info.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29164
diff changeset
789 (info-initialize)
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
790 (Info-mode)
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
791 (set (make-local-variable 'Info-current-file)
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
792 (or buffer-file-name
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
793 ;; If called on a non-file buffer, make a fake file name.
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
794 (concat default-directory (buffer-name))))
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
795 (Info-find-node-2 nil nodename))
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
796
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
797 ;; It's perhaps a bit nasty to kill the *info* buffer to force a re-read,
85921
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
798 ;; but at least it keeps this routine (which is for makeinfo-buffer and
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
799 ;; Info-revert-buffer-function) out of the way of normal operations.
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
800 ;;
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
801 (defun Info-revert-find-node (filename nodename)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
802 "Go to an Info node FILENAME and NODENAME, re-reading disk contents.
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
803 When *info* is already displaying FILENAME and NODENAME, the window position
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
804 is preserved, if possible."
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
805 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
806 (let ((old-filename Info-current-file)
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
807 (old-nodename Info-current-node)
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
808 (old-buffer-name (buffer-name))
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
809 (pcolumn (current-column))
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
810 (pline (count-lines (point-min) (line-beginning-position)))
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
811 (wline (count-lines (point-min) (window-start)))
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
812 (old-history-forward Info-history-forward)
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
813 (old-history Info-history)
68227
51ca63f92c59 (Info-revert-find-node): Check for Info-current-file
Juri Linkov <juri@jurta.org>
parents: 68216
diff changeset
814 (new-history (and Info-current-file
51ca63f92c59 (Info-revert-find-node): Check for Info-current-file
Juri Linkov <juri@jurta.org>
parents: 68216
diff changeset
815 (list Info-current-file Info-current-node (point)))))
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
816 (kill-buffer (current-buffer))
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
817 (pop-to-buffer (or old-buffer-name "*info*"))
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
818 (Info-mode)
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
819 (Info-find-node filename nodename)
109021
35894ae393bb Fix revert-buffer functionality of Help mode and Info.
Juri Linkov <juri@jurta.org>
parents: 108471
diff changeset
820 (setq Info-history-forward old-history-forward)
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
821 (setq Info-history old-history)
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
822 (if (and (equal old-filename Info-current-file)
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
823 (equal old-nodename Info-current-node))
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
824 (progn
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
825 ;; note goto-line is no good, we want to measure from point-min
58040
af694410e72f (Info-revert-find-node): Don't use beginning-of-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 57958
diff changeset
826 (goto-char (point-min))
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
827 (forward-line wline)
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
828 (set-window-start (selected-window) (point))
58040
af694410e72f (Info-revert-find-node): Don't use beginning-of-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 57958
diff changeset
829 (goto-char (point-min))
48933
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
830 (forward-line pline)
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
831 (move-to-column pcolumn))
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
832 ;; only add to the history when coming from a different file+node
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
833 (if new-history
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
834 (setq Info-history (cons new-history Info-history))))))
06dd01f3b917 (Info-revert-find-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 48887
diff changeset
835
85921
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
836 (defun Info-revert-buffer-function (ignore-auto noconfirm)
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
837 (when (or noconfirm (y-or-n-p "Revert info buffer? "))
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
838 (Info-revert-find-node Info-current-file Info-current-node)
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
839 (message "Reverted %s" Info-current-file)))
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
840
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
841 (defun Info-find-in-tag-table-1 (marker regexp case-fold)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
842 "Find a node in a tag table.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
843 MARKER specifies the buffer and position to start searching at.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
844 REGEXP is a regular expression matching nodes or references. Its first
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
845 group should match `Node:' or `Ref:'.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
846 CASE-FOLD t means search for a case-insensitive match.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
847 If a match was found, value is a list (FOUND-ANCHOR POS MODE), where
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
848 FOUND-ANCHOR is non-nil if a `Ref:' was matched, POS is the position
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
849 where the match was found, and MODE is `major-mode' of the buffer in
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
850 which the match was found."
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
851 (let ((case-fold-search case-fold))
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
852 (with-current-buffer (marker-buffer marker)
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
853 (goto-char marker)
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
854
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
855 ;; Search tag table
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
856 (beginning-of-line)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
857 (when (re-search-forward regexp nil t)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
858 (list (string-equal "Ref:" (match-string 1))
45014
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
859 (+ (point-min) (read (current-buffer)))
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
860 major-mode)))))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
861
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
862 (defun Info-find-in-tag-table (marker regexp)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
863 "Find a node in a tag table.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
864 MARKER specifies the buffer and position to start searching at.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
865 REGEXP is a regular expression matching nodes or references. Its first
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
866 group should match `Node:' or `Ref:'.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
867 If a match was found, value is a list (FOUND-ANCHOR POS MODE), where
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
868 FOUND-ANCHOR is non-nil if a `Ref:' was matched, POS is the position
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
869 where the match was found, and MODE is `major-mode' of the buffer in
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
870 which the match was found.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
871 This function tries to find a case-sensitive match first, then a
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
872 case-insensitive match is tried."
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
873 (let ((result (Info-find-in-tag-table-1 marker regexp nil)))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
874 (when (null (car result))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
875 (setq result (Info-find-in-tag-table-1 marker regexp t)))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
876 result))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
877
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
878 (defun Info-find-node-in-buffer-1 (regexp case-fold)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
879 "Find a node or anchor in the current buffer.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
880 REGEXP is a regular expression matching nodes or references. Its first
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
881 group should match `Node:' or `Ref:'.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
882 CASE-FOLD t means search for a case-insensitive match.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
883 Value is the position at which a match was found, or nil if not found."
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
884 (let ((case-fold-search case-fold)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
885 found)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
886 (save-excursion
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
887 (when (Info-node-at-bob-matching regexp)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
888 (setq found (point)))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
889 (while (and (not found)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
890 (search-forward "\n\^_" nil t))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
891 (forward-line 1)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
892 (let ((beg (point)))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
893 (forward-line 1)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
894 (when (re-search-backward regexp beg t)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
895 (beginning-of-line)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
896 (setq found (point)))))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
897 found)))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
898
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
899 (defun Info-find-node-in-buffer (regexp)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
900 "Find a node or anchor in the current buffer.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
901 REGEXP is a regular expression matching nodes or references. Its first
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
902 group should match `Node:' or `Ref:'.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
903 Value is the position at which a match was found, or nil if not found.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
904 This function looks for a case-sensitive match first. If none is found,
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
905 a case-insensitive match is tried."
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
906 (or (Info-find-node-in-buffer-1 regexp nil)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
907 (Info-find-node-in-buffer-1 regexp t)))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
908
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
909 (defun Info-find-node-2 (filename nodename &optional no-going-back)
21704
e2283c4df334 (Info-fontify-node): For menu items, use info-xref font.
Richard M. Stallman <rms@gnu.org>
parents: 21641
diff changeset
910 (buffer-disable-undo (current-buffer))
e2283c4df334 (Info-fontify-node): For menu items, use info-xref font.
Richard M. Stallman <rms@gnu.org>
parents: 21641
diff changeset
911 (or (eq major-mode 'Info-mode)
e2283c4df334 (Info-fontify-node): For menu items, use info-xref font.
Richard M. Stallman <rms@gnu.org>
parents: 21641
diff changeset
912 (Info-mode))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 (widen)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 (setq Info-current-node nil)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 (unwind-protect
24632
a6ad37f4f6cb (Info-find-node): Position properly after finding anchor.
Karl Heuer <kwzh@gnu.org>
parents: 24580
diff changeset
916 (let ((case-fold-search t)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
917 (virtual-fun (Info-virtual-fun 'find-node
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
918 (or filename Info-current-file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
919 nodename))
24632
a6ad37f4f6cb (Info-find-node): Position properly after finding anchor.
Karl Heuer <kwzh@gnu.org>
parents: 24580
diff changeset
920 anchorpos)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
921 (cond
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
922 ((functionp virtual-fun)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
923 (let ((filename (or filename Info-current-file)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
924 (setq buffer-read-only nil)
106432
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
925 (setq Info-current-file filename
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
926 Info-current-subfile nil
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
927 Info-current-file-completions nil
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
928 buffer-file-name nil)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
929 (erase-buffer)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
930 (Info-virtual-call virtual-fun filename nodename no-going-back)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
931 (set-marker Info-tag-table-marker nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
932 (setq buffer-read-only t)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
933 (set-buffer-modified-p nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
934 (set (make-local-variable 'Info-current-node-virtual) t)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
935 ((not (and
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
936 ;; Reread a file when moving from a virtual node.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
937 (not Info-current-node-virtual)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
938 (or (null filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
939 (equal Info-current-file filename))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
940 ;; Switch files if necessary
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
941 (let ((inhibit-read-only t))
106432
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
942 (when Info-current-node-virtual
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
943 ;; When moving from a virtual node.
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
944 (set (make-local-variable 'Info-current-node-virtual) nil)
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
945 (if (null filename)
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
946 (setq filename Info-current-file)))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
947 (setq Info-current-file nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
948 Info-current-subfile nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
949 Info-current-file-completions nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
950 buffer-file-name nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
951 (erase-buffer)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
952 (info-insert-file-contents filename nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
953 (setq default-directory (file-name-directory filename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
954 (set-buffer-modified-p nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
955 (set (make-local-variable 'Info-file-supports-index-cookies)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
956 (Info-file-supports-index-cookies filename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
957
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
958 ;; See whether file has a tag table. Record the location if yes.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
959 (goto-char (point-max))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
960 (forward-line -8)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
961 ;; Use string-equal, not equal, to ignore text props.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
962 (if (not (or (string-equal nodename "*")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
963 (not
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
964 (search-forward "\^_\nEnd tag table\n" nil t))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
965 (let (pos)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
966 ;; We have a tag table. Find its beginning.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
967 ;; Is this an indirect file?
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
968 (search-backward "\nTag table:\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
969 (setq pos (point))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
970 (if (save-excursion
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
971 (forward-line 2)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
972 (looking-at "(Indirect)\n"))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
973 ;; It is indirect. Copy it to another buffer
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
974 ;; and record that the tag table is in that buffer.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
975 (let ((buf (current-buffer))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
976 (tagbuf
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
977 (or Info-tag-table-buffer
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
978 (generate-new-buffer " *info tag table*"))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
979 (setq Info-tag-table-buffer tagbuf)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
980 (with-current-buffer tagbuf
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
981 (buffer-disable-undo (current-buffer))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
982 (setq case-fold-search t)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
983 (erase-buffer)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
984 (insert-buffer-substring buf))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
985 (set-marker Info-tag-table-marker
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
986 (match-end 0) tagbuf))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
987 (set-marker Info-tag-table-marker pos)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
988 (set-marker Info-tag-table-marker nil))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
989 (setq Info-current-file filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
990 )))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
991
22692
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
992 ;; Use string-equal, not equal, to ignore text props.
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
993 (if (string-equal nodename "*")
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
994 (progn (setq Info-current-node nodename)
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
995 (Info-set-mode-line))
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
996 ;; Possibilities:
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
997 ;;
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
998 ;; 1. Anchor found in tag table
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
999 ;; 2. Anchor *not* in tag table
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1000 ;;
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1001 ;; 3. Node found in tag table
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1002 ;; 4. Node *not* found in tag table, but found in file
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1003 ;; 5. Node *not* in tag table, and *not* in file
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1004 ;;
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1005 ;; *Or* the same, but in an indirect subfile.
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1006
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1007 ;; Search file for a suitable node.
24632
a6ad37f4f6cb (Info-find-node): Position properly after finding anchor.
Karl Heuer <kwzh@gnu.org>
parents: 24580
diff changeset
1008 (let ((guesspos (point-min))
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1009 (regexp (concat "\\(Node:\\|Ref:\\) *\\("
38262
03f0515fe575 (Info-clone-buffer-hook): Really unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38225
diff changeset
1010 (if (stringp nodename)
30686
23c301a64c8f (Info-insert-dir): Use Info-additional-directory-list if
Gerd Moellmann <gerd@gnu.org>
parents: 30423
diff changeset
1011 (regexp-quote nodename)
23c301a64c8f (Info-insert-dir): Use Info-additional-directory-list if
Gerd Moellmann <gerd@gnu.org>
parents: 30423
diff changeset
1012 "")
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
1013 "\\) *[,\t\n\177]")))
22692
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1014
29164
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1015 (catch 'foo
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
1016
29164
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1017 ;; First, search a tag table, if any
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1018 (when (marker-position Info-tag-table-marker)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1019 (let* ((m Info-tag-table-marker)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1020 (found (Info-find-in-tag-table m regexp)))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
1021
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1022 (when found
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1023 ;; FOUND is (ANCHOR POS MODE).
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1024 (setq guesspos (nth 1 found))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
1025
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1026 ;; If this is an indirect file, determine which
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1027 ;; file really holds this node and read it in.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1028 (unless (eq (nth 2 found) 'Info-mode)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1029 ;; Note that the current buffer must be the
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1030 ;; *info* buffer on entry to
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1031 ;; Info-read-subfile. Thus the hackery above.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1032 (setq guesspos (Info-read-subfile guesspos)))
29164
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1033
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1034 ;; Handle anchor
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1035 (when (nth 0 found)
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1036 (goto-char (setq anchorpos guesspos))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1037 (throw 'foo t)))))
29164
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1038
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1039 ;; Else we may have a node, which we search for:
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1040 (goto-char (max (point-min)
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1041 (- (byte-to-position guesspos) 1000)))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
1042
29684
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1043 ;; Now search from our advised position (or from beg of
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1044 ;; buffer) to find the actual node. First, check
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1045 ;; whether the node is right where we are, in case the
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1046 ;; buffer begins with a node.
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1047 (let ((pos (Info-find-node-in-buffer regexp)))
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1048 (when pos
4380fdbfe977 (Info-find-in-tag-table-1, Info-find-in-tag-table)
Gerd Moellmann <gerd@gnu.org>
parents: 29675
diff changeset
1049 (goto-char pos)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1050 (throw 'foo t)))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1051
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1052 (when (string-match "\\([^.]+\\)\\." nodename)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1053 (let (Info-point-loc)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1054 (Info-find-node-2
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1055 filename (match-string 1 nodename) no-going-back))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1056 (widen)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1057 (throw 'foo t))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1058
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1059 ;; No such anchor in tag table or node in tag table or file
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1060 (error "No such node or anchor: %s" nodename))
29164
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1061
71275ee34b42 (Info-find-node-2): Restructure [following "Vadim S. Solomin"
Dave Love <fx@gnu.org>
parents: 29085
diff changeset
1062 (Info-select-node)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1063 (goto-char (point-min))
98847
5b8c868971fc (Info-find-node-2): Put initial point below the header line and breadcrumbs line.
Juri Linkov <juri@jurta.org>
parents: 98627
diff changeset
1064 (forward-line 1) ; skip header line
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
1065 ;; (when (> Info-breadcrumbs-depth 0) ; skip breadcrumbs line
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
1066 ;; (forward-line 1))
98847
5b8c868971fc (Info-find-node-2): Put initial point below the header line and breadcrumbs line.
Juri Linkov <juri@jurta.org>
parents: 98627
diff changeset
1067
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1068 (cond (anchorpos
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1069 (let ((new-history (list Info-current-file
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1070 (substring-no-properties nodename))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1071 ;; Add anchors to the history too
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1072 (setq Info-history-list
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1073 (cons new-history
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1074 (delete new-history Info-history-list))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1075 (goto-char anchorpos))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1076 ((numberp Info-point-loc)
100669
1cc573a37101 (Info-find-node-2): Use negative offset 2 instead of 1
Juri Linkov <juri@jurta.org>
parents: 100509
diff changeset
1077 (forward-line (- Info-point-loc 2))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1078 (setq Info-point-loc nil))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1079 ((stringp Info-point-loc)
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1080 (Info-find-index-name Info-point-loc)
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1081 (setq Info-point-loc nil))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 ;; If we did not finish finding the specified node,
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 ;; 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
1084 (or Info-current-node no-going-back (null Info-history)
22692
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1085 (let ((hist (car Info-history)))
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1086 (setq Info-history (cdr Info-history))
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1087 (Info-find-node (nth 0 hist) (nth 1 hist) t)
578a6d997580 (Info-find-node): Handle cross references to an @anchor.
Richard M. Stallman <rms@gnu.org>
parents: 22643
diff changeset
1088 (goto-char (nth 2 hist))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089
1979
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1090 ;; 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
1091 ;; 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
1092 (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
1093
1979
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1094 ;; 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
1095 ;; 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
1096 (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
1097
3836
04f1cff889f4 (Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents: 3565
diff changeset
1098 ;; 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
1099 ;; constructed Info-dir-contents.
04f1cff889f4 (Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents: 3565
diff changeset
1100 (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
1101
23416
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1102 (defvar Info-dir-file-name nil)
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1103
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1104 ;; 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
1105 ;; 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
1106 ;; 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
1107 ;; from.
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1108 (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
1109 (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
1110 ;; 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
1111 ;; since we used it.
04f1cff889f4 (Info-insert-dir): Record file attributes of files used.
Richard M. Stallman <rms@gnu.org>
parents: 3565
diff changeset
1112 (eval (cons 'and
29583
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1113 (mapcar (lambda (elt)
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1114 (let ((curr (file-attributes
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1115 ;; Handle symlinks
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1116 (file-truename (car elt)))))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
1117
29583
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1118 ;; Don't compare the access time.
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1119 (if curr (setcar (nthcdr 4 curr) 0))
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1120 (setcar (nthcdr 4 (cdr elt)) 0)
f1b4be7fce6d (Info-insert-dir): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29446
diff changeset
1121 (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
1122 Info-dir-file-attributes))))
23416
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1123 (progn
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1124 (insert Info-dir-contents)
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1125 (goto-char (point-min)))
30686
23c301a64c8f (Info-insert-dir): Use Info-additional-directory-list if
Gerd Moellmann <gerd@gnu.org>
parents: 30423
diff changeset
1126 (let ((dirs (if Info-additional-directory-list
46139
0632bf21a2c9 Indentation change.
Richard M. Stallman <rms@gnu.org>
parents: 46104
diff changeset
1127 (append Info-directory-list
0632bf21a2c9 Indentation change.
Richard M. Stallman <rms@gnu.org>
parents: 46104
diff changeset
1128 Info-additional-directory-list)
0632bf21a2c9 Indentation change.
Richard M. Stallman <rms@gnu.org>
parents: 46104
diff changeset
1129 Info-directory-list))
48690
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1130 (dir-file-attrs nil)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1131 ;; Bind this in case the user sets it to nil.
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1132 (case-fold-search t)
23416
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1133 ;; This is set non-nil if we find a problem in some input files.
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1134 problems
3212
cd8f8468a190 (Info-insert-dir): Ignore duplicate directories.
Richard M. Stallman <rms@gnu.org>
parents: 3127
diff changeset
1135 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
1136
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1137 ;; 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
1138 (while dirs
5271
c415cc48a084 (Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents: 5146
diff changeset
1139 (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
1140 (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
1141 (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
1142 ;; 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
1143 ;; 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
1144 (let* (file
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1145 (attrs
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1146 (or
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1147 (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
1148 (file-attributes file))
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1149 (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
1150 (file-attributes file))
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1151 (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
1152 (file-attributes file))
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1153 (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
1154 (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
1155 (setq dirs-done
c415cc48a084 (Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents: 5146
diff changeset
1156 (cons truename
c415cc48a084 (Info-insert-dir): Compute truename just once for each dir.
Richard M. Stallman <rms@gnu.org>
parents: 5146
diff changeset
1157 (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
1158 dirs-done)))
7911
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1159 (if attrs
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1160 (with-current-buffer (generate-new-buffer " info dir")
7911
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1161 (or buffers
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1162 (message "Composing main Info directory..."))
22863
58584d6a8237 (Info-find-node): Position at the beginning of the node
Richard M. Stallman <rms@gnu.org>
parents: 22761
diff changeset
1163 (condition-case nil
101042
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
1164 ;; Index nodes include null bytes. DIR
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
1165 ;; files should not have indices, but who
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
1166 ;; knows...
edc1b75fdb15 Fix Bug #876:
Eli Zaretskii <eliz@gnu.org>
parents: 100908
diff changeset
1167 (let ((inhibit-null-byte-detection t))
22863
58584d6a8237 (Info-find-node): Position at the beginning of the node
Richard M. Stallman <rms@gnu.org>
parents: 22761
diff changeset
1168 (insert-file-contents file)
48690
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1169 (set (make-local-variable 'Info-dir-file-name)
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1170 file)
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1171 (push (current-buffer) buffers)
48690
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1172 (push (cons file attrs) dir-file-attrs))
22863
58584d6a8237 (Info-find-node): Position at the beginning of the node
Richard M. Stallman <rms@gnu.org>
parents: 22761
diff changeset
1173 (error (kill-buffer (current-buffer))))))))
48690
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1174 (unless (cdr dirs)
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1175 (set (make-local-variable 'Info-dir-contents-directory)
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1176 (file-name-as-directory (car dirs))))
7911
185c1f12db67 (Info-insert-dir): Ignore access times when comparing
Richard M. Stallman <rms@gnu.org>
parents: 7859
diff changeset
1177 (setq dirs (cdr dirs))))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
1178
6716
9ce2d1a2c155 (Info-find-node): Don't try to backstep if no history.
Karl Heuer <kwzh@gnu.org>
parents: 6624
diff changeset
1179 (or buffers
14664
f77b58df548c (Info-index): If fail, go back to original node.
Richard M. Stallman <rms@gnu.org>
parents: 14577
diff changeset
1180 (error "Can't find the Info directory node"))
48690
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1181
1979
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1182 ;; 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
1183 ;; others. Yes, that is really what this is supposed to do.
24513
2db3b19a94bb (Info-directory-list): Revert change to re-writing
Dave Love <fx@gnu.org>
parents: 24196
diff changeset
1184 ;; The definition of `Info-directory-list' puts it first on that
2db3b19a94bb (Info-directory-list): Revert change to re-writing
Dave Love <fx@gnu.org>
parents: 24196
diff changeset
1185 ;; list and so last in `buffers' at this point.
2db3b19a94bb (Info-directory-list): Revert change to re-writing
Dave Love <fx@gnu.org>
parents: 24196
diff changeset
1186 (setq buffer (car (last buffers))
2db3b19a94bb (Info-directory-list): Revert change to re-writing
Dave Love <fx@gnu.org>
parents: 24196
diff changeset
1187 others (delq buffer buffers))
1979
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1188
15304
d78c3fd6a0ab (Info-insert-dir): Fix default directory.
Karl Heuer <kwzh@gnu.org>
parents: 15177
diff changeset
1189 ;; Insert the entire original dir file as a start; note that we've
d78c3fd6a0ab (Info-insert-dir): Fix default directory.
Karl Heuer <kwzh@gnu.org>
parents: 15177
diff changeset
1190 ;; already saved its default directory to use as the default
d78c3fd6a0ab (Info-insert-dir): Fix default directory.
Karl Heuer <kwzh@gnu.org>
parents: 15177
diff changeset
1191 ;; directory for the whole concatenation.
65069
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
1192 (save-excursion (insert-buffer-substring buffer))
1979
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1193
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1194 ;; Look at each of the other buffers one by one.
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1195 (dolist (other others)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1196 (let (this-buffer-nodes)
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1197 ;; In each, find all the menus.
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1198 (with-current-buffer other
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1199 (goto-char (point-min))
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1200 ;; 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
1201 (while (re-search-forward "^\\* Menu:" nil t)
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1202 (while (and (zerop (forward-line 1)) (eolp)))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1203 (let ((beg (point))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1204 nodename end)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1205 (re-search-backward "^\^_")
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1206 (search-forward "Node: ")
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
1207 (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
1208 (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
1209 (beginning-of-line)
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1210 (setq end (point))
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1211 (push (list nodename other beg end) this-buffer-nodes)))
53409
6f40406c2b3e (Info-insert-dir): Use assoc-string.
Richard M. Stallman <rms@gnu.org>
parents: 53246
diff changeset
1212 (if (assoc-string "top" this-buffer-nodes t)
23416
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1213 (setq nodes (nconc this-buffer-nodes nodes))
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1214 (setq problems t)
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1215 (message "No `top' node in %s" Info-dir-file-name)))))
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
1216 ;; Add to the main menu a menu item for each other node.
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1217 (re-search-forward "^\\* Menu:")
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1218 (forward-line 1)
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1219 (let ((menu-items '("top"))
6339
f0f62abb621b (Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents: 6121
diff changeset
1220 (end (save-excursion (search-forward "\^_" nil t) (point))))
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1221 (dolist (node nodes)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1222 (let ((nodename (car node)))
6537
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1223 (save-excursion
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1224 (or (member (downcase nodename) menu-items)
21641
1174b1d6cbf6 (Info-menu): Allow extra spaces at start of menu item.
Richard M. Stallman <rms@gnu.org>
parents: 21197
diff changeset
1225 (re-search-forward (concat "^\\* +"
6537
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1226 (regexp-quote nodename)
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1227 "::")
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1228 end t)
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1229 (progn
f5ab0b6b9640 (Info-insert-dir): Add a save-excursion.
Richard M. Stallman <rms@gnu.org>
parents: 6339
diff changeset
1230 (insert "* " nodename "::" "\n")
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1231 (push nodename menu-items)))))))
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1232 ;; 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
1233 ;; and merge it into the main buffer.
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1234 (dolist (node nodes)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1235 (let ((case-fold-search t)
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1236 (nodename (car node)))
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1237 (goto-char (point-min))
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1238 ;; Find the like-named node in the main buffer.
23904
74c3c643e90c (Info-find-node): Add 1 to the position read from the
Eli Zaretskii <eliz@gnu.org>
parents: 23819
diff changeset
1239 (if (re-search-forward (concat "^\^_.*\n.*Node: "
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1240 (regexp-quote nodename)
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1241 "[,\n\t]")
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1242 nil t)
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1243 (progn
6339
f0f62abb621b (Info-insert-dir): Use printable escapes instead of embedding literal control
Karl Heuer <kwzh@gnu.org>
parents: 6121
diff changeset
1244 (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
1245 (beginning-of-line)
65a8b9c507dc (Info-insert-dir): Insert newlines before rather than
Richard M. Stallman <rms@gnu.org>
parents: 8805
diff changeset
1246 (insert "\n"))
1971
b540866e8a79 (Info-insert-dir): Make menu items in Top node
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
1247 ;; 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
1248 (goto-char (point-max))
8069
dfef58fcda75 (Info-insert-dir): Capitalize `node' when inserting it.
Richard M. Stallman <rms@gnu.org>
parents: 8018
diff changeset
1249 (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
1250 ;; 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
1251 ;; into the menu in the like-named node in the main buffer.
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1252 (apply 'insert-buffer-substring (cdr node))))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1253 (Info-dir-remove-duplicates)
56991
53c840d7ea68 (Info-insert-dir): Fix temp buffer leak bug.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56882
diff changeset
1254 ;; Kill all the buffers we just made, including the special one excised.
53c840d7ea68 (Info-insert-dir): Fix temp buffer leak bug.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56882
diff changeset
1255 (mapc 'kill-buffer (cons buffer buffers))
23416
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1256 (goto-char (point-min))
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1257 (if problems
83f51f5fb749 (Info-insert-dir): Detect and report problems
Richard M. Stallman <rms@gnu.org>
parents: 23175
diff changeset
1258 (message "Composing main Info directory...problems encountered, see `*Messages*'")
48690
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1259 (message "Composing main Info directory...done"))
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1260 (set (make-local-variable 'Info-dir-contents) (buffer-string))
036a8f0597c4 (Info-insert-dir): Make dir-node-cache variables buffer-local, so that
Miles Bader <miles@gnu.org>
parents: 48582
diff changeset
1261 (set (make-local-variable 'Info-dir-file-attributes) dir-file-attrs)))
1979
0582c70595f1 * info.el (Info-directory-list): Doc fix; it is set according to
Jim Blandy <jimb@redhat.com>
parents: 1971
diff changeset
1262 (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
1263
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1264 (defvar Info-streamline-headings
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1265 '(("Emacs" . "Emacs")
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1266 ("Programming" . "Programming")
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1267 ("Libraries" . "Libraries")
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1268 ("World Wide Web\\|Net Utilities" . "Net Utilities"))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1269 "List of elements (RE . NAME) to merge headings matching RE to NAME.")
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1270
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1271 (defun Info-dir-remove-duplicates ()
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1272 (let (limit)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1273 (goto-char (point-min))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1274 ;; Remove duplicate headings in the same menu.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1275 (while (search-forward "\n* Menu:" nil t)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1276 (setq limit (save-excursion (search-forward "\n\^_" nil t)))
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1277 ;; Look for the next heading to unify.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1278 (while (re-search-forward "^\\(\\w.*\\)\n\\*" limit t)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1279 (let ((name (match-string 1))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1280 (start (match-beginning 0))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1281 (entries nil) re)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1282 ;; Check whether this heading should be streamlined.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1283 (save-match-data
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1284 (dolist (x Info-streamline-headings)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1285 (when (string-match (car x) name)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1286 (setq name (cdr x))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1287 (setq re (car x)))))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1288 (if re (replace-match name t t nil 1))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1289 (goto-char (if (re-search-forward "^[^* \n\t]" limit t)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1290 (match-beginning 0)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1291 (or limit (point-max))))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1292 ;; Look for other headings of the same category and merge them.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1293 (save-excursion
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1294 (while (re-search-forward "^\\(\\w.*\\)\n\\*" limit t)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1295 (when (if re (save-match-data (string-match re (match-string 1)))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1296 (equal name (match-string 1)))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1297 (forward-line 0)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1298 ;; Delete redundant heading.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1299 (delete-region (match-beginning 0) (point))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1300 ;; Push the entries onto `text'.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1301 (push
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1302 (delete-and-extract-region
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1303 (point)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1304 (if (re-search-forward "^[^* \n\t]" nil t)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1305 (match-beginning 0)
69415
bbbd0ad05f29 (Info-dir-remove-duplicates): Move point to the
Juri Linkov <juri@jurta.org>
parents: 69128
diff changeset
1306 (or limit (point-max))))
bbbd0ad05f29 (Info-dir-remove-duplicates): Move point to the
Juri Linkov <juri@jurta.org>
parents: 69128
diff changeset
1307 entries)
bbbd0ad05f29 (Info-dir-remove-duplicates): Move point to the
Juri Linkov <juri@jurta.org>
parents: 69128
diff changeset
1308 (forward-line 0))))
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1309 ;; Insert the entries just found.
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1310 (while (= (line-beginning-position 0) (1- (point)))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1311 (backward-char))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1312 (dolist (entry (nreverse entries))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1313 (insert entry)
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1314 (while (= (line-beginning-position 0) (1- (point)))
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1315 (delete-region (1- (point)) (point))))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
1316
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1317 ;; Now remove duplicate entries under the same heading.
97976
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1318 (let (seen)
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1319 (save-restriction
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1320 (narrow-to-region start (point))
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1321 (goto-char (point-min))
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1322 (while (re-search-forward "^* \\([^:\n]+:\\(:\\|[^.\n]+\\).\\)" nil 'move)
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1323 ;; Fold case straight away; `member-ignore-case' here wasteful.
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1324 (let ((x (downcase (match-string 1))))
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1325 (if (member x seen)
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1326 (delete-region
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1327 (match-beginning 0)
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1328 (if (re-search-forward "^[^ \t]" nil 'move)
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1329 (goto-char (match-beginning 0))
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1330 (point-max)))
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
1331 (push x seen)))))))))))
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
1332
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1333 ;; Note that on entry to this function the current-buffer must be the
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1334 ;; *info* buffer; not the info tags buffer.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 (defun Info-read-subfile (nodepos)
16399
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1336 ;; NODEPOS is either a position (in the Info file as a whole,
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1337 ;; not relative to a subfile) or the name of a subfile.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 (let (lastfilepos
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 lastfilename)
16399
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1340 (if (numberp nodepos)
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1341 (with-current-buffer (marker-buffer Info-tag-table-marker)
16399
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1342 (goto-char (point-min))
23904
74c3c643e90c (Info-find-node): Add 1 to the position read from the
Eli Zaretskii <eliz@gnu.org>
parents: 23819
diff changeset
1343 (or (looking-at "\^_")
74c3c643e90c (Info-find-node): Add 1 to the position read from the
Eli Zaretskii <eliz@gnu.org>
parents: 23819
diff changeset
1344 (search-forward "\n\^_"))
16399
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1345 (forward-line 2)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1346 (catch 'foo
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1347 (while (not (looking-at "\^_"))
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1348 (if (not (eolp))
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1349 (let ((beg (point))
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1350 thisfilepos thisfilename)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1351 (search-forward ": ")
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1352 (setq thisfilename (buffer-substring beg (- (point) 2)))
45014
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1353 (setq thisfilepos (+ (point-min) (read (current-buffer))))
16399
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1354 ;; read in version 19 stops at the end of number.
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1355 ;; Advance to the next line.
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1356 (forward-line 1)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1357 (if (> thisfilepos nodepos)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1358 (throw 'foo t))
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1359 (setq lastfilename thisfilename)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1360 (setq lastfilepos thisfilepos))
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1361 (forward-line 1)))))
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1362 (setq lastfilename nodepos)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1363 (setq lastfilepos 0))
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1364 ;; Assume previous buffer is in Info-mode.
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1365 ;; (set-buffer (get-buffer "*info*"))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 (or (equal Info-current-subfile lastfilename)
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1367 (let ((inhibit-read-only t))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 (setq buffer-file-name nil)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 (widen)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 (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
1371 (info-insert-file-contents lastfilename)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 (set-buffer-modified-p nil)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373 (setq Info-current-subfile lastfilename)))
37837
39e5892b1843 (Info-read-subfile): Widen before finding the
Richard M. Stallman <rms@gnu.org>
parents: 37473
diff changeset
1374 ;; Widen in case we are in the same subfile as before.
39e5892b1843 (Info-read-subfile): Widen before finding the
Richard M. Stallman <rms@gnu.org>
parents: 37473
diff changeset
1375 (widen)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1376 (goto-char (point-min))
23904
74c3c643e90c (Info-find-node): Add 1 to the position read from the
Eli Zaretskii <eliz@gnu.org>
parents: 23819
diff changeset
1377 (if (looking-at "\^_")
74c3c643e90c (Info-find-node): Add 1 to the position read from the
Eli Zaretskii <eliz@gnu.org>
parents: 23819
diff changeset
1378 (forward-char 1)
74c3c643e90c (Info-find-node): Add 1 to the position read from the
Eli Zaretskii <eliz@gnu.org>
parents: 23819
diff changeset
1379 (search-forward "\n\^_"))
16399
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1380 (if (numberp nodepos)
f73d53a1b448 (Info-read-subfile): Allow a file name as arg.
Richard M. Stallman <rms@gnu.org>
parents: 16202
diff changeset
1381 (+ (- nodepos lastfilepos) (point)))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1382
50707
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1383 (defun Info-unescape-quotes (value)
53246
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
1384 "Unescape double quotes and backslashes in VALUE."
50707
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1385 (let ((start 0)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1386 (unquote value))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1387 (while (string-match "[^\\\"]*\\(\\\\\\)[\\\\\"]" unquote start)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1388 (setq unquote (replace-match "" t t unquote 1))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1389 (setq start (- (match-end 0) 1)))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1390 unquote))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1391
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1392 ;; As of Texinfo 4.6, makeinfo writes constructs like
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1393 ;; \0\h[image param=value ...\h\0]
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1394 ;; into the Info file for handling images.
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1395 (defun Info-split-parameter-string (parameter-string)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1396 "Return alist of (\"KEY\" . \"VALUE\") from PARAMETER-STRING; a
53246
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
1397 whitespace separated list of KEY=VALUE pairs. If VALUE contains
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
1398 whitespace or double quotes, it must be quoted in double quotes and
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
1399 any double quotes or backslashes must be escaped (\\\",\\\\)."
50707
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1400 (let ((start 0)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1401 (parameter-alist))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1402 (while (string-match
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1403 "\\s *\\([^=]+\\)=\\(?:\\([^\\s \"]+\\)\\|\\(?:\"\\(\\(?:[^\\\"]\\|\\\\[\\\\\"]\\)*\\)\"\\)\\)"
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1404 parameter-string start)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1405 (setq start (match-end 0))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1406 (push (cons (match-string 1 parameter-string)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1407 (or (match-string 2 parameter-string)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1408 (Info-unescape-quotes
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1409 (match-string 3 parameter-string))))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1410 parameter-alist))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1411 parameter-alist))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1412
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1413 (defun Info-display-images-node ()
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1414 "Display images in current node."
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1415 (save-excursion
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1416 (let ((inhibit-read-only t)
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
1417 (case-fold-search t))
50707
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1418 (goto-char (point-min))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1419 (while (re-search-forward
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1420 "\\(\0\b[[]image\\(\\(?:[^\b]\\|[^\0]+\b\\)*\\)\0\b[]]\\)"
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1421 nil t)
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1422 (let* ((start (match-beginning 1))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1423 (parameter-alist (Info-split-parameter-string (match-string 2)))
76766
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1424 (src (cdr (assoc-string "src" parameter-alist))))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1425 (if (display-images-p)
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1426 (let* ((image-file (if src (if (file-name-absolute-p src) src
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1427 (concat default-directory src))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1428 ""))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1429 (image (if (file-exists-p image-file)
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1430 (create-image image-file)
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1431 "[broken image]")))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1432 (if (not (get-text-property start 'display))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1433 (add-text-properties
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1434 start (point) `(display ,image rear-nonsticky (display)))))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1435 ;; text-only display, show alternative text if provided, or
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1436 ;; otherwise a clue that there's meant to be a picture
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1437 (delete-region start (point))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1438 (insert (or (cdr (assoc-string "text" parameter-alist))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1439 (cdr (assoc-string "alt" parameter-alist))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1440 (and src
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1441 (concat "[image:" src "]"))
a05e2047bdb8 (Info-display-images-node): On a text-only terminal, show
Nick Roberts <nickrob@snap.net.nz>
parents: 75750
diff changeset
1442 "[image]"))))))
50707
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1443 (set-buffer-modified-p nil)))
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1444
54752
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1445 ;; Texinfo 4.7 adds cookies of the form ^@^H[NAME CONTENTS ^@^H].
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1446 ;; Hide any construct of the general form ^@[^@-^_][ ... ^@[^@-^_]],
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1447 ;; including one optional trailing newline.
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1448 (defun Info-hide-cookies-node ()
63503
512a76e42d3f (Info-hide-cookies-node): Fix spelling in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 63208
diff changeset
1449 "Hide unrecognized cookies in current node."
54752
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1450 (save-excursion
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1451 (let ((inhibit-read-only t)
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1452 (case-fold-search t))
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1453 (goto-char (point-min))
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1454 (while (re-search-forward
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1455 "\\(\0[\0-\37][[][^\0]*\0[\0-\37][]]\n?\\)"
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1456 nil t)
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1457 (let* ((start (match-beginning 1)))
106569
d92d9cf06c0d * info.el (Info-hide-cookies-node): Before hiding a cookie,
Juri Linkov <juri@jurta.org>
parents: 106432
diff changeset
1458 (if (and (not (get-text-property start 'invisible))
d92d9cf06c0d * info.el (Info-hide-cookies-node): Before hiding a cookie,
Juri Linkov <juri@jurta.org>
parents: 106432
diff changeset
1459 (not (get-text-property start 'display)))
54752
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1460 (put-text-property start (point) 'invisible t)))))
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1461 (set-buffer-modified-p nil)))
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1462
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1463 (defun Info-select-node ()
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
1464 "Select the Info node that point is in."
51513
a1170353615d (Info-select-node): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 51504
diff changeset
1465 ;; Bind this in case the user sets it to nil.
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1466 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1467 (save-excursion
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1468 ;; Find beginning of node.
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1469 (if (search-backward "\n\^_" nil 'move)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1470 (forward-line 2)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1471 (if (looking-at "\^_")
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1472 (forward-line 1)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1473 (signal 'search-failed (list "\n\^_"))))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1474 ;; Get nodename spelled as it is in the node.
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1475 (re-search-forward "Node:[ \t]*")
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1476 (setq Info-current-node
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1477 (buffer-substring-no-properties (point)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1478 (progn
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1479 (skip-chars-forward "^,\t\n")
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1480 (point))))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1481 (Info-set-mode-line)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1482 ;; Find the end of it, and narrow.
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1483 (beginning-of-line)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1484 (let (active-expression)
31660
84c9abde389f (Info-fontify-node):
Miles Bader <miles@gnu.org>
parents: 31324
diff changeset
1485 ;; Narrow to the node contents
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1486 (narrow-to-region (point)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1487 (if (re-search-forward "\n[\^_\f]" nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1488 (prog1
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1489 (1- (point))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1490 (if (looking-at "[\n\^_\f]*execute: ")
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1491 (progn
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1492 (goto-char (match-end 0))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1493 (setq active-expression
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1494 (read (current-buffer))))))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1495 (point-max)))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1496 (if Info-enable-active-nodes (eval active-expression))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1497 ;; Add a new unique history item to full history list
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1498 (let ((new-history (list Info-current-file Info-current-node)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1499 (setq Info-history-list
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
1500 (cons new-history (delete new-history Info-history-list)))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
1501 (setq Info-history-forward nil))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1502 (if (not (eq Info-fontify-maximum-menu-size nil))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
1503 (Info-fontify-node))
50707
692de9e94f6c new image display support, from janneke
Karl Berry <karl@gnu.org>
parents: 50660
diff changeset
1504 (Info-display-images-node)
54752
4aa6485ff6e3 (Info-hide-cookies-node): New function.
Juri Linkov <juri@jurta.org>
parents: 54718
diff changeset
1505 (Info-hide-cookies-node)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1506 (run-hooks 'Info-selection-hook)))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1507
68216
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1508 (defvar Info-mode-line-node-keymap
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1509 (let ((map (make-sparse-keymap)))
77453
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
1510 (define-key map [mode-line mouse-1] 'Info-mouse-scroll-up)
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
1511 (define-key map [mode-line mouse-3] 'Info-mouse-scroll-down)
68216
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1512 map)
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1513 "Keymap to put on the Info node name in the mode line.")
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1514
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515 (defun Info-set-mode-line ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1516 (setq mode-line-buffer-identification
32538
69087927a683 (Info-set-mode-line): Tweak string.
Miles Bader <miles@gnu.org>
parents: 32533
diff changeset
1517 (nconc (propertized-buffer-identification "%b")
32533
ec12d23c8eea (Info-set-mode-line): Use `%b' instead of hardwired string "*Info*".
Miles Bader <miles@gnu.org>
parents: 32500
diff changeset
1518 (list
68216
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1519 (concat
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1520 " ("
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1521 (if (stringp Info-current-file)
68853
4e74c8b341d8 (info-xref-visited): Inherit from info-xref too.
Juri Linkov <juri@jurta.org>
parents: 68826
diff changeset
1522 (replace-regexp-in-string
4e74c8b341d8 (info-xref-visited): Inherit from info-xref too.
Juri Linkov <juri@jurta.org>
parents: 68826
diff changeset
1523 "%" "%%" (file-name-nondirectory Info-current-file))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
1524 (format "*%S*" Info-current-file))
68216
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1525 ") "
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1526 (if Info-current-node
68853
4e74c8b341d8 (info-xref-visited): Inherit from info-xref too.
Juri Linkov <juri@jurta.org>
parents: 68826
diff changeset
1527 (propertize (replace-regexp-in-string
4e74c8b341d8 (info-xref-visited): Inherit from info-xref too.
Juri Linkov <juri@jurta.org>
parents: 68826
diff changeset
1528 "%" "%%" Info-current-node)
68216
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1529 'face 'mode-line-buffer-id
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1530 'help-echo
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1531 "mouse-1: scroll forward, mouse-3: scroll back"
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1532 'mouse-face 'mode-line-highlight
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1533 'local-map Info-mode-line-node-keymap)
9f1c66838760 (Info-mode-line-node-keymap): New defvar.
Juri Linkov <juri@jurta.org>
parents: 68045
diff changeset
1534 ""))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1535
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
1536 ;; Go to an Info node specified with a filename-and-nodename string
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1537 ;; of the sort that is found in pointers in nodes.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1538
62822
7f11f471aa34 (Info-goto-node): Revert autoload addition (2004-06-12).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62733
diff changeset
1539 ;; Don't autoload this function: the correct entry point for other packages
7f11f471aa34 (Info-goto-node): Revert autoload addition (2004-06-12).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62733
diff changeset
1540 ;; to use is `info'. --Stef
7f11f471aa34 (Info-goto-node): Revert autoload addition (2004-06-12).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62733
diff changeset
1541 ;; ;;;###autoload
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
1542 (defun Info-goto-node (nodename &optional fork)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
1543 "Go to Info node named NODENAME. Give just NODENAME or (FILENAME)NODENAME.
39382
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
1544 If NODENAME is of the form (FILENAME)NODENAME, the node is in the Info file
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
1545 FILENAME; otherwise, NODENAME should be in the current Info file (or one of
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
1546 its sub-files).
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
1547 Completion is available, but only for node names in the current Info file.
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
1548 If FORK is non-nil (interactively with a prefix arg), show the node in
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
1549 a new Info buffer.
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
1550 If FORK is a string, it is the name to use for the new buffer."
32500
5f2aedbe47b5 (Info-mouse-follow-nearest-node): Use mouse-set-point.
Dave Love <fx@gnu.org>
parents: 32391
diff changeset
1551 (interactive (list (Info-read-node-name "Go to node: ") current-prefix-arg))
25172
5a57e11d78c9 (Info-find-node): Call info-initialize here.
Dave Love <fx@gnu.org>
parents: 25145
diff changeset
1552 (info-initialize)
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
1553 (if fork
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1554 (set-buffer
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1555 (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) "*") t)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556 (let (filename)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1557 (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)"
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1558 nodename)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1559 (setq filename (if (= (match-beginning 1) (match-end 1))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1560 ""
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1561 (match-string 2 nodename))
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1562 nodename (match-string 3 nodename))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1563 (let ((trim (string-match "\\s +\\'" filename)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564 (if trim (setq filename (substring filename 0 trim))))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
1565 (let ((trim (string-match "\\s +\\'" nodename)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1566 (if trim (setq nodename (substring nodename 0 trim))))
12433
17387b7fe5b8 (Info-goto-node, Info-search):
Richard M. Stallman <rms@gnu.org>
parents: 12294
diff changeset
1567 (if transient-mark-mode (deactivate-mark))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1568 (Info-find-node (if (equal filename "") nil filename)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1569 (if (equal nodename "") "Top" nodename))))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1570
22760
e080fa4636c7 (Info-read-node-name-1, Info-read-node-name):
Richard M. Stallman <rms@gnu.org>
parents: 22733
diff changeset
1571 (defvar Info-read-node-completion-table)
e080fa4636c7 (Info-read-node-name-1, Info-read-node-name):
Richard M. Stallman <rms@gnu.org>
parents: 22733
diff changeset
1572
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1573 (defun Info-read-node-name-2 (dirs suffixes string pred action)
63065
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1574 "Virtual completion table for file names input in Info node names.
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1575 PATH-AND-SUFFIXES is a pair of lists, (DIRECTORIES . SUFFIXES)."
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1576 (setq suffixes (remove "" suffixes))
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1577 (when (file-name-absolute-p string)
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1578 (setq dirs (list (file-name-directory string))))
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1579 (let ((names nil)
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1580 (suffix (concat (regexp-opt suffixes t) "\\'"))
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1581 (string-dir (file-name-directory string)))
63065
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1582 (dolist (dir dirs)
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1583 (unless dir
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1584 (setq dir default-directory))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1585 (if string-dir (setq dir (expand-file-name string-dir dir)))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1586 (when (file-directory-p dir)
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1587 (dolist (file (file-name-all-completions
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1588 (file-name-nondirectory string) dir))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1589 ;; If the file name has no suffix or a standard suffix,
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1590 ;; include it.
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1591 (and (or (null (file-name-extension file))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1592 (string-match suffix file))
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
1593 ;; But exclude subfiles of split Info files.
63065
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1594 (not (string-match "-[0-9]+\\'" file))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1595 ;; And exclude backup files.
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1596 (not (string-match "~\\'" file))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1597 (push (if string-dir (concat string-dir file) file) names))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1598 ;; If the file name ends in a standard suffix,
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1599 ;; add the unsuffixed name as a completion option.
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1600 (when (string-match suffix file)
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1601 (setq file (substring file 0 (match-beginning 0)))
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1602 (push (if string-dir (concat string-dir file) file) names)))))
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1603 (complete-with-action action names string pred)))
63065
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1604
12779
5b3d83e51b91 (Info-read-node-name-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12646
diff changeset
1605 ;; This function is used as the "completion table" while reading a node name.
22760
e080fa4636c7 (Info-read-node-name-1, Info-read-node-name):
Richard M. Stallman <rms@gnu.org>
parents: 22733
diff changeset
1606 ;; It does completion using the alist in Info-read-node-completion-table
12779
5b3d83e51b91 (Info-read-node-name-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12646
diff changeset
1607 ;; unless STRING starts with an open-paren.
5b3d83e51b91 (Info-read-node-name-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12646
diff changeset
1608 (defun Info-read-node-name-1 (string predicate code)
45014
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1609 (cond
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1610 ;; First complete embedded file names.
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1611 ((string-match "\\`([^)]*\\'" string)
94062
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1612 (completion-table-with-context
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1613 "("
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1614 (apply-partially 'completion-table-with-terminator ")"
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1615 (apply-partially 'Info-read-node-name-2
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1616 Info-directory-list
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1617 (mapcar 'car Info-suffix-list)))
94062
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1618 (substring string 1)
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1619 predicate
94062
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1620 code))
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1621
45014
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1622 ;; If a file name was given, then any node is fair game.
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1623 ((string-match "\\`(" string)
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1624 (cond
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1625 ((eq code nil) string)
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1626 ((eq code t) nil)
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1627 (t t)))
a590e8ab89d0 (Info-find-in-tag-table-1, Info-read-subfile): Use point-min.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44902
diff changeset
1628 ;; Otherwise use Info-read-node-completion-table.
94062
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1629 (t (complete-with-action
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1630 code Info-read-node-completion-table string predicate))))
12779
5b3d83e51b91 (Info-read-node-name-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12646
diff changeset
1631
63065
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1632 ;; Arrange to highlight the proper letters in the completion list buffer.
94062
9fefa536be58 * minibuffer.el (completion-all-completion-with-base-size): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93194
diff changeset
1633
63065
58dcb71db77b (Info-read-node-name-2): New function.
Richard M. Stallman <rms@gnu.org>
parents: 63055
diff changeset
1634
91937
baa074991ebd * info.el (Info-read-node-name): Removed unused `default' arg.
Bastien Guerry <bzg@altern.org>
parents: 91746
diff changeset
1635 (defun Info-read-node-name (prompt)
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1636 (let* ((completion-ignore-case t)
22760
e080fa4636c7 (Info-read-node-name-1, Info-read-node-name):
Richard M. Stallman <rms@gnu.org>
parents: 22733
diff changeset
1637 (Info-read-node-completion-table (Info-build-node-completions))
17140
a6f8fb00d93e (Info-read-node-name): Caused completing-read to force
Karl Heuer <kwzh@gnu.org>
parents: 16981
diff changeset
1638 (nodename (completing-read prompt 'Info-read-node-name-1 nil t)))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1639 (if (equal nodename "")
91937
baa074991ebd * info.el (Info-read-node-name): Removed unused `default' arg.
Bastien Guerry <bzg@altern.org>
parents: 91746
diff changeset
1640 (Info-read-node-name prompt)
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1641 nodename)))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1642
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1643 (defun Info-build-node-completions ()
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1644 (or Info-current-file-completions
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1645 (let ((compl nil)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1646 ;; Bind this in case the user sets it to nil.
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
1647 (case-fold-search t)
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
1648 (node-regexp "Node: *\\([^,\n]*\\) *[,\n\t]"))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1649 (save-excursion
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1650 (save-restriction
74719
8782777c2f1a (Info-build-node-completions): Signal error if tag-table marker is not
Chong Yidong <cyd@stupidchicken.com>
parents: 74471
diff changeset
1651 (or Info-tag-table-marker
8782777c2f1a (Info-build-node-completions): Signal error if tag-table marker is not
Chong Yidong <cyd@stupidchicken.com>
parents: 74471
diff changeset
1652 (error "No Info tags found"))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1653 (if (marker-buffer Info-tag-table-marker)
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1654 (let ((marker Info-tag-table-marker))
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1655 (set-buffer (marker-buffer marker))
6049
32df2b4d67cf (Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents: 5555
diff changeset
1656 (widen)
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1657 (goto-char marker)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
1658 (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t)
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1659 (setq compl
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
1660 (cons (list (match-string-no-properties 2))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1661 compl))))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1662 (widen)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1663 (goto-char (point-min))
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
1664 ;; If the buffer begins with a node header, process that first.
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
1665 (if (Info-node-at-bob-matching node-regexp)
26580
d779cb4aa2ae (Info-build-node-completions, Info-search, Info-follow-reference)
Dave Love <fx@gnu.org>
parents: 26172
diff changeset
1666 (setq compl (list (match-string-no-properties 1))))
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
1667 ;; Now for the rest of the nodes.
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1668 (while (search-forward "\n\^_" nil t)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1669 (forward-line 1)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1670 (let ((beg (point)))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1671 (forward-line 1)
23923
950f2c278c9a (Info-node-at-bob-matching): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 23904
diff changeset
1672 (if (re-search-backward node-regexp beg t)
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
1673 (setq compl
26580
d779cb4aa2ae (Info-build-node-completions, Info-search, Info-follow-reference)
Dave Love <fx@gnu.org>
parents: 26172
diff changeset
1674 (cons (list (match-string-no-properties 1))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
1675 compl))))))))
26172
ac446cf94d51 (Info-build-node-completions): Add '("*") to the
Gerd Moellmann <gerd@gnu.org>
parents: 26004
diff changeset
1676 (setq compl (cons '("*") compl))
38407
4569042ee316 (Info-build-node-completions): Make Info-current-file-completions buffer local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38262
diff changeset
1677 (set (make-local-variable 'Info-current-file-completions) compl))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1678
540
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
1679 (defun Info-restore-point (hl)
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
1680 "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
1681 (while hl
32df2b4d67cf (Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents: 5555
diff changeset
1682 (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
1683 ;; 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
1684 (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
1685 (progn
6121
a9caf92da1d3 (Info-restore-point): Don't wipe out hl before using it.
Karl Heuer <kwzh@gnu.org>
parents: 6049
diff changeset
1686 (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
1687 (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
1688 (setq hl (cdr hl)))))
540
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
1689
30109
310914da7811 (Info-last-search): Variable removed.
Gerd Moellmann <gerd@gnu.org>
parents: 30020
diff changeset
1690 (defvar Info-search-history nil
310914da7811 (Info-last-search): Variable removed.
Gerd Moellmann <gerd@gnu.org>
parents: 30020
diff changeset
1691 "The history list for `Info-search'.")
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1692
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1693 (defvar Info-search-case-fold nil
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1694 "The value of `case-fold-search' from previous `Info-search' command.")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1695
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1696 (defun Info-search (regexp &optional bound noerror count direction)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1697 "Search for REGEXP, starting from point, and select node it's found in.
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1698 If DIRECTION is `backward', search in the reverse direction."
35136
1eb26b81ece0 (Info-search): Print the default as part of the prompt.
Eli Zaretskii <eliz@gnu.org>
parents: 35112
diff changeset
1699 (interactive (list (read-string
1eb26b81ece0 (Info-search): Print the default as part of the prompt.
Eli Zaretskii <eliz@gnu.org>
parents: 35112
diff changeset
1700 (if Info-search-history
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
1701 (format "Regexp search%s (default %s): "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
1702 (if case-fold-search "" " case-sensitively")
35136
1eb26b81ece0 (Info-search): Print the default as part of the prompt.
Eli Zaretskii <eliz@gnu.org>
parents: 35112
diff changeset
1703 (car Info-search-history))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1704 (format "Regexp search%s: "
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
1705 (if case-fold-search "" " case-sensitively")))
35136
1eb26b81ece0 (Info-search): Print the default as part of the prompt.
Eli Zaretskii <eliz@gnu.org>
parents: 35112
diff changeset
1706 nil 'Info-search-history)))
103893
c75839749e65 * simple.el (deactivate-mark): Optional argument FORCE.
Chong Yidong <cyd@stupidchicken.com>
parents: 103693
diff changeset
1707 (deactivate-mark)
30109
310914da7811 (Info-last-search): Variable removed.
Gerd Moellmann <gerd@gnu.org>
parents: 30020
diff changeset
1708 (when (equal regexp "")
310914da7811 (Info-last-search): Variable removed.
Gerd Moellmann <gerd@gnu.org>
parents: 30020
diff changeset
1709 (setq regexp (car Info-search-history)))
24963
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1710 (when regexp
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1711 (let (found beg-found give-up
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1712 (backward (eq direction 'backward))
24963
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1713 (onode Info-current-node)
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1714 (ofile Info-current-file)
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1715 (opoint (point))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1716 (opoint-min (point-min))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1717 (opoint-max (point-max))
24963
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1718 (ostart (window-start))
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1719 (osubfile Info-current-subfile))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1720 (setq Info-search-case-fold case-fold-search)
24963
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1721 (save-excursion
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1722 (save-restriction
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1723 (widen)
57958
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1724 (when backward
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1725 ;; Hide Info file header for backward search
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1726 (narrow-to-region (save-excursion
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1727 (goto-char (point-min))
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1728 (search-forward "\n\^_")
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1729 (1- (point)))
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1730 (point-max)))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1731 (while (and (not give-up)
94259
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1732 (or (null found)
99642
1221f267b55c (Info-search, Info-mode): Rename
Juri Linkov <juri@jurta.org>
parents: 98920
diff changeset
1733 (not (funcall isearch-filter-predicate beg-found found))))
69128
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1734 (let ((search-spaces-regexp
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1735 (if (or (not isearch-mode) isearch-regexp)
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1736 Info-search-whitespace-regexp)))
58331
c11ef32aabb7 (Info-search): Use search-whitespace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 58152
diff changeset
1737 (if (if backward
c11ef32aabb7 (Info-search): Use search-whitespace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 58152
diff changeset
1738 (re-search-backward regexp bound t)
c11ef32aabb7 (Info-search): Use search-whitespace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 58152
diff changeset
1739 (re-search-forward regexp bound t))
c11ef32aabb7 (Info-search): Use search-whitespace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 58152
diff changeset
1740 (setq found (point) beg-found (if backward (match-end 0)
c11ef32aabb7 (Info-search): Use search-whitespace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 58152
diff changeset
1741 (match-beginning 0)))
c11ef32aabb7 (Info-search): Use search-whitespace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 58152
diff changeset
1742 (setq give-up t))))))
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1743
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1744 (when (and isearch-mode Info-isearch-search
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1745 (not Info-isearch-initial-node)
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1746 (not bound)
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1747 (or give-up (and found (not (and (> found opoint-min)
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1748 (< found opoint-max))))))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1749 (signal 'search-failed (list regexp "initial node")))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1750
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1751 ;; If no subfiles, give error now.
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1752 (if give-up
24963
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1753 (if (null Info-current-subfile)
69128
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1754 (let ((search-spaces-regexp
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1755 (if (or (not isearch-mode) isearch-regexp)
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1756 Info-search-whitespace-regexp)))
58604
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1757 (if backward
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1758 (re-search-backward regexp)
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1759 (re-search-forward regexp)))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1760 (setq found nil)))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1761
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1762 (if (and bound (not found))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1763 (signal 'search-failed (list regexp)))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1764
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1765 (unless (or found bound)
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1766 (unwind-protect
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1767 ;; Try other subfiles.
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1768 (let ((list ()))
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
1769 (with-current-buffer (marker-buffer Info-tag-table-marker)
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1770 (goto-char (point-min))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1771 (search-forward "\n\^_\nIndirect:")
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1772 (save-restriction
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1773 (narrow-to-region (point)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1774 (progn (search-forward "\n\^_")
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1775 (1- (point))))
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
1776 (goto-char (point-min))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1777 ;; Find the subfile we just searched.
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1778 (search-forward (concat "\n" osubfile ": "))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1779 ;; Skip that one.
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1780 (forward-line (if backward 0 1))
60577
1bfdd67c0337 (Info-search): Four fixes for backward search.
Juri Linkov <juri@jurta.org>
parents: 60524
diff changeset
1781 (if backward (forward-char -1))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1782 ;; Make a list of all following subfiles.
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1783 ;; Each elt has the form (VIRT-POSITION . SUBFILENAME).
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1784 (while (not (if backward (bobp) (eobp)))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1785 (if backward
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1786 (re-search-backward "\\(^.*\\): [0-9]+$")
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1787 (re-search-forward "\\(^.*\\): [0-9]+$"))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1788 (goto-char (+ (match-end 1) 2))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1789 (setq list (cons (cons (+ (point-min)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1790 (read (current-buffer)))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1791 (match-string-no-properties 1))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1792 list))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1793 (goto-char (if backward
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1794 (1- (match-beginning 0))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1795 (1+ (match-end 0)))))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1796 ;; Put in forward order
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1797 (setq list (nreverse list))))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1798 (while list
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1799 (message "Searching subfile %s..." (cdr (car list)))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1800 (Info-read-subfile (car (car list)))
57958
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1801 (when backward
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1802 ;; Hide Info file header for backward search
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1803 (narrow-to-region (save-excursion
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1804 (goto-char (point-min))
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1805 (search-forward "\n\^_")
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1806 (1- (point)))
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1807 (point-max))
117144126cd9 (Info-search): Don't search in node header lines and file headers.
Juri Linkov <juri@jurta.org>
parents: 57770
diff changeset
1808 (goto-char (point-max)))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1809 (setq list (cdr list))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1810 (setq give-up nil found nil)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1811 (while (and (not give-up)
94259
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1812 (or (null found)
99642
1221f267b55c (Info-search, Info-mode): Rename
Juri Linkov <juri@jurta.org>
parents: 98920
diff changeset
1813 (not (funcall isearch-filter-predicate beg-found found))))
69128
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1814 (let ((search-spaces-regexp
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1815 (if (or (not isearch-mode) isearch-regexp)
ab159a9e1d0a (Info-search): Don't bind search-spaces-regexp to
Juri Linkov <juri@jurta.org>
parents: 68984
diff changeset
1816 Info-search-whitespace-regexp)))
58604
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1817 (if (if backward
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1818 (re-search-backward regexp nil t)
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1819 (re-search-forward regexp nil t))
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1820 (setq found (point) beg-found (if backward (match-end 0)
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1821 (match-beginning 0)))
a227196e4498 (Info-search-whitespace-regexp): Remove shy group.
Juri Linkov <juri@jurta.org>
parents: 58350
diff changeset
1822 (setq give-up t))))
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1823 (if give-up
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1824 (setq found nil))
24963
a78f0c2654d6 (Info-search): Don't lose with empty regexp.
Dave Love <fx@gnu.org>
parents: 24632
diff changeset
1825 (if found
51805
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1826 (setq list nil)))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1827 (if found
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1828 (message "")
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1829 (signal 'search-failed (list regexp))))
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1830 (if (not found)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1831 (progn (Info-read-subfile osubfile)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1832 (goto-char opoint)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1833 (Info-select-node)
7a3de98ae801 (Info-search): If find invisible text, search again.
Richard M. Stallman <rms@gnu.org>
parents: 51784
diff changeset
1834 (set-window-start (selected-window) ostart)))))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1835
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1836 (if (and (string= osubfile Info-current-subfile)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1837 (> found opoint-min)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1838 (< found opoint-max))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1839 ;; Search landed in the same node
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1840 (goto-char found)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1841 (widen)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1842 (goto-char found)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1843 (save-match-data (Info-select-node)))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1844
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1845 ;; Use string-equal, not equal, to ignore text props.
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1846 (or (and (string-equal onode Info-current-node)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1847 (equal ofile Info-current-file))
60577
1bfdd67c0337 (Info-search): Four fixes for backward search.
Juri Linkov <juri@jurta.org>
parents: 60524
diff changeset
1848 (and isearch-mode isearch-wrapped
1bfdd67c0337 (Info-search): Four fixes for backward search.
Juri Linkov <juri@jurta.org>
parents: 60524
diff changeset
1849 (eq opoint (if isearch-forward opoint-min opoint-max)))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1850 (setq Info-history (cons (list ofile onode opoint)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
1851 Info-history))))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1852
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1853 (defun Info-search-case-sensitively ()
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1854 "Search for a regexp case-sensitively."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1855 (interactive)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1856 (let ((case-fold-search nil))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1857 (call-interactively 'Info-search)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1858
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1859 (defun Info-search-next ()
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1860 "Search for next regexp from a previous `Info-search' command."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1861 (interactive)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1862 (let ((case-fold-search Info-search-case-fold))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1863 (if Info-search-history
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1864 (Info-search (car Info-search-history))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
1865 (call-interactively 'Info-search))))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1867 (defun Info-search-backward (regexp &optional bound noerror count)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1868 "Search for REGEXP in the reverse direction."
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1869 (interactive (list (read-string
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1870 (if Info-search-history
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
1871 (format "Regexp search%s backward (default %s): "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
1872 (if case-fold-search "" " case-sensitively")
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1873 (car Info-search-history))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1874 (format "Regexp search%s backward: "
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
1875 (if case-fold-search "" " case-sensitively")))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1876 nil 'Info-search-history)))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1877 (Info-search regexp bound noerror count 'backward))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1878
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1879 (defun Info-isearch-search ()
60524
d77fe7e90fb5 (Info-isearch-search): Emulate word search in
Juri Linkov <juri@jurta.org>
parents: 60222
diff changeset
1880 (if Info-isearch-search
60222
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1881 (lambda (string &optional bound noerror count)
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1882 (if isearch-word
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1883 (Info-search (concat "\\b" (replace-regexp-in-string
65069
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
1884 "\\W+" "\\W+"
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1885 (replace-regexp-in-string
65069
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
1886 "^\\W+\\|\\W+$" "" string)
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
1887 nil t)
100509
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1888 ;; Lax version of word search
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1889 (if (or isearch-nonincremental
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1890 (eq (length string)
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1891 (length (isearch-string-state
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1892 (car isearch-cmds)))))
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1893 "\\b"))
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1894 bound noerror count
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1895 (unless isearch-forward 'backward))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1896 (Info-search (if isearch-regexp string (regexp-quote string))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1897 bound noerror count
93194
7498dcd3cee6 (Info-isearch-search): Always return point.
Johan Bockgård <bojohan@gnu.org>
parents: 92690
diff changeset
1898 (unless isearch-forward 'backward)))
7498dcd3cee6 (Info-isearch-search): Always return point.
Johan Bockgård <bojohan@gnu.org>
parents: 92690
diff changeset
1899 (point))
60222
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1900 (let ((isearch-search-fun-function nil))
56061feffaa0 (Info-isearch-search): New defcustom.
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1901 (isearch-search-fun))))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1902
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1903 (defun Info-isearch-wrap ()
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1904 (if Info-isearch-search
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1905 (if Info-isearch-initial-node
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1906 (progn
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1907 (if isearch-forward (Info-top-node) (Info-final-node))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1908 (goto-char (if isearch-forward (point-min) (point-max))))
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1909 (setq Info-isearch-initial-node Info-current-node)
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1910 (setq isearch-wrapped nil))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1911 (goto-char (if isearch-forward (point-min) (point-max)))))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1912
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1913 (defun Info-isearch-push-state ()
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1914 `(lambda (cmd)
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
1915 (Info-isearch-pop-state cmd ',Info-current-file ',Info-current-node)))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1916
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1917 (defun Info-isearch-pop-state (cmd file node)
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
1918 (or (and (equal Info-current-file file)
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
1919 (equal Info-current-node node))
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1920 (progn (Info-find-node file node) (sit-for 0))))
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
1921
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
1922 (defun Info-isearch-start ()
100509
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1923 (setq Info-isearch-initial-node
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1924 ;; Don't stop at initial node for nonincremental search.
9c2f92d8fc34 (Info-isearch-search): Implement lax version of
Juri Linkov <juri@jurta.org>
parents: 100171
diff changeset
1925 ;; Otherwise this variable is set after first search failure.
108471
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1926 (and isearch-nonincremental Info-current-node))
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1927 (setq Info-isearch-initial-history Info-history
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1928 Info-isearch-initial-history-list Info-history-list)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1929 (add-hook 'isearch-mode-end-hook 'Info-isearch-end nil t))
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1930
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1931 (defun Info-isearch-end ()
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1932 ;; Remove intermediate nodes (visited while searching)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1933 ;; from the history. Add only the last node (where Isearch ended).
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1934 (if (> (length Info-history)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1935 (length Info-isearch-initial-history))
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1936 (setq Info-history
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1937 (nthcdr (- (length Info-history)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1938 (length Info-isearch-initial-history)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1939 1)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1940 Info-history)))
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1941 (if (> (length Info-history-list)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1942 (length Info-isearch-initial-history-list))
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1943 (setq Info-history-list
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1944 (cons (car Info-history-list)
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1945 Info-isearch-initial-history-list)))
daa05d3ccff4 Remove nodes visited during Isearch from the Info history.
Juri Linkov <juri@jurta.org>
parents: 108375
diff changeset
1946 (remove-hook 'isearch-mode-end-hook 'Info-isearch-end t))
94259
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1947
100669
1cc573a37101 (Info-find-node-2): Use negative offset 2 instead of 1
Juri Linkov <juri@jurta.org>
parents: 100509
diff changeset
1948 (defun Info-isearch-filter (beg-found found)
1cc573a37101 (Info-find-node-2): Use negative offset 2 instead of 1
Juri Linkov <juri@jurta.org>
parents: 100509
diff changeset
1949 "Test whether the current search hit is a visible useful text.
1cc573a37101 (Info-find-node-2): Use negative offset 2 instead of 1
Juri Linkov <juri@jurta.org>
parents: 100509
diff changeset
1950 Return non-nil if the text from BEG-FOUND to FOUND is visible
1cc573a37101 (Info-find-node-2): Use negative offset 2 instead of 1
Juri Linkov <juri@jurta.org>
parents: 100509
diff changeset
1951 and is not in the header line or a tag table."
94259
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1952 (save-match-data
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1953 (let ((backward (< found beg-found)))
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1954 (not
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1955 (or
101180
2b60f03f682b (Info-isearch-filter): Don't filter out invisible text
Juri Linkov <juri@jurta.org>
parents: 101042
diff changeset
1956 (and (not (eq search-invisible t))
2b60f03f682b (Info-isearch-filter): Don't filter out invisible text
Juri Linkov <juri@jurta.org>
parents: 101042
diff changeset
1957 (if backward
2b60f03f682b (Info-isearch-filter): Don't filter out invisible text
Juri Linkov <juri@jurta.org>
parents: 101042
diff changeset
1958 (or (text-property-not-all found beg-found 'invisible nil)
2b60f03f682b (Info-isearch-filter): Don't filter out invisible text
Juri Linkov <juri@jurta.org>
parents: 101042
diff changeset
1959 (text-property-not-all found beg-found 'display nil))
2b60f03f682b (Info-isearch-filter): Don't filter out invisible text
Juri Linkov <juri@jurta.org>
parents: 101042
diff changeset
1960 (or (text-property-not-all beg-found found 'invisible nil)
2b60f03f682b (Info-isearch-filter): Don't filter out invisible text
Juri Linkov <juri@jurta.org>
parents: 101042
diff changeset
1961 (text-property-not-all beg-found found 'display nil))))
94259
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1962 ;; Skip node header line
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1963 (and (save-excursion (forward-line -1)
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1964 (looking-at "\^_"))
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1965 (forward-line (if backward -1 1)))
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1966 ;; Skip Tag Table node
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1967 (save-excursion
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1968 (and (search-backward "\^_" nil t)
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1969 (looking-at
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1970 "\^_\n\\(Tag Table\\|Local Variables\\)"))))))))
2741bbf61004 (Info-search): In two similar places that skip
Juri Linkov <juri@jurta.org>
parents: 94245
diff changeset
1971
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1972
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1973 (defun Info-extract-pointer (name &optional errorname)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
1974 "Extract the value of the node-pointer named NAME.
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
1975 If there is none, use ERRORNAME in the error message;
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1976 if ERRORNAME is nil, just return nil."
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1977 ;; Bind this in case the user sets it to nil.
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1978 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
1979 (save-excursion
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1980 (goto-char (point-min))
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1981 (let ((bound (point)))
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1982 (forward-line 1)
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1983 (cond ((re-search-backward
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1984 (concat name ":" (Info-following-node-name-re)) bound t)
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
1985 (match-string-no-properties 1))
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1986 ((not (eq errorname t))
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1987 (error "Node has no %s"
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1988 (capitalize (or errorname name)))))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1989
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1990 (defun Info-following-node-name-re (&optional allowedchars)
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1991 "Return a regexp matching a node name.
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
1992 ALLOWEDCHARS, if non-nil, goes within [...] to make a regexp
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1993 saying which chars may appear in the node name.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1994 Submatch 1 is the complete node name.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1995 Submatch 2 if non-nil is the parenthesized file name part of the node name.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1996 Submatch 3 is the local part of the node name.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1997 End of submatch 0, 1, and 3 are the same, so you can safely concat."
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1998 (concat "[ \t]*" ;Skip leading space.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
1999 "\\(\\(([^)]+)\\)?" ;Node name can start with a file name.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2000 "\\([" (or allowedchars "^,\t\n") "]*" ;Any number of allowed chars.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2001 "[" (or allowedchars "^,\t\n") " ]" ;The last char can't be a space.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2002 "\\|\\)\\)")) ;Allow empty node names.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2003
52756
371ac8b3328e (Info-following-node-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 52688
diff changeset
2004 ;;; For compatibility; other files have used this name.
371ac8b3328e (Info-following-node-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 52688
diff changeset
2005 (defun Info-following-node-name ()
371ac8b3328e (Info-following-node-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 52688
diff changeset
2006 (and (looking-at (Info-following-node-name-re))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2007 (match-string-no-properties 1)))
52756
371ac8b3328e (Info-following-node-name): New function.
Richard M. Stallman <rms@gnu.org>
parents: 52688
diff changeset
2008
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2009 (defun Info-next ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2010 "Go to the next node of this node."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2011 (interactive)
65825
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2012 ;; In case another window is currently selected
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2013 (save-window-excursion
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2014 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2015 (Info-goto-node (Info-extract-pointer "next"))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2016
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2017 (defun Info-prev ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2018 "Go to the previous node of this node."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2019 (interactive)
65825
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2020 ;; In case another window is currently selected
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2021 (save-window-excursion
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2022 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2023 (Info-goto-node (Info-extract-pointer "prev[ious]*" "previous"))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2024
21910
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2025 (defun Info-up (&optional same-file)
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2026 "Go to the superior node of this node.
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2027 If SAME-FILE is non-nil, do not move to a different Info file."
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2028 (interactive)
65825
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2029 ;; In case another window is currently selected
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2030 (save-window-excursion
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2031 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2032 (let ((old-node Info-current-node)
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2033 (old-file Info-current-file)
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2034 (node (Info-extract-pointer "up")) p)
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
2035 (and same-file
65825
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2036 (string-match "^(" node)
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2037 (error "Up node is in another Info file"))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2038 (Info-goto-node node)
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2039 (setq p (point))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2040 (goto-char (point-min))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2041 (if (and (stringp old-file)
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2042 (search-forward "\n* Menu:" nil t)
65825
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2043 (re-search-forward
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2044 (if (string-equal old-node "Top")
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2045 (concat "\n\\*[^:]+: +(" (file-name-nondirectory old-file) ")")
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2046 (concat "\n\\* +\\(" (regexp-quote old-node)
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2047 ":\\|[^:]+: +" (regexp-quote old-node) "\\)"))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2048 nil t))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2049 (progn (beginning-of-line) (if (looking-at "^\\* ") (forward-char 2)))
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2050 (goto-char p)
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
2051 (Info-restore-point Info-history)))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2052
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2053 (defun Info-history-back ()
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2054 "Go back in the history to the last node visited."
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2055 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2056 (or Info-history
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2057 (error "This is the first Info node you looked at"))
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2058 (let ((history-forward
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2059 (cons (list Info-current-file Info-current-node (point))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2060 Info-history-forward))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2061 filename nodename opoint)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2062 (setq filename (car (car Info-history)))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2063 (setq nodename (car (cdr (car Info-history))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2064 (setq opoint (car (cdr (cdr (car Info-history)))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2065 (setq Info-history (cdr Info-history))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2066 (Info-find-node filename nodename)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2067 (setq Info-history (cdr Info-history))
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2068 (setq Info-history-forward history-forward)
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2069 (goto-char opoint)))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2070
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2071 (defalias 'Info-last 'Info-history-back)
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2072
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2073 (defun Info-history-forward ()
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2074 "Go forward in the history of visited nodes."
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2075 (interactive)
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2076 (or Info-history-forward
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2077 (error "This is the last Info node you looked at"))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2078 (let ((history-forward (cdr Info-history-forward))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2079 filename nodename opoint)
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2080 (setq filename (car (car Info-history-forward)))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2081 (setq nodename (car (cdr (car Info-history-forward))))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2082 (setq opoint (car (cdr (cdr (car Info-history-forward)))))
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2083 (Info-find-node filename nodename)
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
2084 (setq Info-history-forward history-forward)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2085 (goto-char opoint)))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2086
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2087 (add-to-list 'Info-virtual-files
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2088 '("\\`dir\\'"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2089 (toc-nodes . Info-directory-toc-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2090 (find-file . Info-directory-find-file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2091 (find-node . Info-directory-find-node)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2092 ))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2093
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2094 (defun Info-directory-toc-nodes (filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2095 "Directory-specific implementation of Info-directory-toc-nodes."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2096 `(,filename
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2097 ("Top" nil nil nil)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2098
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2099 (defun Info-directory-find-file (filename &optional noerror)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2100 "Directory-specific implementation of Info-find-file."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2101 filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2102
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2103 (defun Info-directory-find-node (filename nodename &optional no-going-back)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2104 "Directory-specific implementation of Info-find-node-2."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2105 (Info-insert-dir))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2106
28558
3fb49903ed9d Add debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28168
diff changeset
2107 ;;;###autoload
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2108 (defun Info-directory ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2109 "Go to the Info directory node."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2110 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2111 (Info-find-node "dir" "top"))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2112
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2113 (add-to-list 'Info-virtual-files
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2114 '("\\`\\*History\\*\\'"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2115 (toc-nodes . Info-history-toc-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2116 (find-file . Info-history-find-file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2117 (find-node . Info-history-find-node)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2118 ))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2119
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2120 (defun Info-history-toc-nodes (filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2121 "History-specific implementation of Info-history-toc-nodes."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2122 `(,filename
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2123 ("Top" nil nil nil)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2124
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2125 (defun Info-history-find-file (filename &optional noerror)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2126 "History-specific implementation of Info-find-file."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2127 filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2128
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2129 (defun Info-history-find-node (filename nodename &optional no-going-back)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2130 "History-specific implementation of Info-find-node-2."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2131 (insert (format "\n\^_\nFile: %s, Node: %s, Up: (dir)\n\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2132 (or filename Info-current-file) nodename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2133 (insert "Recently Visited Nodes\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2134 (insert "**********************\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2135 (insert "* Menu:\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2136 (let ((hl (delete '("*History*" "Top") Info-history-list)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2137 (while hl
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2138 (let ((file (nth 0 (car hl)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2139 (node (nth 1 (car hl))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2140 (if (stringp file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2141 (insert "* " node ": ("
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2142 (propertize (or (file-name-directory file) "") 'invisible t)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2143 (file-name-nondirectory file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2144 ")" node ".\n")))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2145 (setq hl (cdr hl)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2146
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2147 (defun Info-history ()
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
2148 "Go to a node with a menu of visited nodes."
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2149 (interactive)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2150 (Info-find-node "*History*" "Top")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2151 (Info-next-reference)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2152 (Info-next-reference))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2153
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2154 (add-to-list 'Info-virtual-nodes
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2155 '("\\`\\*TOC\\*\\'"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2156 (find-node . Info-toc-find-node)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2157 ))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2158
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2159 (defun Info-toc-find-node (filename nodename &optional no-going-back)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2160 "Toc-specific implementation of Info-find-node-2."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2161 (let* ((curr-file (substring-no-properties (or filename Info-current-file)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2162 (curr-node (substring-no-properties (or nodename Info-current-node)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2163 (node-list (Info-toc-nodes curr-file)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2164 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2165 curr-file curr-node))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2166 (insert "Table of Contents\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2167 (insert "*****************\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2168 (insert "*Note Top::\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2169 (Info-toc-insert
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2170 (nth 3 (assoc "Top" node-list)) ; get Top nodes
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2171 node-list 0 curr-file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2172 (unless (bobp)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2173 (let ((Info-hide-note-references 'hide)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2174 (Info-fontify-visited-nodes nil))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2175 (setq Info-current-file filename Info-current-node "*TOC*")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2176 (goto-char (point-min))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2177 (narrow-to-region (or (re-search-forward "\n[\^_\f]\n" nil t)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2178 (point-min))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2179 (point-max))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2180 (Info-fontify-node)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2181 (widen)))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2182
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2183 (defun Info-toc ()
56044
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
2184 "Go to a node with table of contents of the current Info file.
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
2185 Table of contents is created from the tree structure of menus."
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2186 (interactive)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2187 (Info-find-node Info-current-file "*TOC*")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2188 (let ((prev-node (nth 1 (car Info-history))) p)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2189 (goto-char (point-min))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2190 (if (setq p (search-forward (concat "*Note " prev-node ":") nil t))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2191 (setq p (- p (length prev-node) 2)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2192 (goto-char (or p (point-min)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2193
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2194 (defun Info-toc-insert (nodes node-list level curr-file)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2195 "Insert table of contents with references to nodes."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2196 (let ((section "Top"))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2197 (while nodes
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2198 (let ((node (assoc (car nodes) node-list)))
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2199 (unless (member (nth 2 node) (list nil section))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2200 (insert (setq section (nth 2 node)) "\n"))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2201 (insert (make-string level ?\t))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2202 (insert "*Note " (car nodes) ":: \n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2203 (Info-toc-insert (nth 3 node) node-list (1+ level) curr-file)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2204 (setq nodes (cdr nodes))))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2205
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2206 (defun Info-toc-build (file)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2207 "Build table of contents from menus of Info FILE and its subfiles."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2208 (with-temp-buffer
57329
52649ba67540 (Info-history, Info-toc): Fix Info headers.
Juri Linkov <juri@jurta.org>
parents: 56991
diff changeset
2209 (let* ((file (and (stringp file) (Info-find-file file)))
52649ba67540 (Info-history, Info-toc): Fix Info headers.
Juri Linkov <juri@jurta.org>
parents: 56991
diff changeset
2210 (default-directory (or (and (stringp file)
52649ba67540 (Info-history, Info-toc): Fix Info headers.
Juri Linkov <juri@jurta.org>
parents: 56991
diff changeset
2211 (file-name-directory file))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2212 default-directory))
57329
52649ba67540 (Info-history, Info-toc): Fix Info headers.
Juri Linkov <juri@jurta.org>
parents: 56991
diff changeset
2213 (main-file (and (stringp file) file))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2214 (sections '(("Top" "Top")))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2215 nodes subfiles)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2216 (while (or main-file subfiles)
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2217 ;; (or main-file (message "Searching subfile %s..." (car subfiles)))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2218 (erase-buffer)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2219 (info-insert-file-contents (or main-file (car subfiles)))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2220 (goto-char (point-min))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2221 (while (and (search-forward "\n\^_\nFile:" nil 'move)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2222 (search-forward "Node: " nil 'move))
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2223 (let* ((nodename (substring-no-properties (Info-following-node-name)))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2224 (bound (- (or (save-excursion (search-forward "\n\^_" nil t))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2225 (point-max)) 2))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2226 (upnode (and (re-search-forward
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2227 (concat "Up:" (Info-following-node-name-re))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2228 bound t)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2229 (match-string-no-properties 1)))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2230 (section "Top")
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2231 menu-items)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2232 (when (string-match "(" upnode) (setq upnode nil))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2233 (when (and (not (Info-index-node nodename file))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2234 (re-search-forward "^\\* Menu:" bound t))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2235 (forward-line 1)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2236 (beginning-of-line)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2237 (setq bound (or (and (equal nodename "Top")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2238 (save-excursion
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2239 (re-search-forward
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2240 "^[ \t-]*The Detailed Node Listing" nil t)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2241 bound))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2242 (while (< (point) bound)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2243 (cond
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2244 ;; Menu item line
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2245 ((looking-at "^\\* +[^:]+:")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2246 (beginning-of-line)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2247 (forward-char 2)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2248 (let ((menu-node-name (substring-no-properties
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2249 (Info-extract-menu-node-name))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2250 (setq menu-items (cons menu-node-name menu-items))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2251 (if (equal nodename "Top")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2252 (setq sections
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2253 (cons (list menu-node-name section) sections)))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2254 ;; Other non-empty strings in the Top node are section names
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2255 ((and (equal nodename "Top")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2256 (looking-at "^\\([^ \t\n*=.-][^:\n]*\\)"))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2257 (setq section (match-string-no-properties 1))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2258 (forward-line 1)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2259 (beginning-of-line)))
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2260 (setq nodes (cons (list nodename upnode
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2261 (cadr (assoc nodename sections))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2262 (nreverse menu-items))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2263 nodes))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2264 (goto-char bound)))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2265 (if main-file
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2266 (save-excursion
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2267 (goto-char (point-min))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2268 (if (search-forward "\n\^_\nIndirect:" nil t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2269 (let ((bound (save-excursion (search-forward "\n\^_" nil t))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2270 (while (re-search-forward "^\\(.*\\): [0-9]+$" bound t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2271 (setq subfiles (cons (match-string-no-properties 1)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2272 subfiles)))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2273 (setq subfiles (nreverse subfiles)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2274 main-file nil))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2275 (setq subfiles (cdr subfiles))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2276 (message "")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2277 (nreverse nodes))))
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2278
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2279 (defvar Info-toc-nodes nil
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2280 "Alist of cached parent-children node information in visited Info files.
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2281 Each element is (FILE (NODE-NAME PARENT SECTION CHILDREN) ...)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2282 where PARENT is the parent node extracted from the Up pointer,
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2283 SECTION is the section name in the Top node where this node is placed,
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2284 CHILDREN is a list of child nodes extracted from the node menu.")
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2285
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2286 (defun Info-toc-nodes (filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2287 "Return a node list of Info FILENAME with parent-children information.
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2288 This information is cached in the variable `Info-toc-nodes' with the help
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2289 of the function `Info-toc-build'."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2290 (cond
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2291 ((Info-virtual-call
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2292 (Info-virtual-fun 'toc-nodes (or filename Info-current-file) nil)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2293 filename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2294 (t
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2295 (or filename (setq filename Info-current-file))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2296 (or (assoc filename Info-toc-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2297 ;; Skip virtual Info files
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2298 (and (or (not (stringp filename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2299 (Info-virtual-file-p filename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2300 (push (cons filename nil) Info-toc-nodes))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2301 ;; Scan the entire manual and cache the result in Info-toc-nodes
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2302 (let ((nodes (Info-toc-build filename)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2303 (push (cons filename nodes) Info-toc-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2304 nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2305 ;; If there is an error, still add nil to the cache
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2306 (push (cons filename nil) Info-toc-nodes))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2307 (cdr (assoc filename Info-toc-nodes)))))
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2308
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2309
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2310 (defun Info-follow-reference (footnotename &optional fork)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
2311 "Follow cross reference named FOOTNOTENAME to the node it refers to.
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2312 FOOTNOTENAME may be an abbreviation of the reference name.
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2313 If FORK is non-nil (interactively with a prefix arg), show the node in
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2314 a new Info buffer. If FORK is a string, it is the name to use for the
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2315 new buffer."
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2316 (interactive
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2317 (let ((completion-ignore-case t)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2318 (case-fold-search t)
5555
38f8bfd91cca (Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents: 5482
diff changeset
2319 completions default alt-default (start-point (point)) str i bol eol)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2320 (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
2321 ;; 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
2322 (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
2323 (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
2324 (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
2325 (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
2326
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2327 (goto-char (point-min))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2328 (while (re-search-forward "\\*note[ \n\t]+\\([^:]*\\):" nil t)
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2329 (setq str (match-string-no-properties 1))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2330 ;; See if this one should be the default.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2331 (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
2332 (<= (match-beginning 0) start-point)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2333 (<= start-point (point))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2334 (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
2335 ;; 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
2336 (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
2337 (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
2338 (<= (point) eol))
38f8bfd91cca (Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents: 5482
diff changeset
2339 (setq alt-default t))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2340 (setq i 0)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2341 (while (setq i (string-match "[ \n\t]+" str i))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2342 (setq str (concat (substring str 0 i) " "
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2343 (substring str (match-end 0))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2344 (setq i (1+ i)))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2345 ;; Record as a completion and perhaps as default.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2346 (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
2347 (if (eq alt-default t) (setq alt-default str))
16609
21c4e4e580a9 (Info-follow-reference): Add each cross-reference to
Karl Heuer <kwzh@gnu.org>
parents: 16590
diff changeset
2348 ;; Don't add this string if it's a duplicate.
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2349 (or (assoc-string str completions t)
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2350 (push str completions))))
5555
38f8bfd91cca (Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents: 5482
diff changeset
2351 ;; 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
2352 (or default
38f8bfd91cca (Info-follow-reference): If point is not in middle of a
Richard M. Stallman <rms@gnu.org>
parents: 5482
diff changeset
2353 (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
2354 ;; 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
2355 (if (eq (length completions) 1)
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2356 (setq default (car completions)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2357 (if completions
3565
bd87ecca04f6 (Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents: 3451
diff changeset
2358 (let ((input (completing-read (if default
39757
0597a7bc10a2 (Info-follow-reference): Display default values in prompts as
Miles Bader <miles@gnu.org>
parents: 39746
diff changeset
2359 (concat
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
2360 "Follow reference named (default "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65069
diff changeset
2361 default "): ")
3565
bd87ecca04f6 (Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents: 3451
diff changeset
2362 "Follow reference named: ")
bd87ecca04f6 (Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents: 3451
diff changeset
2363 completions nil t)))
bd87ecca04f6 (Info-follow-reference): Fix completion defaulting.
Richard M. Stallman <rms@gnu.org>
parents: 3451
diff changeset
2364 (list (if (equal input "")
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2365 default input) current-prefix-arg))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2366 (error "No cross-references in this node"))))
23038
10ad03c5d326 (Info-follow-reference): Nice error msg if there was no arg.
Richard M. Stallman <rms@gnu.org>
parents: 23019
diff changeset
2367
10ad03c5d326 (Info-follow-reference): Nice error msg if there was no arg.
Richard M. Stallman <rms@gnu.org>
parents: 23019
diff changeset
2368 (unless footnotename
10ad03c5d326 (Info-follow-reference): Nice error msg if there was no arg.
Richard M. Stallman <rms@gnu.org>
parents: 23019
diff changeset
2369 (error "No reference was specified"))
10ad03c5d326 (Info-follow-reference): Nice error msg if there was no arg.
Richard M. Stallman <rms@gnu.org>
parents: 23019
diff changeset
2370
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
2371 (let (target i (str (concat "\\*note " (regexp-quote footnotename)))
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2372 (case-fold-search t))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2373 (while (setq i (string-match " " str i))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2374 (setq str (concat (substring str 0 i) "[ \t\n]+" (substring str (1+ i))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2375 (setq i (+ i 6)))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2376 (save-excursion
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2377 ;; Move point to the beginning of reference if point is on reference
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2378 (or (looking-at "\\*note[ \n\t]+")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2379 (and (looking-back "\\*note[ \n\t]+")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2380 (goto-char (match-beginning 0)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2381 (if (and (save-excursion
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2382 (goto-char (+ (point) 5)) ; skip a possible *note
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2383 (re-search-backward "\\*note[ \n\t]+" nil t)
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2384 (looking-at str))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2385 (<= (point) (match-end 0)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2386 (goto-char (match-beginning 0))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2387 ;; Go to the reference closest to point
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2388 (let ((next-ref (save-excursion (and (re-search-forward str nil t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2389 (+ (match-beginning 0) 5))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2390 (prev-ref (save-excursion (and (re-search-backward str nil t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2391 (+ (match-beginning 0) 5)))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2392 (goto-char (cond ((and next-ref prev-ref)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2393 (if (< (abs (- next-ref (point)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2394 (abs (- prev-ref (point))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2395 next-ref prev-ref))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2396 ((or next-ref prev-ref))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2397 ((error "No cross-reference named %s" footnotename))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2398 (setq target (Info-extract-menu-node-name t))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2399 (while (setq i (string-match "[ \t\n]+" target i))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2400 (setq target (concat (substring target 0 i) " "
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2401 (substring target (match-end 0))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2402 (setq i (+ i 1)))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2403 (Info-goto-node target fork)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2404
51943
4ab63324776e (Info-menu-entry-name-re): Allow newlines in menu entry names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51805
diff changeset
2405 (defconst Info-menu-entry-name-re "\\(?:[^:]\\|:[^:,.;() \t\n]\\)*"
4ab63324776e (Info-menu-entry-name-re): Allow newlines in menu entry names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51805
diff changeset
2406 ;; We allow newline because this is also used in Info-follow-reference,
4ab63324776e (Info-menu-entry-name-re): Allow newlines in menu entry names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51805
diff changeset
2407 ;; where the xref name might be wrapped over two lines.
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2408 "Regexp that matches a menu entry name upto but not including the colon.
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2409 Because of ambiguities, this should be concatenated with something like
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2410 `:' and `Info-following-node-name-re'.")
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2411
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2412 (defun Info-extract-menu-node-name (&optional multi-line index-node)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2413 (skip-chars-forward " \t\n")
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2414 (when (looking-at (concat Info-menu-entry-name-re ":\\(:\\|"
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2415 (Info-following-node-name-re
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2416 (cond
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2417 (index-node "^,\t\n")
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2418 (multi-line "^.,\t")
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2419 (t "^.,\t\n")))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2420 "\\)"
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2421 (if index-node
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2422 "\\.\\(?:[ \t\n]+(line +\\([0-9]+\\))\\)?"
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2423 "")))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2424 (if index-node
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2425 (setq Info-point-loc
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2426 (if (match-beginning 5)
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2427 (string-to-number (match-string 5))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2428 (buffer-substring-no-properties
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2429 (match-beginning 0) (1- (match-beginning 1)))))
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
2430 ;;; Uncomment next line to use names of cross-references in non-index nodes:
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2431 ;;; (setq Info-point-loc
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2432 ;;; (buffer-substring (match-beginning 0) (1- (match-beginning 1))))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
2433 )
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2434 (replace-regexp-in-string
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2435 "[ \n]+" " "
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2436 (or (match-string-no-properties 2)
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2437 ;; If the node name is the menu entry name (using `entry::').
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2438 (buffer-substring-no-properties
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
2439 (match-beginning 0) (1- (match-beginning 1)))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2440
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2441 ;; No one calls this.
1484
6c2a714566d3 Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents: 1477
diff changeset
2442 ;;(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
2443 ;; (while list
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2444 ;; (Info-menu (car list))
1484
6c2a714566d3 Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents: 1477
diff changeset
2445 ;; (setq list (cdr list))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2446
22761
ad14990a5efc (Info-complete-menu-buffer): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22760
diff changeset
2447 (defvar Info-complete-menu-buffer)
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
2448 (defvar Info-complete-next-re nil)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2449 (defvar Info-complete-nodes nil)
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
2450 (defvar Info-complete-cache nil)
22761
ad14990a5efc (Info-complete-menu-buffer): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22760
diff changeset
2451
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2452 (defconst Info-node-spec-re
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
2453 (concat (Info-following-node-name-re "^.,:") "[,:.]")
51437
63b62b12e01c (Info-extract-menu-node-name): Remove unused arg `errmessage'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51436
diff changeset
2454 "Regexp to match the text after a : until the terminating `.'.")
63b62b12e01c (Info-extract-menu-node-name): Remove unused arg `errmessage'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51436
diff changeset
2455
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2456 (defun Info-complete-menu-item (string predicate action)
41798
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2457 ;; This uses two dynamically bound variables:
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2458 ;; - `Info-complete-menu-buffer' which contains the buffer in which
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2459 ;; is the menu of items we're trying to complete.
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2460 ;; - `Info-complete-next-re' which, if non-nil, indicates that we should
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2461 ;; also look for menu items in subsequent nodes as long as those
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2462 ;; nodes' names match `Info-complete-next-re'. This feature is currently
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2463 ;; not used.
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2464 ;; - `Info-complete-nodes' which, if non-nil, indicates that we should
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2465 ;; also look for menu items in these nodes. This feature is currently
41798
b04cfaf9585d Add explanatory comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41713
diff changeset
2466 ;; only used for completion in Info-index.
51517
46101da952e7 (Info-complete-menu-item): Revert change of 2003-06-03.
Lute Kamstra <lute@gnu.org>
parents: 51513
diff changeset
2467
46101da952e7 (Info-complete-menu-item): Revert change of 2003-06-03.
Lute Kamstra <lute@gnu.org>
parents: 51513
diff changeset
2468 ;; Note that `Info-complete-menu-buffer' could be current already,
46101da952e7 (Info-complete-menu-item): Revert change of 2003-06-03.
Lute Kamstra <lute@gnu.org>
parents: 51513
diff changeset
2469 ;; so we want to save point.
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
2470 (with-current-buffer Info-complete-menu-buffer
94244
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2471 (save-excursion
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2472 (let ((completion-ignore-case t)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2473 (case-fold-search t)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2474 (orignode Info-current-node)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2475 nextnode)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2476 (goto-char (point-min))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2477 (search-forward "\n* Menu:")
105674
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2478 (cond
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2479 ((eq (car-safe action) 'boundaries) nil)
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2480 ((eq action 'lambda)
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2481 (re-search-forward
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2482 (concat "\n\\* +" (regexp-quote string) ":") nil t))
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2483 (t
94244
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2484 (let ((pattern (concat "\n\\* +\\("
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2485 (regexp-quote string)
105674
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2486 Info-menu-entry-name-re "\\):"
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2487 Info-node-spec-re))
94244
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2488 completions
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2489 (complete-nodes Info-complete-nodes))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2490 ;; Check the cache.
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2491 (if (and (equal (nth 0 Info-complete-cache) Info-current-file)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2492 (equal (nth 1 Info-complete-cache) Info-current-node)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2493 (equal (nth 2 Info-complete-cache) Info-complete-next-re)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2494 (equal (nth 5 Info-complete-cache) Info-complete-nodes)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2495 (let ((prev (nth 3 Info-complete-cache)))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2496 (eq t (compare-strings string 0 (length prev)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2497 prev 0 nil t))))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2498 ;; We can reuse the previous list.
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2499 (setq completions (nth 4 Info-complete-cache))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2500 ;; The cache can't be used.
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2501 (while
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2502 (progn
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2503 (while (re-search-forward pattern nil t)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2504 (push (match-string-no-properties 1)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2505 completions))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2506 ;; Check subsequent nodes if applicable.
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2507 (or (and Info-complete-next-re
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2508 (setq nextnode (Info-extract-pointer "next" t))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2509 (string-match Info-complete-next-re nextnode))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2510 (and complete-nodes
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2511 (setq complete-nodes (cdr complete-nodes)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2512 nextnode (car complete-nodes)))))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2513 (Info-goto-node nextnode))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2514 ;; Go back to the start node (for the next completion).
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2515 (unless (equal Info-current-node orignode)
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2516 (Info-goto-node orignode))
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2517 ;; Update the cache.
6ff724be7391 (Info-complete-menu-item): Save point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94181
diff changeset
2518 (set (make-local-variable 'Info-complete-cache)
94245
e884e788c40a (Info-complete-menu-item): Add missing parenthesis.
Juanma Barranquero <lekktu@gmail.com>
parents: 94244
diff changeset
2519 (list Info-current-file Info-current-node
e884e788c40a (Info-complete-menu-item): Add missing parenthesis.
Juanma Barranquero <lekktu@gmail.com>
parents: 94244
diff changeset
2520 Info-complete-next-re string completions
e884e788c40a (Info-complete-menu-item): Add missing parenthesis.
Juanma Barranquero <lekktu@gmail.com>
parents: 94244
diff changeset
2521 Info-complete-nodes)))
105674
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2522 (complete-with-action action completions string predicate))))))))
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2523
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2524
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
2525 (defun Info-menu (menu-item &optional fork)
39382
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
2526 "Go to the node pointed to by the menu item named (or abbreviated) MENU-ITEM.
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
2527 The menu item should one of those listed in the current node's menu.
18515f20ccce (Info-goto-node, Info-menu): Doc fix. Suggested by
Eli Zaretskii <eliz@gnu.org>
parents: 39364
diff changeset
2528 Completion is allowed, and the default menu item is the one point is on.
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
2529 If FORK is non-nil (interactively with a prefix arg), show the node in
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2530 a new Info buffer. If FORK is a string, it is the name to use for the
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
2531 new buffer."
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2532 (interactive
105674
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2533 (let (;; If point is within a menu item, use that item as the default
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2534 (default nil)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2535 (p (point))
10957
6d3568e33019 (Info-menu): Bind beg with let.
Richard M. Stallman <rms@gnu.org>
parents: 10918
diff changeset
2536 beg
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2537 (case-fold-search t))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2538 (save-excursion
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2539 (goto-char (point-min))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2540 (if (not (search-forward "\n* menu:" nil t))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2541 (error "No menu in this node"))
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2542 (setq beg (point))
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2543 (and (< (point) p)
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2544 (save-excursion
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2545 (goto-char p)
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2546 (end-of-line)
51784
abcb358beb61 (Info-menu): Use Info-menu-entry-name-re.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51760
diff changeset
2547 (if (re-search-backward (concat "\n\\* +\\("
abcb358beb61 (Info-menu): Use Info-menu-entry-name-re.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51760
diff changeset
2548 Info-menu-entry-name-re
abcb358beb61 (Info-menu): Use Info-menu-entry-name-re.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51760
diff changeset
2549 "\\):") beg t)
26580
d779cb4aa2ae (Info-build-node-completions, Info-search, Info-follow-reference)
Dave Love <fx@gnu.org>
parents: 26172
diff changeset
2550 (setq default (match-string-no-properties 1))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2551 (let ((item nil))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2552 (while (null item)
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2553 (setq item (let ((completion-ignore-case t)
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2554 (Info-complete-menu-buffer (current-buffer)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2555 (completing-read (if default
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2556 (format "Menu item (default %s): "
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2557 default)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2558 "Menu item: ")
7837
bad6366d4f16 (Info-complete-menu-item): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7789
diff changeset
2559 'Info-complete-menu-item nil t)))
540
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
2560 ;; we rely on the fact that completing-read accepts an input
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
2561 ;; of "" even when the require-match argument is true and ""
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
2562 ;; is not a valid possibility
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2563 (if (string= item "")
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2564 (if default
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2565 (setq item default)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2566 ;; ask again
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2567 (setq item nil))))
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
2568 (list item current-prefix-arg))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2569 ;; there is a problem here in that if several menu items have the same
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2570 ;; name you can only go to the node of the first with this command.
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
2571 (Info-goto-node (Info-extract-menu-item menu-item) (if fork menu-item)))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
2572
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2573 (defun Info-extract-menu-item (menu-item)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2574 (setq menu-item (regexp-quote menu-item))
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2575 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2576 (save-excursion
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2577 (let ((case-fold-search t))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2578 (goto-char (point-min))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2579 (or (search-forward "\n* menu:" nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2580 (error "No menu in this node"))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2581 (or (re-search-forward (concat "\n\\* +" menu-item ":") nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2582 (re-search-forward (concat "\n\\* +" menu-item) nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2583 (error "No such item in menu"))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2584 (beginning-of-line)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2585 (forward-char 2)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2586 (Info-extract-menu-node-name nil (Info-index-node))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2587
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2588 ;; If COUNT is nil, use the last item in the menu.
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2589 (defun Info-extract-menu-counting (count &optional no-detail)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2590 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2591 (save-excursion
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2592 (let ((case-fold-search t)
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2593 (bound (when (and no-detail
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2594 (re-search-forward
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2595 "^[ \t-]*The Detailed Node Listing" nil t))
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2596 (match-beginning 0))))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2597 (goto-char (point-min))
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2598 (or (search-forward "\n* menu:" bound t)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2599 (error "No menu in this node"))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2600 (if count
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2601 (or (search-forward "\n* " bound t count)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2602 (error "Too few items in menu"))
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2603 (while (search-forward "\n* " bound t)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2604 nil))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2605 (Info-extract-menu-node-name nil (Info-index-node))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2606
1666
c12fbca81b63 (Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents: 1613
diff changeset
2607 (defun Info-nth-menu-item ()
c12fbca81b63 (Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents: 1613
diff changeset
2608 "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
2609 N is the digit argument used to invoke this command."
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2610 (interactive)
1666
c12fbca81b63 (Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents: 1613
diff changeset
2611 (Info-goto-node
c12fbca81b63 (Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents: 1613
diff changeset
2612 (Info-extract-menu-counting
c12fbca81b63 (Info-{first,second,third,fourth,fifth}-menu-item): Removed.
Roland McGrath <roland@gnu.org>
parents: 1613
diff changeset
2613 (- (aref (this-command-keys) (1- (length (this-command-keys)))) ?0))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2614
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2615 (defun Info-top-node ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2616 "Go to the Top node of this file."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2617 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2618 (Info-goto-node "Top"))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2619
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2620 (defun Info-final-node ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2621 "Go to the final node in this file."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2622 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2623 (Info-goto-node "Top")
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2624 (let ((Info-history nil)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2625 (case-fold-search t))
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2626 ;; Go to the last node in the menu of Top. But don't delve into
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2627 ;; detailed node listings.
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2628 (Info-goto-node (Info-extract-menu-counting nil t))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2629 ;; If the last node in the menu is not last in pointer structure,
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2630 ;; move forward (but not down- or upward - see bug#1116) until we
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2631 ;; can't go any farther.
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2632 (while (Info-forward-node t t t) nil)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2633 ;; Then keep moving down to last subnode, unless we reach an index.
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2634 (while (and (not (Info-index-node))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2635 (save-excursion (search-forward "\n* Menu:" nil t)))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2636 (Info-goto-node (Info-extract-menu-counting nil)))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2637
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2638 (defun Info-forward-node (&optional not-down not-up no-error)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2639 "Go forward one node, considering all nodes as forming one sequence."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2640 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2641 (goto-char (point-min))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2642 (forward-line 1)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2643 (let ((case-fold-search t))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2644 ;; three possibilities, in order of priority:
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2645 ;; 1. next node is in a menu in this node (but not in an index)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2646 ;; 2. next node is next at same level
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2647 ;; 3. next node is up and next
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2648 (cond ((and (not not-down)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2649 (save-excursion (search-forward "\n* menu:" nil t))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2650 (not (Info-index-node)))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2651 (Info-goto-node (Info-extract-menu-counting 1))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2652 t)
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
2653 ((save-excursion (search-backward "next:" nil t))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2654 (Info-next)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2655 t)
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2656 ((and (not not-up)
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2657 (save-excursion (search-backward "up:" nil t))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2658 ;; Use string-equal, not equal, to ignore text props.
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2659 (not (string-equal (downcase (Info-extract-pointer "up"))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2660 "top")))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2661 (let ((old-node Info-current-node))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2662 (Info-up)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2663 (let (Info-history success)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2664 (unwind-protect
98600
42c1a6f2facd (Info-extract-menu-counting): New argment no-detail to
Martin Rudalics <rudalics@gmx.at>
parents: 98203
diff changeset
2665 (setq success (Info-forward-node t nil no-error))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2666 (or success (Info-goto-node old-node))))))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2667 (no-error nil)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2668 (t (error "No pointer forward from this node")))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2669
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2670 (defun Info-backward-node ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2671 "Go backward one node, considering all nodes as forming one sequence."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2672 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2673 (let ((prevnode (Info-extract-pointer "prev[ious]*" t))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2674 (upnode (Info-extract-pointer "up" t))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2675 (case-fold-search t))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2676 (cond ((and upnode (string-match "(" upnode))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2677 (error "First node in file"))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2678 ((and upnode (or (null prevnode)
11527
7956811d4d9a (info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents: 11064
diff changeset
2679 ;; Use string-equal, not equal,
7956811d4d9a (info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents: 11064
diff changeset
2680 ;; to ignore text properties.
7956811d4d9a (info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents: 11064
diff changeset
2681 (string-equal (downcase prevnode)
7956811d4d9a (info-insert-file-contents): Set default-directory
Richard M. Stallman <rms@gnu.org>
parents: 11064
diff changeset
2682 (downcase upnode))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2683 (Info-up))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2684 (prevnode
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2685 ;; If we move back at the same level,
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2686 ;; go down to find the last subnode*.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2687 (Info-prev)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2688 (let (Info-history)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2689 (while (and (not (Info-index-node))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2690 (save-excursion (search-forward "\n* Menu:" nil t)))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2691 (Info-goto-node (Info-extract-menu-counting nil)))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2692 (t
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2693 (error "No pointer backward from this node")))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2694
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2695 (defun Info-exit ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2696 "Exit Info by selecting some other buffer."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2697 (interactive)
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2698 (if Info-standalone
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2699 (save-buffers-kill-emacs)
22331
fcc3db2d9778 (Info-exit): Use quit-window.
Karl Heuer <kwzh@gnu.org>
parents: 22067
diff changeset
2700 (quit-window)))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2701
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2702 (defun Info-next-menu-item ()
47794
c460856d1bfd (Info-next-menu-item, Info-last-menu-item)
John Paul Wallington <jpw@pobox.com>
parents: 47376
diff changeset
2703 "Go to the node of the next menu item."
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2704 (interactive)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
2705 ;; Bind this in case the user sets it to nil.
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2706 (let* ((case-fold-search t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2707 (node
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2708 (save-excursion
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2709 (forward-line -1)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2710 (search-forward "\n* menu:" nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2711 (and (search-forward "\n* " nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2712 (Info-extract-menu-node-name)))))
23533
10a3478e3432 (Info-next-menu-item): Stay on top of node.
Richard M. Stallman <rms@gnu.org>
parents: 23416
diff changeset
2713 (if node (Info-goto-node node)
10a3478e3432 (Info-next-menu-item): Stay on top of node.
Richard M. Stallman <rms@gnu.org>
parents: 23416
diff changeset
2714 (error "No more items in menu"))))
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2715
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2716 (defun Info-last-menu-item ()
47794
c460856d1bfd (Info-next-menu-item, Info-last-menu-item)
John Paul Wallington <jpw@pobox.com>
parents: 47376
diff changeset
2717 "Go to the node of the previous menu item."
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2718 (interactive)
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2719 (save-excursion
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2720 (forward-line 1)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
2721 ;; Bind this in case the user sets it to nil.
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2722 (let* ((case-fold-search t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2723 (beg (save-excursion
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2724 (and (search-backward "\n* menu:" nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2725 (point)))))
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2726 (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
2727 (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
2728 (Info-goto-node (save-excursion
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2729 (goto-char (match-end 0))
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2730 (Info-extract-menu-node-name)))))
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2731
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2732 (defmacro Info-no-error (&rest body)
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2733 (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
2734
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2735 (defun Info-next-preorder ()
8018
518971c497f5 (Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7990
diff changeset
2736 "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
2737 (interactive)
518971c497f5 (Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7990
diff changeset
2738 (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
2739 ((Info-no-error (Info-next)))
21910
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2740 ((Info-no-error (Info-up t))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2741 ;; Since we have already gone thru all the items in this menu,
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2742 ;; go up to the end of this node.
15575
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2743 (goto-char (point-max))
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2744 ;; Since logically we are done with the node with that menu,
94870
9ba92386b1f2 (Info-next-preorder): Let-bind `Info-history' to nil
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
2745 ;; move on from it. But don't add intermediate nodes
9ba92386b1f2 (Info-next-preorder): Let-bind `Info-history' to nil
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
2746 ;; to the history on recursive calls.
9ba92386b1f2 (Info-next-preorder): Let-bind `Info-history' to nil
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
2747 (let (Info-history)
9ba92386b1f2 (Info-next-preorder): Let-bind `Info-history' to nil
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
2748 (Info-next-preorder)))
8018
518971c497f5 (Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7990
diff changeset
2749 (t
518971c497f5 (Info-next-preorder-1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7990
diff changeset
2750 (error "No more nodes"))))
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2751
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2752 (defun Info-last-preorder ()
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2753 "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
2754 (interactive)
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2755 (cond ((Info-no-error
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2756 (Info-last-menu-item)
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2757 ;; 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
2758 ;; so we can scroll back through it.
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2759 (goto-char (point-max)))
15575
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2760 ;; Keep going down, as long as there are nested menu nodes.
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2761 (while (Info-no-error
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2762 (Info-last-menu-item)
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2763 ;; If we go down a menu item, go to the end of the node
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2764 ;; so we can scroll back through it.
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2765 (goto-char (point-max))))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2766 (recenter -1))
34468
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2767 ((and (Info-no-error (Info-extract-pointer "prev"))
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2768 (not (equal (Info-extract-pointer "up")
21910
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2769 (Info-extract-pointer "prev"))))
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2770 (Info-no-error (Info-prev))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2771 (goto-char (point-max))
15575
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2772 (while (Info-no-error
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2773 (Info-last-menu-item)
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2774 ;; If we go down a menu item, go to the end of the node
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2775 ;; so we can scroll back through it.
6beab08ee094 (Info-next-preorder): After we move up, move forward again.
Richard M. Stallman <rms@gnu.org>
parents: 15304
diff changeset
2776 (goto-char (point-max))))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2777 (recenter -1))
21910
702383d93b75 (Info-up): New arg SAME-FILE: don't move to different file.
Richard M. Stallman <rms@gnu.org>
parents: 21806
diff changeset
2778 ((Info-no-error (Info-up t))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2779 (goto-char (point-min))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2780 (let ((case-fold-search t))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2781 (or (search-forward "\n* Menu:" nil t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2782 (goto-char (point-max)))))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
2783 (t (error "No previous nodes"))))
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2784
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2785 (defun Info-scroll-up ()
9222
b18f51df31b3 (Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 8913
diff changeset
2786 "Scroll one screenful forward in Info, considering all nodes as one sequence.
16498
791b96e8f25e (Info-scroll-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16462
diff changeset
2787 Once you scroll far enough in a node that its menu appears on the screen
34182
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2788 but after point, the next scroll moves into its first subnode, unless
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2789 `Info-scroll-prefer-subnodes' is nil.
16498
791b96e8f25e (Info-scroll-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16462
diff changeset
2790
34182
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2791 When you scroll past the end of a node, that goes to the next node if
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2792 `Info-scroll-prefer-subnodes' is non-nil and to the first subnode otherwise;
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2793 if this node has no successor, it moves to the parent node's successor,
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2794 and so on. If `Info-scroll-prefer-subnodes' is non-nil and point is inside
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2795 the menu of a node, it moves to subnode indicated by the following menu
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2796 item. (That case won't normally result from this command, but can happen
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2797 in other ways.)"
16498
791b96e8f25e (Info-scroll-up): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16462
diff changeset
2798
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2799 (interactive)
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2800 (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
2801 (> (window-start) (point-max)))
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2802 (set-window-start (selected-window) (point)))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2803 (let* ((case-fold-search t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2804 (virtual-end (save-excursion
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2805 (goto-char (point-min))
34182
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2806 (if (and Info-scroll-prefer-subnodes
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2807 (search-forward "\n* Menu:" nil t))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2808 (point)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2809 (point-max)))))
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2810 (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
2811 (pos-visible-in-window-p virtual-end))
34182
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2812 (cond
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2813 (Info-scroll-prefer-subnodes (Info-next-preorder))
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2814 ((Info-no-error (Info-goto-node (Info-extract-menu-counting 1))))
3f2ee9f3d8bf (Info-scroll-prefer-subnodes): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 33621
diff changeset
2815 (t (Info-next-preorder)))
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2816 (scroll-up))))
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2817
77453
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2818 (defun Info-mouse-scroll-up (e)
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2819 "Scroll one screenful forward in Info, using the mouse.
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2820 See `Info-scroll-up'."
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2821 (interactive "e")
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2822 (save-selected-window
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2823 (if (eventp e)
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2824 (select-window (posn-window (event-start e))))
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2825 (Info-scroll-up)))
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2826
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2827 (defun Info-scroll-down ()
9222
b18f51df31b3 (Info-scroll-down, Info-scroll-up): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 8913
diff changeset
2828 "Scroll one screenful back in Info, considering all nodes as one sequence.
34468
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2829 If point is within the menu of a node, and `Info-scroll-prefer-subnodes'
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2830 is non-nil, this goes to its last subnode. When you scroll past the
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2831 beginning of a node, that goes to the previous node or back up to the
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2832 parent node."
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2833 (interactive)
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2834 (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
2835 (> (window-start) (point-max)))
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2836 (set-window-start (selected-window) (point)))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2837 (let* ((case-fold-search t)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
2838 (current-point (point))
34468
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2839 (virtual-end
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2840 (and Info-scroll-prefer-subnodes
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2841 (save-excursion
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2842 (beginning-of-line)
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2843 (setq current-point (point))
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2844 (goto-char (point-min))
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2845 (search-forward "\n* Menu:"
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2846 current-point
7ae9e37868e6 (Info-last-preorder): Don't barf on nodes without a prev.
Miles Bader <miles@gnu.org>
parents: 34182
diff changeset
2847 t)))))
47794
c460856d1bfd (Info-next-menu-item, Info-last-menu-item)
John Paul Wallington <jpw@pobox.com>
parents: 47376
diff changeset
2848 (if (or virtual-end
36894
b63c94fafcde (Info-scroll-down): Add missing WINDOW arg for
Gerd Moellmann <gerd@gnu.org>
parents: 36644
diff changeset
2849 (pos-visible-in-window-p (point-min) nil t))
8489
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2850 (Info-last-preorder)
c6088e3005cf (Info-last-menu-item): Fix gross logic errors.
Richard M. Stallman <rms@gnu.org>
parents: 8480
diff changeset
2851 (scroll-down))))
929
27262a6c632a *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 846
diff changeset
2852
77453
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2853 (defun Info-mouse-scroll-down (e)
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2854 "Scroll one screenful backward in Info, using the mouse.
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2855 See `Info-scroll-down'."
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2856 (interactive "e")
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2857 (save-selected-window
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2858 (if (eventp e)
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2859 (select-window (posn-window (event-start e))))
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2860 (Info-scroll-down)))
c33028813e05 (Info-mouse-scroll-up, Info-mouse-scroll-down): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents: 76891
diff changeset
2861
15055
60ff6e57ddbd (Info-next-reference, Info-prev-reference): Add optional
Richard M. Stallman <rms@gnu.org>
parents: 14664
diff changeset
2862 (defun Info-next-reference (&optional recur)
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2863 "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
2864 (interactive)
91746
a93414764441 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 91375
diff changeset
2865 (let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://")
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2866 (old-pt (point))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2867 (case-fold-search t))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2868 (or (eobp) (forward-char 1))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2869 (or (re-search-forward pat nil t)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2870 (progn
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2871 (goto-char (point-min))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2872 (or (re-search-forward pat nil t)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2873 (progn
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2874 (goto-char old-pt)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2875 (error "No cross references in this node")))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2876 (goto-char (or (match-beginning 1) (match-beginning 0)))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2877 (if (looking-at "\\* Menu:")
15055
60ff6e57ddbd (Info-next-reference, Info-prev-reference): Add optional
Richard M. Stallman <rms@gnu.org>
parents: 14664
diff changeset
2878 (if recur
60ff6e57ddbd (Info-next-reference, Info-prev-reference): Add optional
Richard M. Stallman <rms@gnu.org>
parents: 14664
diff changeset
2879 (error "No cross references in this node")
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2880 (Info-next-reference t))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2881 (if (looking-at "^\\* ")
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2882 (forward-char 2)))))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2883
15055
60ff6e57ddbd (Info-next-reference, Info-prev-reference): Add optional
Richard M. Stallman <rms@gnu.org>
parents: 14664
diff changeset
2884 (defun Info-prev-reference (&optional recur)
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2885 "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
2886 (interactive)
91746
a93414764441 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 91375
diff changeset
2887 (let ((pat "\\*note[ \n\t]+\\([^:]+\\):\\|^\\* .*:\\|[hf]t?tps?://")
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2888 (old-pt (point))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
2889 (case-fold-search t))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2890 (or (re-search-backward pat nil t)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2891 (progn
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2892 (goto-char (point-max))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2893 (or (re-search-backward pat nil t)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2894 (progn
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2895 (goto-char old-pt)
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2896 (error "No cross references in this node")))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
2897 (goto-char (or (match-beginning 1) (match-beginning 0)))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
2898 (if (looking-at "\\* Menu:")
15055
60ff6e57ddbd (Info-next-reference, Info-prev-reference): Add optional
Richard M. Stallman <rms@gnu.org>
parents: 14664
diff changeset
2899 (if recur
60ff6e57ddbd (Info-next-reference, Info-prev-reference): Add optional
Richard M. Stallman <rms@gnu.org>
parents: 14664
diff changeset
2900 (error "No cross references in this node")
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2901 (Info-prev-reference t))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2902 (if (looking-at "^\\* ")
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
2903 (forward-char 2)))))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2904
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2905 (defvar Info-index-nodes nil
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2906 "Alist of cached index node names of visited Info files.
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2907 Each element has the form (INFO-FILE INDEX-NODE-NAMES-LIST).")
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2908
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2909 (defun Info-index-nodes (&optional file)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2910 "Return a list of names of all index nodes in Info FILE.
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2911 If FILE is omitted, it defaults to the current Info file.
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2912 First look in a list of cached index node names. Then scan Info
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2913 file and its subfiles for nodes with the index cookie. Then try
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2914 to find index nodes starting from the first node in the top level
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2915 menu whose name contains the word \"Index\", plus any immediately
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2916 following nodes whose names also contain the word \"Index\"."
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2917 (or file (setq file Info-current-file))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2918 (or (assoc file Info-index-nodes)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2919 ;; Skip virtual Info files
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
2920 (and (or (not (stringp file))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2921 (Info-virtual-file-p file))
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2922 (setq Info-index-nodes (cons (cons file nil) Info-index-nodes)))
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
2923 (if (Info-file-supports-index-cookies file)
66602
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2924 ;; Find nodes with index cookie
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2925 (let* ((default-directory (or (and (stringp file)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2926 (file-name-directory
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2927 (setq file (Info-find-file file))))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2928 default-directory))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2929 Info-history Info-history-list Info-fontify-maximum-menu-size
105674
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2930 (main-file file) subfiles nodes)
66602
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2931 (condition-case nil
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2932 (with-temp-buffer
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2933 (while (or main-file subfiles)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2934 (erase-buffer)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2935 (info-insert-file-contents (or main-file (car subfiles)))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2936 (goto-char (point-min))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2937 (while (search-forward "\0\b[index\0\b]" nil 'move)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2938 (save-excursion
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2939 (re-search-backward "^\^_")
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2940 (search-forward "Node: ")
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2941 (setq nodes (cons (Info-following-node-name) nodes))))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2942 (if main-file
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2943 (save-excursion
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2944 (goto-char (point-min))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2945 (if (search-forward "\n\^_\nIndirect:" nil t)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2946 (let ((bound (save-excursion (search-forward "\n\^_" nil t))))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2947 (while (re-search-forward "^\\(.*\\): [0-9]+$" bound t)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2948 (setq subfiles (cons (match-string-no-properties 1)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2949 subfiles)))))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2950 (setq subfiles (nreverse subfiles)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2951 main-file nil))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2952 (setq subfiles (cdr subfiles)))))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2953 (error nil))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2954 (if nodes
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2955 (setq nodes (nreverse nodes)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2956 Info-index-nodes (cons (cons file nodes) Info-index-nodes)))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2957 nodes)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2958 ;; Else find nodes with the word "Index" in the node name
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2959 (let ((case-fold-search t)
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
2960 Info-history Info-history-list Info-fontify-maximum-menu-size Info-point-loc
66602
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2961 nodes node)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2962 (condition-case nil
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2963 (with-temp-buffer
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2964 (Info-mode)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2965 (Info-find-node file "Top")
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2966 (when (and (search-forward "\n* menu:" nil t)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2967 (re-search-forward "\n\\* \\(.*\\<Index\\>\\)" nil t))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2968 (goto-char (match-beginning 1))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2969 (setq nodes (list (Info-extract-menu-node-name)))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2970 (Info-goto-node (car nodes))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2971 (while (and (setq node (Info-extract-pointer "next" t))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2972 (string-match "\\<Index\\>" node))
105674
a5942def89eb * info.el (Info-complete-menu-item): Handle `boundaries' explicitly.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105673
diff changeset
2973 (push node nodes)
66602
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2974 (Info-goto-node node))))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2975 (error nil))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2976 (if nodes
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2977 (setq nodes (nreverse nodes)
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2978 Info-index-nodes (cons (cons file nodes) Info-index-nodes)))
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
2979 nodes))
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2980 ;; If file has no index nodes, still add it to the cache
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2981 (setq Info-index-nodes (cons (cons file nil) Info-index-nodes)))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2982 (cdr (assoc file Info-index-nodes)))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2983
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2984 (defun Info-index-node (&optional node file)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2985 "Return non-nil value if NODE is an index node.
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2986 If NODE is nil, check the current Info node.
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
2987 If FILE is nil, check the current Info file."
98850
8870254fa09e * info.el (Info-file-supports-index-cookies-list): New variable.
Juri Linkov <juri@jurta.org>
parents: 98847
diff changeset
2988 (or file (setq file Info-current-file))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2989 (if (and (or (and node (not (equal node Info-current-node)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2990 (assoc file Info-index-nodes))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2991 (not Info-current-node-virtual))
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2992 (member (or node Info-current-node) (Info-index-nodes file))
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2993 ;; Don't search all index nodes if request is only for the current node
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
2994 ;; and file is not in the cache of index nodes
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2995 (save-match-data
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2996 (if (Info-file-supports-index-cookies file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2997 (save-excursion
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2998 (goto-char (+ (or (save-excursion
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
2999 (search-backward "\n\^_" nil t))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3000 (point-min)) 2))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3001 (search-forward "\0\b[index\0\b]"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3002 (or (save-excursion
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3003 (search-forward "\n\^_" nil t))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3004 (point-max)) t))
66602
f1d7e489a526 (Info-file-supports-index-cookies): New variable.
Juri Linkov <juri@jurta.org>
parents: 66459
diff changeset
3005 (string-match "\\<Index\\>" (or node Info-current-node ""))))))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
3006
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3007 (defun Info-goto-index ()
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3008 "Go to the first index node."
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3009 (let ((node (car (Info-index-nodes))))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3010 (or node (error "No index"))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3011 (Info-goto-node node)))
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3012
51283
956ab3f2a864 (Info-index): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 50707
diff changeset
3013 ;;;###autoload
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
3014 (defun Info-index (topic)
68609
303bb77ca438 (Info-index, Info-mode): Improve the description of the `i' command.
Eli Zaretskii <eliz@gnu.org>
parents: 68342
diff changeset
3015 "Look up a string TOPIC in the index for this manual and go to that entry.
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
3016 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
3017 the first match which is a case-insensitive substring of a topic.
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
3018 Use the \\<Info-mode-map>\\[Info-index-next] command to see the other matches.
68609
303bb77ca438 (Info-index, Info-mode): Improve the description of the `i' command.
Eli Zaretskii <eliz@gnu.org>
parents: 68342
diff changeset
3019 Give an empty topic name to go to the Index node itself."
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3020 (interactive
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3021 (list
72698
b74e908df972 * info.el (Info-index): Bind completion-ignore-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 72320
diff changeset
3022 (let ((completion-ignore-case t)
b74e908df972 * info.el (Info-index): Bind completion-ignore-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 72320
diff changeset
3023 (Info-complete-menu-buffer (clone-buffer))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3024 (Info-complete-nodes (Info-index-nodes))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3025 (Info-history-list nil))
46104
ee6975afddef (Info-index): Get immediate error if used in `dir'.
Richard M. Stallman <rms@gnu.org>
parents: 46029
diff changeset
3026 (if (equal Info-current-file "dir")
ee6975afddef (Info-index): Get immediate error if used in `dir'.
Richard M. Stallman <rms@gnu.org>
parents: 46029
diff changeset
3027 (error "The Info directory node has no index; use m to select a manual"))
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3028 (unwind-protect
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3029 (with-current-buffer Info-complete-menu-buffer
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3030 (Info-goto-index)
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3031 (completing-read "Index topic: " 'Info-complete-menu-item))
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3032 (kill-buffer Info-complete-menu-buffer)))))
46104
ee6975afddef (Info-index): Get immediate error if used in `dir'.
Richard M. Stallman <rms@gnu.org>
parents: 46029
diff changeset
3033 (if (equal Info-current-file "dir")
ee6975afddef (Info-index): Get immediate error if used in `dir'.
Richard M. Stallman <rms@gnu.org>
parents: 46029
diff changeset
3034 (error "The Info directory node has no index; use m to select a manual"))
74471
2584fedc2373 (Info-index): Strip leading colon from topic.
Kim F. Storm <storm@cua.dk>
parents: 72698
diff changeset
3035 ;; Strip leading colon in topic; index format does not allow them.
2584fedc2373 (Info-index): Strip leading colon from topic.
Kim F. Storm <storm@cua.dk>
parents: 72698
diff changeset
3036 (if (and (stringp topic)
2584fedc2373 (Info-index): Strip leading colon from topic.
Kim F. Storm <storm@cua.dk>
parents: 72698
diff changeset
3037 (> (length topic) 0)
2584fedc2373 (Info-index): Strip leading colon from topic.
Kim F. Storm <storm@cua.dk>
parents: 72698
diff changeset
3038 (= (aref topic 0) ?:))
2584fedc2373 (Info-index): Strip leading colon from topic.
Kim F. Storm <storm@cua.dk>
parents: 72698
diff changeset
3039 (setq topic (substring topic 1)))
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
3040 (let ((orignode Info-current-node)
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
3041 (pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]*\\)\\.\\(?:[ \t\n]*(line +\\([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
3042 (regexp-quote topic)))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3043 node (nodes (Info-index-nodes))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3044 (ohist-list Info-history-list)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3045 (case-fold-search t))
41691
3317b62de647 (Info-goto-index): One register one step in the history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41690
diff changeset
3046 (Info-goto-index)
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
3047 (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
3048 (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
3049 (exact nil)
41691
3317b62de647 (Info-goto-index): One register one step in the history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41690
diff changeset
3050 ;; We bind Info-history to nil for internal node-switches so
3317b62de647 (Info-goto-index): One register one step in the history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41690
diff changeset
3051 ;; that we don't put junk in the history. In the first
3317b62de647 (Info-goto-index): One register one step in the history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41690
diff changeset
3052 ;; Info-goto-index call, above, we do update the history
3317b62de647 (Info-goto-index): One register one step in the history.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41690
diff changeset
3053 ;; because that is what the user's previous node choice into it.
10758
a66a29e6efc9 (Info-index): Bind Info-history, not Info-keep-history.
Richard M. Stallman <rms@gnu.org>
parents: 10061
diff changeset
3054 (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
3055 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
3056 (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
3057 (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
3058 (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
3059 (while (re-search-forward pattern nil t)
31942
55dd93c0d728 (Info-extract-pointer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31798
diff changeset
3060 (push (list (match-string-no-properties 1)
55dd93c0d728 (Info-extract-pointer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31798
diff changeset
3061 (match-string-no-properties 2)
55dd93c0d728 (Info-extract-pointer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31798
diff changeset
3062 Info-current-node
47794
c460856d1bfd (Info-next-menu-item, Info-last-menu-item)
John Paul Wallington <jpw@pobox.com>
parents: 47376
diff changeset
3063 (string-to-number (concat "0"
c460856d1bfd (Info-next-menu-item, Info-last-menu-item)
John Paul Wallington <jpw@pobox.com>
parents: 47376
diff changeset
3064 (match-string 3))))
31942
55dd93c0d728 (Info-extract-pointer):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31798
diff changeset
3065 matches))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3066 (setq nodes (cdr nodes) node (car nodes)))
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
3067 (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
3068 (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
3069 (progn
14664
f77b58df548c (Info-index): If fail, go back to original node.
Richard M. Stallman <rms@gnu.org>
parents: 14577
diff changeset
3070 (Info-goto-node orignode)
14560
b0df80fef82c (Info-find-index-name): New subroutine, from Info-index-next.
Richard M. Stallman <rms@gnu.org>
parents: 14529
diff changeset
3071 (error "No `%s' in index" topic)))
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
3072 ;; 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
3073 (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
3074 (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
3075 matches (delq found matches)))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3076 (setq Info-history-list ohist-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
3077 (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
3078 (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
3079
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
3080 (defun Info-index-next (num)
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
3081 "Go to the next matching index item from the last \\<Info-mode-map>\\[Info-index] command."
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
3082 (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
3083 (or Info-index-alternatives
16790
3663fc0c2036 (Info-find-node): Don't clear Info-index-alternatives.
Richard M. Stallman <rms@gnu.org>
parents: 16672
diff changeset
3084 (error "No previous `i' command"))
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
3085 (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
3086 (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
3087 (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
3088 (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
3089 (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
3090 (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
3091 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
3092 (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
3093 (if (> (nth 3 (car Info-index-alternatives)) 0)
107333
ef2a56409ad3 Add a comment for the previous commit.
Juri Linkov <juri@jurta.org>
parents: 107322
diff changeset
3094 ;; Forward 2 lines less because `Info-find-node-2' initially
ef2a56409ad3 Add a comment for the previous commit.
Juri Linkov <juri@jurta.org>
parents: 107322
diff changeset
3095 ;; puts point to the 2nd line.
107322
f220632d1439 * info.el (Info-index-next): Decrement line number by 2. (Bug#5652)
Juri Linkov <juri@jurta.org>
parents: 107126
diff changeset
3096 (forward-line (- (nth 3 (car Info-index-alternatives)) 2))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
3097 (forward-line 3) ; don't search in headers
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
3098 (let ((name (car (car Info-index-alternatives))))
14560
b0df80fef82c (Info-find-index-name): New subroutine, from Info-index-next.
Richard M. Stallman <rms@gnu.org>
parents: 14529
diff changeset
3099 (Info-find-index-name name)))
b0df80fef82c (Info-find-index-name): New subroutine, from Info-index-next.
Richard M. Stallman <rms@gnu.org>
parents: 14529
diff changeset
3100 (message "Found `%s' in %s. %s"
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
3101 (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
3102 (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
3103 (if (cdr Info-index-alternatives)
70973
4477a2e46659 (Info-index-next): Use where-is-internal to report actual binding of
Eli Zaretskii <eliz@gnu.org>
parents: 70791
diff changeset
3104 (format "(%s total; use `%s' for next)"
4477a2e46659 (Info-index-next): Use where-is-internal to report actual binding of
Eli Zaretskii <eliz@gnu.org>
parents: 70791
diff changeset
3105 (length Info-index-alternatives)
4477a2e46659 (Info-index-next): Use where-is-internal to report actual binding of
Eli Zaretskii <eliz@gnu.org>
parents: 70791
diff changeset
3106 (key-description (where-is-internal
4477a2e46659 (Info-index-next): Use where-is-internal to report actual binding of
Eli Zaretskii <eliz@gnu.org>
parents: 70791
diff changeset
3107 'Info-index-next overriding-local-map
4477a2e46659 (Info-index-next): Use where-is-internal to report actual binding of
Eli Zaretskii <eliz@gnu.org>
parents: 70791
diff changeset
3108 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
3109 "(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
3110
14560
b0df80fef82c (Info-find-index-name): New subroutine, from Info-index-next.
Richard M. Stallman <rms@gnu.org>
parents: 14529
diff changeset
3111 (defun Info-find-index-name (name)
b0df80fef82c (Info-find-index-name): New subroutine, from Info-index-next.
Richard M. Stallman <rms@gnu.org>
parents: 14529
diff changeset
3112 "Move point to the place within the current node where NAME is defined."
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3113 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3114 (if (or (re-search-forward (format
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3115 "[a-zA-Z]+: %s\\( \\|$\\)"
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3116 (regexp-quote name)) nil t)
46691
ac544e207278 (Info-find-index-name): Search for a function definition with a return type.
Richard M. Stallman <rms@gnu.org>
parents: 46326
diff changeset
3117 ;; Find a function definition with a return type.
ac544e207278 (Info-find-index-name): Search for a function definition with a return type.
Richard M. Stallman <rms@gnu.org>
parents: 46326
diff changeset
3118 (re-search-forward (format
46714
bebf069404ac (Info-find-index-name): Improve last change.
Richard M. Stallman <rms@gnu.org>
parents: 46691
diff changeset
3119 "[a-zA-Z]+: [a-zA-Z0-9_ *&]+ %s\\( \\|$\\)"
46691
ac544e207278 (Info-find-index-name): Search for a function definition with a return type.
Richard M. Stallman <rms@gnu.org>
parents: 46326
diff changeset
3120 (regexp-quote name)) nil t)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3121 (search-forward (format "`%s'" name) nil t)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3122 (and (string-match "\\`.*\\( (.*)\\)\\'" name)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3123 (search-forward
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3124 (format "`%s'" (substring name 0 (match-beginning 1)))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3125 nil t))
52648
928f0fb38bfa (Info-find-index-name): Search both with and without the " <1>" etc.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
3126 (search-forward name nil t)
928f0fb38bfa (Info-find-index-name): Search both with and without the " <1>" etc.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
3127 ;; Try again without the " <1>" makeinfo can append
928f0fb38bfa (Info-find-index-name): Search both with and without the " <1>" etc.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
3128 (and (string-match "\\`\\(.*\\) <[0-9]+>\\'" name)
928f0fb38bfa (Info-find-index-name): Search both with and without the " <1>" etc.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
3129 (Info-find-index-name (match-string 1 name))))
928f0fb38bfa (Info-find-index-name): Search both with and without the " <1>" etc.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
3130 (progn (beginning-of-line) t) ;; non-nil for recursive call
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3131 (goto-char (point-min)))))
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3132
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3133 (add-to-list 'Info-virtual-nodes
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3134 '("\\`\\*Index.*\\*\\'"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3135 (find-node . Info-virtual-index-find-node)
108247
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
3136 (slow . t)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3137 ))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3138
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3139 (defvar Info-virtual-index-nodes nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3140 "Alist of cached matched index search nodes.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3141 Each element is ((FILENAME . TOPIC) MATCHES) where
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3142 FILENAME is the file name of the manual,
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3143 TOPIC is the search string given as an argument to `Info-virtual-index',
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3144 MATCHES is a list of index matches found by `Info-index'.")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3145
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3146 (defun Info-virtual-index-find-node (filename nodename &optional no-going-back)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3147 "Index-specific implementation of Info-find-node-2."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3148 ;; Generate Index-like menu of matches
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3149 (if (string-match "^\\*Index for `\\(.+\\)'\\*$" nodename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3150 ;; Generate Index-like menu of matches
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3151 (let* ((topic (match-string 1 nodename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3152 (matches (cdr (assoc (cons (or filename Info-current-file) topic)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3153 Info-virtual-index-nodes))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3154 (insert (format "\n\^_\nFile: %s, Node: %s, Up: *Index*\n\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3155 (or filename Info-current-file) nodename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3156 (insert "Info Virtual Index\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3157 (insert "******************\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3158 (insert "Index entries that match `" topic "':\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3159 (insert "\0\b[index\0\b]\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3160 (if (null matches)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3161 (insert "No matches found.\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3162 (insert "* Menu:\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3163 (dolist (entry matches)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3164 (insert (format "* %-38s %s.%s\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3165 (format "%s [%s]:" (nth 0 entry) (nth 2 entry))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3166 (nth 1 entry)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3167 (if (nth 3 entry)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3168 (format " (line %s)" (nth 3 entry))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3169 ""))))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3170 ;; Else, Generate a list of previous search results
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3171 (let ((nodes (reverse Info-virtual-index-nodes)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3172 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3173 (or filename Info-current-file) nodename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3174 (insert "Info Virtual Index\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3175 (insert "******************\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3176 (insert "This is a list of search results produced by\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3177 "`Info-virtual-index' for the current manual.\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3178 (insert "* Menu:\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3179 (dolist (nodeinfo nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3180 (when (equal (car (nth 0 nodeinfo)) (or filename Info-current-file))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3181 (insert
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3182 (format "* %-20s %s.\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3183 (format "*Index for `%s'*::" (cdr (nth 0 nodeinfo)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3184 (cdr (nth 0 nodeinfo)))))))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3185
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3186 (defun Info-virtual-index (topic)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3187 "Show a node with all lines in the index containing a string TOPIC.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3188 Like `Info-index' but displays a node with index search results.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3189 Give an empty topic name to go to the node with links to previous
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3190 search results."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3191 ;; `interactive' is a copy from `Info-index'
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3192 (interactive
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3193 (list
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3194 (let ((completion-ignore-case t)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3195 (Info-complete-menu-buffer (clone-buffer))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3196 (Info-complete-nodes (Info-index-nodes))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3197 (Info-history-list nil))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3198 (if (equal Info-current-file "dir")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3199 (error "The Info directory node has no index; use m to select a manual"))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3200 (unwind-protect
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3201 (with-current-buffer Info-complete-menu-buffer
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3202 (Info-goto-index)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3203 (completing-read "Index topic: " 'Info-complete-menu-item))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3204 (kill-buffer Info-complete-menu-buffer)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3205 (if (equal topic "")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3206 (Info-find-node Info-current-file "*Index*")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3207 (unless (assoc (cons Info-current-file topic) Info-virtual-index-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3208 (let ((orignode Info-current-node)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3209 (ohist-list Info-history-list)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3210 nodename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3211 ;; Reuse `Info-index' to set `Info-index-alternatives'.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3212 (Info-index topic)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3213 (push (cons (cons Info-current-file topic) Info-index-alternatives)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3214 Info-virtual-index-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3215 ;; Clean up unneccessary side-effects of `Info-index'.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3216 (setq Info-history-list ohist-list)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3217 (Info-goto-node orignode)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3218 (message "")))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3219 (Info-find-node Info-current-file (format "*Index for `%s'*" topic))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3220
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3221 (add-to-list 'Info-virtual-files
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3222 '("\\`\\*Apropos\\*\\'"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3223 (toc-nodes . Info-apropos-toc-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3224 (find-file . Info-apropos-find-file)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3225 (find-node . Info-apropos-find-node)
108247
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
3226 (slow . t)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3227 ))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3228
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3229 (defvar Info-apropos-file "*Apropos*"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3230 "Info file name of the virtual manual for matches of `info-apropos'.")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3231
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3232 (defvar Info-apropos-nodes nil
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3233 "Alist of cached apropos matched nodes.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3234 Each element is (NODENAME STRING MATCHES) where
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3235 NODENAME is the name of the node that holds the search result,
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3236 STRING is the search string given as an argument to `info-apropos',
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3237 MATCHES is a list of index matches found by `Info-apropos-matches'.")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3238
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3239 (defun Info-apropos-toc-nodes (filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3240 "Apropos-specific implementation of Info-apropos-toc-nodes."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3241 (let ((nodes (mapcar 'car (reverse Info-apropos-nodes))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3242 `(,filename
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3243 ("Top" nil nil ,nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3244 ,@(mapcar (lambda (node) `(,node "Top" nil nil)) nodes))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3245
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3246 (defun Info-apropos-find-file (filename &optional noerror)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3247 "Apropos-specific implementation of Info-find-file."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3248 filename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3249
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3250 (defun Info-apropos-find-node (filename nodename &optional no-going-back)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3251 "Apropos-specific implementation of Info-find-node-2."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3252 (if (equal nodename "Top")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3253 ;; Generate Top menu
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3254 (let ((nodes (reverse Info-apropos-nodes)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3255 (insert (format "\n\^_\nFile: %s, Node: %s, Up: (dir)\n\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3256 Info-apropos-file nodename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3257 (insert "Apropos Index\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3258 (insert "*************\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3259 (insert "This is a list of search results produced by `info-apropos'.\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3260 (insert "* Menu:\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3261 (dolist (nodeinfo nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3262 (insert (format "* %-20s %s.\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3263 (format "%s::" (nth 0 nodeinfo))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3264 (nth 1 nodeinfo)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3265 ;; Else, Generate Index-like menu of matches
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3266 (let* ((nodeinfo (assoc nodename Info-apropos-nodes))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3267 (matches (nth 2 nodeinfo)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3268 (when matches
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3269 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3270 Info-apropos-file nodename))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3271 (insert "Apropos Index\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3272 (insert "*************\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3273 (insert "Index entries that match `" (nth 1 nodeinfo) "':\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3274 (insert "\0\b[index\0\b]\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3275 (if (eq matches t)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3276 (insert "No matches found.\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3277 (insert "* Menu:\n\n")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3278 (dolist (entry matches)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3279 (insert (format "* %-38s (%s)%s.%s\n"
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3280 (format "%s [%s]:" (nth 1 entry) (nth 0 entry))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3281 (nth 0 entry)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3282 (nth 2 entry)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3283 (if (nth 3 entry)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3284 (format " (line %s)" (nth 3 entry))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3285 "")))))))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3286
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3287 (defun Info-apropos-matches (string)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3288 "Collect STRING matches from all known Info files on your system.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3289 Return a list of matches where each element is in the format
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3290 \((FILENAME INDEXTEXT NODENAME LINENUMBER))."
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3291 (interactive "sIndex apropos: ")
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3292 (unless (string= string "")
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
3293 (let ((pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]+\\)\\.\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3294 (regexp-quote string)))
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3295 (ohist Info-history)
54865
50d070a98492 (info-apropos): Don't clobber Info-history-list.
Jesper Harder <harder@ifa.au.dk>
parents: 54809
diff changeset
3296 (ohist-list Info-history-list)
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3297 (current-node Info-current-node)
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3298 (current-file Info-current-file)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3299 manuals matches node nodes)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3300 (let ((Info-fontify-maximum-menu-size nil))
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3301 (Info-directory)
70789
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3302 ;; current-node and current-file are nil when they invoke info-apropos
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3303 ;; as the first Info command, i.e. info-apropos loads info.el. In that
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3304 ;; case, we use (DIR)Top instead, to avoid signalling an error after
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3305 ;; the search is complete.
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3306 (when (null current-node)
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3307 (setq current-file Info-current-file)
ab54c05cde25 (info-apropos): Make sure current-file and current-node have non-nil values.
Eli Zaretskii <eliz@gnu.org>
parents: 69858
diff changeset
3308 (setq current-node Info-current-node))
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3309 (message "Searching indices...")
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3310 (goto-char (point-min))
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3311 (re-search-forward "\\* Menu: *\n" nil t)
54765
3129d46cd5b6 (info-apropos): Improve menu item regexp.
Jesper Harder <harder@ifa.au.dk>
parents: 54754
diff changeset
3312 (while (re-search-forward "\\*.*: *(\\([^)]+\\))" nil t)
70791
e8009af8c1e1 (info-apropos): Speed up by using add-to-list instead of manual consing.
Eli Zaretskii <eliz@gnu.org>
parents: 70789
diff changeset
3313 ;; add-to-list makes sure we don't have duplicates in `manuals',
e8009af8c1e1 (info-apropos): Speed up by using add-to-list instead of manual consing.
Eli Zaretskii <eliz@gnu.org>
parents: 70789
diff changeset
3314 ;; so that the following dolist loop runs faster.
e8009af8c1e1 (info-apropos): Speed up by using add-to-list instead of manual consing.
Eli Zaretskii <eliz@gnu.org>
parents: 70789
diff changeset
3315 (add-to-list 'manuals (match-string 1)))
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3316 (dolist (manual (nreverse manuals))
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3317 (message "Searching %s" manual)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3318 (condition-case err
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3319 (if (setq nodes (Info-index-nodes (Info-find-file manual)))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3320 (save-excursion
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3321 (Info-find-node manual (car nodes))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3322 (while
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3323 (progn
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3324 (goto-char (point-min))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3325 (while (re-search-forward pattern nil t)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3326 (setq matches
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3327 (cons (list manual
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3328 (match-string-no-properties 1)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3329 (match-string-no-properties 2)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3330 (match-string-no-properties 3))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3331 matches)))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3332 (setq nodes (cdr nodes) node (car nodes)))
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3333 (Info-goto-node node))))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3334 (error
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3335 (message "%s" (if (eq (car-safe err) 'error)
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3336 (nth 1 err) err))
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3337 (sit-for 1 t)))))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
3338 (Info-find-node current-file current-node)
54865
50d070a98492 (info-apropos): Don't clobber Info-history-list.
Jesper Harder <harder@ifa.au.dk>
parents: 54809
diff changeset
3339 (setq Info-history ohist
50d070a98492 (info-apropos): Don't clobber Info-history-list.
Jesper Harder <harder@ifa.au.dk>
parents: 54809
diff changeset
3340 Info-history-list ohist-list)
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3341 (message "Searching indices...done")
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3342 (or (nreverse matches) t))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3343
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3344 ;;;###autoload
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3345 (defun info-apropos (string)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3346 "Grovel indices of all known Info files on your system for STRING.
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3347 Build a menu of the possible matches."
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3348 (interactive "sIndex apropos: ")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3349 (if (equal string "")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3350 (Info-find-node Info-apropos-file "Top")
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3351 (let* ((nodes Info-apropos-nodes) nodename)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3352 (while (and nodes (not (equal string (nth 1 (car nodes)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3353 (setq nodes (cdr nodes)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3354 (if nodes
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3355 (Info-find-node Info-apropos-file (car (car nodes)))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3356 (setq nodename (format "Index for `%s'" string))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3357 (push (list nodename string (Info-apropos-matches string))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3358 Info-apropos-nodes)
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3359 (Info-find-node Info-apropos-file nodename)))))
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3360
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3361 (add-to-list 'Info-virtual-files
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3362 '("\\`\\*Finder.*\\*\\'"
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3363 (find-file . Info-finder-find-file)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3364 (find-node . Info-finder-find-node)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3365 ))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3366
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3367 (defvar Info-finder-file "*Finder*"
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3368 "Info file name of the virtual Info keyword finder manual.")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3369
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3370 (defun Info-finder-find-file (filename &optional noerror)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3371 "Finder-specific implementation of Info-find-file."
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3372 filename)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3373
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3374 (defvar finder-known-keywords)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3375 (declare-function find-library-name "find-func" (library))
107391
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3376 (declare-function finder-unknown-keywords "finder" ())
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3377 (declare-function lm-commentary "lisp-mnt" (&optional file))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3378
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3379 (defun Info-finder-find-node (filename nodename &optional no-going-back)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3380 "Finder-specific implementation of Info-find-node-2."
108247
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
3381 (require 'finder)
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3382 (cond
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3383 ((equal nodename "Top")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3384 ;; Display Top menu with descriptions of the keywords
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3385 (insert (format "\n\^_\nFile: %s, Node: %s, Up: (dir)\n\n"
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3386 Info-finder-file nodename))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3387 (insert "Finder Keywords\n")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3388 (insert "***************\n\n")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3389 (insert "* Menu:\n\n")
110017
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3390 (dolist (assoc (append '((all . "All package info")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3391 (unknown . "unknown keywords"))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3392 finder-known-keywords))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3393 (let ((keyword (car assoc)))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3394 (insert (format "* %s %s.\n"
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3395 (concat (symbol-name keyword) ": "
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3396 "kw:" (symbol-name keyword) ".")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3397 (cdr assoc))))))
107391
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3398 ((equal nodename "unknown")
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3399 ;; Display unknown keywords
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3400 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3401 Info-finder-file nodename))
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3402 (insert "Finder Unknown Keywords\n")
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3403 (insert "***********************\n\n")
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3404 (insert "* Menu:\n\n")
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3405 (mapc
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3406 (lambda (assoc)
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3407 (insert (format "* %-14s %s.\n"
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3408 (concat (symbol-name (car assoc)) "::")
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3409 (cdr assoc))))
78dd74750b2b Add finder unknown keywords.
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3410 (finder-unknown-keywords)))
107467
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3411 ((equal nodename "all")
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3412 ;; Display all package info.
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3413 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3414 Info-finder-file nodename))
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3415 (insert "Finder Package Info\n")
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3416 (insert "*******************\n\n")
110017
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3417 (dolist (package package-alist)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3418 (insert (format "%s - %s\n"
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3419 (format "*Note %s::" (nth 0 package))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3420 (nth 1 package)))))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3421 ((string-match "\\`kw:" nodename)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3422 (setq nodename (substring nodename (match-end 0)))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3423 ;; Display packages that match the keyword
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3424 ;; or the list of keywords separated by comma.
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3425 (insert (format "\n\^_\nFile: %s, Node: kw:%s, Up: Top\n\n"
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3426 Info-finder-file nodename))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3427 (insert "Finder Packages\n")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3428 (insert "***************\n\n")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3429 (insert
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3430 "The following packages match the keyword `" nodename "':\n\n")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3431 (insert "* Menu:\n\n")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3432 (let ((keywords
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3433 (mapcar 'intern (if (string-match-p "," nodename)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3434 (split-string nodename ",[ \t\n]*" t)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3435 (list nodename))))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3436 hits desc)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3437 (dolist (kw keywords)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3438 (push (copy-tree (gethash kw finder-keywords-hash)) hits))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3439 (setq hits (delete-dups (apply 'append hits)))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3440 (dolist (package hits)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3441 (setq desc (cdr-safe (assq package package-alist)))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3442 (when (vectorp desc)
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3443 (insert (format "* %-16s %s.\n"
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3444 (concat (symbol-name package) "::")
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3445 (aref desc 2)))))))
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3446 (t
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3447 ;; Display commentary section
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3448 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3449 Info-finder-file nodename))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3450 (insert "Finder Commentary\n")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3451 (insert "*****************\n\n")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3452 (insert
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3453 "Commentary section of the package `" nodename "':\n\n")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3454 (let ((str (lm-commentary (find-library-name nodename))))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3455 (if (null str)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3456 (insert "Can't find any Commentary section\n\n")
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3457 (insert
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3458 (with-temp-buffer
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3459 (insert str)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3460 (goto-char (point-min))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3461 (delete-blank-lines)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3462 (goto-char (point-max))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3463 (delete-blank-lines)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3464 (goto-char (point-min))
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3465 (while (re-search-forward "^;+ ?" nil t)
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3466 (replace-match "" nil nil))
110017
10e66ac64b61 Merge Finder and package-menu functionality.
Chong Yidong <cyd@stupidchicken.com>
parents: 109395
diff changeset
3467 (buffer-string))))))))
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3468
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3469 ;;;###autoload
107467
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3470 (defun info-finder (&optional keywords)
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3471 "Display descriptions of the keywords in the Finder virtual manual.
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3472 In interactive use, a prefix argument directs this command to read
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3473 a list of keywords separated by comma. After that, it displays a node
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3474 with a list packages that contain all specified keywords."
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3475 (interactive
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3476 (when current-prefix-arg
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3477 (require 'finder)
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3478 (list
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3479 (completing-read-multiple
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3480 "Keywords (separated by comma): "
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3481 (mapcar 'symbol-name (mapcar 'car (append finder-known-keywords
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3482 (finder-unknown-keywords))))
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3483 nil t))))
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3484 (require 'finder)
107467
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3485 (if keywords
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3486 (Info-find-node Info-finder-file (mapconcat 'identity keywords ", "))
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3487 (Info-find-node Info-finder-file "Top")))
f0ec21d379ff * finder.el: Remove TODO tasks.
Juri Linkov <juri@jurta.org>
parents: 107391
diff changeset
3488
103967
e7050deb1cce Virtual Info keyword finder.
Juri Linkov <juri@jurta.org>
parents: 103893
diff changeset
3489
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3490 (defun Info-undefined ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3491 "Make command be undefined in Info."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3492 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3493 (ding))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3494
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3495 (defun Info-help ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3496 "Enter the Info tutorial."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3497 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3498 (delete-other-windows)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3499 (Info-find-node "info"
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3500 (if (< (window-height) 23)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3501 "Help-Small-Screen"
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3502 "Help")))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3503
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3504 (defun Info-summary ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3505 "Display a brief summary of all Info commands."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3506 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3507 (save-window-excursion
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3508 (switch-to-buffer "*Help*")
20910
e46446e4af2d (Info-summary): Clear buffer-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 20755
diff changeset
3509 (setq buffer-read-only nil)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3510 (erase-buffer)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3511 (insert (documentation 'Info-mode))
9852
b3a6fdcd63df (Info-summary): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 9782
diff changeset
3512 (help-mode)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3513 (goto-char (point-min))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3514 (let (ch flag)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3515 (while (progn (setq flag (not (pos-visible-in-window-p (point-max))))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3516 (message (if flag "Type Space to see more"
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3517 "Type Space to return to Info"))
64013
9ee64186bcf1 (info): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63935
diff changeset
3518 (if (not (eq ?\s (setq ch (read-event))))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1667
diff changeset
3519 (progn (setq unread-command-events (list ch)) nil)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3520 flag))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
3521 (scroll-up)))
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
3522 (bury-buffer "*Help*")))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3523
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3524 (defun Info-get-token (pos start all &optional errorstring)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3525 "Return the token around POS.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3526 POS must be somewhere inside the token
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3527 START is a regular expression which will match the
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3528 beginning of the tokens delimited string
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3529 ALL is a regular expression with a single
13990
155a595b6083 (Info-get-token): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13620
diff changeset
3530 parenthesized subpattern which is the token to be
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3531 returned. E.g. '{\(.*\)}' would return any string
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3532 enclosed in braces around POS.
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3533 ERRORSTRING optional fourth argument, controls action on no match
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3534 nil: return nil
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3535 t: beep
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3536 a string: signal an error, using that string."
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3537 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3538 (save-excursion
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3539 (goto-char pos)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3540 ;; First look for a match for START that goes across POS.
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3541 (while (and (not (bobp)) (> (point) (- pos (length start)))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3542 (not (looking-at start)))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3543 (forward-char -1))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3544 ;; If we did not find one, search back for START
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3545 ;; (this finds only matches that end at or before POS).
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3546 (or (looking-at start)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3547 (progn
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3548 (goto-char pos)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3549 (re-search-backward start (max (point-min) (- pos 200)) 'yes)))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3550 (let (found)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3551 (while (and (re-search-forward all (min (point-max) (+ pos 200)) 'yes)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3552 (not (setq found (and (<= (match-beginning 0) pos)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3553 (> (match-end 0) pos))))))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3554 (if (and found (<= (match-beginning 0) pos)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3555 (> (match-end 0) pos))
26580
d779cb4aa2ae (Info-build-node-completions, Info-search, Info-follow-reference)
Dave Love <fx@gnu.org>
parents: 26172
diff changeset
3556 (match-string-no-properties 1)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3557 (cond ((null errorstring)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3558 nil)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3559 ((eq errorstring t)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3560 (beep)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3561 nil)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3562 (t
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3563 (error "No %s around position %d" errorstring pos))))))))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3564
7007
52b0ebfd3191 (Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents: 6716
diff changeset
3565 (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
3566 "\\<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
3567 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
3568 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
3569 (interactive "e")
32500
5f2aedbe47b5 (Info-mouse-follow-nearest-node): Use mouse-set-point.
Dave Love <fx@gnu.org>
parents: 32391
diff changeset
3570 (mouse-set-point click)
98116
10a380ea8509 Stephen Berman <stephen.berman at gmx.net>
Glenn Morris <rgm@gnu.org>
parents: 97976
diff changeset
3571 (and (not (Info-follow-nearest-node))
7007
52b0ebfd3191 (Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents: 6716
diff changeset
3572 (save-excursion (forward-line 1) (eobp))
12156
1620a60ab7ca (Info-mode): Doco fix.
Karl Heuer <kwzh@gnu.org>
parents: 11959
diff changeset
3573 (Info-next-preorder)))
7007
52b0ebfd3191 (Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents: 6716
diff changeset
3574
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3575 (defun Info-follow-nearest-node (&optional fork)
49678
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3576 "Follow a node reference near point.
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3577 If point is on a reference, follow that reference. Otherwise,
69782
ae7fd157df4b doumented for fork in (Info-follow-nearest-node &optional fork)
Ramprasad B <ramprasad_i82@yahoo.com>
parents: 69415
diff changeset
3578 if point is in a menu item description, follow that menu item.
ae7fd157df4b doumented for fork in (Info-follow-nearest-node &optional fork)
Ramprasad B <ramprasad_i82@yahoo.com>
parents: 69415
diff changeset
3579
69858
568a39da33b5 (Info-follow-nearest-node): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 69782
diff changeset
3580 If FORK is non-nil (interactively with a prefix arg), show the node in
69782
ae7fd157df4b doumented for fork in (Info-follow-nearest-node &optional fork)
Ramprasad B <ramprasad_i82@yahoo.com>
parents: 69415
diff changeset
3581 a new Info buffer.
69858
568a39da33b5 (Info-follow-nearest-node): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 69782
diff changeset
3582 If FORK is a string, it is the name to use for the new buffer."
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3583 (interactive "P")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3584 (or (Info-try-follow-nearest-node fork)
49678
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3585 (when (save-excursion
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3586 (search-backward "\n* menu:" nil t))
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3587 (save-excursion
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3588 (beginning-of-line)
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3589 (while (not (or (bobp) (looking-at "[^ \t]\\|[ \t]*$")))
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3590 (beginning-of-line 0))
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3591 (when (looking-at "\\* +\\([^\t\n]*\\):")
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3592 (Info-goto-node
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3593 (Info-extract-menu-item (match-string-no-properties 1)) fork)
49678
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3594 t)))
98203
c792a9e621a1 (Info-follow-nearest-node): Don't raise an error for
Martin Rudalics <rudalics@gmx.at>
parents: 98118
diff changeset
3595 (and (eq this-command 'Info-mouse-follow-nearest-node)
c792a9e621a1 (Info-follow-nearest-node): Don't raise an error for
Martin Rudalics <rudalics@gmx.at>
parents: 98118
diff changeset
3596 ;; Don't raise an error when mouse-1 is bound to this - it's
c792a9e621a1 (Info-follow-nearest-node): Don't raise an error for
Martin Rudalics <rudalics@gmx.at>
parents: 98118
diff changeset
3597 ;; often used to simply select the window or frame.
c792a9e621a1 (Info-follow-nearest-node): Don't raise an error for
Martin Rudalics <rudalics@gmx.at>
parents: 98118
diff changeset
3598 (eq 'mouse-1 (event-basic-type last-input-event)))
49678
0ae2b48491f7 (Info-follow-nearest-node): Implement new behavior.
Juanma Barranquero <lekktu@gmail.com>
parents: 49502
diff changeset
3599 (error "Point neither on reference nor in menu item description")))
7007
52b0ebfd3191 (Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents: 6716
diff changeset
3600
52b0ebfd3191 (Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents: 6716
diff changeset
3601 ;; Common subroutine.
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3602 (defun Info-try-follow-nearest-node (&optional fork)
71853
ede3900365e4 (Info-try-follow-nearest-node): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 71533
diff changeset
3603 "Follow a node reference near point. Return non-nil if successful.
98118
d80a89c22b11 (Info-try-follow-nearest-node): Fix doc typo.
Glenn Morris <rgm@gnu.org>
parents: 98116
diff changeset
3604 If FORK is non-nil, it is passed to `Info-goto-node'."
48135
2c6154347319 (Info-streamline-headings): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48118
diff changeset
3605 (let (node)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3606 (cond
105142
e2af9a73da8d * info.el (Info-try-follow-nearest-node): Use the URL extracted by
Juanma Barranquero <lekktu@gmail.com>
parents: 104791
diff changeset
3607 ((setq node (Info-get-token (point) "[hf]t?tps?://"
e2af9a73da8d * info.el (Info-try-follow-nearest-node): Use the URL extracted by
Juanma Barranquero <lekktu@gmail.com>
parents: 104791
diff changeset
3608 "\\([hf]t?tps?://[^ \t\n\"`({<>})']+\\)"))
e2af9a73da8d * info.el (Info-try-follow-nearest-node): Use the URL extracted by
Juanma Barranquero <lekktu@gmail.com>
parents: 104791
diff changeset
3609 (browse-url node)
e2af9a73da8d * info.el (Info-try-follow-nearest-node): Use the URL extracted by
Juanma Barranquero <lekktu@gmail.com>
parents: 104791
diff changeset
3610 (setq node t))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3611 ((setq node (Info-get-token (point) "\\*note[ \n\t]+"
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3612 "\\*note[ \n\t]+\\([^:]*\\):\\(:\\|[ \n\t]*(\\)?"))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3613 (Info-follow-reference node fork))
49426
7ac32aa920b9 (Info-extract-menu-node-name): When looking for end of
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49424
diff changeset
3614 ;; menu item: node name
21641
1174b1d6cbf6 (Info-menu): Allow extra spaces at start of menu item.
Richard M. Stallman <rms@gnu.org>
parents: 21197
diff changeset
3615 ((setq node (Info-get-token (point) "\\* +" "\\* +\\([^:]*\\)::"))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3616 (Info-goto-node node fork))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
3617 ;; menu item: node name or index entry
49426
7ac32aa920b9 (Info-extract-menu-node-name): When looking for end of
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49424
diff changeset
3618 ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ")
23019
60f63c8a3837 (Info-try-follow-nearest-node): Get the node name
Richard M. Stallman <rms@gnu.org>
parents: 22951
diff changeset
3619 (beginning-of-line)
60f63c8a3837 (Info-try-follow-nearest-node): Get the node name
Richard M. Stallman <rms@gnu.org>
parents: 22951
diff changeset
3620 (forward-char 2)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
3621 (setq node (Info-extract-menu-node-name nil (Info-index-node)))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3622 (Info-goto-node node fork))
3127
dfbada800489 (Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents: 3084
diff changeset
3623 ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)"))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3624 (Info-goto-node node fork))
3127
dfbada800489 (Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents: 3084
diff changeset
3625 ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)"))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3626 (Info-goto-node node fork))
3127
dfbada800489 (Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents: 3084
diff changeset
3627 ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)"))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3628 (Info-goto-node "Top" fork))
3127
dfbada800489 (Info-follow-nearest-node): Omit 4th arg to Info-get-token.
Richard M. Stallman <rms@gnu.org>
parents: 3084
diff changeset
3629 ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)"))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3630 (Info-goto-node node fork)))
7007
52b0ebfd3191 (Info-next-preorder): Don't follow footnotes here.
Karl Heuer <kwzh@gnu.org>
parents: 6716
diff changeset
3631 node))
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3632
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3633 (defun Info-mouse-follow-link (click)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3634 "Follow a link where you click."
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3635 (interactive "e")
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3636 (let* ((position (event-start click))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3637 (posn-string (and position (posn-string position)))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3638 (string (car-safe posn-string))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3639 (string-pos (cdr-safe posn-string))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3640 (link-args (and string string-pos
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3641 (get-text-property string-pos 'link-args string))))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3642 (when link-args
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3643 (Info-goto-node link-args))))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
3644
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3645
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3646 (defvar Info-mode-map
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3647 (let ((map (make-keymap)))
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3648 (suppress-keymap map)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3649 (define-key map "." 'beginning-of-buffer)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3650 (define-key map " " 'Info-scroll-up)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3651 (define-key map "\C-m" 'Info-follow-nearest-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3652 (define-key map "\t" 'Info-next-reference)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3653 (define-key map "\e\t" 'Info-prev-reference)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3654 (define-key map [(shift tab)] 'Info-prev-reference)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3655 (define-key map [backtab] 'Info-prev-reference)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3656 (define-key map "1" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3657 (define-key map "2" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3658 (define-key map "3" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3659 (define-key map "4" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3660 (define-key map "5" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3661 (define-key map "6" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3662 (define-key map "7" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3663 (define-key map "8" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3664 (define-key map "9" 'Info-nth-menu-item)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3665 (define-key map "0" 'undefined)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3666 (define-key map "?" 'Info-summary)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3667 (define-key map "]" 'Info-forward-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3668 (define-key map "[" 'Info-backward-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3669 (define-key map "<" 'Info-top-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3670 (define-key map ">" 'Info-final-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3671 (define-key map "b" 'beginning-of-buffer)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3672 (define-key map "d" 'Info-directory)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3673 (define-key map "e" 'Info-edit)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3674 (define-key map "f" 'Info-follow-reference)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3675 (define-key map "g" 'Info-goto-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3676 (define-key map "h" 'Info-help)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3677 (define-key map "i" 'Info-index)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
3678 (define-key map "I" 'Info-virtual-index)
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3679 (define-key map "l" 'Info-history-back)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3680 (define-key map "L" 'Info-history)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3681 (define-key map "m" 'Info-menu)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3682 (define-key map "n" 'Info-next)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3683 (define-key map "p" 'Info-prev)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3684 (define-key map "q" 'Info-exit)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3685 (define-key map "r" 'Info-history-forward)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3686 (define-key map "s" 'Info-search)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3687 (define-key map "S" 'Info-search-case-sensitively)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3688 (define-key map "\M-n" 'clone-buffer)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3689 (define-key map "t" 'Info-top-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3690 (define-key map "T" 'Info-toc)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3691 (define-key map "u" 'Info-up)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3692 ;; `w' for consistency with `dired-copy-filename-as-kill'.
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3693 (define-key map "w" 'Info-copy-current-node-name)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3694 (define-key map "c" 'Info-copy-current-node-name)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3695 ;; `^' for consistency with `dired-up-directory'.
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3696 (define-key map "^" 'Info-up)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3697 (define-key map "," 'Info-index-next)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3698 (define-key map "\177" 'Info-scroll-down)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3699 (define-key map [mouse-2] 'Info-mouse-follow-nearest-node)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3700 (define-key map [follow-link] 'mouse-face)
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3701 map)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3702 "Keymap containing Info commands.")
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
3703
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3704
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3705 (defun Info-check-pointer (item)
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3706 "Non-nil if ITEM is present in this node."
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3707 (condition-case nil
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3708 (Info-extract-pointer item)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3709 (error nil)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3710
30220
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3711 (easy-menu-define
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3712 Info-mode-menu Info-mode-map
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3713 "Menu for Info files."
30220
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3714 '("Info"
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3715 ["Up" Info-up :active (Info-check-pointer "up")
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3716 :help "Go up in the Info tree"]
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3717 ["Next" Info-next :active (Info-check-pointer "next")
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3718 :help "Go to the next node"]
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3719 ["Previous" Info-prev :active (Info-check-pointer "prev[ious]*")
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3720 :help "Go to the previous node"]
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3721 ["Backward" Info-backward-node
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3722 :help "Go backward one node, considering all as a sequence"]
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3723 ["Forward" Info-forward-node
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3724 :help "Go forward one node, considering all as a sequence"]
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
3725 ["Beginning" beginning-of-buffer
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
3726 :help "Go to beginning of this node"]
30220
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3727 ["Top" Info-top-node
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3728 :help "Go to top node of file"]
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3729 ["Final Node" Info-final-node
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3730 :help "Go to final node in this file"]
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3731 ("Menu Item" ["You should never see this" report-emacs-bug t])
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3732 ("Reference" ["You should never see this" report-emacs-bug t])
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3733 ["Search..." Info-search
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3734 :help "Search for regular expression in this Info file"]
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3735 ["Search Next" Info-search-next
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3736 :help "Search for another occurrence of regular expression"]
32500
5f2aedbe47b5 (Info-mouse-follow-nearest-node): Use mouse-set-point.
Dave Love <fx@gnu.org>
parents: 32391
diff changeset
3737 ["Go to Node..." Info-goto-node
30220
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3738 :help "Go to a named node"]
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3739 ["Back in history" Info-history-back :active Info-history
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3740 :help "Go back in history to the last node you were at"]
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3741 ["Forward in history" Info-history-forward :active Info-history-forward
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3742 :help "Go forward in history"]
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3743 ["History" Info-history :active Info-history-list
56044
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
3744 :help "Go to menu of visited nodes"]
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3745 ["Table of Contents" Info-toc
56044
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
3746 :help "Go to table of contents"]
61029
ea8106ee0289 (Info-mode-menu): Remove ellipsis from "Index".
Juri Linkov <juri@jurta.org>
parents: 60626
diff changeset
3747 ("Index"
ea8106ee0289 (Info-mode-menu): Remove ellipsis from "Index".
Juri Linkov <juri@jurta.org>
parents: 60626
diff changeset
3748 ["Lookup a String..." Info-index
30220
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3749 :help "Look for a string in the index items"]
61029
ea8106ee0289 (Info-mode-menu): Remove ellipsis from "Index".
Juri Linkov <juri@jurta.org>
parents: 60626
diff changeset
3750 ["Next Matching Item" Info-index-next :active Info-index-alternatives
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3751 :help "Look for another occurrence of previous item"]
106432
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
3752 ["Lookup a string and display index of results..." Info-virtual-index
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
3753 :help "Look for a string in the index items and display node with results"]
61029
ea8106ee0289 (Info-mode-menu): Remove ellipsis from "Index".
Juri Linkov <juri@jurta.org>
parents: 60626
diff changeset
3754 ["Lookup a string in all indices..." info-apropos
54718
fd0577e11e88 (info-apropos): New function.
Jesper Harder <harder@ifa.au.dk>
parents: 54506
diff changeset
3755 :help "Look for a string in the indices of all manuals"])
36092
bf55849c91fb (Info-copy-current-node-name): New function.
Miles Bader <miles@gnu.org>
parents: 35934
diff changeset
3756 ["Copy Node Name" Info-copy-current-node-name
bf55849c91fb (Info-copy-current-node-name): New function.
Miles Bader <miles@gnu.org>
parents: 35934
diff changeset
3757 :help "Copy the name of the current node into the kill ring"]
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3758 ["Clone Info buffer" clone-buffer
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3759 :help "Create a twin copy of the current Info buffer."]
32391
5c381664251f (Info-mode-menu): Fix some help.
Dave Love <fx@gnu.org>
parents: 32286
diff changeset
3760 ["Exit" Info-exit :help "Stop reading Info"]))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3761
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
3762
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
3763 (defvar info-tool-bar-map
98627
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3764 (let ((map (make-sparse-keymap)))
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3765 (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107978
diff changeset
3766 :rtl "right-arrow"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107978
diff changeset
3767 :label "Back")
98627
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3768 (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107978
diff changeset
3769 :rtl "left-arrow"
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107978
diff changeset
3770 :label "Forward")
98627
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3771 (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3772 :rtl "next-node")
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3773 (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3774 :rtl "prev-node")
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3775 (tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map)
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3776 (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map)
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3777 (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
108024
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107978
diff changeset
3778 (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map
4d8277a44bb4 Gtk tool bars can be text, icons with text or just icons.
Jan D. <jan.h.d@swipnet.se>
parents: 107978
diff changeset
3779 :label "Index Search")
98627
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3780 (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3781 (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
de01cc2d680e (info-tool-bar-map): Initialize it unconditionally.
Chong Yidong <cyd@stupidchicken.com>
parents: 98600
diff changeset
3782 map))
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
3783
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3784 (defvar Info-menu-last-node nil)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3785 ;; Last node the menu was created for.
21197
e4b99d1db55a (Info-menu-update): Set Info-menu-last-node
Richard M. Stallman <rms@gnu.org>
parents: 21003
diff changeset
3786 ;; Value is a list, (FILE-NAME NODE-NAME).
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3787
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3788 (defun Info-menu-update ()
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3789 "Update the Info menu for the current node."
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3790 (condition-case nil
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3791 (if (or (not (eq major-mode 'Info-mode))
21197
e4b99d1db55a (Info-menu-update): Set Info-menu-last-node
Richard M. Stallman <rms@gnu.org>
parents: 21003
diff changeset
3792 (equal (list Info-current-file Info-current-node)
e4b99d1db55a (Info-menu-update): Set Info-menu-last-node
Richard M. Stallman <rms@gnu.org>
parents: 21003
diff changeset
3793 Info-menu-last-node))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3794 ()
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3795 ;; Update menu menu.
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3796 (let* ((Info-complete-menu-buffer (current-buffer))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3797 (items (nreverse (condition-case nil
41690
c9c839b993b9 (Info-complete-next-re, Info-complete-cache): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40967
diff changeset
3798 (Info-complete-menu-item "" nil t)
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3799 (error nil))))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
3800 entries current
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3801 (number 0))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3802 (while (and items (< number 9))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3803 (setq current (car items)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3804 items (cdr items)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3805 number (1+ number))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
3806 (setq entries (cons `[,current
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3807 (Info-menu ,current)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3808 :keys ,(format "%d" number)]
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3809 entries)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3810 (if items
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3811 (setq entries (cons ["Other..." Info-menu t] entries)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3812 (or entries
37370
3a3bed48a714 (Info-menu-update): When there are no menus and/or no
Eli Zaretskii <eliz@gnu.org>
parents: 37351
diff changeset
3813 (setq entries (list ["No menu" nil nil] nil :active)))
30220
e4628d420030 (Info-mode-menu): Fix use of :help, :enable.
Dave Love <fx@gnu.org>
parents: 30109
diff changeset
3814 (easy-menu-change '("Info") "Menu Item" (nreverse entries)))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3815 ;; Update reference menu. Code stolen from `Info-follow-reference'.
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3816 (let ((items nil)
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
3817 str i entries current
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3818 (number 0)
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
3819 (case-fold-search t))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3820 (save-excursion
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3821 (goto-char (point-min))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
3822 (while (re-search-forward "\\*note[ \n\t]+\\([^:]*\\):" nil t)
51735
204ae43066d1 (Info-following-node-name-re): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51731
diff changeset
3823 (setq str (match-string 1))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3824 (setq i 0)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3825 (while (setq i (string-match "[ \n\t]+" str i))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3826 (setq str (concat (substring str 0 i) " "
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3827 (substring str (match-end 0))))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3828 (setq i (1+ i)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3829 (setq items
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3830 (cons str items))))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3831 (while (and items (< number 9))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3832 (setq current (car items)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3833 items (cdr items)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3834 number (1+ number))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
3835 (setq entries (cons `[,current
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3836 (Info-follow-reference ,current)
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3837 t]
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3838 entries)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3839 (if items
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3840 (setq entries (cons ["Other..." Info-follow-reference t]
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3841 entries)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3842 (or entries
37370
3a3bed48a714 (Info-menu-update): When there are no menus and/or no
Eli Zaretskii <eliz@gnu.org>
parents: 37351
diff changeset
3843 (setq entries (list ["No references" nil nil] nil :active)))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3844 (easy-menu-change '("Info") "Reference" (nreverse entries)))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3845 ;; Update last seen node.
21197
e4b99d1db55a (Info-menu-update): Set Info-menu-last-node
Richard M. Stallman <rms@gnu.org>
parents: 21003
diff changeset
3846 (setq Info-menu-last-node (list Info-current-file Info-current-node)))
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3847 ;; Try to avoid entering infinite beep mode in case of errors.
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3848 (error (ding))))
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3849
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3850
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3851 (defun Info-copy-current-node-name (&optional arg)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3852 "Put the name of the current Info node into the kill ring.
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3853 The name of the Info file is prepended to the node name in parentheses.
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3854 With a zero prefix arg, put the name inside a function call to `info'."
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3855 (interactive "P")
36092
bf55849c91fb (Info-copy-current-node-name): New function.
Miles Bader <miles@gnu.org>
parents: 35934
diff changeset
3856 (unless Info-current-node
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
3857 (error "No current Info node"))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
3858 (let ((node (if (stringp Info-current-file)
85921
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
3859 (concat "(" (file-name-nondirectory Info-current-file) ") "
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
3860 Info-current-node))))
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3861 (if (zerop (prefix-numeric-value arg))
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3862 (setq node (concat "(info \"" node "\")")))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
3863 (unless (stringp Info-current-file)
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
3864 (setq node (format "(Info-find-node '%S '%S)"
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
3865 Info-current-file Info-current-node)))
55774
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3866 (kill-new node)
8926d01558fa (Info-toc): Call Info-mode on intermediate buffer.
Juri Linkov <juri@jurta.org>
parents: 55751
diff changeset
3867 (message "%s" node)))
36092
bf55849c91fb (Info-copy-current-node-name): New function.
Miles Bader <miles@gnu.org>
parents: 35934
diff changeset
3868
bf55849c91fb (Info-copy-current-node-name): New function.
Miles Bader <miles@gnu.org>
parents: 35934
diff changeset
3869
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3870 ;; Info mode is suitable only for specially formatted data.
31798
460c3cd7b368 Use the correct capitalization when making Info-mode and Info-edit-mode
Miles Bader <miles@gnu.org>
parents: 31755
diff changeset
3871 (put 'Info-mode 'mode-class 'special)
40967
ab0564ba441e (Info-mode): Add a no-clone-indirect property.
Richard M. Stallman <rms@gnu.org>
parents: 40845
diff changeset
3872 (put 'Info-mode 'no-clone-indirect t)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3873
63935
9eca51cb6ae3 (tool-bar-map): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63503
diff changeset
3874 (defvar tool-bar-map)
92556
5944be8c8211 Change a return type, for greater extensibility. See
Karl Fogel <kfogel@red-bean.com>
parents: 92550
diff changeset
3875 (defvar bookmark-make-record-function)
63935
9eca51cb6ae3 (tool-bar-map): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 63503
diff changeset
3876
64896
a7d19794a559 Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64812
diff changeset
3877 ;; Autoload cookie needed by desktop.el
a7d19794a559 Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64812
diff changeset
3878 ;;;###autoload
107859
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3879 (define-derived-mode Info-mode nil "Info"
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3880 "Info mode provides commands for browsing through the Info documentation tree.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3881 Documentation in Info is divided into \"nodes\", each of which discusses
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3882 one topic and contains references to other nodes which discuss related
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3883 topics. Info has commands to follow the references and show you other nodes.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3884
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
3885 \\<Info-mode-map>\
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3886 \\[Info-help] Invoke the Info tutorial.
21806
d17bf0e8a170 (Info-mode): Doc fix.
Dave Love <fx@gnu.org>
parents: 21704
diff changeset
3887 \\[Info-exit] Quit Info: reselect previously selected buffer.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3888
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3889 Selecting other nodes:
8564
ca09c53c16a6 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8489
diff changeset
3890 \\[Info-mouse-follow-nearest-node]
ca09c53c16a6 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8489
diff changeset
3891 Follow a node reference you click on.
ca09c53c16a6 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8489
diff changeset
3892 This works with menu items, cross references, and
ca09c53c16a6 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8489
diff changeset
3893 the \"next\", \"previous\" and \"up\", depending on where you click.
21806
d17bf0e8a170 (Info-mode): Doc fix.
Dave Love <fx@gnu.org>
parents: 21704
diff changeset
3894 \\[Info-follow-nearest-node] Follow a node reference near point, like \\[Info-mouse-follow-nearest-node].
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3895 \\[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
3896 \\[Info-prev] Move to the \"previous\" node of this node.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3897 \\[Info-up] Move \"up\" from this node.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3898 \\[Info-menu] Pick menu item specified by name (or abbreviation).
42406
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3899 Picking a menu item causes another node to be selected.
540
0840eff2ecd5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 359
diff changeset
3900 \\[Info-directory] Go to the Info directory node.
66010
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3901 \\[Info-top-node] Go to the Top node of this file.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3902 \\[Info-final-node] Go to the final node in this file.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3903 \\[Info-backward-node] Go backward one node, considering all nodes as forming one sequence.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3904 \\[Info-forward-node] Go forward one node, considering all nodes as forming one sequence.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3905 \\[Info-next-reference] Move cursor to next cross-reference or menu item.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3906 \\[Info-prev-reference] Move cursor to previous cross-reference or menu item.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3907 \\[Info-follow-reference] Follow a cross reference. Reads name of reference.
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3908 \\[Info-history-back] Move back in history to the last node you were at.
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3909 \\[Info-history-forward] Move forward in history to the node you returned from after using \\[Info-history-back].
56044
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
3910 \\[Info-history] Go to menu of visited nodes.
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
3911 \\[Info-toc] Go to table of contents of the current Info file.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3912
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3913 Moving within a node:
20514
dd15be266d88 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20421
diff changeset
3914 \\[Info-scroll-up] Normally, scroll forward a full screen.
42406
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3915 Once you scroll far enough in a node that its menu appears on the
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3916 screen but after point, the next scroll moves into its first
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3917 subnode. When after all menu items (or if there is no menu),
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3918 move up to the parent node.
20514
dd15be266d88 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20421
diff changeset
3919 \\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is
42406
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3920 already visible, try to go to the previous menu entry, or up
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3921 if there is none.
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
3922 \\[beginning-of-buffer] Go to beginning of node.
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3923
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3924 Advanced commands:
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3925 \\[Info-search] Search through this Info file for specified regexp,
42406
4c72bc09992b (Info-mode): Reindent the doc-string.
Pavel Janík <Pavel@Janik.cz>
parents: 42243
diff changeset
3926 and select the node in which the next occurrence is found.
56044
7aad97855e39 (Info-goto-node): Add autoload.
Juri Linkov <juri@jurta.org>
parents: 55797
diff changeset
3927 \\[Info-search-case-sensitively] Search through this Info file for specified regexp case-sensitively.
97132
1bee9147e1b8 (info, Info-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 97043
diff changeset
3928 \\[isearch-forward], \\[isearch-forward-regexp] Use Isearch to search through multiple Info nodes.
68826
17c561f80e48 (Info-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
3929 \\[Info-index] Search for a topic in this manual's Index and go to index entry.
66010
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3930 \\[Info-index-next] (comma) Move to the next match from a previous \\<Info-mode-map>\\[Info-index] command.
106432
a67d65733a07 (Info-find-node-2): Set `Info-current-subfile' to nil
Juri Linkov <juri@jurta.org>
parents: 105939
diff changeset
3931 \\[Info-virtual-index] Look for a string and display the index node with results.
66010
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3932 \\[info-apropos] Look for a string in the indices of all manuals.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3933 \\[Info-goto-node] Move to node specified by name.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3934 You may include a filename as well, as (FILENAME)NODENAME.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3935 1 .. 9 Pick first ... ninth item in node's menu.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3936 Every third `*' is highlighted to help pick the right number.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3937 \\[Info-copy-current-node-name] Put name of current Info node in the kill ring.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3938 \\[clone-buffer] Select a new cloned Info buffer in another window.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3939 \\[universal-argument] \\[info] Move to new Info file with completion.
c4bdbe18630e (Info-mode-menu): Delete menu item "Edit".
Juri Linkov <juri@jurta.org>
parents: 65825
diff changeset
3940 \\[universal-argument] N \\[info] Select Info buffer with prefix number in the name *info*<N>."
107859
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3941 :syntax-table text-mode-syntax-table
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3942 :abbrev-table text-mode-abbrev-table
16672
1facf218a14f (Info-mode): Default for `tab-width'.
Richard M. Stallman <rms@gnu.org>
parents: 16638
diff changeset
3943 (setq tab-width 8)
16043
f3a7e1cb07d6 Add menu items and xrefs to the menu bar menu.
Richard M. Stallman <rms@gnu.org>
parents: 15821
diff changeset
3944 (add-hook 'activate-menubar-hook 'Info-menu-update nil t)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3945 (setq case-fold-search t)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3946 (setq buffer-read-only t)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3947 (make-local-variable 'Info-current-file)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3948 (make-local-variable 'Info-current-subfile)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3949 (make-local-variable 'Info-current-node)
107859
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3950 (set (make-local-variable 'Info-tag-table-marker) (make-marker))
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3951 (set (make-local-variable 'Info-tag-table-buffer) nil)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3952 (make-local-variable 'Info-history)
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
3953 (make-local-variable 'Info-history-forward)
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
3954 (make-local-variable 'Info-index-alternatives)
98920
60fa4a4ddd56 Info-mode: Do not remove an existing header line if `Info-use-header-line' is nil.
David Reitter <david.reitter@gmail.com>
parents: 98915
diff changeset
3955 (if Info-use-header-line ; do not override global header lines
60fa4a4ddd56 Info-mode: Do not remove an existing header line if `Info-use-header-line' is nil.
David Reitter <david.reitter@gmail.com>
parents: 98915
diff changeset
3956 (setq header-line-format
60fa4a4ddd56 Info-mode: Do not remove an existing header line if `Info-use-header-line' is nil.
David Reitter <david.reitter@gmail.com>
parents: 98915
diff changeset
3957 '(:eval (get-text-property (point-min) 'header-line))))
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
3958 (set (make-local-variable 'tool-bar-map) info-tool-bar-map)
19043
a2853a75ce57 (info-node, info-xref, info-menu-5):
Richard M. Stallman <rms@gnu.org>
parents: 17968
diff changeset
3959 ;; This is for the sake of the invisible text we use handling titles.
107859
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3960 (set (make-local-variable 'line-move-ignore-invisible) t)
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3961 (set (make-local-variable 'desktop-save-buffer)
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3962 'Info-desktop-buffer-misc-data)
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3963 (set (make-local-variable 'widen-automatically) nil)
61363
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3964 (add-hook 'kill-buffer-hook 'Info-kill-buffer nil t)
79572
a55ab9b627cb (Info-clone-buffer): Renamed from Info-clone-buffer-hook. Use changed.
Richard M. Stallman <rms@gnu.org>
parents: 78723
diff changeset
3965 (add-hook 'clone-buffer-hook 'Info-clone-buffer nil t)
47376
05b10b9cd8bb (Info-mode): Add font-lock-defontify to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 47327
diff changeset
3966 (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
60615
643e6516a779 (Info-isearch-initial-node): New internal variable.
Juri Linkov <juri@jurta.org>
parents: 60577
diff changeset
3967 (add-hook 'isearch-mode-hook 'Info-isearch-start nil t)
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3968 (set (make-local-variable 'isearch-search-fun-function)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3969 'Info-isearch-search)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3970 (set (make-local-variable 'isearch-wrap-function)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3971 'Info-isearch-wrap)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3972 (set (make-local-variable 'isearch-push-state-function)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3973 'Info-isearch-push-state)
99642
1221f267b55c (Info-search, Info-mode): Rename
Juri Linkov <juri@jurta.org>
parents: 98920
diff changeset
3974 (set (make-local-variable 'isearch-filter-predicate)
100669
1cc573a37101 (Info-find-node-2): Use negative offset 2 instead of 1
Juri Linkov <juri@jurta.org>
parents: 100509
diff changeset
3975 'Info-isearch-filter)
56866
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3976 (set (make-local-variable 'search-whitespace-regexp)
867d96c29584 (Info-search-whitespace-regexp): Fix backslashes.
Juri Linkov <juri@jurta.org>
parents: 56044
diff changeset
3977 Info-search-whitespace-regexp)
85921
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
3978 (set (make-local-variable 'revert-buffer-function)
1915d983e65a (Info-revert-buffer-function): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 82935
diff changeset
3979 'Info-revert-buffer-function)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3980 (Info-set-mode-line)
92556
5944be8c8211 Change a return type, for greater extensibility. See
Karl Fogel <kfogel@red-bean.com>
parents: 92550
diff changeset
3981 (set (make-local-variable 'bookmark-make-record-function)
107859
1a6d2311d8d5 Simplify by using `define-derived-mode'.
Juanma Barranquero <lekktu@gmail.com>
parents: 107467
diff changeset
3982 'Info-bookmark-make-record))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3983
61363
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3984 ;; When an Info buffer is killed, make sure the associated tags buffer
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3985 ;; is killed too.
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3986 (defun Info-kill-buffer ()
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3987 (and (eq major-mode 'Info-mode)
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3988 Info-tag-table-buffer
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3989 (kill-buffer Info-tag-table-buffer)))
eebed65dbe97 (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
Juri Linkov <juri@jurta.org>
parents: 61029
diff changeset
3990
79572
a55ab9b627cb (Info-clone-buffer): Renamed from Info-clone-buffer-hook. Use changed.
Richard M. Stallman <rms@gnu.org>
parents: 78723
diff changeset
3991 ;; Placed on `clone-buffer-hook'.
a55ab9b627cb (Info-clone-buffer): Renamed from Info-clone-buffer-hook. Use changed.
Richard M. Stallman <rms@gnu.org>
parents: 78723
diff changeset
3992 (defun Info-clone-buffer ()
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
3993 (when (bufferp Info-tag-table-buffer)
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
3994 (setq Info-tag-table-buffer
38262
03f0515fe575 (Info-clone-buffer-hook): Really unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38225
diff changeset
3995 (with-current-buffer Info-tag-table-buffer (clone-buffer))))
03f0515fe575 (Info-clone-buffer-hook): Really unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38225
diff changeset
3996 (let ((m Info-tag-table-marker))
03f0515fe575 (Info-clone-buffer-hook): Really unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38225
diff changeset
3997 (when (markerp m)
38225
5d26670f49df (Info-clone-buffer-hook): Unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37837
diff changeset
3998 (setq Info-tag-table-marker
38262
03f0515fe575 (Info-clone-buffer-hook): Really unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38225
diff changeset
3999 (if (and (marker-position m) (bufferp Info-tag-table-buffer))
38225
5d26670f49df (Info-clone-buffer-hook): Unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37837
diff changeset
4000 (with-current-buffer Info-tag-table-buffer
5d26670f49df (Info-clone-buffer-hook): Unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37837
diff changeset
4001 (copy-marker (marker-position m)))
5d26670f49df (Info-clone-buffer-hook): Unconditionally copy marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37837
diff changeset
4002 (make-marker))))))
26004
11f91800bec3 (Info-on-current-buffer): new entry point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25878
diff changeset
4003
32286
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
4004 (defvar Info-edit-map (let ((map (make-sparse-keymap)))
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
4005 (set-keymap-parent map text-mode-map)
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
4006 (define-key map "\C-c\C-c" 'Info-cease-edit)
c0b19a2770ca (Info-goto-node, Info-menu): Doc fix.
Dave Love <fx@gnu.org>
parents: 32007
diff changeset
4007 map)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4008 "Local keymap used within `e' command of Info.")
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4009
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4010 ;; Info-edit mode is suitable only for specially formatted data.
31798
460c3cd7b368 Use the correct capitalization when making Info-mode and Info-edit-mode
Miles Bader <miles@gnu.org>
parents: 31755
diff changeset
4011 (put 'Info-edit-mode 'mode-class 'special)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4012
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4013 (defun Info-edit-mode ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4014 "Major mode for editing the contents of an Info node.
1477
e31496f6289d Dox fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1340
diff changeset
4015 Like text mode with the addition of `Info-cease-edit'
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4016 which returns to Info mode for browsing.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4017 \\{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
4018 (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
4019 (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
4020 (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
4021 (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
4022 (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
4023 (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
4024 (buffer-enable-undo (current-buffer))
62733
545cba9e95d4 (Info-mode, Info-edit-mode): Use run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 61987
diff changeset
4025 (run-mode-hooks 'Info-edit-mode-hook))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4026
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4027 (defun Info-edit ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4028 "Edit the contents of this Info node.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4029 Allowed only if variable `Info-enable-edit' is non-nil."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4030 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4031 (or Info-enable-edit
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4032 (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
4033 (Info-edit-mode)
14319
e39a2eb75dbe (Info-edit, Info-goto-emacs-command-node): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
4034 (message "%s" (substitute-command-keys
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4035 "Editing: Type \\<Info-edit-map>\\[Info-cease-edit] to return to info")))
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4036
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4037 (defun Info-cease-edit ()
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4038 "Finish editing Info node; switch back to Info proper."
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4039 (interactive)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4040 ;; Do this first, so nothing has changed if user C-g's at query.
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4041 (and (buffer-modified-p)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4042 (y-or-n-p "Save the file? ")
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4043 (save-buffer))
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4044 (use-local-map Info-mode-map)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4045 (setq major-mode 'Info-mode)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4046 (setq mode-name "Info")
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4047 (Info-set-mode-line)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4048 (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
4049 (force-mode-line-update)
325
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4050 (and (marker-position Info-tag-table-marker)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4051 (buffer-modified-p)
3f3710052f22 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4052 (message "Tags may have changed. Use Info-tagify if necessary")))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4053
12889
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4054 (defvar Info-file-list-for-emacs
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4055 '("ediff" "eudc" "forms" "gnus" "info" ("Info" . "info") ("mh" . "mh-e")
39364
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4056 "sc" "message" ("dired" . "dired-x") "viper" "vip" "idlwave"
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4057 ("c" . "ccmode") ("c++" . "ccmode") ("objc" . "ccmode")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4058 ("java" . "ccmode") ("idl" . "ccmode") ("pike" . "ccmode")
30738
5d4414327c06 (Info-file-list-for-emacs): More elements for the
Eli Zaretskii <eliz@gnu.org>
parents: 30686
diff changeset
4059 ("skeleton" . "autotype") ("auto-insert" . "autotype")
5d4414327c06 (Info-file-list-for-emacs): More elements for the
Eli Zaretskii <eliz@gnu.org>
parents: 30686
diff changeset
4060 ("copyright" . "autotype") ("executable" . "autotype")
5d4414327c06 (Info-file-list-for-emacs): More elements for the
Eli Zaretskii <eliz@gnu.org>
parents: 30686
diff changeset
4061 ("time-stamp" . "autotype") ("quickurl" . "autotype")
5d4414327c06 (Info-file-list-for-emacs): More elements for the
Eli Zaretskii <eliz@gnu.org>
parents: 30686
diff changeset
4062 ("tempo" . "autotype") ("hippie-expand" . "autotype")
40845
9d0c6150e159 (Info-file-list-for-emacs): Add entries for Calc.
Eli Zaretskii <eliz@gnu.org>
parents: 40793
diff changeset
4063 ("cvs" . "pcl-cvs") ("ada" . "ada-mode") "calc"
9d0c6150e159 (Info-file-list-for-emacs): Add entries for Calc.
Eli Zaretskii <eliz@gnu.org>
parents: 40793
diff changeset
4064 ("calcAlg" . "calc") ("calcDigit" . "calc") ("calcVar" . "calc")
39364
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4065 "ebrowse" "eshell" "cl" "reftex" "speedbar" "widget" "woman"
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4066 ("mail-header" . "emacs-mime") ("mail-content" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4067 ("mail-encode" . "emacs-mime") ("mail-decode" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4068 ("rfc2045" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4069 ("rfc2231" . "emacs-mime") ("rfc2047" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4070 ("rfc2045" . "emacs-mime") ("rfc1843" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4071 ("ietf-drums" . "emacs-mime") ("quoted-printable" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4072 ("binhex" . "emacs-mime") ("uudecode" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4073 ("mailcap" . "emacs-mime") ("mm" . "emacs-mime")
bd687d055024 (Info-file-list-for-emacs): Add elements for ada-mode, ccmode,
Eli Zaretskii <eliz@gnu.org>
parents: 39213
diff changeset
4074 ("mml" . "emacs-mime"))
12889
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4075 "List of Info files that describe Emacs commands.
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4076 An element can be a file name, or a list of the form (PREFIX . FILE)
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4077 where PREFIX is a name prefix and FILE is the file to look in.
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4078 If the element is just a file name, the file name also serves as the prefix.")
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4079
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4080 (defun Info-find-emacs-command-nodes (command)
12889
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4081 "Return a list of locations documenting COMMAND.
12892
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4082 The `info-file' property of COMMAND says which Info manual to search.
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4083 If COMMAND has no property, the variable `Info-file-list-for-emacs'
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4084 defines heuristics for which Info manual to try.
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
4085 The locations are of the format used in `Info-history', i.e.
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4086 \(FILENAME NODENAME BUFFERPOS\), where BUFFERPOS is the line number
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4087 in the first element of the returned list (which is treated specially in
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4088 `Info-goto-emacs-command-node'), and 0 for the rest elements of a list."
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4089 (let ((where '()) line-number
21641
1174b1d6cbf6 (Info-menu): Allow extra spaces at start of menu item.
Richard M. Stallman <rms@gnu.org>
parents: 21197
diff changeset
4090 (cmd-desc (concat "^\\* +" (regexp-quote (symbol-name command))
57672
d8b07169ce26 (Info-find-emacs-command-nodes): Adapt to Texinfo-4.7 style indexes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57567
diff changeset
4091 "\\( <[0-9]+>\\)?:\\s *\\(.*\\)\\."
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4092 "\\(?:[ \t\n]+(line +\\([0-9]+\\))\\)?"))
12889
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4093 (info-file "emacs")) ;default
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4094 ;; Determine which Info file this command is documented in.
12889
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4095 (if (get command 'info-file)
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4096 (setq info-file (get command 'info-file))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4097 ;; If it doesn't say explicitly, test its name against
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4098 ;; various prefixes that we know.
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4099 (let ((file-list Info-file-list-for-emacs))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4100 (while file-list
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4101 (let* ((elt (car file-list))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4102 (name (if (consp elt)
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4103 (car elt)
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4104 elt))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4105 (file (if (consp elt) (cdr elt) elt))
57468
478f1e91eac3 (info-xref): Add underlining.
Richard M. Stallman <rms@gnu.org>
parents: 57329
diff changeset
4106 (case-fold-search nil)
12892
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4107 (regexp (concat "\\`" (regexp-quote name)
12889
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4108 "\\(\\'\\|-\\)")))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4109 (if (string-match regexp (symbol-name command))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4110 (setq info-file file file-list nil))
d912ac1e1f00 (Info-file-list-for-emacs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12779
diff changeset
4111 (setq file-list (cdr file-list))))))
30763
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4112 (Info-find-node info-file "Top")
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4113 ;; Bind Info-history to nil, to prevent the index nodes from
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4114 ;; getting into the node history.
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4115 (let ((Info-history nil)
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
4116 (Info-history-list nil)
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
4117 node (nodes (Info-index-nodes)))
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
4118 (Info-goto-node (car nodes))
30763
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4119 (while
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4120 (progn
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4121 (goto-char (point-min))
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4122 (while (re-search-forward cmd-desc nil t)
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4123 (setq where
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4124 (cons (list Info-current-file
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4125 (match-string-no-properties 2)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4126 0)
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4127 where))
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4128 (setq line-number (and (match-beginning 3)
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4129 (string-to-number (match-string 3)))))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
4130 (and (setq nodes (cdr nodes) node (car nodes))))
30763
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4131 (Info-goto-node node)))
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4132 (if (and line-number where)
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4133 (cons (list (nth 0 (car where)) (nth 1 (car where)) line-number)
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4134 (cdr where))
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4135 where)))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4136
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105674
diff changeset
4137 ;;;###autoload (put 'Info-goto-emacs-command-node 'info-file (purecopy "emacs"))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4138 ;;;###autoload
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4139 (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
4140 "Go to the Info node in the Emacs manual for command COMMAND.
35112
dfb7567dbcfd (Info-goto-emacs-key-command-node): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35079
diff changeset
4141 The command is found by looking up in Emacs manual's indices
12892
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4142 or in another manual found via COMMAND's `info-file' property or
53246
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
4143 the variable `Info-file-list-for-emacs'.
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
4144 COMMAND must be a symbol or string."
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4145 (interactive "CFind documentation for command: ")
50454
583825022e8f (Info-goto-emacs-command-node): If command
Masatake YAMATO <jet@gyve.org>
parents: 50072
diff changeset
4146 ;; If command is given as a string, convert it to a symbol.
583825022e8f (Info-goto-emacs-command-node): If command
Masatake YAMATO <jet@gyve.org>
parents: 50072
diff changeset
4147 (if (stringp command)
53246
c07db7df7073 (Info-unescape-quotes, Info-split-parameter-string)
John Paul Wallington <jpw@pobox.com>
parents: 52767
diff changeset
4148 (setq command (intern command)))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4149 (or (commandp command)
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4150 (signal 'wrong-type-argument (list 'commandp command)))
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4151 (let ((where (Info-find-emacs-command-nodes command)))
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4152 (if where
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4153 (let ((num-matches (length where)))
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4154 ;; Get Info running, and pop to it in another window.
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4155 (save-window-excursion
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4156 (info))
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4157 (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*"))
30763
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4158 ;; Bind Info-history to nil, to prevent the last Index node
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4159 ;; visited by Info-find-emacs-command-nodes from being
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4160 ;; pushed onto the history.
57770
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4161 (let ((Info-history nil) (Info-history-list nil)
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4162 (line-number (nth 2 (car where))))
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4163 (Info-find-node (nth 0 (car where)) (nth 1 (car where)))
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4164 (if (and (integerp line-number) (> line-number 0))
c7ff2d3a33ee (Info-file-list-for-emacs): Add ("Info" . "info")
Juri Linkov <juri@jurta.org>
parents: 57672
diff changeset
4165 (forward-line (1- line-number))))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4166 (if (> num-matches 1)
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4167 (progn
30763
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4168 ;; (car where) will be pushed onto Info-history
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4169 ;; when/if they go to another node. Put the other
46173131cdc4 (Info-find-emacs-command-nodes): Rewrite to use
Eli Zaretskii <eliz@gnu.org>
parents: 30738
diff changeset
4170 ;; nodes that were found on the history.
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4171 (setq Info-history (nconc (cdr where) Info-history))
14319
e39a2eb75dbe (Info-edit, Info-goto-emacs-command-node): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
4172 (message "Found %d other entr%s. Use %s to see %s."
6049
32df2b4d67cf (Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents: 5555
diff changeset
4173 (1- num-matches)
32df2b4d67cf (Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents: 5555
diff changeset
4174 (if (> num-matches 2) "ies" "y")
59472
1e81e65f3201 (Info-history-forward): New variable.
Juri Linkov <juri@jurta.org>
parents: 59423
diff changeset
4175 (substitute-command-keys "\\[Info-history-back]")
6049
32df2b4d67cf (Info-build-node-completions): Add a call to widen.
Richard M. Stallman <rms@gnu.org>
parents: 5555
diff changeset
4176 (if (> num-matches 2) "them" "it")))))
14355
87fde6ef6c95 (Info-goto-emacs-command-node): Fix error text.
Karl Heuer <kwzh@gnu.org>
parents: 14319
diff changeset
4177 (error "Couldn't find documentation for %s" command))))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4178
105939
a0f778f4a995 * term/x-win.el (x-gtk-stock-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105674
diff changeset
4179 ;;;###autoload (put 'Info-goto-emacs-key-command-node 'info-file (purecopy "emacs"))
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4180 ;;;###autoload
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4181 (defun Info-goto-emacs-key-command-node (key)
35112
dfb7567dbcfd (Info-goto-emacs-key-command-node): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35079
diff changeset
4182 "Go to the node in the Emacs manual which describes the command bound to KEY.
dfb7567dbcfd (Info-goto-emacs-key-command-node): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35079
diff changeset
4183 KEY is a string.
29621
f03c3a69a809 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29583
diff changeset
4184 Interactively, if the binding is `execute-extended-command', a command is read.
35112
dfb7567dbcfd (Info-goto-emacs-key-command-node): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35079
diff changeset
4185 The command is found by looking up in Emacs manual's indices
12892
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4186 or in another manual found via COMMAND's `info-file' property or
8b902b24d749 (Info-find-emacs-command-nodes): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12889
diff changeset
4187 the variable `Info-file-list-for-emacs'."
30423
424236a05a4f (Info-goto-emacs-key-command-node): Leave a space after
Eli Zaretskii <eliz@gnu.org>
parents: 30287
diff changeset
4188 (interactive "kFind documentation for key: ")
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4189 (let ((command (key-binding key)))
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4190 (cond ((null command)
1484
6c2a714566d3 Rename buffer-flush-undo to buffer-disable-undo.
Richard M. Stallman <rms@gnu.org>
parents: 1477
diff changeset
4191 (message "%s is undefined" (key-description key)))
105372
bd2966850aac Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents: 105142
diff changeset
4192 ((and (called-interactively-p 'interactive)
359
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4193 (eq command 'execute-extended-command))
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4194 (Info-goto-emacs-command-node
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4195 (read-command "Find documentation for command: ")))
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4196 (t
da45fa7bc8d1 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 325
diff changeset
4197 (Info-goto-emacs-command-node command)))))
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
4198
45784
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4199 (defvar Info-next-link-keymap
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4200 (let ((keymap (make-sparse-keymap)))
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4201 (define-key keymap [header-line mouse-1] 'Info-next)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4202 (define-key keymap [header-line mouse-2] 'Info-next)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4203 (define-key keymap [header-line down-mouse-1] 'ignore)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4204 (define-key keymap [mouse-2] 'Info-next)
59423
3eca2bed63e4 (Info-mode-map, Info-next-link-keymap)
Kim F. Storm <storm@cua.dk>
parents: 58936
diff changeset
4205 (define-key keymap [follow-link] 'mouse-face)
45784
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4206 keymap)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4207 "Keymap to put on the Next link in the text or the header line.")
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4208
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4209 (defvar Info-prev-link-keymap
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4210 (let ((keymap (make-sparse-keymap)))
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4211 (define-key keymap [header-line mouse-1] 'Info-prev)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4212 (define-key keymap [header-line mouse-2] 'Info-prev)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4213 (define-key keymap [header-line down-mouse-1] 'ignore)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4214 (define-key keymap [mouse-2] 'Info-prev)
59423
3eca2bed63e4 (Info-mode-map, Info-next-link-keymap)
Kim F. Storm <storm@cua.dk>
parents: 58936
diff changeset
4215 (define-key keymap [follow-link] 'mouse-face)
45784
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4216 keymap)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4217 "Keymap to put on the Prev link in the text or the header line.")
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4218
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4219 (defvar Info-up-link-keymap
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4220 (let ((keymap (make-sparse-keymap)))
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4221 (define-key keymap [header-line mouse-1] 'Info-up)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4222 (define-key keymap [header-line mouse-2] 'Info-up)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4223 (define-key keymap [header-line down-mouse-1] 'ignore)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4224 (define-key keymap [mouse-2] 'Info-up)
59423
3eca2bed63e4 (Info-mode-map, Info-next-link-keymap)
Kim F. Storm <storm@cua.dk>
parents: 58936
diff changeset
4225 (define-key keymap [follow-link] 'mouse-face)
45784
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4226 keymap)
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4227 "Keymap to put on the Up link in the text or the header line.")
95b7f625cdf5 (Info-fontify-node): Compute header line specially
Richard M. Stallman <rms@gnu.org>
parents: 45775
diff changeset
4228
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4229 (defvar Info-link-keymap
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4230 (let ((keymap (make-sparse-keymap)))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4231 (define-key keymap [header-line mouse-1] 'Info-mouse-follow-link)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4232 (define-key keymap [header-line mouse-2] 'Info-mouse-follow-link)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4233 (define-key keymap [header-line down-mouse-1] 'ignore)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4234 (define-key keymap [mouse-2] 'Info-mouse-follow-link)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4235 (define-key keymap [follow-link] 'mouse-face)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4236 keymap)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4237 "Keymap to put on the link in the text or the header line.")
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4238
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4239 (defun Info-breadcrumbs ()
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4240 (let ((nodes (Info-toc-nodes Info-current-file))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4241 (node Info-current-node)
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4242 (crumbs ())
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4243 (depth Info-breadcrumbs-depth)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4244 line)
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4245
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4246 ;; Get ancestors from the cached parent-children node info
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4247 (while (and (not (equal "Top" node)) (> depth 0))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4248 (setq node (nth 1 (assoc node nodes)))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4249 (if node (push node crumbs))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4250 (setq depth (1- depth)))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4251
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4252 ;; Add bottom node.
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4253 (when Info-use-header-line
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4254 ;; Let it disappear if crumbs is nil.
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4255 (nconc crumbs (list Info-current-node)))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4256 (when (or Info-use-header-line crumbs)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4257 ;; Add top node (and continuation if needed).
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4258 (setq crumbs
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4259 (cons "Top" (if (member (pop crumbs) '(nil "Top"))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4260 crumbs (cons nil crumbs))))
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4261 ;; Eliminate duplicate.
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4262 (forward-line 1)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4263 (dolist (node crumbs)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4264 (let ((text
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4265 (if (not (equal node "Top")) node
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4266 (format "(%s)Top"
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4267 (if (stringp Info-current-file)
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4268 (file-name-nondirectory Info-current-file)
103693
e094814e8eed Virtual Info files and nodes.
Juri Linkov <juri@jurta.org>
parents: 103283
diff changeset
4269 ;; Some legacy code can still use a symbol.
95969
70f417028d53 (Info-toc): Call Info-toc-nodes instead of Info-build-toc.
Juri Linkov <juri@jurta.org>
parents: 95914
diff changeset
4270 Info-current-file)))))
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4271 (setq line (concat
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4272 line
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4273 (if (null line) "" " > ")
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4274 (cond
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4275 ((null node) "...")
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4276 ((equal node Info-current-node)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4277 ;; No point linking to ourselves.
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4278 (propertize text 'font-lock-face 'info-header-node))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4279 (t
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4280 (propertize text
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4281 'mouse-face 'highlight
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4282 'font-lock-face 'info-header-xref
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4283 'help-echo "mouse-2: Go to node"
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4284 'keymap Info-link-keymap
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4285 'link-args text)))))))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4286 (setq line (concat line "\n")))
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4287 ;; (font-lock-append-text-property 0 (length line)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4288 ;; 'font-lock-face 'header-line line)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4289 line))
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4290
4410
25fb71fc2643 (Info-fontify-node): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4261
diff changeset
4291 (defun Info-fontify-node ()
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4292 "Fontify the node."
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4293 (save-excursion
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4294 (let* ((inhibit-read-only t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4295 (case-fold-search t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4296 paragraph-markers
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4297 (not-fontified-p ; the node hasn't already been fontified
92573
7b131fee0890 (bookmark-make-name-function, bookmark-get-bookmark-record):
Juanma Barranquero <lekktu@gmail.com>
parents: 92568
diff changeset
4298 (not (let ((where (next-single-property-change (point-min)
90368
48921c9f3f33 (Info-fontify-node): Check if already fontified or not
Kenichi Handa <handa@m17n.org>
parents: 90365
diff changeset
4299 'font-lock-face)))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4300 (and where (not (= where (point-max)))))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4301 (fontify-visited-p ; visited nodes need to be re-fontified
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4302 (and Info-fontify-visited-nodes
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4303 ;; Don't take time to refontify visited nodes in huge nodes
75750
9d47b3ad340e (Info-fontify-maximum-menu-size): Document the effect of a nil value.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4304 Info-fontify-maximum-menu-size
57567
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4305 (< (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4306 rbeg rend)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4307
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4308 ;; Fontify header line
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4309 (goto-char (point-min))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4310 (when (and not-fontified-p (looking-at "^\\(File: [^,: \t]+,?[ \t]+\\)?"))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4311 (goto-char (match-end 0))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4312 (while (looking-at "[ \t]*\\([^:, \t\n]+\\):[ \t]+\\([^:,\t\n]+\\),?")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4313 (goto-char (match-end 0))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4314 (let* ((nbeg (match-beginning 2))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4315 (nend (match-end 2))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4316 (tbeg (match-beginning 1))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4317 (tag (match-string 1)))
66604
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4318 (if (string-equal (downcase tag) "node")
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4319 (put-text-property nbeg nend 'font-lock-face 'info-header-node)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4320 (put-text-property nbeg nend 'font-lock-face 'info-header-xref)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4321 (put-text-property tbeg nend 'mouse-face 'highlight)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4322 (put-text-property tbeg nend
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4323 'help-echo
59423
3eca2bed63e4 (Info-mode-map, Info-next-link-keymap)
Kim F. Storm <storm@cua.dk>
parents: 58936
diff changeset
4324 (concat "mouse-2: Go to node "
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4325 (buffer-substring nbeg nend)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4326 ;; Always set up the text property keymap.
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4327 ;; It will either be used in the buffer
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4328 ;; or copied in the header line.
66604
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4329 (put-text-property
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4330 tbeg nend 'keymap
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4331 (cond
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4332 ((string-equal (downcase tag) "prev") Info-prev-link-keymap)
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4333 ((string-equal (downcase tag) "next") Info-next-link-keymap)
8c3381fde2cc (Info-fontify-node): Downcase node header keywords Node,
Juri Linkov <juri@jurta.org>
parents: 66602
diff changeset
4334 ((string-equal (downcase tag) "up" ) Info-up-link-keymap))))))
97976
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
4335
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4336 ;; (when (> Info-breadcrumbs-depth 0)
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4337 ;; (insert (Info-breadcrumbs)))
97976
69fc13b4259f (Info-dir-remove-duplicates): Narrow buffer when
Martin Rudalics <rudalics@gmx.at>
parents: 97880
diff changeset
4338
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4339 ;; Treat header line.
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4340 (when Info-use-header-line
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4341 (goto-char (point-min))
66057
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4342 (let* ((header-end (line-end-position))
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4343 (header
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4344 ;; If we find neither Next: nor Prev: link, show the entire
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4345 ;; node header. Otherwise, don't show the File: and Node:
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4346 ;; parts, to avoid wasting precious space on information that
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4347 ;; is available in the mode line.
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4348 (if (re-search-forward
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4349 "\\(next\\|up\\|prev[ious]*\\): "
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4350 header-end t)
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4351 (progn
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4352 (goto-char (match-beginning 1))
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4353 (buffer-substring (point) header-end))
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4354 (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*"
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4355 header-end t)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4356 (concat "No next, prev or up links -- "
66057
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4357 (buffer-substring (point) header-end))
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4358 (buffer-substring (point) header-end)))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4359 (put-text-property (point-min) (1+ (point-min))
65069
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
4360 'header-line
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
4361 (replace-regexp-in-string
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
4362 "%"
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
4363 ;; Preserve text properties on duplicated `%'.
fc42a1decf2d (Info-insert-dir): Use save-excursion around insert-buffer-substring.
Juri Linkov <juri@jurta.org>
parents: 64961
diff changeset
4364 (lambda (s) (concat s s)) header))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4365 ;; Hide the part of the first line
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4366 ;; that is in the header, if it is just part.
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4367 (cond
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4368 ((> Info-breadcrumbs-depth 0)
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4369 (let ((ov (make-overlay (point-min) (1+ header-end))))
108351
b9c7f875c4e8 * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display'
Juri Linkov <juri@jurta.org>
parents: 107917
diff changeset
4370 (overlay-put ov 'display (Info-breadcrumbs))
107917
b8efa032f216 Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
Juri Linkov <juri@jurta.org>
parents: 107333
diff changeset
4371 (overlay-put ov 'evaporate t)))
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4372 ((not (bobp))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4373 ;; Hide the punctuation at the end, too.
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4374 (skip-chars-backward " \t,")
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4375 (put-text-property (point) header-end 'invisible t))))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4376
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4377 ;; Fontify titles
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4378 (goto-char (point-min))
66057
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4379 (when (and font-lock-mode not-fontified-p)
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4380 (while (and (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$"
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4381 nil t)
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4382 ;; Only consider it as an underlined title if the ASCII
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4383 ;; underline has the same size as the text. A typical
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4384 ;; counter example is when a continuation "..." is alone
709ea6d61dbd (Info-fontify-node): Don't be fooled by a lone "...".
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66010
diff changeset
4385 ;; on a line.
66606
a39846866a71 (Info-fontify-node): Use `string-width' for fontifying underlined titles.
Juri Linkov <juri@jurta.org>
parents: 66604
diff changeset
4386 (= (string-width (match-string 1))
a39846866a71 (Info-fontify-node): Use `string-width' for fontifying underlined titles.
Juri Linkov <juri@jurta.org>
parents: 66604
diff changeset
4387 (string-width (match-string 2))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4388 (let* ((c (preceding-char))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4389 (face
63208
0502430a647c Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378
Miles Bader <miles@gnu.org>
parents: 63065
diff changeset
4390 (cond ((= c ?*) 'info-title-1)
0502430a647c Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378
Miles Bader <miles@gnu.org>
parents: 63065
diff changeset
4391 ((= c ?=) 'info-title-2)
0502430a647c Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378
Miles Bader <miles@gnu.org>
parents: 63065
diff changeset
4392 ((= c ?-) 'info-title-3)
0502430a647c Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378
Miles Bader <miles@gnu.org>
parents: 63065
diff changeset
4393 (t 'info-title-4))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4394 (put-text-property (match-beginning 1) (match-end 1)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4395 'font-lock-face face))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4396 ;; This is a serious problem for trying to handle multiple
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4397 ;; frame types at once. We want this text to be invisible
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4398 ;; on frames that can display the font above.
97043
9592c50233ab Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96675
diff changeset
4399 (when (memq (framep (selected-frame)) '(x pc w32 ns))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4400 (add-text-properties (1- (match-beginning 2)) (match-end 2)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4401 '(invisible t front-sticky nil rear-nonsticky t)))))
49424
59c37b87bb18 (Info-try-follow-nearest-node): Add case: Handle menu item
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 49390
diff changeset
4402
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4403 ;; Fontify cross references
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4404 (goto-char (point-min))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4405 (when (or not-fontified-p fontify-visited-p)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4406 (while (re-search-forward "\\(\\*Note[ \n\t]+\\)\\([^:]*\\)\\(:[ \t]*\\([^.,:(]*\\)\\(\\(([^)]*)\\)[^.,:]*\\)?[,:]?\n?\\)" nil t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4407 (let ((start (match-beginning 0))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4408 (next (point))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4409 other-tag)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4410 (when not-fontified-p
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4411 (when Info-hide-note-references
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4412 (when (and (not (eq Info-hide-note-references 'hide))
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4413 (> (line-number-at-pos) 4)) ; Skip breadcrumbs
56882
dca3dbca04cc (Info-fontify-node): Don't compute other-tag if Info-hide-note-references=hide.
Juri Linkov <juri@jurta.org>
parents: 56866
diff changeset
4414 ;; *Note is often used where *note should have been
dca3dbca04cc (Info-fontify-node): Don't compute other-tag if Info-hide-note-references=hide.
Juri Linkov <juri@jurta.org>
parents: 56866
diff changeset
4415 (goto-char start)
dca3dbca04cc (Info-fontify-node): Don't compute other-tag if Info-hide-note-references=hide.
Juri Linkov <juri@jurta.org>
parents: 56866
diff changeset
4416 (skip-syntax-backward " ")
66459
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4417 (when (memq (char-before) '(?\( ?\[ ?\{))
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4418 ;; Check whether the paren is preceded by
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4419 ;; an end of sentence
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4420 (skip-syntax-backward " ("))
56882
dca3dbca04cc (Info-fontify-node): Don't compute other-tag if Info-hide-note-references=hide.
Juri Linkov <juri@jurta.org>
parents: 56866
diff changeset
4421 (setq other-tag
66670
d5afffbc0c96 (Info-fontify-node): Don't display extra "see" if there already is one here.
Richard M. Stallman <rms@gnu.org>
parents: 66606
diff changeset
4422 (cond ((save-match-data (looking-back "\\<see"))
d5afffbc0c96 (Info-fontify-node): Don't display extra "see" if there already is one here.
Richard M. Stallman <rms@gnu.org>
parents: 66606
diff changeset
4423 "")
72320
becc8b8af23b * info.el (Info-fontify-node): Handle preceding `in' for note
Chong Yidong <cyd@stupidchicken.com>
parents: 71853
diff changeset
4424 ((save-match-data (looking-back "\\<in"))
becc8b8af23b * info.el (Info-fontify-node): Handle preceding `in' for note
Chong Yidong <cyd@stupidchicken.com>
parents: 71853
diff changeset
4425 "")
66670
d5afffbc0c96 (Info-fontify-node): Don't display extra "see" if there already is one here.
Richard M. Stallman <rms@gnu.org>
parents: 66606
diff changeset
4426 ((memq (char-before) '(nil ?\. ?! ??))
56882
dca3dbca04cc (Info-fontify-node): Don't compute other-tag if Info-hide-note-references=hide.
Juri Linkov <juri@jurta.org>
parents: 56866
diff changeset
4427 "See ")
66459
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4428 ((save-match-data
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4429 (save-excursion
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4430 (search-forward "\n\n" start t)))
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4431 "See ")
bdc911746f64 (Info-fontify-node): Fix detection of sentence-break before *Note.
Richard M. Stallman <rms@gnu.org>
parents: 66279
diff changeset
4432 (t "see "))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4433 (goto-char next)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4434 (add-text-properties
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4435 (match-beginning 1)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4436 (or (save-match-data
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4437 ;; Don't hide \n after *Note
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4438 (let ((start1 (match-beginning 1)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4439 (if (string-match "\n" (match-string 1))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4440 (+ start1 (match-beginning 0)))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4441 (match-end 1))
56882
dca3dbca04cc (Info-fontify-node): Don't compute other-tag if Info-hide-note-references=hide.
Juri Linkov <juri@jurta.org>
parents: 56866
diff changeset
4442 (if other-tag
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4443 `(display ,other-tag front-sticky nil rear-nonsticky t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4444 '(invisible t front-sticky nil rear-nonsticky t))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4445 (add-text-properties
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4446 (match-beginning 2) (match-end 2)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4447 (list
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4448 'help-echo (if (or (match-end 5)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4449 (not (equal (match-string 4) "")))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4450 (concat "mouse-2: go to " (or (match-string 5)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4451 (match-string 4)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4452 "mouse-2: go to this node")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4453 'mouse-face 'highlight)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4454 (when (or not-fontified-p fontify-visited-p)
57567
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4455 (setq rbeg (match-beginning 2)
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4456 rend (match-end 2))
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4457 (put-text-property
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4458 rbeg rend
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4459 'font-lock-face
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4460 ;; Display visited nodes in a different face
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4461 (if (and Info-fontify-visited-nodes
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4462 (save-match-data
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4463 (let* ((node (replace-regexp-in-string
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4464 "^[ \t]+" ""
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4465 (replace-regexp-in-string
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4466 "[ \t\n]+" " "
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4467 (or (match-string-no-properties 5)
57567
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4468 (and (not (equal (match-string 4) ""))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4469 (match-string-no-properties 4))
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4470 (match-string-no-properties 2)))))
67303
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4471 (external-link-p
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4472 (string-match "(\\([^)]+\\))\\([^)]*\\)" node))
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4473 (file (if external-link-p
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4474 (file-name-nondirectory
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4475 (match-string-no-properties 1 node))
67303
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4476 Info-current-file))
57567
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4477 (hl Info-history-list)
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4478 res)
67303
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4479 (if external-link-p
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4480 (setq node (if (equal (match-string 2 node) "")
57567
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4481 "Top"
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4482 (match-string-no-properties 2 node))))
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4483 (while hl
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4484 (if (and (string-equal node (nth 1 (car hl)))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4485 (equal file
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4486 (if (and external-link-p
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4487 (stringp (caar hl)))
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4488 (file-name-nondirectory
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4489 (caar hl))
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4490 (caar hl))))
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4491 (setq res (car hl) hl nil)
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4492 (setq hl (cdr hl))))
57567
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4493 res))) 'info-xref-visited 'info-xref))
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4494 ;; For multiline ref, unfontify newline and surrounding whitespace
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4495 (save-excursion
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4496 (goto-char rbeg)
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4497 (save-match-data
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4498 (while (re-search-forward "\\s-*\n\\s-*" rend t nil)
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4499 (remove-text-properties (match-beginning 0)
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4500 (match-end 0)
b313796ea830 (Info-fontify-node): For multiline refs,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57468
diff changeset
4501 '(font-lock-face t))))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4502 (when not-fontified-p
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4503 (when (memq Info-hide-note-references '(t hide))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4504 (add-text-properties (match-beginning 3) (match-end 3)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4505 '(invisible t front-sticky nil rear-nonsticky t))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4506 ;; Unhide the file name of the external reference in parens
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4507 (if (and (match-string 6) (not (eq Info-hide-note-references 'hide)))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4508 (remove-text-properties (match-beginning 6) (match-end 6)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4509 '(invisible t front-sticky nil rear-nonsticky t)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4510 ;; Unhide newline because hidden newlines cause too long lines
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4511 (save-match-data
55074
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4512 (let ((beg3 (match-beginning 3))
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4513 (end3 (match-end 3)))
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4514 (if (and (string-match "\n[ \t]*" (match-string 3))
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4515 (not (save-match-data
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4516 (save-excursion
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4517 (goto-char (1+ end3))
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4518 (looking-at "[.)]*$")))))
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4519 (remove-text-properties (+ beg3 (match-beginning 0))
dd4c270b21af Restore 2004-04-18 changes.
Juri Linkov <juri@jurta.org>
parents: 55061
diff changeset
4520 (+ beg3 (match-end 0))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4521 '(invisible t front-sticky nil rear-nonsticky t))))))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4522 (when (and Info-refill-paragraphs Info-hide-note-references)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4523 (push (set-marker (make-marker) start)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4524 paragraph-markers))))))
48287
205cb7dc9d47 (Info-fontify-node): New local list paragraph-markers.
Kim F. Storm <storm@cua.dk>
parents: 48161
diff changeset
4525
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4526 ;; Refill paragraphs (experimental feature)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4527 (when (and not-fontified-p
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4528 Info-refill-paragraphs
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4529 paragraph-markers)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4530 (let ((fill-nobreak-invisible t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4531 (fill-individual-varying-indent nil)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4532 (paragraph-start "\f\\|[ \t]*[-*]\\|[ \t]*$")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4533 (paragraph-separate ".*\\.[ \t]*\n[ \t]\\|[ \t]*[-*]\\|[ \t\f]*$")
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4534 (adaptive-fill-mode nil))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4535 (goto-char (point-max))
66117
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4536 (dolist (m paragraph-markers)
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4537 (when (< m (point))
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4538 (goto-char m)
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4539 (beginning-of-line)
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4540 (let ((beg (point)))
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4541 (when (zerop (forward-paragraph))
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4542 (fill-individual-paragraphs beg (point) nil nil)
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4543 (goto-char beg))))
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4544 (set-marker m nil))))
48103
7d7f2b855580 (Info-follow-reference, Info-next-reference)
Kim F. Storm <storm@cua.dk>
parents: 47794
diff changeset
4545
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4546 ;; Fontify menu items
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4547 (goto-char (point-min))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4548 (when (and (or not-fontified-p fontify-visited-p)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4549 (search-forward "\n* Menu:" nil t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4550 ;; Don't take time to annotate huge menus
75750
9d47b3ad340e (Info-fontify-maximum-menu-size): Document the effect of a nil value.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
4551 Info-fontify-maximum-menu-size
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4552 (< (- (point-max) (point)) Info-fontify-maximum-menu-size))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4553 (let ((n 0)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4554 cont)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4555 (while (re-search-forward
61450
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4556 (concat "^\\* Menu:\\|\\(?:^\\* +\\(" Info-menu-entry-name-re "\\)\\(:"
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4557 Info-node-spec-re "\\([ \t]*\\)\\)\\)")
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4558 nil t)
61450
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4559 (when (match-beginning 1)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4560 (when not-fontified-p
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4561 (setq n (1+ n))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4562 (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4563 (put-text-property (match-beginning 0)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4564 (1+ (match-beginning 0))
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4565 'font-lock-face 'info-menu-star)))
61450
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4566 (when not-fontified-p
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4567 (add-text-properties
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4568 (match-beginning 1) (match-end 1)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4569 (list
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4570 'help-echo (if (and (match-end 3)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4571 (not (equal (match-string 3) "")))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4572 (concat "mouse-2: go to " (match-string 3))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4573 "mouse-2: go to this node")
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4574 'mouse-face 'highlight)))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4575 (when (or not-fontified-p fontify-visited-p)
66117
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4576 (put-text-property
61450
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4577 (match-beginning 1) (match-end 1)
66117
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4578 'font-lock-face
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4579 ;; Display visited menu items in a different face
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4580 (if (and Info-fontify-visited-nodes
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4581 (save-match-data
67303
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4582 (let* ((node (if (equal (match-string 3) "")
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4583 (match-string-no-properties 1)
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4584 (match-string-no-properties 3)))
67303
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4585 (external-link-p
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4586 (string-match "(\\([^)]+\\))\\([^)]*\\)" node))
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4587 (file (if external-link-p
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4588 (file-name-nondirectory
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4589 (match-string-no-properties 1 node))
67303
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4590 Info-current-file))
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4591 (hl Info-history-list)
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4592 res)
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4593 (if external-link-p
7bd56e8182b2 * info.el (Info-fontify-node): Match external links using
Chong Yidong <cyd@stupidchicken.com>
parents: 67267
diff changeset
4594 (setq node (if (equal (match-string 2 node) "")
66117
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4595 "Top"
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4596 (match-string-no-properties 2 node))))
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4597 (while hl
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4598 (if (and (string-equal node (nth 1 (car hl)))
68980
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4599 (equal file
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4600 (if (and external-link-p
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4601 (stringp (caar hl)))
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4602 (file-name-nondirectory
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4603 (caar hl))
c6a57d4e7a09 (Info-find-file): Check for symbols `apropos', `history',
Juri Linkov <juri@jurta.org>
parents: 68853
diff changeset
4604 (caar hl))))
67121
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4605 (setq res (car hl) hl nil)
f354001864bf * info.el (Info-on-current-buffer): Record actual filename in
Chong Yidong <cyd@stupidchicken.com>
parents: 67109
diff changeset
4606 (setq hl (cdr hl))))
66117
634ee145589e (Info-fontify-node): Use dolist.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66057
diff changeset
4607 res))) 'info-xref-visited 'info-xref)))
75165
220431f80579 (Info-fontify-node): Don't hide node names of index entries.
Juri Linkov <juri@jurta.org>
parents: 74809
diff changeset
4608 (when (and not-fontified-p
220431f80579 (Info-fontify-node): Don't hide node names of index entries.
Juri Linkov <juri@jurta.org>
parents: 74809
diff changeset
4609 (memq Info-hide-note-references '(t hide))
220431f80579 (Info-fontify-node): Don't hide node names of index entries.
Juri Linkov <juri@jurta.org>
parents: 74809
diff changeset
4610 (not (Info-index-node)))
61450
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4611 (put-text-property (match-beginning 2) (1- (match-end 6))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4612 'invisible t)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4613 ;; Unhide the file name in parens
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4614 (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4615 (remove-text-properties (match-beginning 4) (match-end 4)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4616 '(invisible t)))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4617 ;; We need a stretchable space like :align-to but with
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4618 ;; a minimum value.
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4619 (put-text-property (1- (match-end 6)) (match-end 6) 'display
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4620 (if (>= 22 (- (match-end 1)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4621 (match-beginning 0)))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4622 '(space :align-to 24)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4623 '(space :width 2)))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4624 (setq cont (looking-at "."))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4625 (while (and (= (forward-line 1) 0)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4626 (looking-at "\\([ \t]+\\)[^*\n]"))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4627 (put-text-property (match-beginning 1) (1- (match-end 1))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4628 'invisible t)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4629 (put-text-property (1- (match-end 1)) (match-end 1)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4630 'display
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4631 (if cont
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4632 '(space :align-to 26)
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4633 '(space :align-to 24)))
4ccc4c9adf16 (Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
Richard M. Stallman <rms@gnu.org>
parents: 61394
diff changeset
4634 (setq cont t)))))))
48103
7d7f2b855580 (Info-follow-reference, Info-next-reference)
Kim F. Storm <storm@cua.dk>
parents: 47794
diff changeset
4635
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4636 ;; Fontify menu headers
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4637 ;; Add the face `info-menu-header' to any header before a menu entry
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4638 (goto-char (point-min))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4639 (when (and not-fontified-p (re-search-forward "^\\* Menu:" nil t))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4640 (put-text-property (match-beginning 0) (match-end 0)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4641 'font-lock-face 'info-menu-header)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4642 (while (re-search-forward "\n\n\\([^*\n ].*\\)\n\n?[*]" nil t)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4643 (put-text-property (match-beginning 1) (match-end 1)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4644 'font-lock-face 'info-menu-header)))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4645
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
4646 ;; Hide index line numbers
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
4647 (goto-char (point-min))
55751
450a4292b3b7 (Info-index-nodes): New var and fun.
Juri Linkov <juri@jurta.org>
parents: 55200
diff changeset
4648 (when (and not-fontified-p (Info-index-node))
55174
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
4649 (while (re-search-forward "[ \t\n]*(line +[0-9]+)" nil t)
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
4650 (put-text-property (match-beginning 0) (match-end 0)
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
4651 'invisible t)))
084cf910857b Add *info*<[0-9]+> to same-window-regexps instead of
Juri Linkov <juri@jurta.org>
parents: 55153
diff changeset
4652
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4653 ;; Fontify http and ftp references
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4654 (goto-char (point-min))
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4655 (when not-fontified-p
80962
c67984592170 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 77710
diff changeset
4656 (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+"
c67984592170 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 77710
diff changeset
4657 nil t)
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4658 (add-text-properties (match-beginning 0) (match-end 0)
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4659 '(font-lock-face info-xref
95907
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4660 mouse-face highlight
073d13ac30e6 (Info-breadcrumbs-depth): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94870
diff changeset
4661 help-echo "mouse-2: go to this URL"))))
54754
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4662
fe0b01c2265f (Info-history): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 54752
diff changeset
4663 (set-buffer-modified-p nil))))
16981
643e0f90e153 Handle multiple Info buffers.
Richard M. Stallman <rms@gnu.org>
parents: 16790
diff changeset
4664
20755
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4665 ;;; Speedbar support:
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4666 ;; These functions permit speedbar to display the "tags" in the
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4667 ;; current Info node.
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4668 (eval-when-compile (require 'speedbar))
20755
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4669
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4670 (defvar Info-speedbar-key-map nil
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4671 "Keymap used when in the info display mode.")
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4672
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4673 (defun Info-install-speedbar-variables ()
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4674 "Install those variables used by speedbar to enhance Info."
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4675 (if Info-speedbar-key-map
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4676 nil
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4677 (setq Info-speedbar-key-map (speedbar-make-specialized-keymap))
20755
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4678
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4679 ;; Basic tree features
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4680 (define-key Info-speedbar-key-map "e" 'speedbar-edit-line)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4681 (define-key Info-speedbar-key-map "\C-m" 'speedbar-edit-line)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4682 (define-key Info-speedbar-key-map "+" 'speedbar-expand-line)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4683 (define-key Info-speedbar-key-map "-" 'speedbar-contract-line)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4684 )
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4685
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4686 (speedbar-add-expansion-list '("Info" Info-speedbar-menu-items
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4687 Info-speedbar-key-map
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4688 Info-speedbar-hierarchy-buttons)))
20755
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4689
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4690 (defvar Info-speedbar-menu-items
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4691 '(["Browse Node" speedbar-edit-line t]
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4692 ["Expand Node" speedbar-expand-line
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4693 (save-excursion (beginning-of-line)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4694 (looking-at "[0-9]+: *.\\+. "))]
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4695 ["Contract Node" speedbar-contract-line
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4696 (save-excursion (beginning-of-line)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4697 (looking-at "[0-9]+: *.-. "))]
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4698 )
20755
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4699 "Additional menu-items to add to speedbar frame.")
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4700
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4701 ;; Make sure our special speedbar major mode is loaded
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4702 (if (featurep 'speedbar)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4703 (Info-install-speedbar-variables)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4704 (add-hook 'speedbar-load-hook 'Info-install-speedbar-variables))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4705
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4706 ;;; Info hierarchy display method
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4707 ;;;###autoload
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4708 (defun Info-speedbar-browser ()
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4709 "Initialize speedbar to display an Info node browser.
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4710 This will add a speedbar major display mode."
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4711 (interactive)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4712 (require 'speedbar)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4713 ;; Make sure that speedbar is active
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4714 (speedbar-frame-mode 1)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4715 ;; Now, throw us into Info mode on speedbar.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4716 (speedbar-change-initial-expansion-list "Info")
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4717 )
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4718
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4719 (defun Info-speedbar-hierarchy-buttons (directory depth &optional node)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4720 "Display an Info directory hierarchy in speedbar.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4721 DIRECTORY is the current directory in the attached frame.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4722 DEPTH is the current indentation depth.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4723 NODE is an optional argument that is used to represent the
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4724 specific node to expand."
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4725 (if (and (not node)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4726 (save-excursion (goto-char (point-min))
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
4727 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
4728 (looking-at "Info Nodes:"))))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4729 ;; Update our "current node" maybe?
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4730 nil
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4731 ;; We cannot use the generic list code, that depends on all leaves
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4732 ;; being known at creation time.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4733 (if (not node)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4734 (speedbar-with-writable (insert "Info Nodes:\n")))
65780
6e229fd94815 * speedbar.el: Remove RCS tag.
Chong Yidong <cyd@stupidchicken.com>
parents: 65680
diff changeset
4735 (let ((completions nil))
6e229fd94815 * speedbar.el: Remove RCS tag.
Chong Yidong <cyd@stupidchicken.com>
parents: 65680
diff changeset
4736 (speedbar-select-attached-frame)
22894
186b2098dcd8 (Info-speedbar-hierarchy-buttons): Improved the speedbar frame management.
Eric M. Ludlam <zappo@gnu.org>
parents: 22863
diff changeset
4737 (save-window-excursion
186b2098dcd8 (Info-speedbar-hierarchy-buttons): Improved the speedbar frame management.
Eric M. Ludlam <zappo@gnu.org>
parents: 22863
diff changeset
4738 (setq completions
186b2098dcd8 (Info-speedbar-hierarchy-buttons): Improved the speedbar frame management.
Eric M. Ludlam <zappo@gnu.org>
parents: 22863
diff changeset
4739 (Info-speedbar-fetch-file-nodes (or node '"(dir)top"))))
65825
b89d9c4d5386 * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
Chong Yidong <cyd@stupidchicken.com>
parents: 65780
diff changeset
4740 (select-frame (speedbar-current-frame))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4741 (if completions
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4742 (speedbar-with-writable
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4743 (dolist (completion completions)
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4744 (speedbar-make-tag-line 'bracket ?+ 'Info-speedbar-expand-node
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4745 (cdr completion)
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4746 (car completion)
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4747 'Info-speedbar-goto-node
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4748 (cdr completion)
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4749 'info-xref depth))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4750 t)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4751 nil))))
28943
36fd90774cf7 (debug-ignored-errors): more errors to ignore.
Sam Steingold <sds@gnu.org>
parents: 28559
diff changeset
4752
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4753 (defun Info-speedbar-goto-node (text node indent)
32500
5f2aedbe47b5 (Info-mouse-follow-nearest-node): Use mouse-set-point.
Dave Love <fx@gnu.org>
parents: 32391
diff changeset
4754 "When user clicks on TEXT, go to an info NODE.
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4755 The INDENT level is ignored."
65780
6e229fd94815 * speedbar.el: Remove RCS tag.
Chong Yidong <cyd@stupidchicken.com>
parents: 65680
diff changeset
4756 (speedbar-select-attached-frame)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4757 (let* ((buff (or (get-buffer "*info*")
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4758 (progn (info) (get-buffer "*info*"))))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4759 (bwin (get-buffer-window buff 0)))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4760 (if bwin
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4761 (progn
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4762 (select-window bwin)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4763 (raise-frame (window-frame bwin)))
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4764 (if speedbar-power-click
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4765 (let ((pop-up-frames t)) (select-window (display-buffer buff)))
65780
6e229fd94815 * speedbar.el: Remove RCS tag.
Chong Yidong <cyd@stupidchicken.com>
parents: 65680
diff changeset
4766 (speedbar-select-attached-frame)
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4767 (switch-to-buffer buff)))
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4768 (if (not (string-match "^(\\([^)]+\\))\\([^.]+\\)$" node))
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4769 (error "Invalid node %s" node)
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4770 (Info-find-node (match-string 1 node) (match-string 2 node))
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4771 ;; If we do a find-node, and we were in info mode, restore
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4772 ;; the old default method. Once we are in info mode, it makes
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4773 ;; sense to return to whatever method the user was using before.
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4774 (if (string= speedbar-initial-expansion-list-name "Info")
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4775 (speedbar-change-initial-expansion-list
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4776 speedbar-previously-used-expansion-list-name)))))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4777
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4778 (defun Info-speedbar-expand-node (text token indent)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4779 "Expand the node the user clicked on.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4780 TEXT is the text of the button we clicked on, a + or - item.
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4781 TOKEN is data related to this node (NAME . FILE).
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4782 INDENT is the current indentation depth."
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4783 (cond ((string-match "+" text) ;we have to expand this file
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4784 (speedbar-change-expand-button-char ?-)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4785 (if (speedbar-with-writable
29446
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4786 (save-excursion
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4787 (end-of-line) (forward-char 1)
009f1caf830f Bind case-fold-search to t when searching in case
Gerd Moellmann <gerd@gnu.org>
parents: 29410
diff changeset
4788 (Info-speedbar-hierarchy-buttons nil (1+ indent) token)))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4789 (speedbar-change-expand-button-char ?-)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4790 (speedbar-change-expand-button-char ??)))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4791 ((string-match "-" text) ;we have to contract this node
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4792 (speedbar-change-expand-button-char ?+)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4793 (speedbar-delete-subblock indent))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4794 (t (error "Ooops... not sure what to do")))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4795 (speedbar-center-buffer-smartly))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4796
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4797 (defun Info-speedbar-fetch-file-nodes (nodespec)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4798 "Fetch the subnodes from the info NODESPEC.
64071
5a1b36dec43a (Info-history, Info-history-forward, Info-history-list,
Juanma Barranquero <lekktu@gmail.com>
parents: 64013
diff changeset
4799 NODESPEC is a string of the form: (file)node."
94181
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
4800 ;; Set up a buffer we can use to fake-out Info.
959a3833d833 * files.el (locate-file-completion-table): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94062
diff changeset
4801 (with-current-buffer (get-buffer-create " *info-browse-tmp*")
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4802 (if (not (equal major-mode 'Info-mode))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4803 (Info-mode))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4804 ;; Get the node into this buffer
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4805 (if (not (string-match "^(\\([^)]+\\))\\([^.]+\\)$" nodespec))
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4806 (error "Invalid node specification %s" nodespec)
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4807 (Info-find-node (match-string 1 nodespec) (match-string 2 nodespec)))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4808 ;; Scan the created buffer
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4809 (goto-char (point-min))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4810 (let ((completions nil)
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
4811 (case-fold-search t)
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4812 (thisfile (progn (string-match "^(\\([^)]+\\))" nodespec)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4813 (match-string 1 nodespec))))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4814 ;; Always skip the first one...
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4815 (re-search-forward "\n\\* \\([^:\t\n]*\\):" nil t)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4816 (while (re-search-forward "\n\\* \\([^:\t\n]*\\):" nil t)
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4817 (let ((name (match-string 1)))
51434
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4818 (push (cons name
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4819 (if (looking-at " *\\(([^)]+)[^.\n]+\\)\\.")
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4820 (match-string 1)
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4821 (if (looking-at " *\\(([^)]+)\\)\\.")
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4822 (concat (match-string 1) "Top")
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4823 (concat "(" thisfile ")"
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4824 (if (looking-at " \\([^.]+\\).")
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4825 (match-string 1)
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4826 name)))))
4c85e6a5a9d2 (Info-mode-hook): Obey obsolete `Info-fontify'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51310
diff changeset
4827 completions)))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4828 (nreverse completions))))
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4829
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4830 ;;; Info mode node listing
65780
6e229fd94815 * speedbar.el: Remove RCS tag.
Chong Yidong <cyd@stupidchicken.com>
parents: 65680
diff changeset
4831 ;; This is called by `speedbar-add-localized-speedbar-support'
20755
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4832 (defun Info-speedbar-buttons (buffer)
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4833 "Create a speedbar display to help navigation in an Info file.
0ceaf8e0782b Added speedbar support function `Info-speedbar-buttons',
Eric M. Ludlam <zappo@gnu.org>
parents: 20514
diff changeset
4834 BUFFER is the buffer speedbar is requesting buttons for."
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4835 (if (save-excursion (goto-char (point-min))
22951
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
4836 (let ((case-fold-search t))
19b3899582b4 Bind case-fold-search to t in many functions.
Richard M. Stallman <rms@gnu.org>
parents: 22902
diff changeset
4837 (not (looking-at "Info Nodes:"))))
22733
8d8e664f1f6c No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents: 22692
diff changeset
4838 (erase-buffer))
65780
6e229fd94815 * speedbar.el: Remove RCS tag.
Chong Yidong <cyd@stupidchicken.com>
parents: 65680
diff changeset
4839 (Info-speedbar-hierarchy-buttons nil 0))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 540
diff changeset
4840
60626
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4841 (dolist (mess '("^First node in file$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4842 "^No `.*' in index$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4843 "^No cross-reference named"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4844 "^No cross.references in this node$"
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4845 "^No current Info node$"
28558
3fb49903ed9d Add debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28168
diff changeset
4846 "^No menu in this node$"
60626
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4847 "^No more items in menu$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4848 "^No more nodes$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4849 "^No pointer \\(?:forward\\|backward\\) from this node$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4850 "^No previous `i' command$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4851 "^No previous items in menu$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4852 "^No previous nodes$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4853 "^No such item in menu$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4854 "^No such node or anchor"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4855 "^Node has no"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4856 "^Point neither on reference nor in menu item description$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4857 "^This is the \\(?:first\\|last\\) Info node you looked at$"
20a8e6e5ae57 Update error messages for `debug-ignored-errors'.
Juri Linkov <juri@jurta.org>
parents: 60615
diff changeset
4858 search-failed))
28558
3fb49903ed9d Add debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28168
diff changeset
4859 (add-to-list 'debug-ignored-errors mess))
3fb49903ed9d Add debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28168
diff changeset
4860
55057
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4861 ;;;; Desktop support
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4862
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4863 (defun Info-desktop-buffer-misc-data (desktop-dirname)
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4864 "Auxiliary information to be saved in desktop file."
108247
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4865 (list Info-current-file
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4866 Info-current-node
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4867 ;; Additional data as an association list.
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4868 (delq nil (list
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4869 (and Info-history
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4870 (cons 'history Info-history))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4871 (and (Info-virtual-fun
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4872 'slow Info-current-file Info-current-node)
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4873 (cons 'slow t))))))
55057
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4874
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4875 (defun Info-restore-desktop-buffer (desktop-buffer-file-name
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4876 desktop-buffer-name
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4877 desktop-buffer-misc)
64812
0d6aa987778c Replace `info' with upper-case `Info' where appropriate.
Juri Linkov <juri@jurta.org>
parents: 64795
diff changeset
4878 "Restore an Info buffer specified in a desktop file."
108247
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4879 (let* ((file (nth 0 desktop-buffer-misc))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4880 (node (nth 1 desktop-buffer-misc))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4881 (data (nth 2 desktop-buffer-misc))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4882 (hist (assq 'history data))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4883 (slow (assq 'slow data)))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4884 ;; Don't restore nodes slow to regenerate.
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4885 (unless slow
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4886 (when (and file node)
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4887 (when desktop-buffer-name
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4888 (set-buffer (get-buffer-create desktop-buffer-name))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4889 (Info-mode))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4890 (Info-find-node file node)
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4891 (when hist
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4892 (setq Info-history (cdr hist)))
ea9732b429b6 Add `slow' and `history' tags to the desktop data.
Juri Linkov <juri@jurta.org>
parents: 108024
diff changeset
4893 (current-buffer)))))
55057
8ac1373b947e (Info-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents: 54971
diff changeset
4894
64961
1fa57fbe3d5f Revert last change.
Andreas Schwab <schwab@suse.de>
parents: 64957
diff changeset
4895 (add-to-list 'desktop-buffer-mode-handlers
1fa57fbe3d5f Revert last change.
Andreas Schwab <schwab@suse.de>
parents: 64957
diff changeset
4896 '(Info-mode . Info-restore-desktop-buffer))
64896
a7d19794a559 Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents: 64812
diff changeset
4897
88080
2af7a6c76c86 2008-01-30 Tassilo Horn <tassilo@member.fsf.org>
Tassilo Horn <tassilo@member.fsf.org>
parents: 87649
diff changeset
4898 ;;;; Bookmark support
109395
fa4400531412 Preparation for setting bookmarks in Gnus article buffers (Bug#5975).
Karl Fogel <kfogel@red-bean.com>
parents: 109021
diff changeset
4899 (declare-function bookmark-make-record-default
fa4400531412 Preparation for setting bookmarks in Gnus article buffers (Bug#5975).
Karl Fogel <kfogel@red-bean.com>
parents: 109021
diff changeset
4900 "bookmark" (&optional no-file no-context posn))
96280
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4901 (declare-function bookmark-prop-get "bookmark" (bookmark prop))
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4902 (declare-function bookmark-default-handler "bookmark" (bmk))
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4903 (declare-function bookmark-get-bookmark-record "bookmark" (bmk))
88108
5a688fd1bbee (bookmark-make-cell-function, bookmark-search-size)
Glenn Morris <rgm@gnu.org>
parents: 88080
diff changeset
4904
92674
ac3c6c3e119c * bookmark.el (bookmark-make): Don't pass the `annotation' to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92661
diff changeset
4905 (defun Info-bookmark-make-record ()
105443
96a9f1a0939b (Info-bookmark-make-record): Document this function.
Karl Fogel <kfogel@red-bean.com>
parents: 105372
diff changeset
4906 "This implements the `bookmark-make-record-function' type (which see)
96a9f1a0939b (Info-bookmark-make-record): Document this function.
Karl Fogel <kfogel@red-bean.com>
parents: 105372
diff changeset
4907 for Info nodes."
92690
ae00481eacc1 * bookmark.el (bookmark-make-record-function): Change expected return value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92674
diff changeset
4908 `(,Info-current-node
109395
fa4400531412 Preparation for setting bookmarks in Gnus article buffers (Bug#5975).
Karl Fogel <kfogel@red-bean.com>
parents: 109021
diff changeset
4909 ,@(bookmark-make-record-default 'no-file)
96280
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4910 (filename . ,Info-current-file)
92674
ac3c6c3e119c * bookmark.el (bookmark-make): Don't pass the `annotation' to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92661
diff changeset
4911 (info-node . ,Info-current-node)
ac3c6c3e119c * bookmark.el (bookmark-make): Don't pass the `annotation' to the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92661
diff changeset
4912 (handler . Info-bookmark-jump)))
88080
2af7a6c76c86 2008-01-30 Tassilo Horn <tassilo@member.fsf.org>
Tassilo Horn <tassilo@member.fsf.org>
parents: 87649
diff changeset
4913
2af7a6c76c86 2008-01-30 Tassilo Horn <tassilo@member.fsf.org>
Tassilo Horn <tassilo@member.fsf.org>
parents: 87649
diff changeset
4914 ;;;###autoload
2af7a6c76c86 2008-01-30 Tassilo Horn <tassilo@member.fsf.org>
Tassilo Horn <tassilo@member.fsf.org>
parents: 87649
diff changeset
4915 (defun Info-bookmark-jump (bmk)
105443
96a9f1a0939b (Info-bookmark-make-record): Document this function.
Karl Fogel <kfogel@red-bean.com>
parents: 105372
diff changeset
4916 "This implements the `handler' function interface for the record
96a9f1a0939b (Info-bookmark-make-record): Document this function.
Karl Fogel <kfogel@red-bean.com>
parents: 105372
diff changeset
4917 type returned by `Info-bookmark-make-record', which see."
96280
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4918 (let* ((file (bookmark-prop-get bmk 'filename))
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4919 (info-node (bookmark-prop-get bmk 'info-node))
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4920 (buf (save-window-excursion ;FIXME: doesn't work with frames!
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4921 (Info-find-node file info-node) (current-buffer))))
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4922 ;; Use bookmark-default-handler to move to the appropriate location
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4923 ;; within the node.
bfca3297fa0b * bookmark.el (bookmark-alist): Allow the 2 slightly different formats
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95969
diff changeset
4924 (bookmark-default-handler
107126
aae831df84d3 (Info-bookmark-jump): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106815
diff changeset
4925 `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk)))))
88080
2af7a6c76c86 2008-01-30 Tassilo Horn <tassilo@member.fsf.org>
Tassilo Horn <tassilo@member.fsf.org>
parents: 87649
diff changeset
4926
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 540
diff changeset
4927 (provide 'info)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 540
diff changeset
4928
62822
7f11f471aa34 (Info-goto-node): Revert autoload addition (2004-06-12).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62733
diff changeset
4929 ;; arch-tag: f2480fe2-2139-40c1-a49b-6314991164ac
660
08eb386dd0f3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
4930 ;;; info.el ends here