]> git.lizzy.rs Git - plan9front.git/blob - sys/man/4/acme
audiohda: fix syntax error
[plan9front.git] / sys / man / 4 / acme
1 .TH ACME 4
2 .SH NAME
3 acme \- control files for text windows
4 .SH SYNOPSIS
5 .B acme
6 [
7 .B -ab
8 ]
9 [
10 .B -c
11 .I ncol
12 ]
13 [
14 .B -f
15 .I varfont
16 ]
17 [
18 .B -F
19 .I fixfont
20 ]
21 [
22 .B -l
23 .I file
24 |
25 .I file
26 \&... ]
27 .SH DESCRIPTION
28 The text window system
29 .IR acme (1)
30 serves a variety of files for reading, writing, and controlling
31 windows.
32 Some of them are virtual versions of system files for dealing
33 with the virtual console; others control operations
34 of 
35 .I acme
36 itself.
37 When a command is run under
38 .IR acme ,
39 a directory holding these files is mounted on
40 .B /mnt/acme
41 (also bound to
42 .BR /mnt/wsys )
43 and also
44 .BR /dev ;
45 the files mentioned here
46 appear in both those directories.
47 .PP
48 Some of these files supply virtual versions of services available from the underlying
49 environment, in particular the character terminal files
50 .IR cons (3).
51 (Unlike in
52 .IR rio (1),
53 each command under
54 .I acme
55 sees the same set of files; there is not a distinct
56 .B /dev/cons
57 for each window.)
58 Other files are unique to
59 .IR acme .
60 .TP
61 .B acme
62 is a subdirectory used by
63 .B win
64 (see
65 .IR acme (1))
66 as a mount point for the
67 .I acme
68 files associated with the window in which
69 .B win
70 is running.
71 It has no specific function under
72 .I acme
73 itself.
74 .TP
75 .B cons
76 is the standard and diagnostic output file for all commands
77 run under
78 .IR acme .
79 (Input for commands is redirected to
80 .BR /dev/null .)
81 Text written to
82 .B cons
83 appears in a window labeled
84 .IB dir /+Errors\f1,
85 where
86 .I dir
87 is the directory in which the command
88 was run.
89 The window is created if necessary, but not until text is actually written.
90 .TP
91 .B consctl
92 is an empty unwritable file present only for compatibility; there is no way
93 to turn off `echo', for example, under
94 .IR acme .
95 .TP
96 .B index
97 holds a sequence of lines of text, one per window.  Each line has 5 decimal numbers,
98 each formatted in 11 characters plus a blank\(emthe window ID;
99 number of characters (runes) in the tag;
100 number of characters in the body;
101 a 1 if the window is a directory, 0 otherwise;
102 and a 1 if the window is modified, 0
103 otherwise\(emfollowed by the tag up to a newline if present.
104 Thus at character position 5×12 starts the name of the window.
105 If a file has multiple zeroxed windows open,
106 only the most recently used will appear in the
107 .B index
108 file.
109 .TP
110 .B label
111 is an empty file, writable without effect, present only for compatibility with
112 .BR rio .
113 .TP
114 .B log
115 reports a log of window operations since the opening of the
116 .B log
117 file.
118 Each line describes a single operation using three fields separated by single spaces:
119 the decimal window ID, the operation, and the window name.
120 Reading from
121 .B log
122 blocks until there is an operation to report, so reading the file
123 can be used to monitor editor activity and react to changes.
124 The reported operations are
125 .L new
126 (window creation),
127 .L zerox
128 (window creation via zerox),
129 .LR get ,
130 .LR put ,
131 .L del
132 (window deletion), and
133 .L focus
134 (window focus change).
135 The window name can be the empty string; in particular it is empty in
136 .L new
137 log entries corresponding to windows created by external programs.
138 .TP
139 .B new
140 is a directory analogous to the numbered directories
141 .RI ( q.v. ).
142 Accessing any
143 file in
144 .B new
145 creates a new window.  Thus to cause text to appear in a new window,
146 write it to
147 .BR /dev/new/body .
148 For more control, open
149 .BR /dev/new/ctl
150 and use the interface described below.
151 .LP
152 .PP
153 Each
154 .I acme
155 window has associated a directory numbered by its ID.
156 Window IDs are chosen sequentially and may be discovered by the
157 .B ID
158 command, by
159 reading the
160 .B ctl
161 file, or
162 indirectly through the
163 .B index
164 file.  The files in the numbered directories are as follows.
165 .TP
166 .B addr
167 may be written with any textual address (line number, regular expression, etc.),
168 in the format understood by button 3 but without the initial colon, including compound addresses,
169 to set the address for text accessed through the
170 .B data
171 file.
172 When read, it returns the value of the address that would next be read
173 or written through the
174 .B data
175 file, formatted as 2 decimal numbers
176 .I m
177 and
178 .IR n ,
179 each formatted in 11 characters plus a blank.
180 .I M
181 and
182 .I n
183 are the character (not byte) offsets of the
184 beginning and end of the address, 
185 which would be expressed in
186 .I acme 's
187 input language as 
188 .BI # m ,# n \fR.
189 Thus a regular expression may be evaluated by writing it to
190 .B addr
191 and reading it back.
192 The
193 .B addr
194 address has no effect on the user's selection of text.
195 .TP
196 .B body
197 holds contents of the window body.  It may be read at any byte offset.
198 Text written to
199 .B body
200 is always appended; the file offset is ignored.
201 .TP
202 .B ctl
203 may be read to recover the five numbers as held in the
204 .B index
205 file, described above, plus three more fields: the width of the
206 window in pixels, the name of the font used in the window,
207 and the width of a tab character in pixels.
208 Text messages may be written to
209 .B ctl
210 to affect the window.
211 Each message is terminated by a newline and multiple
212 messages may be sent in a single write.
213 .RS .5i
214 .TF limit=addr
215 .TP
216 .B addr=dot
217 Set the
218 .B addr
219 address to that of the user's selected text in the window.
220 .TP
221 .B clean
222 Mark the window clean as though it has just been written.
223 .TP
224 .B dirty
225 Mark the window dirty, the opposite of clean.
226 .TP
227 .B cleartag
228 Remove all text in the tag after the vertical bar.
229 .TP
230 .B del
231 Equivalent to the
232 .B Del
233 interactive command.
234 .TP
235 .B delete
236 Equivalent to the
237 .B Delete
238 interactive command.
239 .TP
240 .B dot=addr
241 Set the user's selected text in the window to the text addressed by the
242 .B addr
243 address.
244 .TP
245 .BI dump " command
246 Set the command string to recreate the window from a dump file.
247 .TP
248 .BI dumpdir " directory
249 Set the directory in which to run the command to recreate the window from a dump file.
250 .TP
251 .B get
252 Equivalent to the
253 .B Get
254 interactive command with no arguments; accepts no arguments.
255 .TP
256 .B limit=addr
257 When the
258 .B ctl
259 file is first opened, regular expression context searches in
260 .B addr
261 addresses examine the whole file; this message restricts subsequent
262 searches to the current
263 .B addr
264 address.
265 .TP
266 .B mark
267 Cancel
268 .BR nomark ,
269 returning the window to the usual state wherein each modification to the
270 body must be undone individually.
271 .TP
272 .B menu
273 Maintain
274 .BR Undo ,
275 .BR Redo ,
276 and
277 .B Put
278 in the left half of the tag.
279 (This is the default for file windows.)
280 .TP
281 .BI name " name
282 Set the name of the window to
283 .IR name .
284 .TP
285 .B nomark
286 Turn off automatic `marking' of changes, so a set of related changes
287 may be undone in a single
288 .B Undo
289 interactive command.
290 .TP
291 .B nomenu
292 Do not maintain
293 .BR Undo ,
294 .BR Redo ,
295 and
296 .B Put
297 in the left half of the tag.
298 (This is the default for directory and error windows.)
299 .TP
300 .B noscroll
301 Turn off automatic `scrolling' of the window to show text written to the body.
302 .TP
303 .B put
304 Equivalent to the
305 .B Put
306 interactive command with no arguments; accepts no arguments.
307 .TP
308 .B scratch
309 Turn off tracking the `dirty' status, the window stays clean.
310 .TP
311 .B scroll
312 Cancel a
313 .B noscroll
314 message, returning the window to the default state wherein each write
315 to the
316 .B body
317 file causes the window to `scroll' to display the new text.
318 .TP
319 .B show
320 Guarantee at least some of the selected text is visible on the display.
321 .RE
322 .PD
323 .TP
324 .B data
325 is used in conjunction with
326 .B addr
327 for random access to the contents of the body.
328 The file offset is ignored when writing the
329 .B data
330 file; instead the location of the data to be read or written is determined by the state of the
331 .B addr
332 file.
333 Text, which must contain only whole characters (no `partial runes'),
334 written to
335 .B data
336 replaces the characters addressed by the
337 .B addr
338 file and sets the address to the null string at the end of the written text.
339 A read from
340 .B data
341 returns as many whole characters as the read count will permit starting
342 at the beginning of the
343 .B addr
344 address (the end of the address has no effect)
345 and sets the address to the null string at the end of the returned
346 characters.
347 .TP
348 .B errors
349 Writing to the
350 .B errors
351 file appends to the body of the
352 .IB dir /+Errors
353 window, where
354 .I dir
355 is the directory currently named in the tag.
356 The window is created if necessary,
357 but not until text is actually written.
358 .TP
359 .B event
360 When a window's
361 .B event
362 file is open, changes to the window occur as always but the
363 actions are also reported as
364 messages to the reader of the file.  Also, user actions with buttons 2 and 3
365 (other than chorded
366 .B Cut
367 and
368 .BR Paste ,
369 which behave normally) have no immediate effect on the window;
370 it is expected that the program reading the
371 .B event
372 file will interpret them.
373 The messages have a fixed format:
374 a character indicating the origin or cause of the action,
375 a character indicating the type of the action,
376 four free-format blank-terminated decimal numbers,
377 optional text, and a newline.
378 The first and second numbers are the character addresses of the action,
379 the third is a flag,
380 and the final is a count of the characters in the optional text, which
381 may itself contain newlines.
382 The origin characters are
383 .B E
384 for writes to the
385 .B body
386 or
387 .B tag
388 file,
389 .B F
390 for actions through the window's other files,
391 .B K
392 for the keyboard, and
393 .B M
394 for the mouse.
395 The type characters are
396 .B D
397 for text deleted from the body,
398 .B d
399 for text deleted from the tag,
400 .B I
401 for text inserted to the body,
402 .B i
403 for text inserted to the tag,
404 .B L
405 for a button 3 action in the body,
406 .B l
407 for a button 3 action in the tag,
408 .B X
409 for a button 2 action in the body, and
410 .B x
411 for a button 2 action in the tag.
412 .IP
413 If the relevant text has less than 256 characters, it is included in the message;
414 otherwise it is elided, the fourth number is 0, and the program must read
415 it from the
416 .B data
417 file if needed.  No text is sent on a
418 .B D
419 or
420 .B d
421 message.
422 .IP
423 For
424 .BR D ,
425 .BR d ,
426 .BR I ,
427 and
428 .BR i
429 the flag is always zero.
430 For
431 .BR X
432 and
433 .BR x ,
434 the flag is a bitwise OR (reported decimally) of the following:
435 1 if the text indicated is recognized as an
436 .I acme
437 built-in command;
438 2 if the text indicated is a null string that has a non-null expansion;
439 if so, another complete message will follow describing the expansion
440 exactly as if it had been indicated explicitly (its flag will always be 0);
441 8 if the command has an extra (chorded) argument; if so,
442 two more complete messages will follow reporting the argument (with
443 all numbers 0 except the character count) and where it originated, in the form of
444 a fully-qualified button 3 style address.
445 .IP
446 For
447 .B L
448 and
449 .BR l ,
450 the flag is the bitwise OR of the following:
451 1 if
452 .I acme
453 can interpret the action without loading a new file;
454 2 if a second (post-expansion) message follows, analogous to that with
455 .B X
456 messages;
457 4 if the text is a file or window name (perhaps with address) rather than
458 plain literal text.
459 .IP
460 For messages with the 1 bit on in the flag,
461 writing the message back to the
462 .B event
463 file, but with the flag, count, and text omitted,
464 will cause the action to be applied to the file exactly as it would
465 have been if the
466 .B event
467 file had not been open.
468 .TP
469 .B tag
470 holds contents of the window tag.  It may be read at any byte offset.
471 Text written to
472 .B tag
473 is always appended; the file offset is ignored.
474 .TP
475 .B rdsel
476 holds the contents of the current selection. It may be read at any byte offset.
477 .TP
478 .B wrsel
479 writing to the
480 .B wrsel
481 file modifies the text in the selection. Text written always 
482 replaces the text selected; the file offset is ignored.
483 .TP
484 .B xdata
485 The
486 .B xdata
487 file like
488 .B data
489 except that reads stop at the end address.
490 .SH SOURCE
491 .B /sys/src/cmd/acme
492 .SH SEE ALSO
493 .IR rio (1),
494 .IR acme (1),
495 .IR cons (3).