annotate lisp/textmodes/page-ext.el @ 22363:d00f146c3e9d

#include sys/file.h (sys_access): Provide our own implementation which recognizes D_OK. (is_exec): New function. (stat): Use it. (init_environment): Set TMPDIR to an existing directory. Abort if none of the usual places is available. (sys_rename): On Windows 95, choose a temp name that includes the original file's base name and use an explicit loop rather than calling mktemp. Only attempt to unlink the newname if the rename fails, rather than second-guessing whether the old and new names refer to the same file.
author Karl Heuer <kwzh@gnu.org>
date Fri, 05 Jun 1998 16:08:32 +0000
parents 2a9fdbfcb993
children 71fe29ccef4c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1 ;;; page-ext.el --- extended page handling commands
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2
7300
cc7cd83ccf3f Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 6337
diff changeset
3 ;; Copyright (C) 1990, 1991, 1993, 1994 Free Software Foundation
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
4
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
5 ;; Maintainer: Robert J. Chassell <bob@gnu.ai.mit.edu>
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
664
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
7 ;; This file is part of GNU Emacs.
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
8
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
664
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
12 ;; any later version.
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
13
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
17 ;; GNU General Public License for more details.
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
18
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
19 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
22 ;; Boston, MA 02111-1307, USA.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
23
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
24 ;;; Commentary:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
25
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
26 ;; You may use these commands to handle an address list or other
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
27 ;; small data base.
664
9b0e666dfdf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
28
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
30 ;;; Summary
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
32 ;; The current page commands are:
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
34 ;; forward-page C-x ]
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
35 ;; backward-page C-x [
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
36 ;; narrow-to-page C-x p
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
37 ;; count-lines-page C-x l
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
38 ;; mark-page C-x C-p (change this to C-x C-p C-m)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
39 ;; sort-pages not bound
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
40 ;; what-page not bound
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
42 ;; The new page handling commands all use `C-x C-p' as a prefix. This
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
43 ;; means that the key binding for `mark-page' must be changed.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
44 ;; Otherwise, no other changes are made to the current commands or
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
45 ;; their bindings.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
47 ;; New page handling commands:
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
49 ;; next-page C-x C-p C-n
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
50 ;; previous-page C-x C-p C-p
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
51 ;; search-pages C-x C-p C-s
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
52 ;; add-new-page C-x C-p C-a
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
53 ;; sort-pages-buffer C-x C-p s
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
54 ;; set-page-delimiter C-x C-p C-l
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
55 ;; pages-directory C-x C-p C-d
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
56 ;; pages-directory-for-addresses C-x C-p d
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
57 ;; pages-directory-goto C-c C-c
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
60 ;;; Using the page commands
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
61
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
62 ;; The page commands are helpful in several different contexts. For
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
63 ;; example, programmers often divide source files into sections using the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
64 ;; `page-delimiter'; you can use the `pages-directory' command to list
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
65 ;; the sections.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
67 ;; You may change the buffer local value of the `page-delimiter' with
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
68 ;; the `set-page-delimiter' command. This command is bound to `C-x C-p
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
69 ;; C-l' The command prompts you for a new value for the page-delimiter.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
70 ;; Called with a prefix-arg, the command resets the value of the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
71 ;; page-delimiter to its original value.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
73 ;; You may set several user options:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
74 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
75 ;; The `pages-directory-buffer-narrowing-p' variable causes the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
76 ;; `pages-directory-goto' command to narrow to the destination page.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
77 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
78 ;; The `pages-directory-for-adding-page-narrowing-p' variable, causes the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
79 ;; `add-new-page' command to narrow to the new entry.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
80 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
81 ;; The `pages-directory-for-adding-new-page-before-current-page-p' variable
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
82 ;; causes the `add-new-page' command to insert a new page before current
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
83 ;; page.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
84 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
85 ;; These variables are true by default.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
86 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
87 ;; Additional, addresses-related user options are described in the next page
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
88 ;; of this file.
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
89
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
91 ;;; Handling an address list or small data base
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
93 ;; You may use the page commands to handle an address list or other
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
94 ;; small data base. Put each address or entry on its own page. The
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
95 ;; first line of text in each page is a `header line' and is listed by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
96 ;; the `pages-directory' or `pages-directory-for-addresses' command.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
98 ;; Specifically:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
99 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
100 ;; 1. Begin each entry with a `page-delimiter' (which is, by default,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
101 ;; `^L' at the beginning of the line).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
102 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
103 ;; 2. The first line of text in each entry is the `heading line'; it
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
104 ;; will appear in the pages-directory-buffer which is constructed
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
105 ;; using the `C-x C-p C-d' (pages-directory) command or the `C-x
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
106 ;; C-p d' (pages-directory-for-addresses) command.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
107 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
108 ;; The heading line may be on the same line as the page-delimiter
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
109 ;; or it may follow after. It is the first non-blank line on the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
110 ;; page. Conventionally, the heading line is placed on the line
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
111 ;; immediately following the line containing page-delimiter.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
112 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
113 ;; 3. Follow the heading line with the body of the entry. The body
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
114 ;; extends up to the next `page-delimiter'. The body may be of any
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
115 ;; length. It is conventional to place a blank line after the last
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
116 ;; line of the body.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
118 ;; For example, a file might look like this:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
119 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
120 ;; FSF
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
121 ;; Free Software Foundation
15741
a1176aab935b Use current FSF address/phone in sample file.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
122 ;; 59 Temple Place - Suite 330
a1176aab935b Use current FSF address/phone in sample file.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
123 ;; Boston, MA 02111-1307 USA.
a1176aab935b Use current FSF address/phone in sample file.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
124 ;; (617) 542-5942
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
125 ;; gnu@prep.ai.mit.edu
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
126 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
127 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
128 ;; House Subcommittee on Intellectual Property,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
129 ;; U.S. House of Representatives,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
130 ;; Washington, DC 20515
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
131 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
132 ;; Congressional committee concerned with permitting or preventing
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
133 ;; monopolistic restrictions on the use of software technology.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
134 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
135 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
136 ;; George Lakoff
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
137 ;; ``Women, Fire, and Dangerous Things:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
138 ;; What Categories Reveal about the Mind''
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
139 ;; 1987, Univ. of Chicago Press
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
140 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
141 ;; About philosophy, Whorfian effects, and linguistics.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
142 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
143 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
144 ;; OBI (On line text collection.)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
145 ;; Open Book Initiative
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
146 ;; c/o Software Tool & Die
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
147 ;; 1330 Beacon St, Brookline, MA 02146 USA
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
148 ;; (617) 739-0202
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
149 ;; obi@world.std.com
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
151 ;; In this example, the heading lines are:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
152 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
153 ;; FSF
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
154 ;; House Subcommittee on Intellectual Property
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
155 ;; George Lakoff
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
156 ;; OBI (On line text collection.)
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
158 ;; The `C-x C-p s' (sort-pages-buffer) command sorts the entries in the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
159 ;; buffer alphabetically.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
161 ;; You may use any of the page commands, including the `next-page',
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
162 ;; `previous-page', `add-new-page', `mark-page', and `search-pages'
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
163 ;; commands.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
165 ;; You may use either the `C-x C-p d' (pages-directory-for-addresses)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
166 ;; or the `C-x C-p C-d' (pages-directory) command to construct and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
167 ;; display a directory of all the heading lines.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
169 ;; In the directory, you may position the cursor over a heading line
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
170 ;; and type `C-c C-c' (pages-directory-goto) to go to the entry to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
171 ;; which it refers in the pages buffer.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
173 ;; You can type `C-c C-p C-a' (add-new-page) to add a new entry in the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
174 ;; pages buffer or address file. This is the same command you use to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
175 ;; add a new entry when you are in the pages buffer or address file.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
177 ;; If you wish, you may create several different directories,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
178 ;; one for each different buffer.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 ;; `pages-directory-for-addresses' in detail
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
182 ;; The `pages-directory-for-addresses' assumes a default addresses
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
183 ;; file. You do not need to specify the addresses file but merely type
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
184 ;; `C-x C-p d' from any buffer. The command finds the file, constructs
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
185 ;; a directory for it, and switches you to the directory. If you call
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
186 ;; the command with a prefix arg, `C-u C-x C-p d', it prompts you for a
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
187 ;; file name.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
189 ;; You may customize the addresses commands:
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
190
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
191 ;; The `pages-addresses-file-name' variable determines the name of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
192 ;; the addresses file; by default it is "~/addresses".
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
193
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
194 ;; The `pages-directory-for-addresses-goto-narrowing-p' variable
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
195 ;; determines whether `pages-directory-goto' narrows the addresses
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
196 ;; buffer to the entry, which it does by default.
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
197
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
198 ;; The `pages-directory-for-addresses-buffer-keep-windows-p' variable
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
199 ;; determines whether `pages-directory-for-addresses' deletes other
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
200 ;; windows to show as many lines as possible on the screen or works
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
201 ;; in the usual Emacs manner and keeps other windows. Default is to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
202 ;; keep other windows.
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
203
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
204 ;; The `pages-directory-for-adding-addresses-narrowing-p' variable
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
205 ;; determines whether `pages-directory-for-addresses' narrows the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
206 ;; addresses buffer to a new entry when you are adding that entry.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
207 ;; Default is to narrow to new entry, which means you see a blank
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
208 ;; screen before you write the new entry.
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
209
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 ;; `pages-directory' in detail
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
212 ;; Call the `pages-directory' command from the buffer for which you
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
213 ;; want a directory created; it creates a directory for the buffer and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
214 ;; pops you to the directory.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
216 ;; The `pages-directory' command has several options:
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
218 ;; Called with a prefix arg, `C-u C-x C-p C-d', the `pages-directory'
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
219 ;; prompts you for a regular expression and only lists only those
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
220 ;; header lines that are part of pages that contain matches to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
221 ;; regexp. In the example above, `C-u C-x C-p C-d 617 RET' would
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
222 ;; match the telephone area code of the first and fourth entries, so
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
223 ;; only the header lines of those two entries would appear in the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
224 ;; pages-directory-buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
225 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
226 ;; Called with a numeric argument, the `pages-directory' command
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
227 ;; lists the number of lines in each page. This is helpful when you
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
228 ;; are printing hardcopy.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
230 ;; Called with a negative numeric argument, the `pages-directory'
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
231 ;; command lists the lengths of pages whose contents match a regexp.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
233 ;;; Code:
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
234
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
236 ;;; Customarily customizable variable definitions
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
237
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
238 (defgroup pages nil
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
239 "Extended page-handling commands."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
240 :group 'extensions)
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
241
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
242
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
243 (defcustom pages-directory-buffer-narrowing-p t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
244 "*If non-nil, `pages-directory-goto' narrows pages buffer to entry."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
245 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
246 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
247
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
248 (defcustom pages-directory-for-adding-page-narrowing-p t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
249 "*If non-nil, `add-new-page' narrows page buffer to new entry."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
250 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
251 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
252
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
253 (defcustom pages-directory-for-adding-new-page-before-current-page-p t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
254 "*If non-nil, `add-new-page' inserts new page before current page."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
255 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
256 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
257
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
258
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
259 ;;; Addresses related variables
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
260
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
261 (defcustom pages-addresses-file-name "~/addresses"
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
262 "*Standard name for file of addresses. Entries separated by page-delimiter.
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
263 Used by `pages-directory-for-addresses' function."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
264 :type 'file
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
265 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
266
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
267 (defcustom pages-directory-for-addresses-goto-narrowing-p t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
268 "*If non-nil, `pages-directory-goto' narrows addresses buffer to entry."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
269 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
270 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
271
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
272 (defcustom pages-directory-for-addresses-buffer-keep-windows-p t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
273 "*If nil, `pages-directory-for-addresses' deletes other windows."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
274 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
275 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
276
17436
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
277 (defcustom pages-directory-for-adding-addresses-narrowing-p t
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
278 "*If non-nil, `add-new-page' narrows addresses buffer to new entry."
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
279 :type 'boolean
2a9fdbfcb993 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 15741
diff changeset
280 :group 'pages)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
281
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
282
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
283 ;;; Key bindings for page handling functions
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 (global-unset-key "\C-x\C-p")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 (defvar ctl-x-ctl-p-map (make-sparse-keymap)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 "Keymap for subcommands of C-x C-p, which are for page handling.")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 (define-key ctl-x-map "\C-p" 'ctl-x-ctl-p-prefix)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 (fset 'ctl-x-ctl-p-prefix ctl-x-ctl-p-map)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 (define-key ctl-x-ctl-p-map "\C-n" 'next-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 (define-key ctl-x-ctl-p-map "\C-p" 'previous-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (define-key ctl-x-ctl-p-map "\C-a" 'add-new-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 (define-key ctl-x-ctl-p-map "\C-m" 'mark-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 (define-key ctl-x-ctl-p-map "\C-s" 'search-pages)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 (define-key ctl-x-ctl-p-map "s" 'sort-pages-buffer)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 (define-key ctl-x-ctl-p-map "\C-l" 'set-page-delimiter)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (define-key ctl-x-ctl-p-map "\C-d" 'pages-directory)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 (define-key ctl-x-ctl-p-map "d" 'pages-directory-for-addresses)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
304 ;;; Page movement function definitions
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 (defun next-page (&optional count)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 "Move to the next page bounded by the `page-delimiter' variable.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 With arg (prefix if interactive), move that many pages."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 (interactive "p")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 (or count (setq count 1))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 (widen)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 ;; Cannot use forward-page because of problems at page boundaries.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 (while (and (> count 0) (not (eobp)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 (if (re-search-forward page-delimiter nil t)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315 nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 (goto-char (point-max)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 (setq count (1- count)))
1770
29bcc2c88773 * page-ext.el (next-page): Correctly handle negative page count.
Jim Blandy <jimb@redhat.com>
parents: 845
diff changeset
318 ;; If COUNT is negative, we want to go back -COUNT + 1 page boundaries.
29bcc2c88773 * page-ext.el (next-page): Correctly handle negative page count.
Jim Blandy <jimb@redhat.com>
parents: 845
diff changeset
319 ;; The first page boundary we reach is the top of the current page,
29bcc2c88773 * page-ext.el (next-page): Correctly handle negative page count.
Jim Blandy <jimb@redhat.com>
parents: 845
diff changeset
320 ;; which doesn't count.
29bcc2c88773 * page-ext.el (next-page): Correctly handle negative page count.
Jim Blandy <jimb@redhat.com>
parents: 845
diff changeset
321 (while (and (< count 1) (not (bobp)))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 (if (re-search-backward page-delimiter nil t)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 (goto-char (match-beginning 0))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 (goto-char (point-min)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 (setq count (1+ count)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 (narrow-to-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 (goto-char (point-min))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 (recenter 0))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 (defun previous-page (&optional count)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 "Move to the previous page bounded by the `page-delimiter' variable.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 With arg (prefix if interactive), move that many pages."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 (interactive "p")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 (or count (setq count 1))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 (next-page (- count)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
338 ;;; Adding and searching pages
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 (defun add-new-page (header-line)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
341 "Insert new page. Prompt for header line.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
342
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
343 If point is in the pages directory buffer, insert the new page in the
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
344 buffer associated with the directory.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
345
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
346 Insert the new page just before current page if
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
347 pages-directory-for-adding-new-page-before-current-page-p variable
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
348 is non-nil. Else insert at exact location of point.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
349
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
350 Narrow to new page if
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
351 pages-directory-for-adding-page-narrowing-p variable
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
352 is non-nil.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
353
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
354 Page begins with a `^L' as the default page-delimiter.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
355 Use \\[set-page-delimiter] to change the page-delimiter.
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 Point is left in the body of page."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 (interactive "sHeader line: ")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 (widen)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
359 ;; If in pages directory buffer
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
360 (if (eq major-mode 'pages-directory-mode)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
361 (progn
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
362 ;; Add new page before or after current page?
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
363 (if pages-directory-for-adding-new-page-before-current-page-p
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
364 (pages-directory-goto)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
365 (pages-directory-goto)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
366 (forward-page)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
367 (or (eobp) (forward-line -1)))))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
368 (widen)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
369 ;; Move point before current delimiter if desired.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
370 (and pages-directory-for-adding-new-page-before-current-page-p
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
371 (if (re-search-backward page-delimiter nil t)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
372 (goto-char (match-beginning 0))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
373 ;; If going to beginning of file, insert a page-delimiter
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
374 ;; before current first page.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
375 (goto-char (point-min))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
376 (insert
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
377 (format "%s\n"
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
378 ;; Remove leading `^' from page-delimiter string
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
379 (if (eq '^ (car (read-from-string page-delimiter)))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
380 (substring page-delimiter 1))))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
381 (goto-char (point-min))))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
382 ;; Insert page delimiter at beginning of line.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
383 (if (not (looking-at "^.")) (forward-line 1))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
384 (insert (format "%s\n%s\n\n\n"
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
385 (if (eq '^ (car (read-from-string page-delimiter)))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
386 (substring page-delimiter 1))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
387 header-line))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
388 (forward-line -1)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
389 (and pages-directory-for-adding-page-narrowing-p (narrow-to-page)))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 (defvar pages-last-search nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 "Value of last regexp searched for. Initially, nil.")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 (defun search-pages (regexp)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 "Search for REGEXP, starting from point, and narrow to page it is in."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 (interactive (list
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 (read-string
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 (format "Search for `%s' (end with RET): "
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 (or pages-last-search "regexp")))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 (if (equal regexp "")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 (setq regexp pages-last-search)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 (setq pages-last-search regexp))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 (widen)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 (re-search-forward regexp)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 (narrow-to-page))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
408 ;;; Sorting pages
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 (autoload 'sort-subr "sort" "Primary function for sorting." t nil)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 (defun sort-pages-in-region (reverse beg end)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 "Sort pages in region alphabetically. Prefix arg means reverse order.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 Called from a program, there are three arguments:
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 REVERSE (non-nil means reverse order), BEG and END (region to sort)."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 ;;; This sort function handles ends of pages differently than
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 ;;; `sort-pages' and works better with lists of addresses and similar
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 ;;; files.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 (interactive "P\nr")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 (save-restriction
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 (narrow-to-region beg end)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 (goto-char (point-min))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 ;;; `sort-subr' takes three arguments
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 (sort-subr reverse
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 ;; NEXTRECFUN is called with point at the end of the
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 ;; previous record. It moves point to the start of the
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 ;; next record.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 (function (lambda ()
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 (re-search-forward page-delimiter nil t)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 (skip-chars-forward " \t\n")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 ))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 ;; ENDRECFUN is is called with point within the record.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 ;; It should move point to the end of the record.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 (function (lambda ()
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 (if (re-search-forward
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 page-delimiter
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 t)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 (goto-char (match-beginning 0))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 (goto-char (point-max))))))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 (defun sort-pages-buffer (&optional reverse)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 "Sort pages alphabetically in buffer. Prefix arg means reverse order.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 \(Non-nil arg if not interactive.\)"
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 (interactive "P")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 (or reverse (setq reverse nil))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 (widen)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 (let ((beginning (point-min))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 (end (point-max)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 (sort-pages-in-region reverse beginning end)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
459 ;;; Pages directory ancillary definitions
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 (defvar pages-directory-previous-regexp nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 "Value of previous regexp used by `pages-directory'.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 \(This regular expression may be used to select only those pages that
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 contain matches to the regexp.\)")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 (defvar pages-buffer nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 "The buffer for which the pages-directory function creates the directory.")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 (defvar pages-directory-prefix "*Directory for:"
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 "Prefix of name of temporary buffer for pages-directory.")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 (defvar pages-pos-list nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473 "List containing the positions of the pages in the pages-buffer.")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 (defvar pages-directory-map nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 "Keymap for the pages-directory-buffer.")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 (if pages-directory-map
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 ()
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 (setq pages-directory-map (make-sparse-keymap))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 (define-key pages-directory-map "\C-c\C-c"
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
482 'pages-directory-goto)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
483 (define-key pages-directory-map "\C-c\C-p\C-a" 'add-new-page))
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
484
6337
32cb5a7228ab (original-page-delimiter, set-page-delimiter): Use printable escapes instead of
Karl Heuer <kwzh@gnu.org>
parents: 5311
diff changeset
485 (defvar original-page-delimiter "^\f"
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
486 "Default page delimiter.")
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 (defun set-page-delimiter (regexp reset-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 "Set buffer local value of page-delimiter to REGEXP.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 Called interactively with a prefix argument, reset `page-delimiter' to
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 its original value.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 In a program, non-nil second arg causes first arg to be ignored and
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 resets the page-delimiter to the original value."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 (interactive
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 (if current-prefix-arg
6337
32cb5a7228ab (original-page-delimiter, set-page-delimiter): Use printable escapes instead of
Karl Heuer <kwzh@gnu.org>
parents: 5311
diff changeset
498 (list original-page-delimiter "^\f")
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 (list (read-string "Set page-delimiter to regexp: " page-delimiter)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 nil)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 (make-local-variable 'original-page-delimiter)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 (make-local-variable 'page-delimiter)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 (setq original-page-delimiter
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 (or original-page-delimiter page-delimiter))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 (if (not reset-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 (setq page-delimiter regexp)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 (setq page-delimiter original-page-delimiter))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 (if (interactive-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 (message "The value of `page-delimiter' is now: %s" page-delimiter)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
512 ;;; Pages directory main definitions
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 (defun pages-directory
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 (pages-list-all-headers-p count-lines-p &optional regexp)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 "Display a directory of the page headers in a temporary buffer.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 A header is the first non-blank line after the page-delimiter.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 \\[pages-directory-mode]
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 You may move point to one of the lines in the temporary buffer,
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 then use \\<pages-directory-goto> to go to the same line in the pages buffer.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 In interactive use:
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 1. With no prefix arg, display all headers.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 2. With prefix arg, display the headers of only those pages that
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 contain matches to a regular expression for which you are
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 prompted.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 3. With numeric prefix arg, for every page, print the number of
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531 lines within each page.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 4. With negative numeric prefix arg, for only those pages that
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 match a regular expression, print the number of lines within
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 each page.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 When called from a program, non-nil first arg means list all headers;
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 non-nil second arg means print numbers of lines in each page; if first
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 arg is nil, optional third arg is regular expression.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 If the buffer is narrowed, the `pages-directory' command creates a
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 directory for only the accessible portion of the buffer."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 (interactive
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 (cond ((not current-prefix-arg)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 (list t nil nil))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 ((listp current-prefix-arg)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 (list nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 (read-string
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 (format "Select according to `%s' (end with RET): "
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 (or pages-directory-previous-regexp "regexp")))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 ((> (prefix-numeric-value current-prefix-arg) 0)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 (list t t nil))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 ((< (prefix-numeric-value current-prefix-arg) 0)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 (list nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 t
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 (read-string
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 (format "Select according to `%s' (end with RET): "
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 (or pages-directory-previous-regexp "regexp")))))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 (if (equal regexp "")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 (setq regexp pages-directory-previous-regexp)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 (setq pages-directory-previous-regexp regexp))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 (if (interactive-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 (message "Creating directory for: %s "
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 (buffer-name)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
570 (let ((target-buffer (current-buffer))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 (pages-directory-buffer
5311
da52825a3880 (pages-copy-header-and-position): Call end-of-line, not forward-line.
Richard M. Stallman <rms@gnu.org>
parents: 5021
diff changeset
572 (concat pages-directory-prefix " " (buffer-name)))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 (linenum 1)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 (pages-buffer-original-position (point))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 (pages-buffer-original-page 0))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 ;; `with-output-to-temp-buffer' binds the value of the variable
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 ;; `standard-output' to the buffer named as its first argument,
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579 ;; but does not switch to that buffer.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580 (with-output-to-temp-buffer pages-directory-buffer
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 (set-buffer standard-output)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 (pages-directory-mode)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 (insert
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 "==== Pages Directory: use `C-c C-c' to go to page under cursor. ====" ?\n)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
586 (setq pages-buffer target-buffer)
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 (setq pages-pos-list nil))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 (if pages-list-all-headers-p
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 ;; 1. If no prefix argument, list all headers
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 (goto-char (point-min))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 ;; (a) Point is at beginning of buffer; but the first
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 ;; page may not begin with a page-delimiter
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 (save-restriction
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 ;; If page delimiter is at beginning of buffer, skip it
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 (if (and (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 (re-search-forward page-delimiter nil t))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 (= 1 (match-beginning 0)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 (goto-char (match-end 0)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 (narrow-to-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 (pages-copy-header-and-position count-lines-p))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 ;; (b) Search within pages buffer for next page-delimiter
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 (while (re-search-forward page-delimiter nil t)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608 (pages-copy-header-and-position count-lines-p)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610 ;; 2. Else list headers whose pages match regexp.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 ;; REMOVED save-restriction AND widen FROM HERE
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 (goto-char (point-min))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
614
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615 ;; (a) Handle first page
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616 (save-restriction
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
617 (narrow-to-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 ;; search for selection regexp
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
619 (if (save-excursion (re-search-forward regexp nil t))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
620 (pages-copy-header-and-position count-lines-p)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 ;; (b) Search for next page-delimiter
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 (while (re-search-forward page-delimiter nil t)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624 (save-restriction
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 (narrow-to-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 ;; search for selection regexp
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 (if (save-excursion (re-search-forward regexp nil t))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 (pages-copy-header-and-position count-lines-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 )))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631 (set-buffer standard-output)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
632 ;; Put positions in increasing order to go with buffer.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 (setq pages-pos-list (nreverse pages-pos-list))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634 (if (interactive-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 (message "%d matching lines in: %s"
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
636 (length pages-pos-list) (buffer-name target-buffer))))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637 (pop-to-buffer pages-directory-buffer)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
638 (sit-for 0) ; otherwise forward-line fails if N > window height.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
639 (forward-line (if (= 0 pages-buffer-original-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640 1
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 pages-buffer-original-page))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 (defun pages-copy-header-and-position (count-lines-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 "Copy page header and its position to the Pages Directory.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645 Only arg non-nil, count lines in page and insert before header.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 Used by `pages-directory' function."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648 (let (position line-count)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 (if count-lines-p
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 (save-restriction
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 (narrow-to-page)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 (setq line-count (count-lines (point-min) (point-max))))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 ;; Keep track of page for later cursor positioning
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 (if (<= (point) pages-buffer-original-position)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 (setq pages-buffer-original-page
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 (1+ pages-buffer-original-page)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 ;; go to first non-blank char after the page-delimiter
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 (skip-chars-forward " \t\n")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 ;; set the marker here; this the place to which the
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 ;; `pages-directory-goto' command will go
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 (setq position (make-marker))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667 (set-marker position (point))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 (let ((start (point))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669 (end (save-excursion (end-of-line) (point))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670 ;; change to directory buffer
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 (set-buffer standard-output)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 ;; record page position
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 (setq pages-pos-list (cons position pages-pos-list))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674 ;; insert page header
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
675 (insert-buffer-substring target-buffer start end))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 (if count-lines-p
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679 (beginning-of-line)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 (insert (format "%3d: " line-count))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 (terpri))
5311
da52825a3880 (pages-copy-header-and-position): Call end-of-line, not forward-line.
Richard M. Stallman <rms@gnu.org>
parents: 5021
diff changeset
683 (end-of-line 1)))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 (defun pages-directory-mode ()
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 "Mode for handling the pages-directory buffer.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 Move point to one of the lines in this buffer, then use \\[pages-directory-goto] to go
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 to the same line in the pages buffer."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 (kill-all-local-variables)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 (use-local-map pages-directory-map)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 (setq major-mode 'pages-directory-mode)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 (setq mode-name "Pages-Directory")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 (make-local-variable 'pages-buffer)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 (make-local-variable 'pages-pos-list)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 (make-local-variable 'pages-directory-buffer-narrowing-p))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 (defun pages-directory-goto ()
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 "Go to the corresponding line in the pages buffer."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 ;;; This function is mostly a copy of `occur-mode-goto-occurrence'
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 (interactive)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 (if (or (not pages-buffer)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 (not (buffer-name pages-buffer)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 (progn
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 (setq pages-buffer nil
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 pages-pos-list nil)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 (error "Buffer in which pages were found is deleted.")))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 (beginning-of-line)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 (let* ((pages-number (1- (count-lines (point-min) (point))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 (pos (nth pages-number pages-pos-list))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 (end-of-directory-p (eobp))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 (narrowing-p pages-directory-buffer-narrowing-p))
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
716 (pop-to-buffer pages-buffer)
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 (widen)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 (if end-of-directory-p
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 (goto-char (point-max))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 (goto-char (marker-position pos)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 (if narrowing-p (narrow-to-page))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
724 ;;; The `pages-directory-for-addresses' function and ancillary code
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 (defun pages-directory-for-addresses (&optional filename)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 "Find addresses file and display its directory.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 By default, create and display directory of `pages-addresses-file-name'.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 Optional argument is FILENAME. In interactive use, with prefix
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 argument, prompt for file name and provide completion.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 Move point to one of the lines in the displayed directory,
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
733 then use \\[pages-directory-goto] to go to the same line
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
734 in the addresses buffer.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
735
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
736 If pages-directory-for-addresses-goto-narrowing-p is non-nil,
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
737 `pages-directory-goto' narrows addresses buffer to entry.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
738
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
739 If pages-directory-for-addresses-buffer-keep-windows-p is nil,
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
740 this command deletes other windows when it displays the addresses
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
741 directory."
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 (interactive
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 (list (if current-prefix-arg
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 (read-file-name "Filename: " pages-addresses-file-name))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 (if (interactive-p)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 (message "Creating directory for: %s "
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 (or filename pages-addresses-file-name)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 (if (file-exists-p (or filename pages-addresses-file-name))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 (progn
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 (set-buffer
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 (find-file-noselect
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 (expand-file-name
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 (or filename pages-addresses-file-name))))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 (widen)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 (pages-directory t nil nil)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 (pages-directory-address-mode)
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
759 (setq pages-directory-buffer-narrowing-p
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
760 pages-directory-for-addresses-goto-narrowing-p)
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
761 (or pages-directory-for-addresses-buffer-keep-windows-p
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
762 (delete-other-windows))
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 (save-excursion
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 (goto-char (point-min))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 (delete-region (point) (save-excursion (end-of-line) (point)))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 (insert
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 "=== Address List Directory: use `C-c C-c' to go to page under cursor. ===")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 (set-buffer-modified-p nil)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 ))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 (error "No addresses file found!")))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 (defun pages-directory-address-mode ()
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 "Mode for handling the Addresses Directory buffer.
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
775 Move point to one of the lines in this buffer,
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
776 then use \\[pages-directory-goto] to go
235
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 to the same line in the pages buffer."
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 (use-local-map pages-directory-map)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 (setq major-mode 'pages-directory-address-mode)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 (setq mode-name "Addresses Directory")
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 (make-local-variable 'pages-buffer)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 (make-local-variable 'pages-pos-list)
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 (make-local-variable 'pages-directory-buffer-narrowing-p))
c7cad852d5b4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
786
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
787 ;;; Place `provide' at end of file.
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
788 (provide 'page-ext)
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 235
diff changeset
789
5021
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
790 ;;;;;;;;;;;;;;;; end of page-ext.el ;;;;;;;;;;;;;;;;
47afb35f4968 Revise documentation. Add `provide'.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
791