Blame


1 cfa37a7b 2004-04-10 devnull .TH ACME 1
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull acme, win, awd \- interactive text windows
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B acme
6 cfa37a7b 2004-04-10 devnull [
7 cfa37a7b 2004-04-10 devnull .B -f
8 cfa37a7b 2004-04-10 devnull .I varfont
9 cfa37a7b 2004-04-10 devnull ]
10 cfa37a7b 2004-04-10 devnull [
11 cfa37a7b 2004-04-10 devnull .B -F
12 cfa37a7b 2004-04-10 devnull .I fixfont
13 cfa37a7b 2004-04-10 devnull ]
14 cfa37a7b 2004-04-10 devnull [
15 cfa37a7b 2004-04-10 devnull .B -c
16 cfa37a7b 2004-04-10 devnull .I ncol
17 cfa37a7b 2004-04-10 devnull ]
18 cfa37a7b 2004-04-10 devnull [
19 cfa37a7b 2004-04-10 devnull .B -b
20 cfa37a7b 2004-04-10 devnull ]
21 cfa37a7b 2004-04-10 devnull [
22 cfa37a7b 2004-04-10 devnull .B -l
23 cfa37a7b 2004-04-10 devnull .I file
24 cfa37a7b 2004-04-10 devnull |
25 cfa37a7b 2004-04-10 devnull .I file
26 cfa37a7b 2004-04-10 devnull \&... ]
27 cfa37a7b 2004-04-10 devnull .LP
28 cfa37a7b 2004-04-10 devnull .B win
29 cfa37a7b 2004-04-10 devnull [
30 cfa37a7b 2004-04-10 devnull .I command
31 cfa37a7b 2004-04-10 devnull ]
32 cfa37a7b 2004-04-10 devnull .LP
33 cfa37a7b 2004-04-10 devnull .B awd
34 cfa37a7b 2004-04-10 devnull [
35 cfa37a7b 2004-04-10 devnull .I label
36 cfa37a7b 2004-04-10 devnull ]
37 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
38 cfa37a7b 2004-04-10 devnull .I Acme
39 cfa37a7b 2004-04-10 devnull manages windows of text that may be edited interactively or by external programs.
40 cfa37a7b 2004-04-10 devnull The interactive interface uses the keyboard and mouse; external programs
41 cfa37a7b 2004-04-10 devnull use a set of files served by
42 cfa37a7b 2004-04-10 devnull .IR acme ;
43 cfa37a7b 2004-04-10 devnull these are discussed in
44 cfa37a7b 2004-04-10 devnull .IR acme (4).
45 cfa37a7b 2004-04-10 devnull .PP
46 cfa37a7b 2004-04-10 devnull Any named
47 cfa37a7b 2004-04-10 devnull .I files
48 cfa37a7b 2004-04-10 devnull are read into
49 cfa37a7b 2004-04-10 devnull .I acme
50 cfa37a7b 2004-04-10 devnull windows before
51 cfa37a7b 2004-04-10 devnull .I acme
52 cfa37a7b 2004-04-10 devnull accepts input.
53 cfa37a7b 2004-04-10 devnull With the
54 cfa37a7b 2004-04-10 devnull .B -l
55 cfa37a7b 2004-04-10 devnull option, the state of the entire system is loaded
56 cfa37a7b 2004-04-10 devnull from
57 cfa37a7b 2004-04-10 devnull .IR file ,
58 cfa37a7b 2004-04-10 devnull which should have been created by a
59 cfa37a7b 2004-04-10 devnull .B Dump
60 cfa37a7b 2004-04-10 devnull command (q.v.),
61 cfa37a7b 2004-04-10 devnull and subsequent
62 cfa37a7b 2004-04-10 devnull .I file
63 cfa37a7b 2004-04-10 devnull names are ignored.
64 cfa37a7b 2004-04-10 devnull Plain files display as text; directories display as columnated lists of the
65 cfa37a7b 2004-04-10 devnull names of their components, as in
66 cfa37a7b 2004-04-10 devnull .B "ls -p directory|mc
67 cfa37a7b 2004-04-10 devnull except that the names of subdirectories have a slash appended.
68 cfa37a7b 2004-04-10 devnull .PP
69 cfa37a7b 2004-04-10 devnull The
70 cfa37a7b 2004-04-10 devnull .B -f
71 cfa37a7b 2004-04-10 devnull .RB ( -F )
72 cfa37a7b 2004-04-10 devnull option sets the main font, usually variable-pitch (alternate, usually fixed-pitch);
73 cfa37a7b 2004-04-10 devnull the default is
74 cfa37a7b 2004-04-10 devnull .B /lib/font/bit/lucidasans/euro.8.font
75 cfa37a7b 2004-04-10 devnull .RB ( \&.../lucm/unicode.9.font ).
76 cfa37a7b 2004-04-10 devnull Tab intervals are set to the width of 4 (or the value of
77 cfa37a7b 2004-04-10 devnull .BR $tabstop )
78 cfa37a7b 2004-04-10 devnull numeral zeros in the appropriate font.
79 cfa37a7b 2004-04-10 devnull .PP
80 cfa37a7b 2004-04-10 devnull .SS Windows
81 cfa37a7b 2004-04-10 devnull .I Acme
82 cfa37a7b 2004-04-10 devnull windows are in two parts: a one-line
83 cfa37a7b 2004-04-10 devnull .I tag
84 cfa37a7b 2004-04-10 devnull above a multi-line
85 cfa37a7b 2004-04-10 devnull .IR body .
86 cfa37a7b 2004-04-10 devnull The body typically contains an image of a file, as in
87 cfa37a7b 2004-04-10 devnull .IR sam (1),
88 cfa37a7b 2004-04-10 devnull or the output of a
89 cfa37a7b 2004-04-10 devnull program, as in an
90 cfa37a7b 2004-04-10 devnull .IR rio (1)
91 cfa37a7b 2004-04-10 devnull window.
92 cfa37a7b 2004-04-10 devnull The tag contains a number of
93 cfa37a7b 2004-04-10 devnull blank-separated words, followed by a vertical bar character, followed by anything.
94 cfa37a7b 2004-04-10 devnull The first word is the name of the window, typically the name of the associated
95 cfa37a7b 2004-04-10 devnull file or directory, and the other words are commands available in that window.
96 cfa37a7b 2004-04-10 devnull Any text may be added after the bar; examples are strings to search for or
97 cfa37a7b 2004-04-10 devnull commands to execute in that window.
98 cfa37a7b 2004-04-10 devnull Changes to the text left of the bar will be ignored,
99 cfa37a7b 2004-04-10 devnull unless the result is to change the name of the
100 cfa37a7b 2004-04-10 devnull window.
101 cfa37a7b 2004-04-10 devnull .PP
102 cfa37a7b 2004-04-10 devnull If a window holds a directory, the name (first word of the tag) will end with
103 cfa37a7b 2004-04-10 devnull a slash.
104 cfa37a7b 2004-04-10 devnull .SS Scrolling
105 cfa37a7b 2004-04-10 devnull Each window has a scroll bar to the left of the body.
106 cfa37a7b 2004-04-10 devnull The scroll bar behaves much as in
107 cfa37a7b 2004-04-10 devnull .IR sam (1)
108 cfa37a7b 2004-04-10 devnull or
109 cfa37a7b 2004-04-10 devnull .IR rio (1)
110 cfa37a7b 2004-04-10 devnull except that scrolling occurs when the button is pressed, rather than released,
111 cfa37a7b 2004-04-10 devnull and continues
112 cfa37a7b 2004-04-10 devnull as long as the mouse button is held down in the scroll bar.
113 cfa37a7b 2004-04-10 devnull For example, to scroll slowly through a file,
114 cfa37a7b 2004-04-10 devnull hold button 3 down near the top of the scroll bar. Moving the mouse
115 cfa37a7b 2004-04-10 devnull down the scroll bar speeds up the rate of scrolling.
116 cfa37a7b 2004-04-10 devnull .SS Layout
117 cfa37a7b 2004-04-10 devnull .I Acme
118 cfa37a7b 2004-04-10 devnull windows are arranged in columns. By default, it creates two columns when starting;
119 cfa37a7b 2004-04-10 devnull this can be overridden with the
120 cfa37a7b 2004-04-10 devnull .B -c
121 cfa37a7b 2004-04-10 devnull option.
122 cfa37a7b 2004-04-10 devnull Placement is automatic but may be adjusted
123 cfa37a7b 2004-04-10 devnull using the
124 cfa37a7b 2004-04-10 devnull .I layout box
125 cfa37a7b 2004-04-10 devnull in the upper left corner of each window and column.
126 cfa37a7b 2004-04-10 devnull Pressing and holding any mouse button in the box drags
127 cfa37a7b 2004-04-10 devnull the associated window or column.
128 cfa37a7b 2004-04-10 devnull For windows, just
129 cfa37a7b 2004-04-10 devnull clicking in the layout box grows the window in place: button 1
130 cfa37a7b 2004-04-10 devnull grows it a little, button 2 grows it as much as it can, still leaving all other
131 cfa37a7b 2004-04-10 devnull tags in that column visible, and button 3 takes over the column completely,
132 cfa37a7b 2004-04-10 devnull temporarily hiding other windows in the column.
133 cfa37a7b 2004-04-10 devnull (They will return
134 cfa37a7b 2004-04-10 devnull .I en masse
135 cfa37a7b 2004-04-10 devnull if any of them needs attention.)
136 cfa37a7b 2004-04-10 devnull The layout box in a window is normally white; when it is black in the center,
137 cfa37a7b 2004-04-10 devnull it records that the file is `dirty':
138 cfa37a7b 2004-04-10 devnull .I Acme
139 cfa37a7b 2004-04-10 devnull believes it is modified from its original
140 cfa37a7b 2004-04-10 devnull contents.
141 cfa37a7b 2004-04-10 devnull .PP
142 cfa37a7b 2004-04-10 devnull Tags exist at the top of each column and across the whole display.
143 cfa37a7b 2004-04-10 devnull .I Acme
144 cfa37a7b 2004-04-10 devnull pre-loads them with useful commands.
145 cfa37a7b 2004-04-10 devnull Also, the tag across the top maintains a list of executing long-running commands.
146 cfa37a7b 2004-04-10 devnull .SS Typing
147 cfa37a7b 2004-04-10 devnull The behavior of typed text is similar to that in
148 cfa37a7b 2004-04-10 devnull .IR rio (1)
149 cfa37a7b 2004-04-10 devnull except that the characters are delivered to the tag or body under the mouse; there is no
150 cfa37a7b 2004-04-10 devnull `click to type'.
151 cfa37a7b 2004-04-10 devnull (The experimental option
152 cfa37a7b 2004-04-10 devnull .B -b
153 cfa37a7b 2004-04-10 devnull causes typing to go to the most recently clicked-at or made window.)
154 cfa37a7b 2004-04-10 devnull The usual backspacing conventions apply.
155 cfa37a7b 2004-04-10 devnull As in
156 cfa37a7b 2004-04-10 devnull .IR sam (1)
157 cfa37a7b 2004-04-10 devnull but not
158 cfa37a7b 2004-04-10 devnull .IR rio ,
159 cfa37a7b 2004-04-10 devnull the ESC key selects the text typed since the last mouse action,
160 cfa37a7b 2004-04-10 devnull a feature particularly useful when executing commands.
161 cfa37a7b 2004-04-10 devnull A side effect is that typing ESC with text already selected is identical
162 cfa37a7b 2004-04-10 devnull to a
163 cfa37a7b 2004-04-10 devnull .B Cut
164 cfa37a7b 2004-04-10 devnull command
165 cfa37a7b 2004-04-10 devnull .RI ( q.v. ).
166 cfa37a7b 2004-04-10 devnull .PP
167 cfa37a7b 2004-04-10 devnull Most text, including the names of windows, may be edited uniformly.
168 cfa37a7b 2004-04-10 devnull The only exception is that the command names to the
169 cfa37a7b 2004-04-10 devnull left of the bar in a tag are maintained automatically; changes to them are repaired
170 cfa37a7b 2004-04-10 devnull by
171 cfa37a7b 2004-04-10 devnull .IR acme .
172 cfa37a7b 2004-04-10 devnull .SS "Directory context
173 cfa37a7b 2004-04-10 devnull Each window's tag names a directory: explicitly if the window
174 cfa37a7b 2004-04-10 devnull holds a directory; implicitly if it holds a regular file
175 cfa37a7b 2004-04-10 devnull (e.g. the directory
176 cfa37a7b 2004-04-10 devnull .B /adm
177 cfa37a7b 2004-04-10 devnull if the window holds
178 cfa37a7b 2004-04-10 devnull .BR /adm/users ).
179 cfa37a7b 2004-04-10 devnull This directory provides a
180 cfa37a7b 2004-04-10 devnull .I context
181 cfa37a7b 2004-04-10 devnull for interpreting file names in that window.
182 cfa37a7b 2004-04-10 devnull For example, the string
183 cfa37a7b 2004-04-10 devnull .B users
184 cfa37a7b 2004-04-10 devnull in a window labeled
185 cfa37a7b 2004-04-10 devnull .B /adm/
186 cfa37a7b 2004-04-10 devnull or
187 cfa37a7b 2004-04-10 devnull .B /adm/keys
188 cfa37a7b 2004-04-10 devnull will be interpreted as the file name
189 cfa37a7b 2004-04-10 devnull .BR /adm/users .
190 cfa37a7b 2004-04-10 devnull The directory is defined purely textually, so it can be a non-existent
191 cfa37a7b 2004-04-10 devnull directory or a real directory associated with a non-existent file
192 cfa37a7b 2004-04-10 devnull (e.g.
193 cfa37a7b 2004-04-10 devnull .BR /adm/not-a-file ).
194 cfa37a7b 2004-04-10 devnull File names beginning with a slash
195 cfa37a7b 2004-04-10 devnull are assumed to be absolute file names.
196 cfa37a7b 2004-04-10 devnull .SS Errors
197 cfa37a7b 2004-04-10 devnull Windows whose names begin with
198 cfa37a7b 2004-04-10 devnull .B -
199 cfa37a7b 2004-04-10 devnull or
200 cfa37a7b 2004-04-10 devnull .B +
201 cfa37a7b 2004-04-10 devnull conventionally hold diagnostics and other data
202 cfa37a7b 2004-04-10 devnull not directly associated with files.
203 cfa37a7b 2004-04-10 devnull A window labeled
204 cfa37a7b 2004-04-10 devnull .B +Errors
205 cfa37a7b 2004-04-10 devnull receives all diagnostics produced by
206 cfa37a7b 2004-04-10 devnull .I acme
207 cfa37a7b 2004-04-10 devnull itself.
208 cfa37a7b 2004-04-10 devnull Diagnostics from commands run by
209 cfa37a7b 2004-04-10 devnull .I acme
210 cfa37a7b 2004-04-10 devnull appear in a window named
211 cfa37a7b 2004-04-10 devnull .IB directory /+Errors
212 cfa37a7b 2004-04-10 devnull where
213 cfa37a7b 2004-04-10 devnull .I directory
214 cfa37a7b 2004-04-10 devnull is identified by the context of the command.
215 cfa37a7b 2004-04-10 devnull These error windows are created when needed.
216 cfa37a7b 2004-04-10 devnull .SS "Mouse button 1
217 cfa37a7b 2004-04-10 devnull Mouse button 1 selects text just as in
218 cfa37a7b 2004-04-10 devnull .IR sam (1)
219 cfa37a7b 2004-04-10 devnull or
220 cfa37a7b 2004-04-10 devnull .IR rio (1) ,
221 cfa37a7b 2004-04-10 devnull including the usual double-clicking conventions.
222 cfa37a7b 2004-04-10 devnull .SS "Mouse button 2
223 cfa37a7b 2004-04-10 devnull By an
224 cfa37a7b 2004-04-10 devnull action similar to selecting text with button 1,
225 cfa37a7b 2004-04-10 devnull button 2 indicates text to execute as a command.
226 cfa37a7b 2004-04-10 devnull If the indicated text has multiple white-space-separated words,
227 cfa37a7b 2004-04-10 devnull the first is the command name and the second and subsequent
228 cfa37a7b 2004-04-10 devnull are its arguments.
229 cfa37a7b 2004-04-10 devnull If button 2 is `clicked'\(emindicates a null string\(em\c
230 cfa37a7b 2004-04-10 devnull .I acme
231 cfa37a7b 2004-04-10 devnull .I expands
232 cfa37a7b 2004-04-10 devnull the indicated text to find a command to run:
233 cfa37a7b 2004-04-10 devnull if the click is within button-1-selected text,
234 cfa37a7b 2004-04-10 devnull .I acme
235 cfa37a7b 2004-04-10 devnull takes that selection as the command;
236 cfa37a7b 2004-04-10 devnull otherwise it takes the largest string of valid file name characters containing the click.
237 cfa37a7b 2004-04-10 devnull Valid file name characters are alphanumerics and
238 cfa37a7b 2004-04-10 devnull .B _
239 cfa37a7b 2004-04-10 devnull .B .
240 cfa37a7b 2004-04-10 devnull .B -
241 cfa37a7b 2004-04-10 devnull .B +
242 cfa37a7b 2004-04-10 devnull .BR / .
243 cfa37a7b 2004-04-10 devnull This behavior is similar to double-clicking with button 1 but,
244 cfa37a7b 2004-04-10 devnull because a null command is meaningless, only a single click is required.
245 cfa37a7b 2004-04-10 devnull .PP
246 cfa37a7b 2004-04-10 devnull Some commands, all by convention starting with a capital letter, are
247 cfa37a7b 2004-04-10 devnull .I built-ins
248 cfa37a7b 2004-04-10 devnull that are executed directly by
249 cfa37a7b 2004-04-10 devnull .IR acme :
250 cfa37a7b 2004-04-10 devnull .TP
251 cfa37a7b 2004-04-10 devnull .B Cut
252 cfa37a7b 2004-04-10 devnull Delete most recently selected text and place in snarf buffer.
253 cfa37a7b 2004-04-10 devnull .TP
254 cfa37a7b 2004-04-10 devnull .B Del
255 cfa37a7b 2004-04-10 devnull Delete window. If window is dirty, instead print a warning; a second
256 cfa37a7b 2004-04-10 devnull .B Del
257 cfa37a7b 2004-04-10 devnull will succeed.
258 cfa37a7b 2004-04-10 devnull .TP
259 cfa37a7b 2004-04-10 devnull .B Delcol
260 cfa37a7b 2004-04-10 devnull Delete column and all its windows, after checking that windows are not dirty.
261 cfa37a7b 2004-04-10 devnull .TP
262 cfa37a7b 2004-04-10 devnull .B Delete
263 cfa37a7b 2004-04-10 devnull Delete window without checking for dirtiness.
264 cfa37a7b 2004-04-10 devnull .TP
265 cfa37a7b 2004-04-10 devnull .B Dump
266 cfa37a7b 2004-04-10 devnull Write the state of
267 cfa37a7b 2004-04-10 devnull .I acme
268 cfa37a7b 2004-04-10 devnull to the file name, if specified, or
269 cfa37a7b 2004-04-10 devnull .B $home/acme.dump
270 cfa37a7b 2004-04-10 devnull by default.
271 cfa37a7b 2004-04-10 devnull .TP
272 cfa37a7b 2004-04-10 devnull .B Edit
273 cfa37a7b 2004-04-10 devnull Treat the argument as a text editing command in the style of
274 cfa37a7b 2004-04-10 devnull .IR sam (1).
275 cfa37a7b 2004-04-10 devnull The full
276 cfa37a7b 2004-04-10 devnull .B Sam
277 cfa37a7b 2004-04-10 devnull language is implemented except for the commands
278 cfa37a7b 2004-04-10 devnull .BR k ,
279 cfa37a7b 2004-04-10 devnull .BR n ,
280 cfa37a7b 2004-04-10 devnull .BR q ,
281 cfa37a7b 2004-04-10 devnull and
282 cfa37a7b 2004-04-10 devnull .BR ! .
283 cfa37a7b 2004-04-10 devnull The
284 cfa37a7b 2004-04-10 devnull .B =
285 cfa37a7b 2004-04-10 devnull command is slightly different: it includes the file name and
286 cfa37a7b 2004-04-10 devnull gives only the line address unless the command is explicitly
287 cfa37a7b 2004-04-10 devnull .BR =# .
288 cfa37a7b 2004-04-10 devnull The `current window' for the command is the body of the window in which the
289 cfa37a7b 2004-04-10 devnull .B Edit
290 cfa37a7b 2004-04-10 devnull command is executed.
291 cfa37a7b 2004-04-10 devnull Usually the
292 cfa37a7b 2004-04-10 devnull .B Edit
293 cfa37a7b 2004-04-10 devnull command would be typed in a tag; longer commands may be prepared in a
294 cfa37a7b 2004-04-10 devnull scratch window and executed, with
295 cfa37a7b 2004-04-10 devnull .B Edit
296 cfa37a7b 2004-04-10 devnull itself in the current window, using the 2-1 chord described below.
297 cfa37a7b 2004-04-10 devnull .TP
298 cfa37a7b 2004-04-10 devnull .B Exit
299 cfa37a7b 2004-04-10 devnull Exit
300 cfa37a7b 2004-04-10 devnull .I acme
301 cfa37a7b 2004-04-10 devnull after checking that windows are not dirty.
302 cfa37a7b 2004-04-10 devnull .TP
303 cfa37a7b 2004-04-10 devnull .B Font
304 cfa37a7b 2004-04-10 devnull With no arguments, change the font of the associated window from fixed-spaced to
305 cfa37a7b 2004-04-10 devnull proportional-spaced or
306 cfa37a7b 2004-04-10 devnull .I vice
307 cfa37a7b 2004-04-10 devnull .IR versa .
308 cfa37a7b 2004-04-10 devnull Given a file name argument, change the font of the window to that stored in the named file.
309 cfa37a7b 2004-04-10 devnull If the file name argument is prefixed by
310 cfa37a7b 2004-04-10 devnull .B var
311 cfa37a7b 2004-04-10 devnull .RB ( fix ),
312 cfa37a7b 2004-04-10 devnull also set the default proportional-spaced (fixed-spaced) font for future use to that font.
313 cfa37a7b 2004-04-10 devnull Other existing windows are unaffected.
314 cfa37a7b 2004-04-10 devnull .TP
315 cfa37a7b 2004-04-10 devnull .B Get
316 cfa37a7b 2004-04-10 devnull Load file into window, replacing previous contents (after checking for dirtiness as in
317 cfa37a7b 2004-04-10 devnull .BR Del ).
318 cfa37a7b 2004-04-10 devnull With no argument, use the existing file name of the window.
319 cfa37a7b 2004-04-10 devnull Given an argument, use that file but do not change the window's file name.
320 cfa37a7b 2004-04-10 devnull .TP
321 cfa37a7b 2004-04-10 devnull .B ID
322 cfa37a7b 2004-04-10 devnull Print window ID number
323 cfa37a7b 2004-04-10 devnull .RI ( q.v. ).
324 cfa37a7b 2004-04-10 devnull .TP
325 cfa37a7b 2004-04-10 devnull .B Incl
326 cfa37a7b 2004-04-10 devnull When opening `include' files
327 cfa37a7b 2004-04-10 devnull (those enclosed in
328 cfa37a7b 2004-04-10 devnull .BR <> )
329 cfa37a7b 2004-04-10 devnull with button 3,
330 cfa37a7b 2004-04-10 devnull .I acme
331 cfa37a7b 2004-04-10 devnull searches in directories
332 cfa37a7b 2004-04-10 devnull .B /$objtype/include
333 cfa37a7b 2004-04-10 devnull and
334 cfa37a7b 2004-04-10 devnull .BR /sys/include .
335 cfa37a7b 2004-04-10 devnull .B Incl
336 cfa37a7b 2004-04-10 devnull adds its arguments to a supplementary list of include directories, analogous to
337 cfa37a7b 2004-04-10 devnull the
338 cfa37a7b 2004-04-10 devnull .B -I
339 cfa37a7b 2004-04-10 devnull option to the compilers.
340 cfa37a7b 2004-04-10 devnull This list is per-window and is inherited when windows are created by actions in that window, so
341 cfa37a7b 2004-04-10 devnull .I Incl
342 cfa37a7b 2004-04-10 devnull is most usefully applied to a directory containing relevant source.
343 cfa37a7b 2004-04-10 devnull With no arguments,
344 cfa37a7b 2004-04-10 devnull .I Incl
345 cfa37a7b 2004-04-10 devnull prints the supplementary list.
346 cfa37a7b 2004-04-10 devnull This command is largely superseded by plumbing
347 cfa37a7b 2004-04-10 devnull (see
348 058b0118 2005-01-03 devnull .IR plumb (7)).
349 cfa37a7b 2004-04-10 devnull .TP
350 cfa37a7b 2004-04-10 devnull .B Kill
351 cfa37a7b 2004-04-10 devnull Send a
352 cfa37a7b 2004-04-10 devnull .B kill
353 cfa37a7b 2004-04-10 devnull note to
354 cfa37a7b 2004-04-10 devnull .IR acme -initiated
355 cfa37a7b 2004-04-10 devnull commands named as arguments.
356 cfa37a7b 2004-04-10 devnull .TP
357 cfa37a7b 2004-04-10 devnull .B Local
358 058b0118 2005-01-03 devnull In the Plan 9
359 058b0118 2005-01-03 devnull .IR acme ,
360 058b0118 2005-01-03 devnull this prefix causes a command to be run in
361 058b0118 2005-01-03 devnull .IR acme 's own
362 058b0118 2005-01-03 devnull file name space and environment variable group.
363 058b0118 2005-01-03 devnull On Unix this is impossible.
364 058b0118 2005-01-03 devnull .B Local
365 058b0118 2005-01-03 devnull is recognized as a prefix, but has no effect on the command being executed.
366 058b0118 2005-01-03 devnull .\" .TP
367 058b0118 2005-01-03 devnull .\" .B Local
368 058b0118 2005-01-03 devnull .\" When prefixed to a command
369 058b0118 2005-01-03 devnull .\" run the
370 058b0118 2005-01-03 devnull .\" command in the same file name space and environment variable group as
371 058b0118 2005-01-03 devnull .\" .IR acme .
372 058b0118 2005-01-03 devnull .\" The environment of the command
373 058b0118 2005-01-03 devnull .\" is restricted but is sufficient to run
374 058b0118 2005-01-03 devnull .\" .IR bind (1),
375 058b0118 2005-01-03 devnull .\" .IR 9fs
376 058b0118 2005-01-03 devnull .\" (see
377 058b0118 2005-01-03 devnull .\" .IR srv (4)),
378 058b0118 2005-01-03 devnull .\" .IR import (4),
379 058b0118 2005-01-03 devnull .\" etc.,
380 058b0118 2005-01-03 devnull .\" and to set environment variables such as
381 058b0118 2005-01-03 devnull .\" .BR $objtype .
382 cfa37a7b 2004-04-10 devnull .TP
383 cfa37a7b 2004-04-10 devnull .B Load
384 cfa37a7b 2004-04-10 devnull Restore the state of
385 cfa37a7b 2004-04-10 devnull .I acme
386 cfa37a7b 2004-04-10 devnull from a file (default
387 cfa37a7b 2004-04-10 devnull .BR $home/acme.dump )
388 cfa37a7b 2004-04-10 devnull created by the
389 cfa37a7b 2004-04-10 devnull .B Dump
390 cfa37a7b 2004-04-10 devnull command.
391 cfa37a7b 2004-04-10 devnull .TP
392 cfa37a7b 2004-04-10 devnull .B Look
393 cfa37a7b 2004-04-10 devnull Search in body for occurrence of literal text indicated by the argument or,
394 cfa37a7b 2004-04-10 devnull if none is given, by the selected text in the body.
395 cfa37a7b 2004-04-10 devnull .TP
396 cfa37a7b 2004-04-10 devnull .B New
397 cfa37a7b 2004-04-10 devnull Make new window. With arguments, load the named files into windows.
398 cfa37a7b 2004-04-10 devnull .TP
399 cfa37a7b 2004-04-10 devnull .B Newcol
400 cfa37a7b 2004-04-10 devnull Make new column.
401 cfa37a7b 2004-04-10 devnull .TP
402 cfa37a7b 2004-04-10 devnull .B Paste
403 cfa37a7b 2004-04-10 devnull Replace most recently selected text with contents of snarf buffer.
404 cfa37a7b 2004-04-10 devnull .TP
405 cfa37a7b 2004-04-10 devnull .B Put
406 cfa37a7b 2004-04-10 devnull Write window to the named file.
407 cfa37a7b 2004-04-10 devnull With no argument, write to the file named in the tag of the window.
408 cfa37a7b 2004-04-10 devnull .TP
409 cfa37a7b 2004-04-10 devnull .B Putall
410 cfa37a7b 2004-04-10 devnull Write all dirty windows whose names indicate existing regular files.
411 cfa37a7b 2004-04-10 devnull .TP
412 cfa37a7b 2004-04-10 devnull .B Redo
413 cfa37a7b 2004-04-10 devnull Complement of
414 cfa37a7b 2004-04-10 devnull .BR Undo .
415 cfa37a7b 2004-04-10 devnull .TP
416 cfa37a7b 2004-04-10 devnull .B Send
417 cfa37a7b 2004-04-10 devnull Append selected text or snarf buffer to end of body; used mainly with
418 cfa37a7b 2004-04-10 devnull .IR win .
419 cfa37a7b 2004-04-10 devnull .TP
420 cfa37a7b 2004-04-10 devnull .B Snarf
421 cfa37a7b 2004-04-10 devnull Place selected text in snarf buffer.
422 cfa37a7b 2004-04-10 devnull .TP
423 cfa37a7b 2004-04-10 devnull .B Sort
424 cfa37a7b 2004-04-10 devnull Arrange the windows in the column from top to bottom in lexicographical
425 cfa37a7b 2004-04-10 devnull order based on their names.
426 cfa37a7b 2004-04-10 devnull .TP
427 cfa37a7b 2004-04-10 devnull .B Tab
428 cfa37a7b 2004-04-10 devnull Set the width of tab stops for this window to the value of the argument, in units of widths of the zero
429 cfa37a7b 2004-04-10 devnull character.
430 cfa37a7b 2004-04-10 devnull With no arguments, it prints the current value.
431 cfa37a7b 2004-04-10 devnull .TP
432 cfa37a7b 2004-04-10 devnull .B Undo
433 cfa37a7b 2004-04-10 devnull Undo last textual change or set of changes.
434 cfa37a7b 2004-04-10 devnull .TP
435 cfa37a7b 2004-04-10 devnull .B Zerox
436 cfa37a7b 2004-04-10 devnull Create a copy of the window containing most recently selected text.
437 cfa37a7b 2004-04-10 devnull .PP
438 cfa37a7b 2004-04-10 devnull A common place to store text for commands is in the tag; in fact
439 cfa37a7b 2004-04-10 devnull .I acme
440 cfa37a7b 2004-04-10 devnull maintains a set of commands appropriate to the state of the window
441 cfa37a7b 2004-04-10 devnull to the left of the bar in the tag.
442 cfa37a7b 2004-04-10 devnull .PP
443 cfa37a7b 2004-04-10 devnull If the text indicated with button 2 is not a recognized built-in, it is executed as
444 cfa37a7b 2004-04-10 devnull a shell command. For example, indicating
445 cfa37a7b 2004-04-10 devnull .B date
446 cfa37a7b 2004-04-10 devnull with button 2 runs
447 cfa37a7b 2004-04-10 devnull .IR date (1).
448 cfa37a7b 2004-04-10 devnull The standard
449 cfa37a7b 2004-04-10 devnull and error outputs of commands are sent to the error window associated with
450 cfa37a7b 2004-04-10 devnull the directory from which the command was run, which will be created if
451 cfa37a7b 2004-04-10 devnull necessary.
452 cfa37a7b 2004-04-10 devnull For example, in a window
453 cfa37a7b 2004-04-10 devnull .B /adm/users
454 cfa37a7b 2004-04-10 devnull executing
455 cfa37a7b 2004-04-10 devnull .B pwd
456 cfa37a7b 2004-04-10 devnull will produce the output
457 cfa37a7b 2004-04-10 devnull .B /adm
458 cfa37a7b 2004-04-10 devnull in a (possibly newly-created) window labeled
459 cfa37a7b 2004-04-10 devnull .BR /adm/+Errors ;
460 cfa37a7b 2004-04-10 devnull in a window containing
461 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/cmd/sam/sam.c
462 cfa37a7b 2004-04-10 devnull executing
463 cfa37a7b 2004-04-10 devnull .B mk
464 cfa37a7b 2004-04-10 devnull will run
465 cfa37a7b 2004-04-10 devnull .IR mk (1)
466 cfa37a7b 2004-04-10 devnull in
467 b5fdffee 2004-04-19 devnull .BR /usr/local/plan9/src/cmd/sam ,
468 cfa37a7b 2004-04-10 devnull producing output in a window labeled
469 b5fdffee 2004-04-19 devnull .BR /usr/local/plan9/src/cmd/sam/+Errors .
470 cfa37a7b 2004-04-10 devnull The environment of such commands contains the variable
471 cfa37a7b 2004-04-10 devnull .B $%
472 cfa37a7b 2004-04-10 devnull with value set to the filename of the window in which the command is run.
473 cfa37a7b 2004-04-10 devnull .SS "Mouse button 3
474 cfa37a7b 2004-04-10 devnull Pointing at text with button 3 instructs
475 cfa37a7b 2004-04-10 devnull .I acme
476 cfa37a7b 2004-04-10 devnull to locate or acquire the file, string, etc. described by the indicated text and
477 cfa37a7b 2004-04-10 devnull its context.
478 cfa37a7b 2004-04-10 devnull This description follows the actions taken when
479 cfa37a7b 2004-04-10 devnull button 3 is released after sweeping out some text.
480 cfa37a7b 2004-04-10 devnull In the description,
481 cfa37a7b 2004-04-10 devnull .I text
482 cfa37a7b 2004-04-10 devnull refers to the text of the original sweep or, if it was null, the result of
483 cfa37a7b 2004-04-10 devnull applying the same expansion rules that apply to button 2 actions.
484 cfa37a7b 2004-04-10 devnull .PP
485 cfa37a7b 2004-04-10 devnull If the text names an existing window,
486 cfa37a7b 2004-04-10 devnull .I acme
487 cfa37a7b 2004-04-10 devnull moves the mouse cursor to the selected text in the body of that window.
488 cfa37a7b 2004-04-10 devnull If the text names an existing file with no associated window,
489 cfa37a7b 2004-04-10 devnull .I acme
490 cfa37a7b 2004-04-10 devnull loads the file into a new window and moves the mouse there.
491 cfa37a7b 2004-04-10 devnull If the text is a file name contained in angle brackets,
492 cfa37a7b 2004-04-10 devnull .I acme
493 cfa37a7b 2004-04-10 devnull loads the indicated include file from the directory appropriate to the
494 cfa37a7b 2004-04-10 devnull suffix of the file name of the window holding the text.
495 cfa37a7b 2004-04-10 devnull (The
496 cfa37a7b 2004-04-10 devnull .B Incl
497 cfa37a7b 2004-04-10 devnull command adds directories to the standard list.)
498 cfa37a7b 2004-04-10 devnull .PP
499 cfa37a7b 2004-04-10 devnull If the text begins with a colon, it is taken to be an address, in
500 cfa37a7b 2004-04-10 devnull the style of
501 cfa37a7b 2004-04-10 devnull .IR sam (1),
502 cfa37a7b 2004-04-10 devnull within the body of the window containing the text.
503 cfa37a7b 2004-04-10 devnull The address is evaluated, the resulting text highlighted, and the mouse moved to it.
504 cfa37a7b 2004-04-10 devnull Thus, in
505 cfa37a7b 2004-04-10 devnull .IR acme ,
506 cfa37a7b 2004-04-10 devnull one must type
507 cfa37a7b 2004-04-10 devnull .B :/regexp
508 cfa37a7b 2004-04-10 devnull or
509 cfa37a7b 2004-04-10 devnull .B :127
510 cfa37a7b 2004-04-10 devnull not just
511 cfa37a7b 2004-04-10 devnull .B /regexp
512 cfa37a7b 2004-04-10 devnull or
513 cfa37a7b 2004-04-10 devnull .BR 127 .
514 cfa37a7b 2004-04-10 devnull (There is an easier way to locate literal text; see below.)
515 cfa37a7b 2004-04-10 devnull .PP
516 cfa37a7b 2004-04-10 devnull If the text is a file name followed by a colon and an address,
517 cfa37a7b 2004-04-10 devnull .I acme
518 cfa37a7b 2004-04-10 devnull loads the file and evaluates the address. For example, clicking button 3 anywhere
519 cfa37a7b 2004-04-10 devnull in the text
520 cfa37a7b 2004-04-10 devnull .B file.c:27
521 cfa37a7b 2004-04-10 devnull will open
522 cfa37a7b 2004-04-10 devnull .BR file.c ,
523 cfa37a7b 2004-04-10 devnull select line
524 cfa37a7b 2004-04-10 devnull 27, and put the mouse at the beginning of the line. The rules about Error
525 cfa37a7b 2004-04-10 devnull files, directories, and so on all combine to make this an efficient way to
526 cfa37a7b 2004-04-10 devnull investigate errors from compilers, etc.
527 cfa37a7b 2004-04-10 devnull .PP
528 cfa37a7b 2004-04-10 devnull If the text is not an address or file, it is taken to
529 cfa37a7b 2004-04-10 devnull be literal text, which is then searched for in the body of the window
530 cfa37a7b 2004-04-10 devnull in which button 3 was clicked. If a match is found, it is selected and the mouse is
531 cfa37a7b 2004-04-10 devnull moved there. Thus, to search for occurrences of a word in a file,
532 cfa37a7b 2004-04-10 devnull just click button 3 on the word. Because of the rule of using the
533 cfa37a7b 2004-04-10 devnull selection as the button 3 action, subsequent clicks will find subsequent
534 cfa37a7b 2004-04-10 devnull occurrences without moving the mouse.
535 cfa37a7b 2004-04-10 devnull .PP
536 cfa37a7b 2004-04-10 devnull In all these actions, the mouse motion is not done if the text is a null string
537 cfa37a7b 2004-04-10 devnull within a non-null selected string in the tag, so that (for example) complex regular expressions
538 cfa37a7b 2004-04-10 devnull may be selected and applied repeatedly to the
539 cfa37a7b 2004-04-10 devnull body by just clicking button 3 over them.
540 cfa37a7b 2004-04-10 devnull .SS "Chords of mouse buttons
541 cfa37a7b 2004-04-10 devnull Several operations are bound to multiple-button actions.
542 cfa37a7b 2004-04-10 devnull After selecting text, with button 1 still down, pressing button 2
543 cfa37a7b 2004-04-10 devnull executes
544 cfa37a7b 2004-04-10 devnull .B Cut
545 cfa37a7b 2004-04-10 devnull and button 3 executes
546 cfa37a7b 2004-04-10 devnull .BR Paste .
547 cfa37a7b 2004-04-10 devnull After clicking one button, the other undoes
548 cfa37a7b 2004-04-10 devnull the first; thus (while holding down button 1) 2 followed by 3 is a
549 cfa37a7b 2004-04-10 devnull .B Snarf
550 cfa37a7b 2004-04-10 devnull that leaves the file undirtied;
551 cfa37a7b 2004-04-10 devnull 3 followed by 2 is a no-op.
552 cfa37a7b 2004-04-10 devnull These actions also apply to text selected by double-clicking because
553 cfa37a7b 2004-04-10 devnull the double-click expansion is made when the second
554 cfa37a7b 2004-04-10 devnull click starts, not when it ends.
555 cfa37a7b 2004-04-10 devnull .PP
556 cfa37a7b 2004-04-10 devnull Commands may be given extra arguments by a mouse chord with buttons 2 and 1.
557 cfa37a7b 2004-04-10 devnull While holding down button 2 on text to be executed as a command, clicking button 1
558 cfa37a7b 2004-04-10 devnull appends the text last pointed to by button 1 as a distinct final argument.
559 cfa37a7b 2004-04-10 devnull For example, to search for literal
560 cfa37a7b 2004-04-10 devnull .B text
561 cfa37a7b 2004-04-10 devnull one may execute
562 cfa37a7b 2004-04-10 devnull .B Look text
563 cfa37a7b 2004-04-10 devnull with button 2 or instead point at
564 cfa37a7b 2004-04-10 devnull .B text
565 cfa37a7b 2004-04-10 devnull with button 1 in any window, release button 1,
566 cfa37a7b 2004-04-10 devnull then execute
567 cfa37a7b 2004-04-10 devnull .BR Look ,
568 cfa37a7b 2004-04-10 devnull clicking button 1 while 2 is held down.
569 cfa37a7b 2004-04-10 devnull .PP
570 cfa37a7b 2004-04-10 devnull When an external command (e.g.
571 cfa37a7b 2004-04-10 devnull .IR echo (1))
572 cfa37a7b 2004-04-10 devnull is executed this way, the extra argument is passed as expected and an
573 cfa37a7b 2004-04-10 devnull environment variable
574 cfa37a7b 2004-04-10 devnull .B $acmeaddr
575 cfa37a7b 2004-04-10 devnull is created that holds, in the form interpreted by button 3,
576 cfa37a7b 2004-04-10 devnull the fully-qualified address of the extra argument.
577 cfa37a7b 2004-04-10 devnull .SS "Support programs
578 cfa37a7b 2004-04-10 devnull .I Win
579 cfa37a7b 2004-04-10 devnull creates a new
580 cfa37a7b 2004-04-10 devnull .I acme
581 cfa37a7b 2004-04-10 devnull window and runs a
582 cfa37a7b 2004-04-10 devnull .I command
583 cfa37a7b 2004-04-10 devnull (default
584 cfa37a7b 2004-04-10 devnull .BR /bin/rc )
585 cfa37a7b 2004-04-10 devnull in it, turning the window into something analogous to an
586 cfa37a7b 2004-04-10 devnull .IR rio (1)
587 cfa37a7b 2004-04-10 devnull window.
588 cfa37a7b 2004-04-10 devnull Executing text in a
589 cfa37a7b 2004-04-10 devnull .I win
590 cfa37a7b 2004-04-10 devnull window with button
591 cfa37a7b 2004-04-10 devnull 2 is similar to using
592 cfa37a7b 2004-04-10 devnull .BR Send .
593 cfa37a7b 2004-04-10 devnull .PP
594 cfa37a7b 2004-04-10 devnull .I Awd
595 cfa37a7b 2004-04-10 devnull loads the tag line of its window with the directory in which it's running, suffixed
596 cfa37a7b 2004-04-10 devnull .BI - label
597 cfa37a7b 2004-04-10 devnull (default
598 cfa37a7b 2004-04-10 devnull .BR rc );
599 cfa37a7b 2004-04-10 devnull it is
600 cfa37a7b 2004-04-10 devnull intended to be executed by a
601 cfa37a7b 2004-04-10 devnull .B cd
602 cfa37a7b 2004-04-10 devnull function for use in
603 cfa37a7b 2004-04-10 devnull .I win
604 cfa37a7b 2004-04-10 devnull windows. An example definition is
605 cfa37a7b 2004-04-10 devnull .EX
606 cfa37a7b 2004-04-10 devnull fn cd { builtin cd $1 && awd $sysname }
607 cfa37a7b 2004-04-10 devnull .EE
608 cfa37a7b 2004-04-10 devnull .SS "Applications and guide files
609 cfa37a7b 2004-04-10 devnull In the directory
610 cfa37a7b 2004-04-10 devnull .B /acme
611 cfa37a7b 2004-04-10 devnull live several subdirectories, each corresponding to a program or
612 cfa37a7b 2004-04-10 devnull set of related programs that employ
613 cfa37a7b 2004-04-10 devnull .I acme's
614 cfa37a7b 2004-04-10 devnull user interface.
615 cfa37a7b 2004-04-10 devnull Each subdirectory includes source, binaries, and a
616 cfa37a7b 2004-04-10 devnull .B readme
617 cfa37a7b 2004-04-10 devnull file for further information.
618 cfa37a7b 2004-04-10 devnull It also includes a
619 cfa37a7b 2004-04-10 devnull .BR guide ,
620 cfa37a7b 2004-04-10 devnull a text file holding sample commands to invoke the programs.
621 cfa37a7b 2004-04-10 devnull The idea is to find an example in the guide that best matches
622 cfa37a7b 2004-04-10 devnull the job at hand, edit it to suit, and execute it.
623 cfa37a7b 2004-04-10 devnull .PP
624 cfa37a7b 2004-04-10 devnull Whenever a command is executed by
625 cfa37a7b 2004-04-10 devnull .IR acme ,
626 cfa37a7b 2004-04-10 devnull the default search path includes the directory of the window containing
627 cfa37a7b 2004-04-10 devnull the command and its subdirectory
628 cfa37a7b 2004-04-10 devnull .BR $cputype .
629 cfa37a7b 2004-04-10 devnull The program directories in
630 cfa37a7b 2004-04-10 devnull .B /acme
631 cfa37a7b 2004-04-10 devnull contain appropriately labeled subdirectories of binaries,
632 cfa37a7b 2004-04-10 devnull so commands named
633 cfa37a7b 2004-04-10 devnull in the guide files will be found automatically when run.
634 cfa37a7b 2004-04-10 devnull Also,
635 cfa37a7b 2004-04-10 devnull .I acme
636 cfa37a7b 2004-04-10 devnull binds the directories
637 cfa37a7b 2004-04-10 devnull .B /acme/bin
638 cfa37a7b 2004-04-10 devnull and
639 cfa37a7b 2004-04-10 devnull .B /acme/bin/$cputype
640 cfa37a7b 2004-04-10 devnull to the end of
641 cfa37a7b 2004-04-10 devnull .B /bin
642 cfa37a7b 2004-04-10 devnull when it starts; this is where
643 cfa37a7b 2004-04-10 devnull .IR acme -specific
644 cfa37a7b 2004-04-10 devnull programs such as
645 cfa37a7b 2004-04-10 devnull .I win
646 cfa37a7b 2004-04-10 devnull and
647 cfa37a7b 2004-04-10 devnull .I awd
648 cfa37a7b 2004-04-10 devnull reside.
649 cfa37a7b 2004-04-10 devnull .SH FILES
650 cfa37a7b 2004-04-10 devnull .TF $home/acme.dump
651 cfa37a7b 2004-04-10 devnull .TP
652 cfa37a7b 2004-04-10 devnull .B $home/acme.dump
653 cfa37a7b 2004-04-10 devnull default file for
654 cfa37a7b 2004-04-10 devnull .B Dump
655 cfa37a7b 2004-04-10 devnull and
656 cfa37a7b 2004-04-10 devnull .BR Load ;
657 cfa37a7b 2004-04-10 devnull also where state is written if
658 cfa37a7b 2004-04-10 devnull .I acme
659 cfa37a7b 2004-04-10 devnull dies or is killed unexpectedly, e.g. by deleting its window.
660 cfa37a7b 2004-04-10 devnull .TP
661 cfa37a7b 2004-04-10 devnull .B /acme/*/guide
662 cfa37a7b 2004-04-10 devnull template files for applications
663 cfa37a7b 2004-04-10 devnull .TP
664 cfa37a7b 2004-04-10 devnull .B /acme/*/readme
665 cfa37a7b 2004-04-10 devnull informal documentation for applications
666 cfa37a7b 2004-04-10 devnull .TP
667 cfa37a7b 2004-04-10 devnull .B /acme/*/src
668 cfa37a7b 2004-04-10 devnull source for applications
669 cfa37a7b 2004-04-10 devnull .TP
670 cfa37a7b 2004-04-10 devnull .B /acme/*/mips
671 cfa37a7b 2004-04-10 devnull MIPS-specific binaries for applications
672 cfa37a7b 2004-04-10 devnull .SH SOURCE
673 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/cmd/acme
674 cfa37a7b 2004-04-10 devnull .br
675 058b0118 2005-01-03 devnull .B /usr/local/plan9/src/cmd/9term/win.c
676 cfa37a7b 2004-04-10 devnull .br
677 058b0118 2005-01-03 devnull .B /usr/local/plan9/bin/awd
678 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
679 cfa37a7b 2004-04-10 devnull .IR acme (4)
680 cfa37a7b 2004-04-10 devnull .br
681 cfa37a7b 2004-04-10 devnull Rob Pike,
682 cfa37a7b 2004-04-10 devnull .I
683 cfa37a7b 2004-04-10 devnull Acme: A User Interface for Programmers.
684 cfa37a7b 2004-04-10 devnull .SH BUGS
685 cfa37a7b 2004-04-10 devnull With the
686 cfa37a7b 2004-04-10 devnull .B -l
687 cfa37a7b 2004-04-10 devnull option or
688 cfa37a7b 2004-04-10 devnull .B Load
689 cfa37a7b 2004-04-10 devnull command,
690 cfa37a7b 2004-04-10 devnull the recreation of windows under control of external programs
691 cfa37a7b 2004-04-10 devnull such as
692 cfa37a7b 2004-04-10 devnull .I win
693 cfa37a7b 2004-04-10 devnull is just to rerun the command; information may be lost.