1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
|
<head>
<title>acme(4) - Plan 9 from User Space</title>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
</head>
<body bgcolor=#ffffff>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=10><td>
<tr><td width=20><td>
<tr><td width=20><td><b>ACME(4)</b><td align=right><b>ACME(4)</b>
<tr><td width=20><td colspan=2>
<br>
<p><font size=+1><b>NAME </b></font><br>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
acme – control files for text windows<br>
</table>
<p><font size=+1><b>SYNOPSIS </b></font><br>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
<tt><font size=+1>acme</font></tt> [ <tt><font size=+1>−f</font></tt> <i>varfont</i> ] [ <tt><font size=+1>−F</font></tt> <i>fixfont</i> ] [ <i>file</i> ... ]<br>
</table>
<p><font size=+1><b>DESCRIPTION </b></font><br>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
The text window system <a href="../man1/acme.html"><i>acme</i>(1)</a> serves a variety of files for reading,
writing, and controlling windows. Some of them are virtual versions
of system files for dealing with the virtual console; others control
operations of <i>acme</i> itself. When a command is run under <i>acme</i>, a
directory holding these files is posted as the 9P
service <tt><font size=+1>acme</font></tt> (using <a href="../man4/9pserve.html"><i>9pserve</i>(4)</a>).
<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
Some of these files supply virtual versions of services available
from the underlying environment, in particular the character terminal
files in Plan 9’s <i>cons</i>(3). (Unlike in Plan 9’s <i>rio</i>(1), each command
under <i>acme</i> sees the same set of files; there is not a distinct
<tt><font size=+1>/dev/cons</font></tt> for each window.) Other files are unique to
<i>acme</i>.<br>
<tt><font size=+1>acme</font></tt>is a subdirectory used by <tt><font size=+1>win</font></tt> (see <a href="../man1/acme.html"><i>acme</i>(1)</a>) as a mount point
for the <i>acme</i> files associated with the window in which <tt><font size=+1>win</font></tt> is
running. It has no specific function under <i>acme</i> itself.<br>
<tt><font size=+1>cons</font></tt>is the standard and diagnostic output file for all commands
run under <i>acme</i>. (Input for commands is redirected to <tt><font size=+1>/dev/null</font></tt>.)
Text written to <tt><font size=+1>cons</font></tt> appears in a window labeled <i>dir</i><tt><font size=+1>/+Errors</font></tt>,
where <i>dir</i> is the directory in which the command was run. The window
is created if necessary, but not until text is
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
actually written.<br>
</table>
<tt><font size=+1>consctl<br>
</font></tt>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
Is an empty unwritable file present only for compatibility; there
is no way to turn off ‘echo’, for example, under <i>acme</i>.<br>
</table>
<tt><font size=+1>index<br>
</font></tt>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
holds a sequence of lines of text, one per window. Each line has
5 decimal numbers, each formatted in 11 characters plus a blank--the
window ID; number of characters (runes) in the tag; number of
characters in the body; a 1 if the window is a directory, 0 otherwise;
and a 1 if the window is modified, 0
otherwise--followed by the tag up to a newline if present. Thus
at character position 5x12 starts the name of the window. If a
file has multiple zeroxed windows open, only the most recently
used will appear in the <tt><font size=+1>index</font></tt> file.<br>
</table>
<tt><font size=+1>label<br>
</font></tt>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
is an empty file, writable without effect, present only for compatibility
with <tt><font size=+1>rio</font></tt>.<br>
</table>
<tt><font size=+1>new</font></tt> A directory analogous to the numbered directories (<i>q.v.</i>). Accessing
any file in <tt><font size=+1>new</font></tt> creates a new window. Thus to cause text to appear
in a new window, write it to <tt><font size=+1>/dev/new/body</font></tt>. For more control,
open <tt><font size=+1>/dev/new/ctl</font></tt> and use the interface described below.
<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
Each <i>acme</i> window has associated a directory numbered by its ID.
Window IDs are chosen sequentially and may be discovered by the
<tt><font size=+1>ID</font></tt> command, by reading the <tt><font size=+1>ctl</font></tt> file, or indirectly through the
<tt><font size=+1>index</font></tt> file. The files in the numbered directories are as follows.<br>
<tt><font size=+1>addr</font></tt>may be written with any textual address (line number, regular
expression, etc.), in the format understood by button 3 but without
the initial colon, including compound addresses, to set the address
for text accessed through the <tt><font size=+1>data</font></tt> file. When read, it returns
the value of the address that would next be read or
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
written through the <tt><font size=+1>data</font></tt> file, in the format <tt><font size=+1>#</font></tt><i>m</i><tt><font size=+1>,#</font></tt><i>n</i> where <i>m</i> and
<i>n</i> are character (not byte) offsets. If <i>m</i> and <i>n</i> are identical,
the format is just <tt><font size=+1>#</font></tt><i>m</i>. Thus a regular expression may be evaluated
by writing it to <tt><font size=+1>addr</font></tt> and reading it back. The <tt><font size=+1>addr</font></tt> address has
no effect on the user’s selection of text.
</table>
<tt><font size=+1>body</font></tt>holds contents of the window body. It may be read at any byte
offset. Text written to <tt><font size=+1>body</font></tt> is always appended; the file offset
is ignored.<br>
<tt><font size=+1>ctl</font></tt> may be read to recover the five numbers as held in the <tt><font size=+1>index</font></tt>
file, described above, plus two more fields: the width of the
window in pixels and the name of the font used in the window.
Text messages may be written to <tt><font size=+1>ctl</font></tt> to affect the window. Each
message is terminated by a newline and multiple messages
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
may be sent in a single write.<br>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
<tt><font size=+1>addr=dot</font></tt> Set the <tt><font size=+1>addr</font></tt> address to that of the user’s selected text
in the window.<br>
<tt><font size=+1>clean</font></tt> Mark the window clean as though it has just been written.<br>
<tt><font size=+1>dirty</font></tt> Mark the window dirty, the opposite of clean.<br>
<tt><font size=+1>cleartag</font></tt> Remove all text in the tag after the vertical bar.<br>
<tt><font size=+1>del</font></tt> Equivalent to the <tt><font size=+1>Del</font></tt> interactive command.<br>
<tt><font size=+1>delete</font></tt> Equivalent to the <tt><font size=+1>Delete</font></tt> interactive command.<br>
<tt><font size=+1>dot=addr</font></tt> Set the user’s selected text in the window to the text
addressed by the <tt><font size=+1>addr</font></tt> address.<br>
<tt><font size=+1>dump</font></tt> <i>command</i>Set the command string to recreate the window from
a dump file.<br>
<tt><font size=+1>dumpdir</font></tt> <i>directory<br>
</i>Set the directory in which to run the command to recreate the
window from a dump file.<br>
<tt><font size=+1>get</font></tt> Equivalent to the <tt><font size=+1>Get</font></tt> interactive command with no arguments;
accepts no arguments.<br>
<tt><font size=+1>limit=addr</font></tt> When the <tt><font size=+1>ctl</font></tt> file is first opened, regular expression
context searches in <tt><font size=+1>addr</font></tt> addresses examine the whole file; this
message restricts subsequent searches to the current <tt><font size=+1>addr</font></tt> address.<br>
<tt><font size=+1>mark</font></tt> Cancel <tt><font size=+1>nomark</font></tt>, returning the window to the usual state wherein
each modification to the body must be undone individually.<br>
<tt><font size=+1>name</font></tt> <i>name</i> Set the name of the window to <i>name</i>.<br>
<tt><font size=+1>nomark</font></tt> Turn off automatic ‘marking’ of changes, so a set of related
changes may be undone in a single <tt><font size=+1>Undo</font></tt> interactive command.<br>
<tt><font size=+1>noscroll</font></tt> Turn off automatic ‘scrolling’ of the window to show text
written to the body.<br>
<tt><font size=+1>put</font></tt> Equivalent to the <tt><font size=+1>Put</font></tt> interactive command with no arguments;
accepts no arguments.<br>
<tt><font size=+1>scroll</font></tt> Cancel a <tt><font size=+1>noscroll</font></tt> message, returning the window to the default
state wherein each write to the <tt><font size=+1>body</font></tt> file causes the window to
‘scroll’ to display the new text.<br>
<tt><font size=+1>show</font></tt> Guarantee at least some of the selected text is visible on
the display.<br>
</table>
</table>
<tt><font size=+1>data</font></tt>is used in conjunction with <tt><font size=+1>addr</font></tt> for random access to the
contents of the body. The file offset is ignored when writing
the <tt><font size=+1>data</font></tt> file; instead the location of the data to be read or
written is determined by the state of the <tt><font size=+1>addr</font></tt> file. Text, which
must contain only whole characters (no ‘partial runes’), written
to
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
<tt><font size=+1>data</font></tt> replaces the characters addressed by the <tt><font size=+1>addr</font></tt> file and sets
the address to the null string at the end of the written text.
A read from <tt><font size=+1>data</font></tt> returns as many whole characters as the read
count will permit starting at the beginning of the <tt><font size=+1>addr</font></tt> address
(the end of the address has no effect) and sets the
address to the null string at the end of the returned characters.<br>
</table>
<tt><font size=+1>event<br>
</font></tt>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
When a window’s <tt><font size=+1>event</font></tt> file is open, changes to the window occur
as always but the actions are also reported as messages to the
reader of the file. Also, user actions with buttons 2 and 3 (other
than chorded <tt><font size=+1>Cut</font></tt> and <tt><font size=+1>Paste</font></tt>, which behave normally) have no immediate
effect on the window; it is expected that
the program reading the <tt><font size=+1>event</font></tt> file will interpret them. The messages
have a fixed format: a character indicating the origin or cause
of the action, a character indicating the type of the action,
four free-format blank-terminated decimal numbers, optional text,
and a newline. The first and second numbers are
the character addresses of the action, the third is a flag, and
the final is a count of the characters in the optional text, which
may itself contain newlines. The origin characters are <tt><font size=+1>E</font></tt> for writes
to the <tt><font size=+1>body</font></tt> or <tt><font size=+1>tag</font></tt> file, <tt><font size=+1>F</font></tt> for actions through the window’s other
files, <tt><font size=+1>K</font></tt> for the keyboard, and <tt><font size=+1>M</font></tt> for the mouse. The
type characters are <tt><font size=+1>D</font></tt> for text deleted from the body, <tt><font size=+1>d</font></tt> for text
deleted from the tag, <tt><font size=+1>I</font></tt> for text inserted to the body, <tt><font size=+1>i</font></tt> for text
inserted to the tag, <tt><font size=+1>L</font></tt> for a button 3 action in the body, <tt><font size=+1>l</font></tt> for
a button 3 action in the tag, <tt><font size=+1>X</font></tt> for a button 2 action in the body,
and <tt><font size=+1>x</font></tt> for a button 2 action in the tag.
If the relevant text has less than 256 characters, it is included
in the message; otherwise it is elided, the fourth number is 0,
and the program must read it from the <tt><font size=+1>data</font></tt> file if needed. No
text is sent on a <tt><font size=+1>D</font></tt> or <tt><font size=+1>d</font></tt> message.<br>
For <tt><font size=+1>D</font></tt>, <tt><font size=+1>d</font></tt>, <tt><font size=+1>I</font></tt>, and <tt><font size=+1>i</font></tt> the flag is always zero. For <tt><font size=+1>X</font></tt> and <tt><font size=+1>x</font></tt>, the flag
is a bitwise OR (reported decimally) of the following: 1 if the
text indicated is recognized as an <i>acme</i> built-in command; 2 if
the text indicated is a null string that has a non-null expansion;
if so, another complete message will follow describing the
expansion exactly as if it had been indicated explicitly (its
flag will always be 0); 8 if the command has an extra (chorded)
argument; if so, two more complete messages will follow reporting
the argument (with all numbers 0 except the character count) and
where it originated, in the form of a fully-qualified
button 3 style address.<br>
For <tt><font size=+1>L</font></tt> and <tt><font size=+1>l</font></tt>, the flag is the bitwise OR of the following: 1 if
<i>acme</i> can interpret the action without loading a new file; 2 if
a second (post-expansion) message follows, analogous to that with
<tt><font size=+1>X</font></tt> messages; 4 if the text is a file or window name (perhaps with
address) rather than plain literal text.
For messages with the 1 bit on in the flag, writing the message
back to the <tt><font size=+1>event</font></tt> file, but with the flag, count, and text omitted,
will cause the action to be applied to the file exactly as it
would have been if the <tt><font size=+1>event</font></tt> file had not been open.<br>
</table>
<tt><font size=+1>tag</font></tt> holds contents of the window tag. It may be read at any byte
offset. Text written to <tt><font size=+1>tag</font></tt> is always appended; the file offset
is ignored.<br>
</table>
<p><font size=+1><b>SOURCE </b></font><br>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
<tt><font size=+1>/usr/local/plan9/src/cmd/acme<br>
</font></tt>
</table>
<p><font size=+1><b>SEE ALSO </b></font><br>
<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
<a href="../man1/rio.html"><i>rio</i>(1)</a>, <a href="../man1/acme.html"><i>acme</i>(1)</a><br>
</table>
<td width=20>
<tr height=20><td>
</table>
<!-- TRAILER -->
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=15><td width=10><td><td width=10>
<tr><td><td>
<center>
<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
</center>
</table>
<!-- TRAILER -->
</body></html>
|