| <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> |