diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/fs.md | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -80,6 +80,7 @@ Existing Plan9port/v9fs clients need a userspace bridge for QUIC. write follow to that open to wait for more /screen rendered screen JSON; frozen per open handle /listeners the session's dial addresses +/focus the serial of the pane with the keyboard; write a serial to give it the keyboard /pane/new open it to make a pane; the read answers that pane's serial /pane/<n>/ name body tag ctl addr dot limit data xdata sel dirty mark scroll errors event look exec, plus pty/{ctl,status,data} on terminals @@ -87,6 +88,12 @@ Existing Plan9port/v9fs clients need a userspace bridge for QUIC. /src/ the editor's embedded sources, only when built with -Dembed-sources=true ``` +`/focus` reads the serial of the pane with the keyboard, and a serial written +to it gives that pane the keyboard, off any column or workspace tag that had +it -- rio's `current` written to a window's `wctl`, named once for the whole +tree since there is one keyboard. A serial no pane has fails with `no such +window`; anything but a number, with `ill-formed control message`. + A pane is made by **opening** `/pane/new`, and closed by Tremove on `/pane/<n>` (`rmdir`), which is the only remove the tree serves; Tcreate is refused everywhere, as it is in acme. Reading the open fid answers the serial @@ -153,7 +160,8 @@ appends to the directory's `+Errors` pane. Holding `event` open redirects the pane's Look and Exec clicks to that client; writing a record back performs the action. `ctl` reads acme's window status line — serial, tag length, body length, a reserved zero, the dirty flag, the width in cells, the font and the -tab width — and takes `get`, which reloads the buffer from the name it +tab width — followed by rio's `current` or `notcurrent` (rio(4), `wctl`): +whether the pane has the keyboard. It takes `get`, which reloads the buffer from the name it carries, and acme's `lock` and `unlock` (editors/acme/xfid.c:603-611), for an edit of several writes to `addr` and `data` that another client must not land in the middle of. As in acme the lock binds only the clients that take |
