annotate man/forms.texi @ 118:7d55a9ba150c r20-1b11

Import from CVS: tag r20-1b11
author cvs
date Mon, 13 Aug 2007 09:24:17 +0200
parents 376386a54a3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 \input texinfo @c -*-texinfo-*-
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 @c documentation for forms-mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 @c Written by Johan Vromans, and edited by Richard Stallman
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 @c !Id: forms.texinfo,v 1.1 1994/04/05 07:43:19 jwz Exp !
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 @comment %**start of header (This is for running Texinfo on a region.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 @setfilename ../info/forms.info
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 @settitle Forms Mode User's Manual
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 @syncodeindex vr cp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 @syncodeindex fn cp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 @syncodeindex ky cp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 @iftex
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 @finalout
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 @setchapternewpage odd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 @end iftex
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 @c @smallbook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 @comment %**end of header (This is for running Texinfo on a region.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 @ifinfo
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 This file documents Forms mode, a form-editing major mode for GNU Emacs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 Permission is granted to make and distribute verbatim copies of this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 manual provided the copyright notice and this permission notice are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 preserved on all copies.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 Permission is granted to process this file through TeX and print the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 results, provided the printed document carries copying permission notice
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 identical to this one except for the removal of this paragraph (this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 paragraph not being relevant to the printed manual).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 @end ifinfo
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 @iftex
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 @titlepage
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 @sp 6
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 @center @titlefont{Forms Mode User's Manual}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 @sp 4
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 @center Forms-Mode version 2.3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 @sp 1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 @center September 1993
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 @sp 5
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 @center Johan Vromans
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 @center @i{jv@@nl.net}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 @page
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 @vskip 0pt plus 1filll
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 Copyright @copyright{} 1989, 1990, 1991, 1993 Free Software Foundation, Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 Permission is granted to make and distribute verbatim copies of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 this manual provided the copyright notice and this permission notice
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 are preserved on all copies.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 @page
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 @end titlepage
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 @end iftex
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 @ifinfo
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 @node Top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 @top Forms Mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 @end ifinfo
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 Forms mode is an Emacs major mode for working with simple textual data
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 bases in a forms-oriented manner. In Forms mode, the information in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 these files is presented in an Emacs window in a user-defined format,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 one record at a time. The user can view records or modify their
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 contents.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 Forms mode is not a simple major mode, but requires two files to do its
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 job: a control file and a data file. The data file holds the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 actual data to be presented. The control file describes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 how to present it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 @menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 * Forms Example:: An example: editing the password data base.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 * Entering and Exiting Forms Mode::
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 How to visit a file in Forms mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 * Forms Commands:: Special commands to use while in Forms mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 * Data File Format:: How to format the data file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 * Control File Format:: How to control forms mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 * Format Description:: How to define the forms layout.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 * Modifying Forms Contents:: How to modify.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 * Miscellaneous:: Forms mode messages and other remarks.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 * Error Messages:: List of error messages forms mode can produce.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 * Long Example:: A more complex control file example.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 * Credits:: Thanks everyone.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 * Index:: Index to this manual.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 @end menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 @node Forms Example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 @chapter Forms Example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 Let's illustrate Forms mode with an example. Suppose you are looking at
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 the @file{/etc/passwd} file, and the screen looks like this:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 ====== /etc/passwd ======
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 User : root Uid: 0 Gid: 1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 Name : Super User
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 Home : /
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 Shell: /bin/sh
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 As you can see, the familiar fields from the entry for the super user
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 are all there, but instead of being colon-separated on one single line,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 they make up a forms.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 The contents of the forms consists of the contents of the fields of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 record (e.g. @samp{root}, @samp{0}, @samp{1}, @samp{Super User})
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 interspersed with normal text (e.g @samp{User : }, @samp{Uid: }).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 If you modify the contents of the fields, Forms mode will analyze your
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 changes and update the file appropriately. You cannot modify the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 interspersed explanatory text (unless you go to some trouble about it),
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 because that is marked read-only (@pxref{Text Properties,,, elisp, The
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 Emacs Lisp Reference Manual}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 The Forms mode control file specifies the relationship between the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 format of @file{/etc/passwd} and what appears on the screen in Forms
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 mode. @xref{Control File Format}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 @node Entering and Exiting Forms Mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 @chapter Entering and Exiting Forms Mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 @findex forms-find-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 @item M-x forms-find-file @key{RET} @var{control-file} @key{RET}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132 Visit a database using Forms mode. Specify the name of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133 @strong{control file}, not the data file!
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 @findex forms-find-file-other-window
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 @item M-x forms-find-file-other-window @key{RET} @var{control-file} @key{RET}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 Similar, but displays the file in another window.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 The command @code{forms-find-file} evaluates the file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 @var{control-file}, and also visits it in Forms mode. What you see in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142 its buffer is not the contents of this file, but rather a single record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 of the corresponding data file that is visited in its own buffer. So
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 there are two buffers involved in Forms mode: the @dfn{forms buffer}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 that is initially used to visit the control file and that shows the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 records being browsed, and the @dfn{data buffer} that holds the data
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 file being visited. The latter buffer is normally not visible.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 Initially, the first record is displayed in the forms buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 The mode line displays the major mode name @samp{Forms}, followed by the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 minor mode @samp{View} if the data base is read-only. The number of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 current record (@var{n}) and the total number of records in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 file(@var{t}) are shown in the mode line as @samp{@var{n}/@var{t}}. For
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 --%%-Emacs: passwd-demo (Forms View 1/54)----All-------
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 If the buffer is not read-only, you may change the buffer to modify the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161 fields in the record. When you move to a different record, the contents
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162 of the buffer are parsed using the specifications in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 @code{forms-format-list}, and the data file is updated. If the record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164 has fields that aren't included in the display, they are not changed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 @vindex forms-mode-hooks
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167 Entering Forms mode runs the normal hook @code{forms-mode-hooks} to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 perform user-defined customization.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170 To save any modified data, you can use @kbd{C-x C-s}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 (@code{save-buffer}). This does not save the forms buffer (which would
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 be rather useless), but instead saves the buffer visiting the data file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 To terminate Forms mode, you can use @kbd{C-x C-s} (@code{save-buffer})
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 and then kill the forms buffer. However, the data buffer will still
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 remain. If this is not desired, you have to kill this buffer too.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178 @node Forms Commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 @chapter Forms Commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 The commands of Forms mode belong to the @kbd{C-c} prefix, with one
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182 exception: @key{TAB}, which moves to the next field. Forms mode uses
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183 different key maps for normal mode and read-only mode. In read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 Forms mode, you can access most of the commands without the @kbd{C-c}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 prefix, but you must type ordinary letters instead of control
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 characters; for example, type @kbd{n} instead of @kbd{C-c C-n}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189 @findex forms-next-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 @kindex C-c C-n
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 @item C-c C-n
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 Show the next record (@code{forms-next-record}). With a prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 argument @var{n}, show the @var{n}th next record.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 @findex forms-prev-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 @kindex C-c C-p
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 @item C-c C-p
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198 Show the previous record (@code{forms-prev-record}). With a prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 argument @var{n}, show the @var{n}th previous record.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201 @findex forms-jump-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202 @kindex C-c C-l
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 @item C-c C-l
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204 Jump to a record by number (@code{forms-jump-record}). Specify
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 the record number with a prefix argument.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207 @findex forms-first-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 @kindex C-c <
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 @item C-c <
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210 Jump to the first record (@code{forms-first-record}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 @findex forms-last-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213 @kindex C-c >
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 @item C-c >
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 Jump to the last record (@code{forms-last-record}). This command also
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 recalculates the number of records in the data file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 @findex forms-next-field
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 @kindex @key{TAB}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 @item @key{TAB}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 @kindex C-c @key{TAB}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222 @itemx C-c @key{TAB}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223 Jump to the next field in the current record (@code{forms-next-field}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 With a numeric argument @var{n}, jump forward @var{n} fields. If this command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225 would move past the last field, it wraps around to the first field.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 @findex forms-toggle-read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 @kindex C-c C-q
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 @item C-c C-q
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 Toggles read-only mode (@code{forms-toggle-read-only}). In read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231 Forms mode, you cannot edit the fields; most Forms mode commands can be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232 accessed without the prefix @kbd{C-c} if you use the normal letter
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233 instead (for example, type @kbd{n} instead of @kbd{C-c C-n}). In edit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234 mode, you can edit the fields and thus change the contents of the data
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235 base; you must begin Forms mode commands with @code{C-c}. Switching
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236 to edit mode is allowed only if you have write access to the data file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 @findex forms-insert-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239 @kindex C-c C-o
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240 @item C-c C-o
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
241 Create a new record and insert it before the current record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
242 (@code{forms-insert-record}). It starts out with empty (or default)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
243 contents for its fields; you can then edit the fields. With a prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
244 argument, the new record is created @emph{after} the current one.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
245 See also @code{forms-modified-record-filter} in @ref{Modifying Forms
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
246 Contents}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
247
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
248 @findex forms-delete-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
249 @kindex C-c C-k
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
250 @item C-c C-k
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
251 Delete the current record (@code{forms-delete-record}). You are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
252 prompted for confirmation before the record is deleted unless a prefix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
253 argument has been provided.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
254
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
255 @findex forms-search
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
256 @kindex C-c C-s @var{regexp} @key{RET}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
257 @item C-c C-s @var{regexp} @key{RET}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
258 Search for @var{regexp} in all records following this one
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
259 (@code{forms-search}). If found, this record is shown. If you give an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
260 empty argument, the previous regexp is used again.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
261
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
262 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
263 @findex forms-exit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
264 @kindex C-c C-x
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
265 @item C-c C-x
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
266 Terminate Forms mode processing (@code{forms-exit}). The data file is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
267 saved if it has been modified.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
268
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
269 @findex forms-exit-no-save
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
270 @item M-x forms-exit-no-save
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
271 Terminates forms mode processing without saving modified data first.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
272 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
273
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
274 @findex forms-prev-field
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
275 @item M-x forms-prev-field
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
276 Similar to @code{forms-next-field} but moves backwards.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
277 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
278
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
279 In addition, commands such as @kbd{C-x C-s} (@code{save-buffer}) and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
280 @kbd{M-x revert-buffer} are useful in Forms mode just as in other modes.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
281
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
282 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
283 @vindex forms-forms-scroll
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
284 @findex scroll-up
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
285 @findex scroll-down
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
286 If the variable @code{forms-forms-scrolls} is set to a value other
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
287 than @code{nil} (which it is, by default), the Emacs functions
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
288 @code{scroll-up} and @code{scroll-down} will perform a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
289 @code{forms-next-record} and @code{forms-prev-record} when in forms
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
290 mode. So you can use your favourite page commands to page through the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
291 data file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
292
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
293 @vindex forms-forms-jump
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
294 @findex beginning-of-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
295 @findex end-of-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
296 Likewise, if the variable @code{forms-forms-jump} is not @code{nil}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
297 (which it is, by default), Emacs functions @code{beginning-of-buffer}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
298 and @code{end-of-buffer} will perform @code{forms-first-record} and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
299 @code{forms-last-record} when in forms mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
300 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
301
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
302 The following function key definitions are set up in Forms mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
303 (whether read-only or not):
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
304
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
305 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
306 @kindex next
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
307 @item next
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
308 forms-next-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
309
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
310 @kindex prior
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
311 @item prior
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
312 forms-prev-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
313
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
314 @kindex begin
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
315 @item begin
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
316 forms-first-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
317
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
318 @kindex end
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
319 @item end
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
320 forms-last-record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
321
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
322 @kindex S-Tab
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
323 @findex forms-prev-field
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
324 @item S-Tab
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
325 forms-prev-field
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
326 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
327
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
328 @node Data File Format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
329 @chapter Data File Format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
330
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
331 @cindex record
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
332 @cindex field
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
333 @vindex forms-field-sep
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
334 Files for use with Forms mode are very simple---each @dfn{record}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
335 (usually one line) forms the contents of one form. Each record consists
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
336 of a number of @dfn{fields}, which are separated by the value of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
337 string @code{forms-field-sep}, which is @code{"\t"} (a tab) by default.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
338
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
339 @cindex pseudo-newline
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
340 @vindex forms-multi-line
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
341 Fields may contain text which shows up in the forms in multiple lines.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
342 These lines are separated in the field using a ``pseudo-newline''
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
343 character which is defined by the value of the string
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
344 @code{forms-multi-line}. Its default value is @code{"\^k"}. If it is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
345 set to @code{nil}, multiple line fields are prohibited.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
346
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
347 @node Control File Format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
348 @chapter Control File Format
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
349
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
350 @cindex control file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
351 The Forms mode @dfn{control file} serves two purposes. First, it names
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
352 the data file to use, and defines its format and properties. Second,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
353 the Emacs buffer it occupies is used by Forms mode to display the forms.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
354
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
355 The contents of the control file are evaluated as a Lisp program. It
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
356 should set the following Lisp variables to suitable values:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
357
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
358 @table @code
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
359 @vindex forms-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
360 @item forms-file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
361 This variable specifies the name of the data file. Example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
362
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
363 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
364 (setq forms-file "my/data-file")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
365 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
366
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
367 @vindex forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
368 @item forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
369 This variable describes the way the fields of the record are formatted on
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
370 the screen. For details, see @ref{Format Description}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
371
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
372 @vindex forms-number-of-fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
373 @item forms-number-of-fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
374 This variable holds the number of fields in each record of the data
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
375 file. Example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
376
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
377 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
378 (setq forms-number-of-fields 10)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
379 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
380 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
381
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
382 If the control file doesn't set all of these variables, Forms mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
383 reports an error.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
384
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
385 The control file can optionally set the following additional Forms mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
386 variables. Most of them have default values that are good for most
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
387 applications.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
388
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
389 @table @code
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
390 @vindex forms-field-sep
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
391 @item forms-field-sep
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
392 This variable may be used to designate the string which separates the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
393 fields in the records of the data file. If not set, it defaults to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
394 string @code{"\t"} (a tab character). Example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
395
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
396 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
397 (setq forms-field-sep "\t")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
398 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
399
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
400 @vindex forms-read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
401 @item forms-read-only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
402 If the value is non-@code{nil}, the data file is treated read-only. (Forms
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
403 mode also treats the data file as read-only if you don't have access to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
404 write it.) Example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
405
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
406 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
407 (set forms-read-only t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
408 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
409
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
410 @vindex forms-multi-line
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
411 @item forms-multi-line
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
412 This variable specifies the @dfn{pseudo newline} separator that allows
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
413 multi-line fields. This separator goes between the ``lines'' within a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
414 field---thus, the field doesn't really contain multiple lines, but it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
415 appears that way when displayed in Forms mode. If the value is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
416 @code{nil}, multi-line text fields are prohibited. The pseudo newline
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
417 must not be a character contained in @code{forms-field-sep}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
418
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
419 The default value is @code{"\^k"}, so the default pseudo newline is the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
420 character control-k. Example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
421
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
422 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
423 (setq forms-multi-line "\^k")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
424 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
425
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
426 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
427 @vindex forms-forms-scroll
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
428 @item forms-forms-scroll
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
429 @xref{Forms Mode Commands}, for details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
430
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
431 @vindex forms-forms-jump
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
432 @item forms-forms-jump
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
433 @xref{Forms Mode Commands}, for details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
434 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
435
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
436 @findex forms-new-record-filter
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
437 @item forms-new-record-filter
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
438 This variable holds a function to be called whenever a new record is created
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
439 to supply default values for fields. If it is @code{nil}, no function is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
440 called.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
441 @xref{Modifying Forms Contents}, for details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
442
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
443 @findex forms-modified-record-filter
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
444 @item forms-modified-record-filter
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
445 This variable holds a function to be called whenever a record is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
446 modified, just before updating the Forms data file. If it is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
447 @code{nil}, no function is called.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
448 @xref{Modifying Forms Contents}, for details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
449 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
450
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
451 @node Format Description
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
452 @chapter The Format Description
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
453
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
454 @vindex forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
455 The variable @code{forms-format-list} specifies the format of the data
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
456 in the data file, and how to convert the data for display in Forms mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
457 Its value must be a list of Forms mode @dfn{formatting elements}, each
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
458 of which can be a string, a number, a Lisp list, or a Lisp symbol that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
459 evaluates to one of those. The formatting elements are processed in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
460 order they appear in the list.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
461
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
462 @table @var
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
463 @item string
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
464 A string formatting element is inserted in the forms ``as is,'' as text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
465 that the user cannot alter.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
466
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
467 @item number
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
468 A number element selects a field of the record. The contents of this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
469 field are inserted in the display at this point. Field numbers count
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
470 starting from 1 (one).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
471
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
472 @item list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
473 A formatting element that is a list specifies a function call. This
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
474 function is called every time a record is displayed, and its result,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
475 which must be a string, is inserted in the display text. The function
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
476 should do nothing but returning a string.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
477
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
478 @vindex forms-fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
479 The function you call can access the fields of the record as a list in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
480 the variable
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
481 @code{forms-fields}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
482
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
483 @item symbol
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
484 A symbol used as a formatting element should evaluate to a string, number,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
485 or list; the value is interpreted as a formatting element, as described
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
486 above.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
487 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
488
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
489 If a record does not contain the number of fields as specified in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
490 @code{forms-number-of-fields}, a warning message will be printed. Excess
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
491 fields are ignored, missing fields are set to empty.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
492
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
493 The control file which displays @file{/etc/passwd} file as demonstrated
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
494 in the beginning of this manual might look as follows:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
495
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
496 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
497 ;; @r{This demo visits @file{/etc/passwd}.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
498
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
499 (setq forms-file "/etc/passwd")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
500 (setq forms-number-of-fields 7)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
501 (setq forms-read-only t) ; @r{to make sure}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
502 (setq forms-field-sep ":")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
503 ;; @r{Don't allow multi-line fields.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
504 (setq forms-multi-line nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
505
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
506 (setq forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
507 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
508 "====== /etc/passwd ======\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
509 "User : " 1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
510 " Uid: " 3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
511 " Gid: " 4
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
512 "\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
513 "Name : " 5
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
514 "\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
515 "Home : " 6
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
516 "\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
517 "Shell: " 7
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
518 "\n"))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
519 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
520
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
521 When you construct the value of @code{forms-format-list}, you should
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
522 usually either quote the whole value, like this,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
523
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
524 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
525 (setq forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
526 '(
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
527 "====== " forms-file " ======\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
528 "User : " 1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
529 (make-string 20 ?-)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
530 @dots{}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
531 ))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
532 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
533
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
534 @noindent
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
535 or quote the elements which are lists, like this:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
536
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
537 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
538 (setq forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
539 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
540 "====== " forms-file " ======\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
541 "User : " 1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
542 '(make-string 20 ?-)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
543 @dots{}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
544 ))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
545 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
546
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
547 Forms mode validates the contents of @code{forms-format-list} when you
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
548 visit a database. If there are errors, processing is aborted with an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
549 error message which includes a descriptive text. @xref{Error Messages},
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
550 for a detailed list of error messages.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
551
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
552 @node Modifying Forms Contents
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
553 @chapter Modifying The Forms Contents
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
554
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
555 If @code{forms-read-only} is @code{nil}, the user can modify the fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
556 and records of the database.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
557
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
558 All normal editing commands are available for editing the contents of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
559 displayed record. You cannot delete or modify the fixed, explanatory
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
560 text that comes from string formatting elements, but you can modify the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
561 actual field contents.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
562
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
563 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
564 @c This is for the Emacs 18 version only.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
565 If the contents of the forms cannot be recognized properly, this is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
566 signaled using a descriptive text. @xref{Error Messages}, for more info.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
567 The cursor will indicate the last part of the forms which was
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
568 successfully parsed. It's important to avoid entering field contents
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
569 that would cause confusion with the field-separating fixed text.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
570 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
571
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
572 If the variable @code{forms-modified-record-filter} is non-@code{nil},
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
573 it is called as a function before the new data is written to the data
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
574 file. The function receives one argument, a vector that contains the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
575 contents of the fields of the record.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
576
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
577 The function can refer to fields with @code{aref} and modify them with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
578 @code{aset}. The first field has number 1 (one); thus, element 0 of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
579 vector is not used. The function should return the same vector it was
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
580 passed; the (possibly modified) contents of the vector determine what is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
581 actually written in the file. Here is an example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
582
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
583 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
584 (defun my-modified-record-filter (record)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
585 ;; @r{Modify second field.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
586 (aset record 2 (current-time-string))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
587 ;; @r{Return the field vector.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
588 record)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
589
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
590 (setq forms-modified-record-filter 'my-modified-record-filter)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
591 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
592
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
593 If the variable @code{forms-new-record-filter} is non-@code{nil}, its
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
594 value is a function to be called to fill in default values for the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
595 fields of a new record. The function is passed a vector of empty
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
596 strings, one for each field; it should return the same vector, with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
597 the desired field values stored in it. Fields are numbered starting
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
598 from 1 (one). Example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
599
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
600 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
601 (defun my-new-record-filter (fields)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
602 (aset fields 5 (login-name))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
603 (aset fields 1 (current-time-string))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
604 fields)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
605
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
606 (setq forms-new-record-filter 'my-new-record-filter)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
607 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
608
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
609 @node Miscellaneous
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
610 @chapter Miscellaneous
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
611
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
612 @vindex forms-version
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
613 The global variable @code{forms-version} holds the version information
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
614 of the Forms mode software.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
615
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
616 @findex forms-enumerate
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
617 It is very convenient to use symbolic names for the fields in a record.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
618 The function @code{forms-enumerate} provides an elegant means to define
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
619 a series of variables whose values are consecutive integers. The
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
620 function returns the highest number used, so it can be used to set
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
621 @code{forms-number-of-fields} also. For example:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
622
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
623 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
624 (setq forms-number-of-fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
625 (forms-enumerate
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
626 '(field1 field2 field3 @dots{})))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
627 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
628
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
629 This sets @code{field1} to 1, @code{field2} to 2, and so on.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
630
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
631 Care has been taken to keep the Forms mode variables buffer-local, so it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
632 is possible to visit multiple files in Forms mode simultaneously, even
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
633 if they have different properties.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
634
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
635 @findex forms-mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
636 If you have visited the control file in normal fashion with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
637 @code{find-file} or a like command, you can switch to Forms mode with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
638 the command @code{M-x forms-mode}. If you put @samp{-*- forms -*-} in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
639 the first line of the control file, then visiting it enables Forms mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
640 automatically. But this makes it hard to edit the control file itself,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
641 so you'd better think twice before using this.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
642
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
643 The default format for the data file, using @code{"\t"} to separate
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
644 fields and @code{"\^k"} to separate lines within a field, matches the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
645 file format of some popular database programss, e.g. FileMaker. So
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
646 @code{forms-mode} can decrease the need to use proprietary software.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
647
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
648 @node Error Messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
649 @chapter Error Messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
650
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
651 This section describes all error messages which can be generated by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
652 forms mode. Error messages that result from parsing the control file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
653 all start with the text @samp{Forms control file error}. Messages
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
654 generated while analyzing the definition of @code{forms-format-list}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
655 start with @samp{Forms format error}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
656
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
657 @table @code
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
658 @item Forms control file error: 'forms-file' has not been set
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
659 The variable @code{forms-file} was not set by the control file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
660
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
661 @item Forms control file error: 'forms-number-of-fields' has not been set
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
662 The variable @code{forms-number-of-fields} was not set by the control
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
663 file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
664
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
665 @item Forms control file error: 'forms-number-of-fields' must be a number > 0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
666 The variable @code{forms-number-of-fields} did not contain a positive
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
667 number.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
668
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
669 @item Forms control file error: 'forms-field-sep' is not a string
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
670 @itemx Forms control file error: 'forms-multi-line' must be nil or a one-character string
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
671 The variable @code{forms-multi-line} was set to something other than
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
672 @code{nil} or a single-character string.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
673
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
674 @item Forms control file error: 'forms-multi-line' is equal to 'forms-field-sep'
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
675 The variable @code{forms-multi-line} may not be equal to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
676 @code{forms-field-sep} for this would make it impossible to distinguish
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
677 fields and the lines in the fields.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
678
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
679 @item Forms control file error: 'forms-new-record-filter' is not a function
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
680 @itemx Forms control file error: 'forms-modified-record-filter' is not a function
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
681 The variable has been set to something else than a function.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
682
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
683 @item Forms control file error: 'forms-format-list' has not been set
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
684 @itemx Forms control file error: 'forms-format-list' is not a list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
685 The variable @code{forms-format-list} was not set to a Lisp list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
686 by the control file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
687
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
688 @item Forms format error: field number @var{xx} out of range 1..@var{nn}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
689 A field number was supplied in @code{forms-format-list} with a value of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
690 @var{xx}, which was not greater than zero and smaller than or equal to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
691 the number of fields in the forms, @var{nn}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
692
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
693 @item Forms format error: not a function @var{fun}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
694 The first element of a list which is an element of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
695 @code{forms-format-list} was not a valid Lisp function.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
696
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
697 @item Forms format error: invalid element @var{xx}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
698 A list element was supplied in @code{forms-format-list} which was not a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
699 string, number or list.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
700
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
701 @ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
702 @c This applies to Emacs 18 only.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
703 @c Error messages generated while a modified form is being analyzed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
704
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
705 @item Parse error: not looking at "..."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
706 When re-parsing the contents of a forms, the text shown could not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
707 be found.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
708
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
709 @item Parse error: cannot find "..."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
710 When re-parsing the contents of a forms, the text shown, which
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
711 separates two fields, could not be found.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
712
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
713 @item Parse error: cannot parse adjacent fields @var{xx} and @var{yy}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
714 Fields @var{xx} and @var{yy} were not separated by text, so could not be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
715 parsed again.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
716 @end ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
717
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
718 @item Warning: this record has @var{xx} fields instead of @var{yy}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
719 The number of fields in this record in the data file did not match
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
720 @code{forms-number-of-fields}. Missing fields will be made empty.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
721
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
722 @item Multi-line fields in this record - update refused!
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
723 The current record contains newline characters, hence can not be written
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
724 back to the data file, for it would corrupt it. Probably you inserted a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
725 newline in a field, while @code{forms-multi-line} was @code{nil}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
726
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
727 @item Record number @var{xx} out of range 1..@var{yy}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
728 A jump was made to non-existing record @var{xx}. @var{yy} denotes the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
729 number of records in the file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
730
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
731 @item Stuck at record @var{xx}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
732 An internal error prevented a specific record from being retrieved.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
733
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
734 @item No write access to @code{"}@var{file}@code{"}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
735 An attempt was made to enable edit mode on a file that has been write
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
736 protected.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
737
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
738 @item @code{"}@var{regexp}@code{"} not found
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
739 The @var{regexp} could not be found in the data file, starting at the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
740 current record location.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
741
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
742 @item Warning: number of records changed to @var{nn}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
743 Forms mode's idea of the number of records has been adjusted to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
744 number of records actually present in the data file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
745
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
746 @item Problem saving buffers?
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
747 An error occurred while saving the data file buffer. Most likely, Emacs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
748 did ask to confirm deleting the buffer because it had been modified, and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
749 you said `no'.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
750 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
751
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
752 @node Long Example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
753 @chapter Long Example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
754
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
755 The following example exploits most of the features of Forms mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
756 This example is included in the distribution as file @file{forms-d2.el}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
757
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
758 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
759 ;; demo2 -- demo forms-mode -*- emacs-lisp -*-
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
760
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
761 ;; SCCS Status : demo2 1.1.2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
762 ;; Author : Johan Vromans
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
763 ;; Created On : 1989
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
764 ;; Last Modified By: Johan Vromans
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
765 ;; Last Modified On: Mon Jul 1 13:56:31 1991
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
766 ;; Update Count : 2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
767 ;; Status : OK
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
768 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
769 ;; @r{This sample forms exploit most of the features of forms mode.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
770
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
771 ;; @r{Set the name of the data file.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
772 (setq forms-file "forms-d2.dat")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
773
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
774 ;; @r{Use @code{forms-enumerate} to set field names and number thereof.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
775 (setq forms-number-of-fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
776 (forms-enumerate
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
777 '(arch-newsgroup ; 1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
778 arch-volume ; 2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
779 arch-issue ; and ...
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
780 arch-article ; ... so
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
781 arch-shortname ; ... ... on
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
782 arch-parts
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
783 arch-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
784 arch-longname
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
785 arch-keywords
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
786 arch-date
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
787 arch-remarks)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
788
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
789 ;; @r{The following functions are used by this form for layout purposes.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
790 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
791 (defun arch-tocol (target &optional fill)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
792 "Produces a string to skip to column TARGET.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
793 Prepends newline if needed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
794 The optional FILL should be a character, used to fill to the column."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
795 (if (null fill)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
796 (setq fill ? ))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
797 (if (< target (current-column))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
798 (concat "\n" (make-string target fill))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
799 (make-string (- target (current-column)) fill)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
800 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
801 (defun arch-rj (target field &optional fill)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
802 "Produces a string to skip to column TARGET\
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
803 minus the width of field FIELD.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
804 Prepends newline if needed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
805 The optional FILL should be a character,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
806 used to fill to the column."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
807 (arch-tocol (- target (length (nth field forms-fields))) fill))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
808
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
809 ;; @r{Record filters.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
810 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
811 (defun new-record-filter (the-record)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
812 "Form a new record with some defaults."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
813 (aset the-record arch-from (user-full-name))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
814 (aset the-record arch-date (current-time-string))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
815 the-record) ; return it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
816 (setq forms-new-record-filter 'new-record-filter)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
817
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
818 ;; @r{The format list.}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
819 (setq forms-format-list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
820 (list
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
821 "====== Public Domain Software Archive ======\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
822 arch-shortname
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
823 " - " arch-longname
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
824 "\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
825 "Article: " arch-newsgroup
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
826 "/" arch-article
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
827 " "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
828 '(arch-tocol 40)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
829 "Issue: " arch-issue
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
830 " "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
831 '(arch-rj 73 10)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
832 "Date: " arch-date
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
833 "\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
834 "Submitted by: " arch-from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
835 "\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
836 '(arch-tocol 79 ?-)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
837 "\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
838 "Keywords: " arch-keywords
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
839 "\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
840 "Parts: " arch-parts
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
841 "\n\n====== Remarks ======\n\n"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
842 arch-remarks
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
843 ))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
844
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
845 ;; @r{That's all, folks!}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
846 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
847
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
848 @node Credits
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
849 @chapter Credits
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
850
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
851 Forms mode was developed by Johan Vromans while working at Multihouse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
852 Research in the Netherlands.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
853
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
854 Bug fixes and other useful suggestions were supplied by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
855 Richard Stallman (@code{rms@@gnu.ai.mit.edu}),
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
856 Harald Hanche-Olsen (@code{hanche@@imf.unit.no}),
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
857 @code{cwitty@@portia.stanford.edu},
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
858 Jonathan I. Kamens,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
859 Per Cederqvist (@code{ceder@@signum.se}),
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
860 and Ignatios Souvatzis.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
861
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
862 This documentation was slightly inspired by the documentation of ``rolo
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
863 mode'' by Paul Davis at Schlumberger Cambridge Research
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
864 (@code{davis%scrsu1%sdr.slb.com@@relay.cs.net}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
865
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
866 None of this would have been possible without GNU Emacs of the Free
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
867 Software Foundation. Thanks, Richard!
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
868
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
869 @node Index
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
870 @unnumbered Index
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
871 @printindex cp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
872
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
873 @contents
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
874 @bye