3 acme \- control files for text windows
28 The text window system
30 serves a variety of files for reading, writing, and controlling
32 Some of them are virtual versions of system files for dealing
33 with the virtual console; others control operations
37 When a command is run under
39 a directory holding these files is mounted on
45 the files mentioned here
46 appear in both those directories.
48 Some of these files supply virtual versions of services available from the underlying
49 environment, in particular the character terminal files
55 sees the same set of files; there is not a distinct
58 Other files are unique to
62 is a subdirectory used by
66 as a mount point for the
68 files associated with the window in which
71 It has no specific function under
76 is the standard and diagnostic output file for all commands
79 (Input for commands is redirected to
83 appears in a window labeled
87 is the directory in which the command
89 The window is created if necessary, but not until text is actually written.
92 Is an empty unwritable file present only for compatibility; there is no way
93 to turn off `echo', for example, under
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
111 is an empty file, writable without effect, present only for compatibility with
115 A directory analogous to the numbered directories
120 creates a new window. Thus to cause text to appear in a new window,
123 For more control, open
125 and use the interface described below.
130 window has associated a directory numbered by its ID.
131 Window IDs are chosen sequentially and may be discovered by the
137 indirectly through the
139 file. The files in the numbered directories are as follows.
142 may be written with any textual address (line number, regular expression, etc.),
143 in the format understood by button 3 but without the initial colon, including compound addresses,
144 to set the address for text accessed through the
147 When read, it returns the value of the address that would next be read
148 or written through the
150 file, formatted as 2 decimal numbers
154 each formatted in 11 characters plus a blank.
158 are the character (not byte) offsets of the
159 beginning and end of the address,
160 which would be expressed in
164 Thus a regular expression may be evaluated by writing it to
169 address has no effect on the user's selection of text.
172 holds contents of the window body. It may be read at any byte offset.
175 is always appended; the file offset is ignored.
178 may be read to recover the five numbers as held in the
180 file, described above, plus three more fields: the width of the
181 window in pixels, the name of the font used in the window,
182 and the width of a tab character in pixels.
183 Text messages may be written to
185 to affect the window.
186 Each message is terminated by a newline and multiple
187 messages may be sent in a single write.
194 address to that of the user's selected text in the window.
197 Mark the window clean as though it has just been written.
200 Mark the window dirty, the opposite of clean.
203 Remove all text in the tag after the vertical bar.
216 Set the user's selected text in the window to the text addressed by the
221 Set the command string to recreate the window from a dump file.
223 .BI dumpdir " directory
224 Set the directory in which to run the command to recreate the window from a dump file.
229 interactive command with no arguments; accepts no arguments.
234 file is first opened, regular expression context searches in
236 addresses examine the whole file; this message restricts subsequent
237 searches to the current
244 returning the window to the usual state wherein each modification to the
245 body must be undone individually.
253 in the left half of the tag.
254 (This is the default for file windows.)
257 Set the name of the window to
261 Turn off automatic `marking' of changes, so a set of related changes
262 may be undone in a single
272 in the left half of the tag.
273 (This is the default for directory and error windows.)
276 Turn off automatic `scrolling' of the window to show text written to the body.
281 interactive command with no arguments; accepts no arguments.
286 message, returning the window to the default state wherein each write
289 file causes the window to `scroll' to display the new text.
292 Guarantee at least some of the selected text is visible on the display.
297 is used in conjunction with
299 for random access to the contents of the body.
300 The file offset is ignored when writing the
302 file; instead the location of the data to be read or written is determined by the state of the
305 Text, which must contain only whole characters (no `partial runes'),
308 replaces the characters addressed by the
310 file and sets the address to the null string at the end of the written text.
313 returns as many whole characters as the read count will permit starting
314 at the beginning of the
316 address (the end of the address has no effect)
317 and sets the address to the null string at the end of the returned
323 file appends to the body of the
327 is the directory currently named in the tag.
328 The window is created if necessary,
329 but not until text is actually written.
334 file is open, changes to the window occur as always but the
335 actions are also reported as
336 messages to the reader of the file. Also, user actions with buttons 2 and 3
341 which behave normally) have no immediate effect on the window;
342 it is expected that the program reading the
344 file will interpret them.
345 The messages have a fixed format:
346 a character indicating the origin or cause of the action,
347 a character indicating the type of the action,
348 four free-format blank-terminated decimal numbers,
349 optional text, and a newline.
350 The first and second numbers are the character addresses of the action,
352 and the final is a count of the characters in the optional text, which
353 may itself contain newlines.
354 The origin characters are
362 for actions through the window's other files,
364 for the keyboard, and
367 The type characters are
369 for text deleted from the body,
371 for text deleted from the tag,
373 for text inserted to the body,
375 for text inserted to the tag,
377 for a button 3 action in the body,
379 for a button 3 action in the tag,
381 for a button 2 action in the body, and
383 for a button 2 action in the tag.
385 If the relevant text has less than 256 characters, it is included in the message;
386 otherwise it is elided, the fourth number is 0, and the program must read
389 file if needed. No text is sent on a
401 the flag is always zero.
406 the flag is a bitwise OR (reported decimally) of the following:
407 1 if the text indicated is recognized as an
410 2 if the text indicated is a null string that has a non-null expansion;
411 if so, another complete message will follow describing the expansion
412 exactly as if it had been indicated explicitly (its flag will always be 0);
413 8 if the command has an extra (chorded) argument; if so,
414 two more complete messages will follow reporting the argument (with
415 all numbers 0 except the character count) and where it originated, in the form of
416 a fully-qualified button 3 style address.
422 the flag is the bitwise OR of the following:
425 can interpret the action without loading a new file;
426 2 if a second (post-expansion) message follows, analogous to that with
429 4 if the text is a file or window name (perhaps with address) rather than
432 For messages with the 1 bit on in the flag,
433 writing the message back to the
435 file, but with the flag, count, and text omitted,
436 will cause the action to be applied to the file exactly as it would
439 file had not been open.
442 holds contents of the window tag. It may be read at any byte offset.
445 is always appended; the file offset is ignored.
452 except that reads stop at the end address.