annotate lisp/textmodes/texnfo-upd.el @ 67086:7ae3d744378e

(Custom-reset-standard): Make it handle Custom group buffers correctly. (It used to throw an error in such buffers.) Make it ask for confirmation in group buffers and other Custom buffers containing more than one customization item.
author Luc Teirlinck <teirllm@auburn.edu>
date Tue, 22 Nov 2005 23:28:28 +0000
parents 5b1a238fcbb4
children 067115a6e738 2d92f5c9d6ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12698
diff changeset
1 ;;; texnfo-upd.el --- utilities for updating nodes and menus in Texinfo files
13354
9802b8e558a5 Comment change
Erik Naggum <erik@naggum.no>
parents: 13337
diff changeset
2
64751
5b1a238fcbb4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
3 ;; Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003, 2004,
5b1a238fcbb4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
4 ;; 2005 Free Software Foundation, Inc.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
5
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
6 ;; Author: Robert J. Chassell
43808
234792943059 Revert last change.
Andreas Schwab <schwab@suse.de>
parents: 43789
diff changeset
7 ;; Maintainer: bug-texinfo@gnu.org
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 775
diff changeset
8 ;; Keywords: maint, tex, docs
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
9
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
11
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
15 ;; any later version.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
16
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
21
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64084
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 53554
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 53554
diff changeset
25 ;; Boston, MA 02110-1301, USA.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
26
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
27 ;;; Commentary:
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
28
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
29 ;; Known bug: update commands fail to ignore @ignore.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
30
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
31 ;; Summary: how to use the updating commands
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
32
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
33 ;; The node and menu updating functions automatically
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
34
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
35 ;; * insert missing `@node' lines,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
36 ;; * insert the `Next', `Previous' and `Up' pointers of a node,
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
37 ;; * insert or update the menu for a section,
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
38 ;; * create a master menu for a Texinfo source file.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
39 ;;
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
40 ;; With a prefix argument, the `texinfo-update-node' and
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
41 ;; `texinfo-make-menu' functions do their jobs in the region.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
42 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
43 ;; In brief, the functions for creating or updating nodes and menus, are:
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
44 ;;
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
45 ;; texinfo-update-node (&optional beginning end)
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
46 ;; texinfo-every-node-update ()
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
47 ;; texinfo-sequential-node-update (&optional region-p)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
48 ;;
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
49 ;; texinfo-make-menu (&optional beginning end)
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
50 ;; texinfo-all-menus-update ()
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
51 ;; texinfo-master-menu ()
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
52 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
53 ;; texinfo-insert-node-lines (&optional title-p)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
54 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
55 ;; texinfo-indent-menu-description (column &optional region-p)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
56
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
57 ;; The `texinfo-column-for-description' variable specifies the column to
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
58 ;; which menu descriptions are indented.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
59
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
60 ;; Texinfo file structure
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
61 ;; ----------------------
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
62
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
63 ;; To use the updating commands, you must structure your Texinfo file
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
64 ;; hierarchically. Each `@node' line, with the exception of the top
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
65 ;; node, must be accompanied by some kind of section line, such as an
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
66 ;; `@chapter' or `@section' line. Each node-line/section-line
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
67 ;; combination must look like this:
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
68
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
69 ;; @node Lists and Tables, Cross References, Structuring, Top
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
70 ;; @comment node-name, next, previous, up
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
71 ;; @chapter Making Lists and Tables
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
72
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
73 ;; or like this (without the `@comment' line):
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
74
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
75 ;; @node Lists and Tables, Cross References, Structuring, Top
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
76 ;; @chapter Making Lists and Tables
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
77
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
78 ;; If the file has a `top' node, it must be called `top' or `Top' and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
79 ;; be the first node in the file.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
80
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
81
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
82 ;;; The update node functions described in detail
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
83
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
84 ;; The `texinfo-update-node' command with no prefix argument inserts
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
85 ;; the correct next, previous and up pointers for the node in which
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
86 ;; point is located (i.e., for the node preceding point).
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
87
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
88 ;; With prefix argument, the `texinfo-update-node' function inserts the
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
89 ;; correct next, previous and up pointers for the nodes inside the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
90 ;; region.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
91
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
92 ;; It does not matter whether the `@node' line has pre-existing
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
93 ;; `Next', `Previous', or `Up' pointers in it. They are removed.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
94
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
95 ;; The `texinfo-every-node-update' function runs `texinfo-update-node'
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
96 ;; on the whole buffer.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
97
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
98 ;; The `texinfo-sequential-node-update' function inserts the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
99 ;; immediately following and preceding node into the `Next' or
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
100 ;; `Previous' pointers regardless of their hierarchical level. This is
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
101 ;; only useful for certain kinds of text, like a novel, which you go
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
102 ;; through sequentially.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
103
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
104
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
105 ;;; The menu making functions described in detail
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
106
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
107 ;; The `texinfo-make-menu' function without an argument creates or
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
108 ;; updates a menu for the section encompassing the node that follows
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
109 ;; point. With an argument, it makes or updates menus for the nodes
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
110 ;; within or part of the marked region.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
111
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
112 ;; Whenever an existing menu is updated, the descriptions from
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
113 ;; that menu are incorporated into the new menu. This is done by copying
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
114 ;; descriptions from the existing menu to the entries in the new menu
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
115 ;; that have the same node names. If the node names are different, the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
116 ;; descriptions are not copied to the new menu.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
117
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
118 ;; Menu entries that refer to other Info files are removed since they
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
119 ;; are not a node within current buffer. This is a deficiency.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
120
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
121 ;; The `texinfo-all-menus-update' function runs `texinfo-make-menu'
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
122 ;; on the whole buffer.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
123
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
124 ;; The `texinfo-master-menu' function creates an extended menu located
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
125 ;; after the top node. (The file must have a top node.) The function
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
126 ;; first updates all the regular menus in the buffer (incorporating the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
127 ;; descriptions from pre-existing menus), and then constructs a master
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
128 ;; menu that includes every entry from every other menu. (However, the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
129 ;; function cannot update an already existing master menu; if one
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
130 ;; exists, it must be removed before calling the function.)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
131
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
132 ;; The `texinfo-indent-menu-description' function indents every
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
133 ;; description in the menu following point, to the specified column.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
134 ;; Non-nil argument (prefix, if interactive) means indent every
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
135 ;; description in every menu in the region. This function does not
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
136 ;; indent second and subsequent lines of a multi-line description.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
137
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
138 ;; The `texinfo-insert-node-lines' function inserts `@node' before the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
139 ;; `@chapter', `@section', and such like lines of a region in a Texinfo
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
140 ;; file where the `@node' lines are missing.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
141 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
142 ;; With a non-nil argument (prefix, if interactive), the function not
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
143 ;; only inserts `@node' lines but also inserts the chapter or section
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
144 ;; titles as the names of the corresponding nodes; and inserts titles
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
145 ;; as node names in pre-existing `@node' lines that lack names.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
146 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
147 ;; Since node names should be more concise than section or chapter
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14009
diff changeset
148 ;; titles, node names so inserted will need to be edited manually.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
149
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
150
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
151 ;;; Code:
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
152
33258
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
153 (require 'texinfo)
19630
95743e18a01c (defgroup, defcustom): Add Emacs 19 compatibility definitions.
Richard M. Stallman <rms@gnu.org>
parents: 19110
diff changeset
154
95743e18a01c (defgroup, defcustom): Add Emacs 19 compatibility definitions.
Richard M. Stallman <rms@gnu.org>
parents: 19110
diff changeset
155
18849
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
156 (defvar texinfo-master-menu-header
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
157 " --- The Detailed Node Listing ---\n"
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
158 "String inserted before lower level entries in Texinfo master menu.
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
159 It comes after the chapter-level menu entries.")
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
160
40284
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
161 ;; We used to look for just sub, but that found @subtitle.
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
162 (defvar texinfo-section-types-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
163 "^@\\(chapter \\|sect\\|subs\\|subh\\|unnum\\|major\\|chapheading \\|heading \\|appendix\\)"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
164 "Regexp matching chapter, section, other headings (but not the top node).")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
165
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
166 (defvar texinfo-section-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
167 (regexp-opt (texinfo-filter 3 texinfo-section-list))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
168 "Regular expression matching just the Texinfo section level headings.")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
169
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
170 (defvar texinfo-subsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
171 (regexp-opt (texinfo-filter 4 texinfo-section-list))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
172 "Regular expression matching just the Texinfo subsection level headings.")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
173
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
174 (defvar texinfo-subsubsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
175 (regexp-opt (texinfo-filter 5 texinfo-section-list))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
176 "Regular expression matching just the Texinfo subsubsection level headings.")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
177
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
178 (defvar texinfo-update-menu-same-level-regexps
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
179 '((1 . "top[ \t]+")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
180 (2 . (concat "\\(^@\\)\\(" texinfo-chapter-level-regexp "\\)\\>[ \t]*"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
181 (3 . (concat "\\(^@\\)\\(" texinfo-section-level-regexp "\\)\\>[ \t]*"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
182 (4 . (concat "\\(^@\\)\\(" texinfo-subsection-level-regexp "\\)\\>[ \t]+"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
183 (5 . (concat "\\(^@\\)\\(" texinfo-subsubsection-level-regexp "\\)\\>[ \t]+")))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
184 "*Regexps for searching for same level sections in a Texinfo file.
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
185 The keys are strings specifying the general hierarchical level in the
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
186 document; the values are regular expressions.")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
187
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
188 (defvar texinfo-update-menu-higher-regexps
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
189 '((1 . "^@node [ \t]*DIR")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
190 (2 . "^@node [ \t]*top[ \t]*\\(,\\|$\\)")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
191 (3 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
192 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
193 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
194 texinfo-chapter-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
195 "\\)\\>[ \t]*\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
196 (4 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
197 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
198 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
199 texinfo-section-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
200 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
201 texinfo-chapter-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
202 "\\)\\>[ \t]*\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
203 (5 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
204 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
205 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
206 texinfo-subsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
207 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
208 texinfo-section-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
209 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
210 texinfo-chapter-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
211 "\\)\\>[ \t]*\\)")))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
212 "*Regexps for searching for higher level sections in a Texinfo file.
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
213 The keys are strings specifying the general hierarchical level in the
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
214 document; the values are regular expressions.")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
215
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
216 (defvar texinfo-update-menu-lower-regexps
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
217 '((1 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
218 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
219 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
220 texinfo-chapter-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
221 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
222 texinfo-section-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
223 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
224 texinfo-subsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
225 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
226 texinfo-subsubsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
227 "\\)\\>[ \t]*\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
228 (2 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
229 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
230 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
231 texinfo-section-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
232 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
233 texinfo-subsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
234 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
235 texinfo-subsubsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
236 "\\)\\>[ \t]*\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
237 (3 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
238 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
239 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
240 texinfo-subsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
241 "\\|"
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
242 texinfo-subsubsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
243 "\\)\\>[ \t]+\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
244 (4 .
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
245 (concat
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
246 "\\(^@\\("
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
247 texinfo-subsubsection-level-regexp
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
248 "\\)\\>[ \t]+\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
249 ;; There's nothing below 5, use a bogus regexp that can't match.
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
250 (5 . "a\\(^\\)"))
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
251 "*Regexps for searching for lower level sections in a Texinfo file.
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
252 The keys are strings specifying the general hierarchical level in the
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
253 document; the values are regular expressions.")
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
254
1b45ff920a8c (texinfo-section-types-regexp)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38963
diff changeset
255
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
256 (defun texinfo-make-menu (&optional beginning end)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
257 "Without any prefix argument, make or update a menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
258 Make the menu for the section enclosing the node found following point.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
259
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
260 A prefix argument means make or update menus
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
261 for nodes within or part of the marked region.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
262
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
263 Whenever a menu exists, and is being updated, the descriptions that
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
264 are associated with node names in the pre-existing menu are
43430
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
265 incorporated into the new menu.
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
266
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
267 Leaves trailing whitespace in a menu that lacks descriptions, so
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
268 descriptions will format well. In general, a menu should contain
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
269 descriptions, because node names and section titles are often too
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
270 short to explain a node well."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
271
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
272 (interactive
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
273 (if prefix-arg
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
274 (list (point) (mark))))
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
275 (if (null beginning)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
276 (let ((level (texinfo-hierarchic-level)))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
277 (texinfo-make-one-menu level)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
278 (message "Menu updated"))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
279 ;; else
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
280 (message "Making or updating menus in %s... " (buffer-name))
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
281 (save-excursion
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
282 (goto-char (min beginning end))
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
283 ;; find section type following point
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
284 (let ((level (texinfo-hierarchic-level))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
285 (region-end-marker (make-marker)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
286 (set-marker region-end-marker (max beginning end))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
287 (save-restriction
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
288 (widen)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
289
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
290 (while (texinfo-find-lower-level-node
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
291 level (marker-position region-end-marker))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
292 (setq level (texinfo-hierarchic-level)) ; new, lower level
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
293 (texinfo-make-one-menu level))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
294
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
295 (while (and (< (point) (marker-position region-end-marker))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
296 (texinfo-find-higher-level-node
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
297 level (marker-position region-end-marker)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
298 (setq level (texinfo-hierarchic-level))
23414
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
299 ;; Don't allow texinfo-find-higher-level-node
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
300 ;; to find the same node again.
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
301 (forward-line 1)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
302 (while (texinfo-find-lower-level-node
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
303 level (marker-position region-end-marker))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
304 (setq level (texinfo-hierarchic-level)) ; new, lower level
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
305 (texinfo-make-one-menu level))))))
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
306 (message "Making or updating menus in %s...done" (buffer-name))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
307
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
308 (defun texinfo-make-one-menu (level)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
309 "Make a menu of all the appropriate nodes in this section.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
310 `Appropriate nodes' are those associated with sections that are
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
311 at the level specified by LEVEL. Point is left at the end of menu."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
312 (let*
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
313 ((case-fold-search t)
143
fa6580d92860 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 140
diff changeset
314 (beginning
fa6580d92860 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 140
diff changeset
315 (save-excursion
fa6580d92860 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 140
diff changeset
316 (goto-char (texinfo-update-menu-region-beginning level))
fa6580d92860 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 140
diff changeset
317 (end-of-line)
fa6580d92860 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 140
diff changeset
318 (point)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
319 (end (texinfo-update-menu-region-end level))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
320 (first (texinfo-menu-first-node beginning end))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
321 (node-name (progn
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
322 (goto-char beginning)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
323 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
324 (texinfo-copy-node-name)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
325 (new-menu-list (texinfo-make-menu-list beginning end level)))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
326 (when (texinfo-old-menu-p beginning first)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
327 (texinfo-incorporate-descriptions new-menu-list)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
328 (texinfo-incorporate-menu-entry-names new-menu-list)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
329 (texinfo-delete-old-menu beginning first))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
330 (texinfo-insert-menu new-menu-list node-name)))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
331
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
332 (defun texinfo-all-menus-update (&optional update-all-nodes-p)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
333 "Update every regular menu in a Texinfo file.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
334 Update pre-existing master menu, if there is one.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
335
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
336 If called with a non-nil argument, this function first updates all the
43430
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
337 nodes in the buffer before updating the menus.
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
338
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
339 Indents the first line of descriptions, and leaves trailing whitespace
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
340 in a menu that lacks descriptions, so descriptions will format well.
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
341 In general, a menu should contain descriptions, because node names and
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
342 section titles are often too short to explain a node well."
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
343 (interactive "P")
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
344 (let ((case-fold-search t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
345 master-menu-p)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
346 (save-excursion
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
347 (push-mark (point-max) t)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
348 (goto-char (point-min))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
349 (message "Checking for a master menu in %s ... "(buffer-name))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
350 (save-excursion
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
351 (when (search-forward texinfo-master-menu-header nil t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
352 ;; Check if @detailmenu kludge is used;
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
353 ;; if so, leave point before @detailmenu.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
354 (search-backward "\n@detailmenu"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
355 (save-excursion (forward-line -3) (point))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
356 t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
357 ;; Remove detailed master menu listing
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
358 (setq master-menu-p t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
359 (goto-char (match-beginning 0))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
360 (let ((end-of-detailed-menu-descriptions
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
361 (save-excursion ; beginning of end menu line
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
362 (goto-char (texinfo-menu-end))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
363 (beginning-of-line) (forward-char -1)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
364 (point))))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
365 (delete-region (point) end-of-detailed-menu-descriptions))))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
366
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
367 (when update-all-nodes-p
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
368 (message "Updating all nodes in %s ... " (buffer-name))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
369 (texinfo-update-node (point-min) (point-max)))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
370
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
371 (message "Updating all menus in %s ... " (buffer-name))
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
372 (texinfo-make-menu (point-max) (point-min))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
373
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
374 (when master-menu-p
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
375 (message "Updating the master menu in %s... " (buffer-name))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
376 (texinfo-master-menu nil)))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
377
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
378 (message "Done...updated all the menus. You may save the buffer.")))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
379
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
380 (defun texinfo-find-lower-level-node (level region-end)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
381 "Search forward from point for node at any level lower than LEVEL.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
382 Search is limited to the end of the marked region, REGION-END,
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
383 and to the end of the menu region for the level.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
384
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
385 Return t if the node is found, else nil. Leave point at the beginning
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
386 of the node if one is found; else do not move point."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
387 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
388 (if (and (< (point) region-end)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
389 (re-search-forward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
390 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
391 "\\(^@node\\).*\n" ; match node line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
392 "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
393 "\\|" ; or
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
394 "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
395 "\\|" ; or
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
396 "\\(^@ifnottex[ ]*\n\\)" ; ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
397 "\\)?" ; end of expression
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
398 (eval (cdr (assoc level texinfo-update-menu-lower-regexps))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
399 ;; the next higher level node marks the end of this
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
400 ;; section, and no lower level node will be found beyond
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
401 ;; this position even if region-end is farther off
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
402 (texinfo-update-menu-region-end level)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
403 t))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
404 (goto-char (match-beginning 1)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
405
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
406 (defun texinfo-find-higher-level-node (level region-end)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
407 "Search forward from point for node at any higher level than argument LEVEL.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
408 Search is limited to the end of the marked region, REGION-END.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
409
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
410 Return t if the node is found, else nil. Leave point at the beginning
23414
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
411 of the node if one is found; else do not move point.
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
412
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
413 A `@node' line starting at point does count as a match;
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
414 if the match is found there, the value is t and point does not move."
c9d093e48f15 (texinfo-make-menu): Don't let
Richard M. Stallman <rms@gnu.org>
parents: 22396
diff changeset
415
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
416 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
417 (cond
33258
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
418 ((< level 3)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
419 (if (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" region-end t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
420 (progn (beginning-of-line) t)))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
421 (t
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
422 (when (re-search-forward
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
423 (concat
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
424 "\\(^@node\\).*\n" ; match node line
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
425 "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
426 "\\|" ; or
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
427 "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
428 "\\|" ; or
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
429 "\\(^@ifnottex[ ]*\n\\)" ; ifnottex line, if any
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
430 "\\)?" ; end of expression
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
431 (eval (cdr (assoc level texinfo-update-menu-higher-regexps))))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
432 region-end t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
433 (beginning-of-line) t)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
434
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
435
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
436 ;;; Making the list of new menu entries
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
437
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
438 (defun texinfo-make-menu-list (beginning end level)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
439 "Make a list of node names and their descriptions.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
440 Point is left at the end of the menu region, but the menu is not inserted.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
441
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
442 First argument is position from which to start making menu list;
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
443 second argument is end of region in which to try to locate entries;
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
444 third argument is the level of the nodes that are the entries.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
445
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
446 Node names and descriptions are dotted pairs of strings. Each pair is
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
447 an element of the list. If the description does not exist, the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
448 element consists only of the node name."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
449 (goto-char beginning)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
450 (let (new-menu-list)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
451 (while (texinfo-menu-locate-entry-p level end)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
452 (push (cons
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
453 (texinfo-copy-node-name)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
454 (prog1 "" (forward-line 1)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
455 ;; Use following to insert section titles automatically.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
456 ;; (texinfo-copy-section-title))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
457 new-menu-list))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
458 (nreverse new-menu-list)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
459
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
460 (defun texinfo-menu-locate-entry-p (level search-end)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
461 "Find a node that will be part of menu for this section.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
462 First argument is a string such as \"section\" specifying the general
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
463 hierarchical level of the menu; second argument is a position
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
464 specifying the end of the search.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
465
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
466 The function returns t if the node is found, else nil. It searches
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
467 forward from point, and leaves point at the beginning of the node.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
468
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
469 The function finds entries of the same type. Thus `subsections' and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
470 `unnumberedsubsecs' will appear in the same menu."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
471 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
472 (if (re-search-forward
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
473 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
474 "\\(^@node\\).*\n" ; match node line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
475 "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
476 "\\|" ; or
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
477 "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
478 "\\|" ; or
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
479 "\\(^@ifnottex[ ]*\n\\)" ; ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
480 "\\)?" ; end of expression
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
481 (eval
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
482 (cdr (assoc level texinfo-update-menu-same-level-regexps))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
483 search-end
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
484 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
485 (goto-char (match-beginning 1)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
486
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
487 (defun texinfo-copy-node-name ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
488 "Return the node name as a string.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
489
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
490 Start with point at the beginning of the node line; copy the text
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
491 after the node command up to the first comma on the line, if any, and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
492 return the text as a string. Leaves point at the beginning of the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
493 line. If there is no node name, returns an empty string."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
494
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
495 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
496 (buffer-substring
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
497 (progn (forward-word 1) ; skip over node command
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
498 (skip-chars-forward " \t") ; and over spaces
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
499 (point))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
500 (if (search-forward "," (line-end-position) t) ; bound search
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
501 (1- (point))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
502 (end-of-line) (point)))))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
503
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
504 (defun texinfo-copy-section-title ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
505 "Return the title of the section as a string.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
506 The title is used as a description line in the menu when one does not
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
507 already exist.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
508
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
509 Move point to the beginning of the appropriate section line by going
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
510 to the start of the text matched by last regexp searched for, which
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
511 must have been done by `texinfo-menu-locate-entry-p'."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
512
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
513 ;; could use the same re-search as in `texinfo-menu-locate-entry-p'
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
514 ;; instead of using `match-beginning'; such a variation would be
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
515 ;; more general, but would waste information already collected
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
516
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
517 (goto-char (match-beginning 7)) ; match section name
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
518
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
519 (buffer-substring
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
520 (progn (forward-word 1) ; skip over section type
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
521 (skip-chars-forward " \t") ; and over spaces
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
522 (point))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
523 (progn (end-of-line) (point))))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
524
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
525
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
526 ;;; Handling the old menu
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
527
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
528 (defun texinfo-old-menu-p (beginning first)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
529 "Move point to the beginning of the menu for this section, if any.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
530 Otherwise move point to the end of the first node of this section.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
531 Return t if a menu is found, nil otherwise.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
532
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
533 First argument is the position of the beginning of the section in which
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
534 the menu will be located; second argument is the position of the first
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
535 node within the section.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
536
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
537 If no menu is found, the function inserts two newlines just before the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
538 end of the section, and leaves point there where a menu ought to be."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
539 (goto-char beginning)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
540 (if (re-search-forward "^@menu" first 'goto-end)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
541 t
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
542 (insert "\n\n") (forward-line -2) nil))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
543
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
544 (defun texinfo-incorporate-descriptions (new-menu-list)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
545 "Copy the old menu line descriptions that exist to the new menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
546
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
547 Point must be at beginning of old menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
548
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
549 If the node-name of the new menu is found in the old menu, insert the
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
550 old description into the new entry.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
551
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
552 For this function, the new menu is a list made up of lists of dotted
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
553 pairs in which the first element of the pair is the node name and the
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
554 second element the description. The new menu is changed destructively.
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
555 The old menu is the menu as it appears in the Texinfo file."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
556
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
557 (let ((end-of-menu (texinfo-menu-end)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
558 (dolist (new-menu new-menu-list new-menu-list)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
559 (save-excursion ; keep point at beginning of menu
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
560 (when (re-search-forward
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
561 ;; Existing nodes can have the form
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
562 ;; * NODE NAME:: DESCRIPTION
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
563 ;; or
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
564 ;; * MENU ITEM: NODE NAME. DESCRIPTION.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
565 ;;
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
566 ;; Recognize both when looking for the description.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
567 (concat "\\* \\(" ; so only menu entries are found
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
568 (regexp-quote (car new-menu)) "::"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
569 "\\|"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
570 ".*: " (regexp-quote (car new-menu)) "[.,\t\n]"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
571 "\\)"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
572 ) ; so only complete entries are found
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
573 end-of-menu
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
574 t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
575 (setcdr new-menu (texinfo-menu-copy-old-description end-of-menu)))))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
576
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
577 (defun texinfo-incorporate-menu-entry-names (new-menu-list)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
578 "Copy any old menu entry names to the new menu.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
579
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
580 Point must be at beginning of old menu.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
581
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
582 If the node-name of the new menu entry cannot be found in the old
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
583 menu, do nothing.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
584
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
585 For this function, the new menu is a list made up of lists of dotted
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
586 pairs in which the first element of the pair is the node name and the
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
587 second element is the description (or nil).
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
588
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
589 If we find an existing menu entry name, we change the first element of
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
590 the pair to be another dotted pair in which the car is the menu entry
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
591 name and the cdr is the node name.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
592
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
593 NEW-MENU-LIST is changed destructively. The old menu is the menu as it
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
594 appears in the texinfo file."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
595
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
596 (let ((end-of-menu (texinfo-menu-end)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
597 (dolist (new-menu new-menu-list new-menu-list)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
598 (save-excursion ; keep point at beginning of menu
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
599 (if (re-search-forward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
600 ;; Existing nodes can have the form
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
601 ;; * NODE NAME:: DESCRIPTION
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
602 ;; or
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
603 ;; * MENU ITEM: NODE NAME. DESCRIPTION.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
604 ;;
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
605 ;; We're interested in the second case.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
606 (concat "\\* " ; so only menu entries are found
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
607 "\\(.*\\): " (regexp-quote (car new-menu))
21180
921bd225796e (texinfo-incorporate-menu-entry-names)
Karl Heuer <kwzh@gnu.org>
parents: 19630
diff changeset
608 "[.,\t\n]")
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
609 end-of-menu
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
610 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
611 (setcar
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
612 new-menu ; replace the node name
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
613 (cons (buffer-substring (match-beginning 1) (match-end 1))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
614 (car new-menu))))))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
615
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
616 (defun texinfo-menu-copy-old-description (end-of-menu)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
617 "Return description field of old menu line as string.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
618 Point must be located just after the node name. Point left before description.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
619 Single argument, END-OF-MENU, is position limiting search."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
620 (skip-chars-forward "[:.,\t\n ]+")
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
621 ;; don't copy a carriage return at line beginning with asterisk!
53553
e7fef31e8d98 (texinfo-menu-copy-old-description): do not copy `@detailmenu' or
Robert J. Chassell <bob@rattlesnake.com>
parents: 53315
diff changeset
622 ;; don't copy @detailmenu or @end menu as descriptions!
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
623 ;; do copy a description that begins with an `@'!
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
624 ;; !! Known bug: does not copy descriptions starting with ^|\{?* etc.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
625 (if (and (looking-at "\\(\\w+\\|@\\)")
53553
e7fef31e8d98 (texinfo-menu-copy-old-description): do not copy `@detailmenu' or
Robert J. Chassell <bob@rattlesnake.com>
parents: 53315
diff changeset
626 (not (looking-at "\\(^\\* \\|^@detailmenu\\|^@end menu\\)")))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
627 (buffer-substring
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
628 (point)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
629 (save-excursion
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
630 (re-search-forward "\\(^\\* \\|^@end menu\\)" end-of-menu t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
631 (forward-line -1)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
632 (end-of-line) ; go to end of last description line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
633 (point)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
634 ""))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
635
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
636 (defun texinfo-menu-end ()
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
637 "Return position of end of menu, but don't move point.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
638 Signal an error if not end of menu."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
639 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
640 (if (re-search-forward "^@end menu" nil t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
641 (point)
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
642 (error "Menu does not have an end"))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
643
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
644 (defun texinfo-delete-old-menu (beginning first)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
645 "Delete the old menu. Point must be in or after menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
646 First argument is position of the beginning of the section in which
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
647 the menu will be located; second argument is the position of the first
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
648 node within the section."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
649 ;; No third arg to search, so error if search fails.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
650 (re-search-backward "^@menu" beginning)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
651 (delete-region (point)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
652 (save-excursion
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
653 (re-search-forward "^@end menu" first)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
654 (point))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
655
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
656
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
657 ;;; Inserting new menu
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
658
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
659 ;; try 32, but perhaps 24 is better
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
660 (defvar texinfo-column-for-description 32
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
661 "*Column at which descriptions start in a Texinfo menu.")
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
662
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
663 (defun texinfo-insert-menu (menu-list node-name)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
664 "Insert formatted menu at point.
43430
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
665 Indents the first line of descriptions, if any, to the value of
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
666 texinfo-column-for-description. Indenting leaves trailing whitespace
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
667 in a menu that lacks descriptions, so descriptions will format well.
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
668 In general, a menu should contain descriptions, because node names and
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
669 section titles are often too short to explain a node well.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
670
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
671 MENU-LIST has form:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
672
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
673 \(\(\"node-name1\" . \"description\"\)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
674 \(\"node-name2\" . \"description\"\) ... \)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
675
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
676 However, the description field might be nil.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
677
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
678 Also, the node-name field might itself be a dotted pair (call it P) of
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
679 strings instead of just a string. In that case, the car of P
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
680 is the menu entry name, and the cdr of P is the node name."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
681
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
682 (insert "@menu\n")
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
683 (dolist (menu menu-list)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
684 ;; Every menu entry starts with a star and a space.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
685 (insert "* ")
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
686
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
687 ;; Insert the node name (and menu entry name, if present).
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
688 (let ((node-part (car menu)))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
689 (if (stringp node-part)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
690 ;; "Double colon" entry line; menu entry and node name are the same,
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
691 (insert (format "%s::" node-part))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
692 ;; "Single colon" entry line; menu entry and node name are different.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
693 (insert (format "%s: %s." (car node-part) (cdr node-part)))))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
694
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
695 ;; Insert the description, if present.
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
696 (when (cdr menu)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
697 ;; Move to right place.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
698 (indent-to texinfo-column-for-description 2)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
699 ;; Insert description.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
700 (insert (format "%s" (cdr menu))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
701
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
702 (insert "\n")) ; end this menu entry
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
703 (insert "@end menu")
43660
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
704 (let ((level (texinfo-hierarchic-level)))
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
705 (message
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
706 "Updated level \"%s\" menu following node: %s ... " level node-name)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
707
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
708
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
709 ;;; Starting menu descriptions by inserting titles
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
710
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
711 (defun texinfo-start-menu-description ()
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
712 "In this menu entry, insert the node's section title as a description.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
713 Position point at beginning of description ready for editing.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
714 Do not insert a title if the line contains an existing description.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
715
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
716 You will need to edit the inserted text since a useful description
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
717 complements the node name rather than repeats it as a title does."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
718
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
719 (interactive)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
720 (let (beginning end node-name title)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
721 (save-excursion
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
722 (beginning-of-line)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
723 (if (search-forward "* " (save-excursion (end-of-line) (point)) t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
724 (progn (skip-chars-forward " \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
725 (setq beginning (point)))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
726 (error "This is not a line in a menu"))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
727
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
728 (cond
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
729 ;; "Double colon" entry line; menu entry and node name are the same,
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
730 ((search-forward "::" (save-excursion (end-of-line) (point)) t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
731 (if (looking-at "[ \t]*[^ \t\n]+")
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
732 (error "Descriptive text already exists"))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
733 (skip-chars-backward ": \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
734 (setq node-name (buffer-substring beginning (point))))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
735
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
736 ;; "Single colon" entry line; menu entry and node name are different.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
737 ((search-forward ":" (save-excursion (end-of-line) (point)) t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
738 (skip-chars-forward " \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
739 (setq beginning (point))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
740 ;; Menu entry line ends in a period, comma, or tab.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
741 (if (re-search-forward "[.,\t]"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
742 (save-excursion (forward-line 1) (point)) t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
743 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
744 (if (looking-at "[ \t]*[^ \t\n]+")
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
745 (error "Descriptive text already exists"))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
746 (skip-chars-backward "., \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
747 (setq node-name (buffer-substring beginning (point))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
748 ;; Menu entry line ends in a return.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
749 (re-search-forward ".*\n"
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
750 (save-excursion (forward-line 1) (point)) t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
751 (skip-chars-backward " \t\n")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
752 (setq node-name (buffer-substring beginning (point)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
753 (if (= 0 (length node-name))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
754 (error "No node name on this line")
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
755 (insert "."))))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
756 (t (error "No node name on this line")))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
757 ;; Search for node that matches node name, and copy the section title.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
758 (if (re-search-forward
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
759 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
760 "^@node[ \t]+"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
761 (regexp-quote node-name)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
762 ".*\n" ; match node line
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
763 "\\("
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
764 "\\(\\(^@c \\|^@comment\\).*\n\\)" ; match comment line, if any
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
765 "\\|" ; or
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
766 "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
767 "\\|" ; or
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
768 "\\(^@ifnottex[ ]*\n\\)" ; ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
769 "\\)?" ; end of expression
43612
15a51e54d11d (texinfo-start-menu-description): Remove extra paren in regexp.
Andreas Schwab <schwab@suse.de>
parents: 43430
diff changeset
770 )
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
771 nil t)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
772 (setq title
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
773 (buffer-substring
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
774 ;; skip over section type
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
775 (progn (forward-word 1)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
776 ;; and over spaces
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
777 (skip-chars-forward " \t")
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
778 (point))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
779 (progn (end-of-line)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
780 (skip-chars-backward " \t")
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
781 (point))))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
782 (error "Cannot find node to match node name in menu entry")))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
783 ;; Return point to the menu and insert the title.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
784 (end-of-line)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
785 (delete-region
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
786 (point)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
787 (save-excursion (skip-chars-backward " \t") (point)))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
788 (indent-to texinfo-column-for-description 2)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
789 (save-excursion (insert title))))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
790
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
791
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
792 ;;; Handling description indentation
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
793
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
794 ;; Since the make-menu functions indent descriptions, these functions
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
795 ;; are useful primarily for indenting a single menu specially.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
796
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
797 (defun texinfo-indent-menu-description (column &optional region-p)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
798 "Indent every description in menu following point to COLUMN.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
799 Non-nil argument (prefix, if interactive) means indent every
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
800 description in every menu in the region. Does not indent second and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
801 subsequent lines of a multi-line description."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
802
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
803 (interactive
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
804 "nIndent menu descriptions to (column number): \nP")
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
805 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
806 (save-restriction
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
807 (widen)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
808 (if (not region-p)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
809 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
810 (re-search-forward "^@menu")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
811 (texinfo-menu-indent-description column)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
812 (message
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
813 "Indented descriptions in menu. You may save the buffer."))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
814 ;;else
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
815 (message "Indenting every menu description in region... ")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
816 (goto-char (region-beginning))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
817 (while (and (< (point) (region-end))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
818 (texinfo-locate-menu-p))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
819 (forward-line 1)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
820 (texinfo-menu-indent-description column))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
821 (message "Indenting done. You may save the buffer.")))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
822
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
823 (defun texinfo-menu-indent-description (to-column-number)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
824 "Indent the Texinfo file menu description to TO-COLUMN-NUMBER.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
825 Start with point just after the word `menu' in the `@menu' line and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
826 leave point on the line before the `@end menu' line. Does not indent
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
827 second and subsequent lines of a multi-line description."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
828 (let* ((beginning-of-next-line (point)))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
829 (while (< beginning-of-next-line
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
830 (save-excursion ; beginning of end menu line
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
831 (goto-char (texinfo-menu-end))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
832 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
833 (point)))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
834
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
835 (when (re-search-forward "\\* \\(.*::\\|.*: [^.,\t\n]+[.,\t]\\)"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
836 (texinfo-menu-end)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
837 t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
838 (let ((beginning-white-space (point)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
839 (skip-chars-forward " \t") ; skip over spaces
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
840 (if (looking-at "\\(@\\|\\w\\)+") ; if there is text
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
841 (progn
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
842 ;; remove pre-existing indentation
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
843 (delete-region beginning-white-space (point))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
844 (indent-to-column to-column-number)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
845 ;; position point at beginning of next line
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
846 (forward-line 1)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
847 (setq beginning-of-next-line (point)))))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
848
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
849
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
850 ;;; Making the master menu
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
851
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
852 (defun texinfo-master-menu (update-all-nodes-menus-p)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
853 "Make a master menu for a whole Texinfo file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
854 Non-nil argument (prefix, if interactive) means first update all
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
855 existing nodes and menus. Remove pre-existing master menu, if there is one.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
856
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
857 This function creates a master menu that follows the top node. The
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
858 master menu includes every entry from all the other menus. It
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
859 replaces any existing ordinary menu that follows the top node.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
860
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
861 If called with a non-nil argument, this function first updates all the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
862 menus in the buffer (incorporating descriptions from pre-existing
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
863 menus) before it constructs the master menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
864
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
865 The function removes the detailed part of an already existing master
14009
dbc49672f847 (texinfo-master-menu): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13354
diff changeset
866 menu. This action depends on the pre-existing master menu using the
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
867 standard `texinfo-master-menu-header'.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
868
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
869 The master menu has the following format, which is adapted from the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
870 recommendation in the Texinfo Manual:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
871
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
872 * The first part contains the major nodes in the Texinfo file: the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
873 nodes for the chapters, chapter-like sections, and the major
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
874 appendices. This includes the indices, so long as they are in
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
875 chapter-like sections, such as unnumbered sections.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
876
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
877 * The second and subsequent parts contain a listing of the other,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
878 lower level menus, in order. This way, an inquirer can go
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
879 directly to a particular node if he or she is searching for
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
880 specific information.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
881
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
882 Each of the menus in the detailed node listing is introduced by the
43430
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
883 title of the section containing the menu.
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
884
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
885 Indents the first line of descriptions, and leaves trailing whitespace
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
886 in a menu that lacks descriptions, so descriptions will format well.
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
887 In general, a menu should contain descriptions, because node names and
5288b3225c40 (texinfo-insert-menu): Explain in doc string that
Robert J. Chassell <bob@rattlesnake.com>
parents: 40390
diff changeset
888 section titles are often too short to explain a node well."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
889
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
890 (interactive "P")
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
891 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
892 (widen)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
893 (goto-char (point-min))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
894
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
895 ;; Move point to location after `top'.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
896 (if (not (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
897 (error "This buffer needs a Top node"))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
898
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
899 (let ((first-chapter
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
900 (save-excursion
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
901 (or (re-search-forward "^@node" nil t)
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
902 (error "Too few nodes for a master menu"))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
903 (point))))
18849
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
904 (if (search-forward texinfo-master-menu-header first-chapter t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
905 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
906 ;; Check if @detailmenu kludge is used;
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
907 ;; if so, leave point before @detailmenu.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
908 (search-backward "\n@detailmenu"
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
909 (save-excursion (forward-line -3) (point))
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
910 t)
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
911 ;; Remove detailed master menu listing
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
912 (goto-char (match-beginning 0))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
913 (let ((end-of-detailed-menu-descriptions
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
914 (save-excursion ; beginning of end menu line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
915 (goto-char (texinfo-menu-end))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
916 (beginning-of-line) (forward-char -1)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
917 (point))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
918 (delete-region (point) end-of-detailed-menu-descriptions)))))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
919
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
920 (if update-all-nodes-menus-p
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
921 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
922 (message "Making a master menu in %s ...first updating all nodes... "
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
923 (buffer-name))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
924 (texinfo-update-node (point-min) (point-max))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
925
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
926 (message "Updating all menus in %s ... " (buffer-name))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
927 (texinfo-make-menu (point-min) (point-max))))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
928
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
929 (message "Now making the master menu in %s... " (buffer-name))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
930 (goto-char (point-min))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
931 (texinfo-insert-master-menu-list
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
932 (texinfo-master-menu-list))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
933
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
934 ;; Remove extra newlines that texinfo-insert-master-menu-list
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
935 ;; may have inserted.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
936
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
937 (save-excursion
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
938 (goto-char (point-min))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
939
18849
b4b2ad407ba0 (texinfo-all-menus-update)
Richard M. Stallman <rms@gnu.org>
parents: 18259
diff changeset
940 (if (search-forward texinfo-master-menu-header nil t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
941 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
942 (goto-char (match-beginning 0))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
943 ;; Check if @detailmenu kludge is used;
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
944 ;; if so, leave point before @detailmenu.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
945 (search-backward "\n@detailmenu"
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
946 (save-excursion (forward-line -3) (point))
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
947 t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
948 (insert "\n")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
949 (delete-blank-lines)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
950 (goto-char (point-min))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
951
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
952 (re-search-forward "^@menu")
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
953 (forward-line -1)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
954 (delete-blank-lines)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
955
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
956 (re-search-forward "^@end menu")
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
957 (forward-line 1)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
958 (delete-blank-lines))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
959
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
960 (message
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
961 "Done...completed making master menu. You may save the buffer.")))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
962
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
963 (defun texinfo-master-menu-list ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
964 "Return a list of menu entries and header lines for the master menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
965
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
966 Start with the menu for chapters and indices and then find each
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
967 following menu and the title of the node preceding that menu.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
968
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
969 The master menu list has this form:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
970
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
971 \(\(\(... \"entry-1-2\" \"entry-1\"\) \"title-1\"\)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
972 \(\(... \"entry-2-2\" \"entry-2-1\"\) \"title-2\"\)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
973 ...\)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
974
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
975 However, there does not need to be a title field."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
976
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
977 (let (master-menu-list)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
978 (while (texinfo-locate-menu-p)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
979 (push (list (texinfo-copy-menu) (texinfo-copy-menu-title))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
980 master-menu-list))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
981 (nreverse master-menu-list)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
982
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
983 (defun texinfo-insert-master-menu-list (master-menu-list)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
984 "Format and insert the master menu in the current buffer."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
985 (goto-char (point-min))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
986 ;; Insert a master menu only after `Top' node and before next node
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
987 ;; \(or include file if there is no next node\).
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
988 (unless (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
989 (error "This buffer needs a Top node"))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
990 (let ((first-chapter
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
991 (save-excursion (re-search-forward "^@node\\|^@include") (point))))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
992 (unless (re-search-forward "^@menu" first-chapter t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
993 (error "Buffer lacks ordinary `Top' menu in which to insert master")))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
994 (beginning-of-line)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
995 (delete-region ; buffer must have ordinary top menu
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
996 (point)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
997 (save-excursion (re-search-forward "^@end menu") (point)))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
998
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
999 (save-excursion
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1000 ;; `master-menu-inserted-p' is a kludge to tell
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1001 ;; whether to insert @end detailmenu (see bleow)
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1002 (let (master-menu-inserted-p)
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1003 ;; Handle top of menu
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1004 (insert "\n@menu\n")
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1005 ;; Insert chapter menu entries. Tell user what is going on.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1006 (message "Inserting chapter menu entry: %s ... "
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1007 (car (car master-menu-list)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1008 (dolist (entry (reverse (car (car master-menu-list))))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1009 (insert "* " entry "\n"))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1010
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1011 (setq master-menu-list (cdr master-menu-list))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1012
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1013 ;; Only insert detailed master menu if there is one....
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1014 (if (car (car master-menu-list))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1015 (progn (setq master-menu-inserted-p t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1016 (insert (concat "\n@detailmenu\n"
22396
6c7d7f953f08 (texinfo-insert-master-menu-list): Insert \n after @detailmenu.
Richard M. Stallman <rms@gnu.org>
parents: 21180
diff changeset
1017 texinfo-master-menu-header))))
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1018
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1019 ;; @detailmenu added 5 Sept 1996 to `texinfo-master-menu-header'
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1020 ;; at Karl Berry's request to avert a bug in `makeinfo';
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1021 ;; all agree this is a bad kludge and should eventually be removed.
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1022 ;; @detailmenu ... @end detailmenu is a noop in `texinfmt.el'.
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1023 ;; See @end detailmenu below;
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1024 ;; also see `texinfo-all-menus-update' above, `texinfo-master-menu',
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1025 ;; `texinfo-multiple-files-update'.
17518
1eecbe9dd89c (texinfo-master-menu-header): Delete newline at start.
Richard M. Stallman <rms@gnu.org>
parents: 17311
diff changeset
1026
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1027 ;; Now, insert all the other menus
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1028
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1029 ;; The menu master-menu-list has a form like this:
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1030 ;; ((("beta" "alpha") "title-A")
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1031 ;; (("delta" "gamma") "title-B"))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1032
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1033 (dolist (menu master-menu-list)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1034
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1035 (message "Inserting menu for %s .... " (cadr menu))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1036 ;; insert title of menu section
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1037 (insert "\n" (cadr menu) "\n\n")
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1038
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1039 ;; insert each menu entry
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1040 (dolist (entry (reverse (car menu)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1041 (insert "* " entry "\n")))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1042
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1043 ;; Finish menu
17518
1eecbe9dd89c (texinfo-master-menu-header): Delete newline at start.
Richard M. Stallman <rms@gnu.org>
parents: 17311
diff changeset
1044
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1045 ;; @detailmenu (see note above)
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1046 ;; Only insert @end detailmenu if a master menu was inserted.
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1047 (if master-menu-inserted-p
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1048 (insert "\n@end detailmenu"))
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1049 (insert "\n@end menu\n\n"))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1050
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1051 (defun texinfo-locate-menu-p ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1052 "Find the next menu in the texinfo file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1053 If found, leave point after word `menu' on the `@menu' line, and return t.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1054 If a menu is not found, do not move point and return nil."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1055 (re-search-forward "\\(^@menu\\)" nil t))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1056
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1057 (defun texinfo-copy-menu-title ()
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1058 "Return the title of the section preceding the menu as a string.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1059 If such a title cannot be found, return an empty string. Do not move
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1060 point."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1061 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1062 (save-excursion
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1063 (if (re-search-backward
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1064 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1065 "\\(^@top"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1066 "\\|" ; or
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1067 texinfo-section-types-regexp ; all other section types
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1068 "\\)")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1069 nil
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1070 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1071 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1072 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1073 (forward-word 1) ; skip over section type
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1074 (skip-chars-forward " \t") ; and over spaces
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1075 (buffer-substring
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1076 (point)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1077 (progn (end-of-line) (point))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1078 ""))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1079
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1080 (defun texinfo-copy-menu ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1081 "Return the entries of an existing menu as a list.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1082 Start with point just after the word `menu' in the `@menu' line
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1083 and leave point on the line before the `@end menu' line."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1084 (let* (this-menu-list
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1085 (end-of-menu (texinfo-menu-end)) ; position of end of `@end menu'
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1086 (last-entry (save-excursion ; position of beginning of
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1087 ; last `* ' entry
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1088 (goto-char end-of-menu)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1089 ;; handle multi-line description
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1090 (if (not (re-search-backward "^\\* " nil t))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
1091 (error "No entries in menu"))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1092 (point))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1093 (while (< (point) last-entry)
15363
d401fcd58f8c (texinfo-copy-menu): Use double backslash to quote regexp.
Karl Heuer <kwzh@gnu.org>
parents: 15362
diff changeset
1094 (if (re-search-forward "^\\* " end-of-menu t)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1095 (push (buffer-substring
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1096 (point)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1097 ;; copy multi-line descriptions
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1098 (save-excursion
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1099 (re-search-forward "\\(^\\* \\|^@e\\)" nil t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1100 (- (point) 3)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1101 this-menu-list)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1102 this-menu-list))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1103
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1104
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1105 ;;; Determining the hierarchical level in the texinfo file
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1106
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1107 (defun texinfo-specific-section-type ()
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1108 "Return the specific type of next section, as a string.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1109 For example, \"unnumberedsubsec\". Return \"top\" for top node.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1110
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1111 Searches forward for a section. Hence, point must be before the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1112 section whose type will be found. Does not move point. Signal an
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1113 error if the node is not the top node and a section is not found."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1114 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1115 (save-excursion
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1116 (cond
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1117 ((re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)"
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1118 ;; Following search limit by cph but causes a bug
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1119 ;;(line-end-position)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1120 nil
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1121 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1122 "top")
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1123 ((re-search-forward texinfo-section-types-regexp nil t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1124 (buffer-substring-no-properties
12698
e04324240c6b (texinfo-specific-section-type): Use buffer-substring-no-properties.
Richard M. Stallman <rms@gnu.org>
parents: 11929
diff changeset
1125 (progn (beginning-of-line) ; copy its name
e04324240c6b (texinfo-specific-section-type): Use buffer-substring-no-properties.
Richard M. Stallman <rms@gnu.org>
parents: 11929
diff changeset
1126 (1+ (point)))
e04324240c6b (texinfo-specific-section-type): Use buffer-substring-no-properties.
Richard M. Stallman <rms@gnu.org>
parents: 11929
diff changeset
1127 (progn (forward-word 1)
e04324240c6b (texinfo-specific-section-type): Use buffer-substring-no-properties.
Richard M. Stallman <rms@gnu.org>
parents: 11929
diff changeset
1128 (point))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1129 (t
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1130 (error
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
1131 "texinfo-specific-section-type: Chapter or section not found"))))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1132
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1133 (defun texinfo-hierarchic-level ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1134 "Return the general hierarchal level of the next node in a texinfo file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1135 Thus, a subheading or appendixsubsec is of type subsection."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1136 (let ((case-fold-search t))
33258
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1137 (cadr (assoc
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1138 (texinfo-specific-section-type)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1139 texinfo-section-list))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1140
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1141
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1142 ;;; Locating the major positions
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1143
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1144 (defun texinfo-update-menu-region-beginning (level)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1145 "Locate beginning of higher level section this section is within.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1146 Return position of the beginning of the node line; do not move point.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1147 Thus, if this level is subsection, searches backwards for section node.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1148 Only argument is a string of the general type of section."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1149 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1150 ;; !! Known bug: if section immediately follows top node, this
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1151 ;; returns the beginning of the buffer as the beginning of the
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1152 ;; higher level section.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1153 (cond
33258
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1154 ((< level 3)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1155 (save-excursion
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1156 (goto-char (point-min))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1157 (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1158 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1159 (point)))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1160 (t
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1161 (save-excursion
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1162 (re-search-backward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1163 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1164 "\\(^@node\\).*\n" ; match node line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1165 "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1166 "\\|" ; or
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1167 "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1168 "\\|" ; or
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1169 "\\(^@ifnottex[ ]*\n\\)" ; ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1170 "\\)?" ; end of expression
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1171 (eval
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1172 (cdr (assoc level texinfo-update-menu-higher-regexps))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1173 nil
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1174 'goto-beginning)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1175 (point))))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1176
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1177 (defun texinfo-update-menu-region-end (level)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1178 "Locate end of higher level section this section is within.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1179 Return position; do not move point. Thus, if this level is a
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1180 subsection, find the node for the section this subsection is within.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1181 If level is top or chapter, returns end of file. Only argument is a
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1182 string of the general type of section."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1183 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1184 (save-excursion
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1185 (if (re-search-forward
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1186 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1187 "\\(^@node\\).*\n" ; match node line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1188 "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1189 "\\|" ; or
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1190 "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1191 "\\|" ; or
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1192 "\\(^@ifnottex[ ]*\n\\)" ; ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1193 "\\)?" ; end of expression
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1194 (eval
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1195 ;; Never finds end of level above chapter so goes to end.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1196 (cdr (assoc level texinfo-update-menu-higher-regexps))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1197 nil
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1198 'goto-end)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1199 (match-beginning 1)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1200 (point-max)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1201
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1202 (defun texinfo-menu-first-node (beginning end)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1203 "Locate first node of the section the menu will be placed in.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1204 Return position; do not move point.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1205 The menu will be located just before this position.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1206
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1207 First argument is the position of the beginning of the section in
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1208 which the menu will be located; second argument is the position of the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1209 end of that region; it limits the search."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1210
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1211 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1212 (goto-char beginning)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1213 (forward-line 1)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1214 (re-search-forward "^@node" end t)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1215 (beginning-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1216 (point)))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1217
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1218
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1219 ;;; Updating a node
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1220
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1221 (defun texinfo-update-node (&optional beginning end)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1222 "Without any prefix argument, update the node in which point is located.
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1223 Interactively, a prefix argument means to operate on the region.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1224
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1225 The functions for creating or updating nodes and menus, and their
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1226 keybindings, are:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1227
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1228 texinfo-update-node (&optional beginning end) \\[texinfo-update-node]
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1229 texinfo-every-node-update () \\[texinfo-every-node-update]
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1230 texinfo-sequential-node-update (&optional region-p)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1231
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1232 texinfo-make-menu (&optional region-p) \\[texinfo-make-menu]
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1233 texinfo-all-menus-update () \\[texinfo-all-menus-update]
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1234 texinfo-master-menu ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1235
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1236 texinfo-indent-menu-description (column &optional region-p)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1237
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1238 The `texinfo-column-for-description' variable specifies the column to
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1239 which menu descriptions are indented. Its default value is 32."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1240
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1241 (interactive
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1242 (if prefix-arg
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1243 (list (point) (mark))))
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1244 (if (null beginning)
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1245 ;; Update a single node.
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1246 (let ((auto-fill-function nil))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1247 (if (not (re-search-backward "^@node" (point-min) t))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1248 (error "Node line not found before this position"))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1249 (texinfo-update-the-node)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1250 (message "Done...updated the node. You may save the buffer."))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1251 ;; else
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1252 (let ((auto-fill-function nil))
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1253 (save-excursion
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1254 (save-restriction
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1255 (narrow-to-region beginning end)
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1256 (goto-char (point-min))
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1257 (while (re-search-forward "^@node" (point-max) t)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1258 (beginning-of-line)
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1259 (texinfo-update-the-node))
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1260 (goto-char (point-max))
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1261 (message "Done...nodes updated in region. You may save the buffer."))))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1262
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1263 (defun texinfo-every-node-update ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1264 "Update every node in a Texinfo file."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1265 (interactive)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1266 (save-excursion
17311
f76a73cf699e (texinfo-make-menu): Accept args BEGINNING and END.
Richard M. Stallman <rms@gnu.org>
parents: 16858
diff changeset
1267 (texinfo-update-node (point-min) (point-max))
38877
408ff1ad3d3a (texinfo-every-node-update): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 38851
diff changeset
1268 (message "Done...updated every node. You may save the buffer.")))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1269
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1270 (defun texinfo-update-the-node ()
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1271 "Update one node. Point must be at the beginning of node line.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1272 Leave point at the end of the node line."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1273 (texinfo-check-for-node-name)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1274 (texinfo-delete-existing-pointers)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1275 (message "Updating node: %s ... " (texinfo-copy-node-name))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1276 (save-restriction
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1277 (widen)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1278 (let*
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1279 ((case-fold-search t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1280 (level (texinfo-hierarchic-level))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1281 (beginning (texinfo-update-menu-region-beginning level))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1282 (end (texinfo-update-menu-region-end level)))
33258
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1283 (if (eq level 1)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1284 (texinfo-top-pointer-case)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1285 ;; else
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1286 (texinfo-insert-pointer beginning end level 'next)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1287 (texinfo-insert-pointer beginning end level 'previous)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1288 (texinfo-insert-pointer beginning end level 'up)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1289 (texinfo-clean-up-node-line)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1290
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1291 (defun texinfo-top-pointer-case ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1292 "Insert pointers in the Top node. This is a special case.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1293
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1294 The `Next' pointer is a pointer to a chapter or section at a lower
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1295 hierarchical level in the file. The `Previous' and `Up' pointers are
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1296 to `(dir)'. Point must be at the beginning of the node line, and is
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1297 left at the end of the node line."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1298
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1299 (texinfo-clean-up-node-line)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1300 (insert ", "
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1301 (save-excursion
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1302 ;; There may be an @chapter or other such command between
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1303 ;; the top node line and the next node line, as a title
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1304 ;; for an `ifinfo' section. This @chapter command must
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1305 ;; must be skipped. So the procedure is to search for
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1306 ;; the next `@node' line, and then copy its name.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1307 (if (re-search-forward "^@node" nil t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1308 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1309 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1310 (texinfo-copy-node-name))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1311 " "))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1312 ", (dir), (dir)"))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1313
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1314 (defun texinfo-check-for-node-name ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1315 "Determine whether the node has a node name. Prompt for one if not.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1316 Point must be at beginning of node line. Does not move point."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1317 (save-excursion
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1318 (let ((initial (texinfo-copy-next-section-title)))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1319 ;; This is not clean. Use `interactive' to read the arg.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1320 (forward-word 1) ; skip over node command
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1321 (skip-chars-forward " \t") ; and over spaces
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1322 (if (not (looking-at "[^,\t\n ]+")) ; regexp based on what Info looks for
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1323 ; alternatively, use "[a-zA-Z]+"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1324 (let ((node-name
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1325 (read-from-minibuffer
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1326 "Node name (use no @, commas, colons, or apostrophes): "
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1327 initial)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1328 (insert " " node-name))))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1329
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1330 (defun texinfo-delete-existing-pointers ()
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1331 "Delete `Next', `Previous', and `Up' pointers.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1332 Starts from the current position of the cursor, and searches forward
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1333 on the line for a comma and if one is found, deletes the rest of the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1334 line, including the comma. Leaves point at beginning of line."
11929
46487d19cdb3 (texinfo-sequentially-find-pointer): Don't modify
Karl Heuer <kwzh@gnu.org>
parents: 7432
diff changeset
1335 (let ((eol-point (save-excursion (end-of-line) (point))))
46487d19cdb3 (texinfo-sequentially-find-pointer): Don't modify
Karl Heuer <kwzh@gnu.org>
parents: 7432
diff changeset
1336 (if (search-forward "," eol-point t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1337 (delete-region (1- (point)) eol-point)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1338 (beginning-of-line))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1339
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1340 (defun texinfo-find-pointer (beginning end level direction)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1341 "Move point to section associated with next, previous, or up pointer.
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1342 Return type of pointer (either `normal' or `no-pointer').
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1343
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1344 The first and second arguments bound the search for a pointer to the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1345 beginning and end, respectively, of the enclosing higher level
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1346 section. The third argument is a string specifying the general kind
15362
66fb24beae54 (texinfo-find-pointer): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1347 of section such as \"chapter\" or \"section\". When looking for the
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1348 `Next' pointer, the section found will be at the same hierarchical
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1349 level in the Texinfo file; when looking for the `Previous' pointer,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1350 the section found will be at the same or higher hierarchical level in
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1351 the Texinfo file; when looking for the `Up' pointer, the section found
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1352 will be at some level higher in the Texinfo file. The fourth argument
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1353 \(one of 'next, 'previous, or 'up\) specifies whether to find the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1354 `Next', `Previous', or `Up' pointer."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1355 (let ((case-fold-search t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1356 (cond ((eq direction 'next)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1357 (forward-line 3) ; skip over current node
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1358 ;; Search for section commands accompanied by node lines;
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1359 ;; ignore section commands in the middle of nodes.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1360 (if (re-search-forward
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1361 ;; A `Top' node is never a next pointer, so won't find it.
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1362 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1363 ;; Match node line.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1364 "\\(^@node\\).*\n"
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1365 ;; Match comment, ifinfo, ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1366 (concat
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1367 "\\(\\("
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1368 "\\(^@c\\).*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1369 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1370 "\\(^@ifinfo[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1371 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1372 "\\(^@ifnottex[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1373 "\\)?")
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1374 (eval
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1375 (cdr (assoc level texinfo-update-menu-same-level-regexps))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1376 end
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1377 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1378 'normal
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1379 'no-pointer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1380 ((eq direction 'previous)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1381 (if (re-search-backward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1382 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1383 "\\("
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1384 ;; Match node line.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1385 "\\(^@node\\).*\n"
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1386 ;; Match comment, ifinfo, ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1387 (concat
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1388 "\\(\\("
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1389 "\\(^@c\\).*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1390 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1391 "\\(^@ifinfo[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1392 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1393 "\\(^@ifnottex[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1394 "\\)?")
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1395 (eval
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1396 (cdr (assoc level texinfo-update-menu-same-level-regexps)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1397 "\\|"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1398 ;; Match node line.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1399 "\\(^@node\\).*\n"
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1400 ;; Match comment, ifinfo, ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1401 (concat
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1402 "\\(\\("
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1403 "\\(^@c\\).*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1404 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1405 "\\(^@ifinfo[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1406 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1407 "\\(^@ifnottex[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1408 "\\)?")
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1409 (eval
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1410 (cdr (assoc level texinfo-update-menu-higher-regexps)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1411 "\\|"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1412 ;; Handle `Top' node specially.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1413 "^@node [ \t]*top[ \t]*\\(,\\|$\\)"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1414 "\\)")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1415 beginning
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1416 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1417 'normal
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1418 'no-pointer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1419 ((eq direction 'up)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1420 (if (re-search-backward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1421 (concat
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1422 "\\("
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1423 ;; Match node line.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1424 "\\(^@node\\).*\n"
38851
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1425 ;; Match comment, ifinfo, ifnottex line, if any
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1426 (concat
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1427 "\\(\\("
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1428 "\\(^@c\\).*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1429 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1430 "\\(^@ifinfo[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1431 "\\|"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1432 "\\(^@ifnottex[ ]*\n\\)"
0d7b71525b45 Update copyright notice, fix minor
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1433 "\\)?")
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1434 (eval (cdr (assoc level texinfo-update-menu-higher-regexps)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1435 "\\|"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1436 ;; Handle `Top' node specially.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1437 "^@node [ \t]*top[ \t]*\\(,\\|$\\)"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1438 "\\)")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1439 (save-excursion
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1440 (goto-char beginning)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1441 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1442 (point))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1443 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1444 'normal
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1445 'no-pointer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1446 (t
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1447 (error "texinfo-find-pointer: lack proper arguments")))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1448
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1449 (defun texinfo-pointer-name (kind)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1450 "Return the node name preceding the section command.
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1451 The argument is the kind of section, either `normal' or `no-pointer'."
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1452 (let (name)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1453 (cond ((eq kind 'normal)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1454 (end-of-line) ; this handles prev node top case
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1455 (re-search-backward ; when point is already
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1456 "^@node" ; at the beginning of @node line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1457 (save-excursion (forward-line -3))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1458 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1459 (setq name (texinfo-copy-node-name)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1460 ((eq kind 'no-pointer)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1461 ;; Don't need to put a blank in the pointer slot,
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1462 ;; since insert "' " always has a space
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1463 (setq name " "))) ; put a blank in the pointer slot
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1464 name))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1465
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1466 (defun texinfo-insert-pointer (beginning end level direction)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1467 "Insert the `Next', `Previous' or `Up' node name at point.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1468 Move point forward.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1469
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1470 The first and second arguments bound the search for a pointer to the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1471 beginning and end, respectively, of the enclosing higher level
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1472 section. The third argument is the hierarchical level of the Texinfo
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1473 file, a string such as \"section\". The fourth argument is direction
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1474 towards which the pointer is directed, one of `next', `previous', or `up'."
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1475
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1476 (end-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1477 (insert
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1478 ", "
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1479 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1480 (texinfo-pointer-name
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1481 (texinfo-find-pointer beginning end level direction)))))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1482
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1483 (defun texinfo-clean-up-node-line ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1484 "Remove extra commas, if any, at end of node line."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1485 (end-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1486 (skip-chars-backward ", ")
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1487 (delete-region (point) (save-excursion (end-of-line) (point))))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1488
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1489
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1490 ;;; Updating nodes sequentially
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1491 ;; These sequential update functions insert `Next' or `Previous'
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1492 ;; pointers that point to the following or preceding nodes even if they
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1493 ;; are at higher or lower hierarchical levels. This means that if a
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1494 ;; section contains one or more subsections, the section's `Next'
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1495 ;; pointer will point to the subsection and not the following section.
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1496 ;; (The subsection to which `Next' points will most likely be the first
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1497 ;; item on the section's menu.)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1498
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1499 (defun texinfo-sequential-node-update (&optional region-p)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1500 "Update one node (or many) in a Texinfo file with sequential pointers.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1501
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1502 This function causes the `Next' or `Previous' pointer to point to the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1503 immediately preceding or following node, even if it is at a higher or
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1504 lower hierarchical level in the document. Continually pressing `n' or
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1505 `p' takes you straight through the file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1506
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1507 Without any prefix argument, update the node in which point is located.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1508 Non-nil argument (prefix, if interactive) means update the nodes in the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1509 marked region.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1510
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1511 This command makes it awkward to navigate among sections and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1512 subsections; it should be used only for those documents that are meant
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1513 to be read like a novel rather than a reference, and for which the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1514 Info `g*' command is inadequate."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1515
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1516 (interactive "P")
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1517 (if (not region-p)
4029
8bf916902edc (texinfo-update-node): Bind auto-fill-hook as well as auto-fill-function.
Richard M. Stallman <rms@gnu.org>
parents: 4028
diff changeset
1518 ;; update a single node
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1519 (let ((auto-fill-function nil))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1520 (if (not (re-search-backward "^@node" (point-min) t))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
1521 (error "Node line not found before this position"))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1522 (texinfo-sequentially-update-the-node)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1523 (message
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1524 "Done...sequentially updated the node . You may save the buffer."))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1525 ;; else
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1526 (let ((auto-fill-function nil)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1527 (beginning (region-beginning))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1528 (end (region-end)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1529 (if (= end beginning)
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
1530 (error "Please mark a region"))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1531 (save-restriction
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1532 (narrow-to-region beginning end)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1533 (goto-char beginning)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1534 (push-mark (point) t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1535 (while (re-search-forward "^@node" (point-max) t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1536 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1537 (texinfo-sequentially-update-the-node))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1538 (message
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1539 "Done...updated the nodes in sequence. You may save the buffer.")))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1540
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1541 (defun texinfo-sequentially-update-the-node ()
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1542 "Update one node such that the pointers are sequential.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1543 A `Next' or `Previous' pointer points to any preceding or following node,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1544 regardless of its hierarchical level."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1545
33258
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1546 (texinfo-check-for-node-name)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1547 (texinfo-delete-existing-pointers)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1548 (message
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1549 "Sequentially updating node: %s ... " (texinfo-copy-node-name))
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1550 (save-restriction
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1551 (widen)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1552 (let* ((case-fold-search t)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1553 (level (texinfo-hierarchic-level)))
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1554 (if (eq level 1)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1555 (texinfo-top-pointer-case)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1556 ;; else
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1557 (texinfo-sequentially-insert-pointer level 'next)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1558 (texinfo-sequentially-insert-pointer level 'previous)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1559 (texinfo-sequentially-insert-pointer level 'up)
e2ec8e65cd35 Require texinfo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25278
diff changeset
1560 (texinfo-clean-up-node-line)))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1561
43660
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1562 (defun texinfo-sequentially-insert-pointer (level direction)
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1563 "Insert the `Next', `Previous' or `Up' node name at point.
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1564 Move point forward.
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1565
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1566 The first argument is the hierarchical level of the Texinfo file, a
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1567 string such as \"section\". The second argument is direction, one of
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1568 `next', `previous', or `up'."
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1569
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1570 (end-of-line)
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1571 (insert
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1572 ", "
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1573 (save-excursion
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1574 (texinfo-pointer-name
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1575 (texinfo-sequentially-find-pointer level direction)))))
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1576
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1577 (defun texinfo-sequentially-find-pointer (level direction)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1578 "Find next or previous pointer sequentially in Texinfo file, or up pointer.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1579 Move point to section associated with the pointer. Find point even if
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1580 it is in a different section.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1581
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1582 Return type of pointer (either `normal' or `no-pointer').
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1583
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1584 The first argument is a string specifying the general kind of section
15362
66fb24beae54 (texinfo-find-pointer): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1585 such as \"chapter\" or \"section\". The section found will be at the
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1586 same hierarchical level in the Texinfo file, or, in the case of the up
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1587 pointer, some level higher. The second argument (one of `next',
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1588 `previous', or `up') specifies whether to find the `Next', `Previous',
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1589 or `Up' pointer."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1590 (let ((case-fold-search t))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1591 (cond ((eq direction 'next)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1592 (forward-line 3) ; skip over current node
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1593 (if (re-search-forward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1594 texinfo-section-types-regexp
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1595 (point-max)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1596 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1597 'normal
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1598 'no-pointer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1599 ((eq direction 'previous)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1600 (if (re-search-backward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1601 texinfo-section-types-regexp
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1602 (point-min)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1603 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1604 'normal
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1605 'no-pointer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1606 ((eq direction 'up)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1607 (if (re-search-backward
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1608 (eval (cdr (assoc level texinfo-update-menu-higher-regexps)))
43660
77676c41d6fb (texinfo-insert-menu): specify previously free variable `level' in a
Robert J. Chassell <bob@rattlesnake.com>
parents: 43612
diff changeset
1609 (point-min)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1610 t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1611 'normal
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1612 'no-pointer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1613 (t
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1614 (error "texinfo-sequential-find-pointer: lack proper arguments")))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1615
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1616
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1617 ;;; Inserting `@node' lines
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1618 ;; The `texinfo-insert-node-lines' function inserts `@node' lines as needed
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1619 ;; before the `@chapter', `@section', and such like lines of a region
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1620 ;; in a Texinfo file.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1621
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1622 (defun texinfo-insert-node-lines (beginning end &optional title-p)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1623 "Insert missing `@node' lines in region of Texinfo file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1624 Non-nil argument (prefix, if interactive) means also to insert the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1625 section titles as node names; and also to insert the section titles as
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1626 node names in pre-existing `@node' lines that lack names."
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1627 (interactive "r\nP")
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1628
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1629 ;; Use marker; after inserting node lines, leave point at end of
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1630 ;; region and mark at beginning.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1631
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1632 (let (beginning-marker end-marker title last-section-position)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1633
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1634 ;; Save current position on mark ring and set mark to end.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1635 (push-mark end t)
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1636 (setq end-marker (mark-marker))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1637
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1638 (goto-char beginning)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1639 (while (re-search-forward
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1640 texinfo-section-types-regexp
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1641 end-marker
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1642 'end)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1643 ;; Copy title if desired.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1644 (if title-p
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1645 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1646 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1647 (forward-word 1)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1648 (skip-chars-forward " \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1649 (setq title (buffer-substring
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1650 (point)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1651 (save-excursion (end-of-line) (point))))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1652 ;; Insert node line if necessary.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1653 (if (re-search-backward
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1654 "^@node"
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1655 ;; Avoid finding previous node line if node lines are close.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1656 (or last-section-position
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1657 (save-excursion (forward-line -2) (point))) t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1658 ;; @node is present, and point at beginning of that line
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1659 (forward-word 1) ; Leave point just after @node.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1660 ;; Else @node missing; insert one.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1661 (beginning-of-line) ; Beginning of `@section' line.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1662 (insert "@node\n")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1663 (backward-char 1)) ; Leave point just after `@node'.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1664 ;; Insert title if desired.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1665 (if title-p
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1666 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1667 (skip-chars-forward " \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1668 ;; Use regexp based on what info looks for
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1669 ;; (alternatively, use "[a-zA-Z]+");
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1670 ;; this means we only insert a title if none exists.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1671 (if (not (looking-at "[^,\t\n ]+"))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1672 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1673 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1674 (forward-word 1)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1675 (insert " " title)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1676 (message "Inserted title %s ... " title)))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1677 ;; Go forward beyond current section title.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1678 (re-search-forward texinfo-section-types-regexp
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1679 (save-excursion (forward-line 3) (point)) t)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1680 (setq last-section-position (point))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1681 (forward-line 1))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1682
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1683 ;; Leave point at end of region, mark at beginning.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1684 (set-mark beginning)
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1685
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1686 (if title-p
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1687 (message
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1688 "Done inserting node lines and titles. You may save the buffer.")
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1689 (message "Done inserting node lines. You may save the buffer."))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1690
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1691
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1692 ;;; Update and create menus for multi-file Texinfo sources
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1693
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1694 ;; 1. M-x texinfo-multiple-files-update
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1695 ;;
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1696 ;; Read the include file list of an outer Texinfo file and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1697 ;; update all highest level nodes in the files listed and insert a
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1698 ;; main menu in the outer file after its top node.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1699
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1700 ;; 2. C-u M-x texinfo-multiple-files-update
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1701 ;;
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1702 ;; Same as 1, but insert a master menu. (Saves reupdating lower
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1703 ;; level menus and nodes.) This command simply reads every menu,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1704 ;; so if the menus are wrong, the master menu will be wrong.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1705 ;; Similarly, if the lower level node pointers are wrong, they
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1706 ;; will stay wrong.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1707
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1708 ;; 3. C-u 2 M-x texinfo-multiple-files-update
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1709 ;;
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1710 ;; Read the include file list of an outer Texinfo file and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1711 ;; update all nodes and menus in the files listed and insert a
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1712 ;; master menu in the outer file after its top node.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1713
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1714 ;;; Note: these functions:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1715 ;;;
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1716 ;;; * Do not save or delete any buffers. You may fill up your memory.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1717 ;;; * Do not handle any pre-existing nodes in outer file.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1718 ;;; Hence, you may need a file for indices.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1719
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1720
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1721 ;;; Auxiliary functions for multiple file updating
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1722
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1723 (defun texinfo-multi-file-included-list (outer-file)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1724 "Return a list of the included files in OUTER-FILE."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1725 (let ((included-file-list (list outer-file))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1726 start)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1727 (save-excursion
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1728 (set-buffer (find-file-noselect outer-file))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1729 (widen)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1730 (goto-char (point-min))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1731 (while (re-search-forward "^@include" nil t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1732 (skip-chars-forward " \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1733 (setq start (point))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1734 (end-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1735 (skip-chars-backward " \t")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1736 (setq included-file-list
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1737 (cons (buffer-substring start (point))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1738 included-file-list)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1739 (nreverse included-file-list))))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1740
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1741 (defun texinfo-copy-next-section-title ()
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1742 "Return the name of the immediately following section as a string.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1743
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1744 Start with point at the beginning of the node line. Leave point at the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1745 same place. If there is no title, returns an empty string."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1746
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1747 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1748 (end-of-line)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1749 (let ((node-end (or
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1750 (save-excursion
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1751 (if (re-search-forward "\\(^@node\\)" nil t)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1752 (match-beginning 0)))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1753 (point-max))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1754 (if (re-search-forward texinfo-section-types-regexp node-end t)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1755 (progn
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1756 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1757 ;; copy title
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1758 (let ((title
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1759 (buffer-substring
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1760 (progn (forward-word 1) ; skip over section type
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1761 (skip-chars-forward " \t") ; and over spaces
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1762 (point))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1763 (progn (end-of-line) (point)))))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1764 title))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1765 ""))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1766
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1767 (defun texinfo-multi-file-update (files &optional update-everything)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1768 "Update first node pointers in each file in FILES.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1769 Return a list of the node names.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1770
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1771 The first file in the list is an outer file; the remaining are
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1772 files included in the outer file with `@include' commands.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1773
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1774 If optional arg UPDATE-EVERYTHING non-nil, update every menu and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1775 pointer in each of the included files.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1776
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1777 Also update the `Top' level node pointers of the outer file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1778
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1779 Requirements:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1780
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1781 * the first file in the FILES list must be the outer file,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1782 * each of the included files must contain exactly one highest
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1783 hierarchical level node,
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1784 * this node must be the first node in the included file,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1785 * each highest hierarchical level node must be of the same type.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1786
53554
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1787 Thus, normally, each included file contains one, and only one, chapter.
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1788
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1789 However, when an included file does not have any node lines in
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1790 it, this command does not try to create a menu entry for it.
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1791 Consequently, you can include any file, such as a version or an
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1792 update file without node lines, not just files that are
1bdcd59e6a40 (texinfo-multi-file-update): update documentation to state that
Robert J. Chassell <bob@rattlesnake.com>
parents: 53553
diff changeset
1793 chapters."
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1794
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1795 ;; The menu-list has the form:
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1796 ;;
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1797 ;; \(\(\"node-name1\" . \"title1\"\)
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1798 ;; \(\"node-name2\" . \"title2\"\) ... \)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1799 ;;
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1800 ;; However, there does not need to be a title field and this function
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1801 ;; does not fill it; however a comment tells you how to do so.
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1802 ;; You would use the title field if you wanted to insert titles in the
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1803 ;; description slot of a menu as a description.
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1804
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1805 (let ((case-fold-search t)
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1806 menu-list next-node-name previous-node-name files-with-node-lines)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1807
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1808 ;; Create a new list of included files that only have node lines
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1809 (while files
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1810 (set-buffer (find-file-noselect (car files)))
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1811 (widen)
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1812 (goto-char (point-min))
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1813 (when (re-search-forward "^@node" nil t)
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1814 (setq files-with-node-lines (cons (car files) files-with-node-lines)))
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1815 (setq files (cdr files)))
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1816 (setq files-with-node-lines (nreverse files-with-node-lines))
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1817
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1818 ;; Find the name of the first node in a subsequent file
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1819 ;; and copy it into the variable next-node-name
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1820 (set-buffer (find-file-noselect (car (cdr files-with-node-lines))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1821 (widen)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1822 (goto-char (point-min))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1823 (beginning-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1824 (texinfo-check-for-node-name)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1825 (setq next-node-name (texinfo-copy-node-name))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1826 (push (cons next-node-name (prog1 "" (forward-line 1)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1827 ;; Use following to insert section titles automatically.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1828 ;; (texinfo-copy-next-section-title)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1829 menu-list)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1830
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1831 ;; Go to outer file
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1832 ;; `pop' is analogous to (prog1 (car PLACE) (setf PLACE (cdr PLACE)))
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1833 (set-buffer (find-file-noselect (pop files-with-node-lines)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1834 (goto-char (point-min))
143
fa6580d92860 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 140
diff changeset
1835 (if (not (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t))
38963
6e5457eb45b8 Remove dots and exclams from end of error messages. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38877
diff changeset
1836 (error "This buffer needs a Top node"))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1837 (beginning-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1838 (texinfo-delete-existing-pointers)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1839 (end-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1840 (insert ", " next-node-name ", (dir), (dir)")
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1841 (beginning-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1842 (setq previous-node-name "Top")
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1843
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1844 (while files-with-node-lines
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1845
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1846 (if (not (cdr files-with-node-lines))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1847 ;; No next file
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1848 (setq next-node-name "")
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1849 ;; Else,
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1850 ;; find the name of the first node in the next file.
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1851 (set-buffer (find-file-noselect (car (cdr files-with-node-lines))))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1852 (widen)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1853 (goto-char (point-min))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1854 (beginning-of-line)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1855 (texinfo-check-for-node-name)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1856 (setq next-node-name (texinfo-copy-node-name))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1857 (push (cons next-node-name (prog1 "" (forward-line 1)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1858 ;; Use following to insert section titles automatically.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1859 ;; (texinfo-copy-next-section-title)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1860 menu-list))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1861
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1862 ;; Go to node to be updated.
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1863 (set-buffer (find-file-noselect (car files-with-node-lines)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1864 (goto-char (point-min))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1865 (beginning-of-line)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1866
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1867 ;; Update other menus and nodes if requested.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1868 (if update-everything (texinfo-all-menus-update t))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1869
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1870 (beginning-of-line)
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1871 (texinfo-delete-existing-pointers)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1872 (end-of-line)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1873 (insert ", " next-node-name ", " previous-node-name ", Top")
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1874
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1875 (beginning-of-line)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1876 (setq previous-node-name (texinfo-copy-node-name))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1877
53315
767b85819555 (texinfo-multi-file-update): create a new list of included files,
Robert J. Chassell <bob@rattlesnake.com>
parents: 52401
diff changeset
1878 (setq files-with-node-lines (cdr files-with-node-lines)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1879 (nreverse menu-list)))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1880
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1881 (defun texinfo-multi-files-insert-main-menu (menu-list)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1882 "Insert formatted main menu at point.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1883 Indents the first line of the description, if any, to the value of
18259
379252f79147 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17518
diff changeset
1884 `texinfo-column-for-description'."
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1885
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1886 (insert "@menu\n")
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1887 (dolist (entry menu-list)
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1888 ;; Every menu entry starts with a star and a space.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1889 (insert "* ")
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1890
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1891 ;; Insert the node name (and menu entry name, if present).
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1892 (let ((node-part (car entry)))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1893 (if (stringp node-part)
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1894 ;; "Double colon" entry line; menu entry and node name are the same,
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1895 (insert (format "%s::" node-part))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1896 ;; "Single colon" entry line; menu entry and node name are different.
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1897 (insert (format "%s: %s." (car node-part) (cdr node-part)))))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1898
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1899 ;; Insert the description, if present.
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1900 (when (cdr entry)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1901 ;; Move to right place.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1902 (indent-to texinfo-column-for-description 2)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1903 ;; Insert description.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1904 (insert (format "%s" (cdr entry))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1905
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1906 (insert "\n")) ; end this menu entry
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1907 (insert "@end menu"))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1908
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1909 (defun texinfo-multi-file-master-menu-list (files-list)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1910 "Return master menu list from files in FILES-LIST.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1911 Menu entries in each file collected using `texinfo-master-menu-list'.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1912
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1913 The first file in FILES-LIST must be the outer file; the others must
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1914 be the files included within it. A main menu must already exist."
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1915 (save-excursion
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1916 (let (master-menu-list)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1917 (dolist (file files-list)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1918 (set-buffer (find-file-noselect file))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1919 (message "Working on: %s " (current-buffer))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1920 (goto-char (point-min))
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1921 (setq master-menu-list
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1922 (append master-menu-list (texinfo-master-menu-list))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1923 master-menu-list)))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1924
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1925
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1926 ;;; The multiple-file update function
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1927
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1928 (defun texinfo-multiple-files-update
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1929 (outer-file &optional update-everything make-master-menu)
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1930 "Update first node pointers in each file included in OUTER-FILE;
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1931 create or update the `Top' level node pointers and the main menu in
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1932 the outer file that refers to such nodes. This does not create or
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1933 update menus or pointers within the included files.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1934
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1935 With optional MAKE-MASTER-MENU argument (prefix arg, if interactive),
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1936 insert a master menu in OUTER-FILE in addition to creating or updating
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1937 pointers in the first @node line in each included file and creating or
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1938 updating the `Top' level node pointers of the outer file. This does
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1939 not create or update other menus and pointers within the included
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1940 files.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1941
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1942 With optional UPDATE-EVERYTHING argument (numeric prefix arg, if
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1943 interactive), update all the menus and all the `Next', `Previous', and
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1944 `Up' pointers of all the files included in OUTER-FILE before inserting
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1945 a master menu in OUTER-FILE. Also, update the `Top' level node
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1946 pointers of OUTER-FILE.
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1947
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1948 Notes:
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1949
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1950 * this command does NOT save any files--you must save the
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1951 outer file and any modified, included files.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1952
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1953 * except for the `Top' node, this command does NOT handle any
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1954 pre-existing nodes in the outer file; hence, indices must be
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1955 enclosed in an included file.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1956
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1957 Requirements:
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1958
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1959 * each of the included files must contain exactly one highest
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1960 hierarchical level node,
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1961 * this highest node must be the first node in the included file,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1962 * each highest hierarchical level node must be of the same type.
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1963
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1964 Thus, normally, each included file contains one, and only one,
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1965 chapter."
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
1966
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1967 (interactive (cons
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1968 (read-string
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1969 "Name of outer `include' file: "
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1970 (buffer-file-name))
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1971 (cond
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1972 ((not current-prefix-arg) '(nil nil))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1973 ((listp current-prefix-arg) '(t nil)) ; make-master-menu
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1974 ((numberp current-prefix-arg) '(t t))))) ; update-everything
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1975
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1976 (let* ((included-file-list (texinfo-multi-file-included-list outer-file))
24175
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1977 (files included-file-list)
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1978 next-node-name
ec6c3e69f89a (texinfo-make-menu): Make region-end a marker.
Karl Heuer <kwzh@gnu.org>
parents: 23414
diff changeset
1979 previous-node-name
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1980 ;; Update the pointers and collect the names of the nodes and titles
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1981 (main-menu-list (texinfo-multi-file-update files update-everything)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1982
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1983 ;; Insert main menu
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1984
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1985 ;; Go to outer file
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1986 (set-buffer (find-file-noselect (car included-file-list)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1987 (if (texinfo-old-menu-p
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1988 (point-min)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1989 (save-excursion
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1990 (re-search-forward "^@include")
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1991 (beginning-of-line)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1992 (point)))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
1993
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1994 ;; If found, leave point after word `menu' on the `@menu' line.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1995 (progn
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1996 (texinfo-incorporate-descriptions main-menu-list)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1997 ;; Delete existing menu.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1998 (beginning-of-line)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
1999 (delete-region
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2000 (point)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2001 (save-excursion (re-search-forward "^@end menu") (point)))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2002 ;; Insert main menu
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2003 (texinfo-multi-files-insert-main-menu main-menu-list))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
2004
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2005 ;; Else no current menu; insert it before `@include'
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2006 (texinfo-multi-files-insert-main-menu main-menu-list))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
2007
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2008 ;; Insert master menu
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
2009
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2010 (if make-master-menu
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2011 (progn
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2012 ;; First, removing detailed part of any pre-existing master menu
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2013 (goto-char (point-min))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2014 (if (search-forward texinfo-master-menu-header nil t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2015 (progn
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2016 (goto-char (match-beginning 0))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2017 ;; Check if @detailmenu kludge is used;
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2018 ;; if so, leave point before @detailmenu.
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2019 (search-backward "\n@detailmenu"
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2020 (save-excursion (forward-line -3) (point))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2021 t)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2022 ;; Remove detailed master menu listing
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2023 (let ((end-of-detailed-menu-descriptions
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2024 (save-excursion ; beginning of end menu line
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2025 (goto-char (texinfo-menu-end))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2026 (beginning-of-line) (forward-char -1)
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2027 (point))))
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2028 (delete-region (point) end-of-detailed-menu-descriptions))))
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
2029
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2030 ;; Create a master menu and insert it
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2031 (texinfo-insert-master-menu-list
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2032 (texinfo-multi-file-master-menu-list
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2033 included-file-list)))))
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2034
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2035 ;; Remove unwanted extra lines.
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2036 (save-excursion
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2037 (goto-char (point-min))
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
2038
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2039 (re-search-forward "^@menu")
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2040 (forward-line -1)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2041 (insert "\n") ; Ensure at least one blank line.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2042 (delete-blank-lines)
19110
e83c7cde0db5 Delete whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 18849
diff changeset
2043
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2044 (re-search-forward "^@end menu")
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2045 (forward-line 1)
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2046 (insert "\n") ; Ensure at least one blank line.
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2047 (delete-blank-lines))
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2048
107
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
2049 (message "Multiple files updated."))
0676c0c9346f Initial revision
Robert J. Chassell <bob@rattlesnake.com>
parents:
diff changeset
2050
4028
3831300d2ecb Fix typo re `texinfo-sequential-node-update.'
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
2051
40390
11e824c23fd8 Use `when', `dolist', `push', ...
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40284
diff changeset
2052 ;; Place `provide' at end of file.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 143
diff changeset
2053 (provide 'texnfo-upd)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 143
diff changeset
2054
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 43808
diff changeset
2055 ;;; arch-tag: d21613a5-c32f-43f4-8af4-bfb1e7455842
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2056 ;;; texnfo-upd.el ends here