123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483 |
- .TH ACME 4
- .SH NAME
- acme \- control files for text windows
- .SH SYNOPSIS
- .B acme
- [
- .B -ab
- ]
- [
- .B -c
- .I ncol
- ]
- [
- .B -f
- .I varfont
- ]
- [
- .B -F
- .I fixfont
- ]
- [
- .B -l
- .I file
- |
- .I file
- \&... ]
- .SH DESCRIPTION
- The text window system
- .IR acme (1)
- 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
- itself.
- When a command is run under
- .IR acme ,
- a directory holding these files is mounted on
- .B /mnt/acme
- (also bound to
- .BR /mnt/wsys )
- and also
- .BR /dev ;
- the files mentioned here
- appear in both those directories.
- .PP
- Some of these files supply virtual versions of services available from the underlying
- environment, in particular the character terminal files
- .IR cons (3).
- (Unlike in
- .IR rio (1),
- each command under
- .I acme
- sees the same set of files; there is not a distinct
- .B /dev/cons
- for each window.)
- Other files are unique to
- .IR acme .
- .TP
- .B acme
- is a subdirectory used by
- .B win
- (see
- .IR acme (1))
- as a mount point for the
- .I acme
- files associated with the window in which
- .B win
- is running.
- It has no specific function under
- .I acme
- itself.
- .TP
- .B cons
- is the standard and diagnostic output file for all commands
- run under
- .IR acme .
- (Input for commands is redirected to
- .BR /dev/null .)
- Text written to
- .B cons
- appears in a window labeled
- .IB dir /+Errors\f1,
- where
- .I dir
- is the directory in which the command
- was run.
- The window is created if necessary, but not until text is actually written.
- .TP
- .B consctl
- is an empty unwritable file present only for compatibility; there is no way
- to turn off `echo', for example, under
- .IR acme .
- .TP
- .B index
- holds a sequence of lines of text, one per window. Each line has 5 decimal numbers,
- each formatted in 11 characters plus a blank\(emthe 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\(emfollowed by the tag up to a newline if present.
- Thus at character position 5×12 starts the name of the window.
- If a file has multiple zeroxed windows open,
- only the most recently used will appear in the
- .B index
- file.
- .TP
- .B label
- is an empty file, writable without effect, present only for compatibility with
- .BR rio .
- .TP
- .B log
- reports a log of window operations since the opening of the
- .B log
- file.
- Each line describes a single operation using three fields separated by single spaces:
- the decimal window ID, the operation, and the window name.
- Reading from
- .B log
- blocks until there is an operation to report, so reading the file
- can be used to monitor editor activity and react to changes.
- The reported operations are
- .L new
- (window creation),
- .L zerox
- (window creation via zerox),
- .LR get ,
- .LR put ,
- .LR focus ,
- and
- .LR del
- (window deletion).
- The window name can be the empty string; in particular it is empty in
- .L new
- log entries corresponding to windows created by external programs.
- .TP
- .B new
- is a directory analogous to the numbered directories
- .RI ( q.v. ).
- Accessing any
- file in
- .B new
- creates a new window. Thus to cause text to appear in a new window,
- write it to
- .BR /dev/new/body .
- For more control, open
- .BR /dev/new/ctl
- and use the interface described below.
- .LP
- .PP
- Each
- .I acme
- window has associated a directory numbered by its ID.
- Window IDs are chosen sequentially and may be discovered by the
- .B ID
- command, by
- reading the
- .B ctl
- file, or
- indirectly through the
- .B index
- file. The files in the numbered directories are as follows.
- .TP
- .B addr
- 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
- .B data
- file.
- When read, it returns the value of the address that would next be read
- or written through the
- .B data
- file, formatted as 2 decimal numbers
- .I m
- and
- .IR n ,
- each formatted in 11 characters plus a blank.
- .I M
- and
- .I n
- are the character (not byte) offsets of the
- beginning and end of the address,
- which would be expressed in
- .I acme 's
- input language as
- .BI # m ,# n \fR.
- Thus a regular expression may be evaluated by writing it to
- .B addr
- and reading it back.
- The
- .B addr
- address has no effect on the user's selection of text.
- .TP
- .B body
- holds contents of the window body. It may be read at any byte offset.
- Text written to
- .B body
- is always appended; the file offset is ignored.
- .TP
- .B ctl
- may be read to recover the five numbers as held in the
- .B index
- file, described above, plus three more fields: the width of the
- window in pixels, the name of the font used in the window,
- and the width of a tab character in pixels.
- Text messages may be written to
- .B ctl
- to affect the window.
- Each message is terminated by a newline and multiple
- messages may be sent in a single write.
- .RS .5i
- .TF limit=addr
- .TP
- .B addr=dot
- Set the
- .B addr
- address to that of the user's selected text in the window.
- .TP
- .B clean
- Mark the window clean as though it has just been written.
- .TP
- .B dirty
- Mark the window dirty, the opposite of clean.
- .TP
- .B cleartag
- Remove all text in the tag after the vertical bar.
- .TP
- .B del
- Equivalent to the
- .B Del
- interactive command.
- .TP
- .B delete
- Equivalent to the
- .B Delete
- interactive command.
- .TP
- .B dot=addr
- Set the user's selected text in the window to the text addressed by the
- .B addr
- address.
- .TP
- .BI dump " command
- Set the command string to recreate the window from a dump file.
- .TP
- .BI dumpdir " directory
- Set the directory in which to run the command to recreate the window from a dump file.
- .TP
- .B get
- Equivalent to the
- .B Get
- interactive command with no arguments; accepts no arguments.
- .TP
- .B limit=addr
- When the
- .B ctl
- file is first opened, regular expression context searches in
- .B addr
- addresses examine the whole file; this message restricts subsequent
- searches to the current
- .B addr
- address.
- .TP
- .B mark
- Cancel
- .BR nomark ,
- returning the window to the usual state wherein each modification to the
- body must be undone individually.
- .TP
- .B menu
- Maintain
- .BR Undo ,
- .BR Redo ,
- and
- .B Put
- in the left half of the tag.
- (This is the default for file windows.)
- .TP
- .BI name " name
- Set the name of the window to
- .IR name .
- .TP
- .B nomark
- Turn off automatic `marking' of changes, so a set of related changes
- may be undone in a single
- .B Undo
- interactive command.
- .TP
- .B nomenu
- Do not maintain
- .BR Undo ,
- .BR Redo ,
- and
- .B Put
- in the left half of the tag.
- (This is the default for directory and error windows.)
- .TP
- .B noscroll
- Turn off automatic `scrolling' of the window to show text written to the body.
- .TP
- .B put
- Equivalent to the
- .B Put
- interactive command with no arguments; accepts no arguments.
- .TP
- .B scroll
- Cancel a
- .B noscroll
- message, returning the window to the default state wherein each write
- to the
- .B body
- file causes the window to `scroll' to display the new text.
- .TP
- .B show
- Guarantee at least some of the selected text is visible on the display.
- .RE
- .PD
- .TP
- .B data
- is used in conjunction with
- .B addr
- for random access to the contents of the body.
- The file offset is ignored when writing the
- .B data
- file; instead the location of the data to be read or written is determined by the state of the
- .B addr
- file.
- Text, which must contain only whole characters (no `partial runes'),
- written to
- .B data
- replaces the characters addressed by the
- .B addr
- file and sets the address to the null string at the end of the written text.
- A read from
- .B data
- returns as many whole characters as the read count will permit starting
- at the beginning of the
- .B addr
- address (the end of the address has no effect)
- and sets the address to the null string at the end of the returned
- characters.
- .TP
- .B errors
- Writing to the
- .B errors
- file appends to the body of the
- .IB dir /+Errors
- window, where
- .I dir
- is the directory currently named in the tag.
- The window is created if necessary,
- but not until text is actually written.
- .TP
- .B event
- When a window's
- .B event
- 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
- .B Cut
- and
- .BR Paste ,
- which behave normally) have no immediate effect on the window;
- it is expected that the program reading the
- .B event
- 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
- .B E
- for writes to the
- .B body
- or
- .B tag
- file,
- .B F
- for actions through the window's other files,
- .B K
- for the keyboard, and
- .B M
- for the mouse.
- The type characters are
- .B D
- for text deleted from the body,
- .B d
- for text deleted from the tag,
- .B I
- for text inserted to the body,
- .B i
- for text inserted to the tag,
- .B L
- for a button 3 action in the body,
- .B l
- for a button 3 action in the tag,
- .B X
- for a button 2 action in the body, and
- .B x
- for a button 2 action in the tag.
- .IP
- 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
- .B data
- file if needed. No text is sent on a
- .B D
- or
- .B d
- message.
- .IP
- For
- .BR D ,
- .BR d ,
- .BR I ,
- and
- .BR i
- the flag is always zero.
- For
- .BR X
- and
- .BR x ,
- the flag is a bitwise OR (reported decimally) of the following:
- 1 if the text indicated is recognized as an
- .I acme
- 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.
- .IP
- For
- .B L
- and
- .BR l ,
- the flag is the bitwise OR of the following:
- 1 if
- .I acme
- can interpret the action without loading a new file;
- 2 if a second (post-expansion) message follows, analogous to that with
- .B X
- messages;
- 4 if the text is a file or window name (perhaps with address) rather than
- plain literal text.
- .IP
- For messages with the 1 bit on in the flag,
- writing the message back to the
- .B event
- 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
- .B event
- file had not been open.
- .TP
- .B tag
- holds contents of the window tag. It may be read at any byte offset.
- Text written to
- .B tag
- is always appended; the file offset is ignored.
- .TP
- .B xdata
- The
- .B xdata
- file like
- .B data
- except that reads stop at the end address.
- .SH SOURCE
- .B /sys/src/cmd/acme
- .SH SEE ALSO
- .IR rio (1),
- .IR acme (1),
- .IR cons (3).
|