diff options
Diffstat (limited to 'src/fs-help.txt')
| -rw-r--r-- | src/fs-help.txt | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/src/fs-help.txt b/src/fs-help.txt index 73a49e9b..bd822b60 100644 --- a/src/fs-help.txt +++ b/src/fs-help.txt @@ -1,28 +1,24 @@ Pardes control filesystem ========================= README this guide -index one line per pane: serial, kind (text|term|pdf|image), dirty flag, name (+New if unnamed), column serial +index one line per pane: serial, kind (text|term|pdf|image), dirty flag, name (<dir>/+New if unnamed), column serial; rsplit(maxsplit=1) first, names hold spaces status pid, version and pane count -look write a line: a right click on it at the active pane; read: the serials it touched -exec write a line: a middle click, an editor command word or a shell line; read the same -log events: new/del/rename/save <serial> <name>, newcol/delcol <column serial>, run/exit/send <serial> ..., - ask <serial> <what> <choices>, dump/restore <path>, restored/restoredcol <old> <new>, msg, err +look write a line: a right click on it at the active pane; read: the serials it touched (this open's) +exec write a line: a middle click, an editor command word or a shell line; read the same (every exec file) +log events: new del rename save newcol delcol run exit send ask answer changed dump restore restored restoredcol msg err screen rendered screen as JSON, frozen from open to close listeners the session's dial addresses focus the serial of the pane with the keyboard (empty on a column tag); write a serial to give it the keyboard -ctl settings, one a line; or Newcol (an empty column), Dump, Exit (quits, asks once), Kill [w] (stops what pardes ran, w: by first word) -commands every builtin: its word, arg if it takes one, and root or pane: which ctl takes it -layout one line per column: serial index x width current|notcurrent empty|full pane-serials...; then active <serial> -tag the workspace tag: read it, > replaces it, >> appends (one line) -col/<n>/tag the tag of the column with serial n, the same way (a serial stays while the column lives) -col/<n>/ctl Delcol, Joincol, New or Tty on that column; col/<n>/exec a word as a click in its tag; rmdir col/<n> closes an empty one -pane/new open it to make a pane (named +New) in the active column, filling it if empty; the read answers its serial +ctl settings a line; or Newcol, Dump, Restore [f], Exit (asks once), Kill [w], Placement acme|pardes, size C R (--detach) +commands every builtin: word, arg if it takes one, root|pane|both (the ctl that takes it), -- what it does +layout a line per column: serial index x width current|notcurrent empty|full pane-serials; active <serial> +tag the workspace tag, tagexec a word as a click in it; col/<serial>/ a column's tag, ctl (Delcol Joincol New Tty), exec; rmdir: empty only +pane/new open it to make a pane (<session dir>/+New) in the active column, filling it if empty; the read answers its serial pane/<n>/ name body tag ctl addr dot limit data xdata sel dirty mark scroll errors (write-only: - appended to its directory's +Errors pane) event look exec, pty/ on terminals; rmdir closes + appended to its directory's +Errors pane) event look exec tagexec, pty/ on terminals; rmdir closes os/, src/ the host filesystem; the editor's own sources -Below, $m is the mount: $NINE_MOUNT/pardes/<pid, or NAME of --detach=NAME>; PARDES_MOUNT in a Tty9p shell; -$NINE_MOUNT itself under `9ns --unix SOCKET -- cmd`, which mounts one session as its root. +$m below: $NINE_MOUNT/pardes/<pid|NAME>; $NINE_MOUNT under 9ns --unix; PARDES_MOUNT in a Tty9p shell. cat $m/index which panes exist n=$(cat $m/pane/new) make a pane, take its serial @@ -31,21 +27,19 @@ $NINE_MOUNT itself under `9ns --unix SOCKET -- cmd`, which mounts one session as echo notes.txt > $m/pane/$n/name; echo Save > $m/pane/$n/ctl rename, then save it echo 'Msg hello' > $m/exec show text in the editor echo 'Edit ,x/foo/c/bar/' > $m/pane/$n/ctl rename every foo, one undo step (sam's commands) - cp $m/pane/$n/addr $m/pane/$n/dot; cat $m/pane/$n/sel select the range, read it exec 3<>$m/log; echo follow >&3; cat <&3 what happened lately, then wait for more - cat $m/pane/$n/event hold it open to own that pane's clicks echo Tty > $m/pane/$n/ctl; cat $m/index a terminal in that pane's directory - exec 3<>$m/pane/$n/pty/run; echo make >&3; cat <&3 exit N then its output; or busy, or error + exec 3<>$m/pane/$n/pty/run; echo make >&3; cat <&3 exit N then its output; or busy: <program> is running, or error printf 'ls\r' > $m/pane/$n/pty/data type into a terminal; pty/status: cols rows busy echo 'sig INT' > $m/pane/$n/pty/ctl interrupt it; also winsize C R, and exec to restart Pitfalls, one each: Each open of pane/new makes another pane (ls, stat, find never do); rmdir closes even a dirty one. - addr: #n,#m, 12:5 or /re/ from the current address (^ $ per line); > never resets it, 0 does; a miss refuses data. + addr: #n,#m, 12:5 or /re/ from the current address (^ $ per line), bytes snapped to runes; 0 resets; a miss refuses data. data: > replaces the addr range, : > deletes it, a 2nd > inserts (addr moved); body: > empties all. tag reads the path, then its own text; > replaces that text (default words too), >> appends. A terminal's body is a history snapshot frozen per open, wrapped rows joined into lines; pty/data is the live stream. - exec: a non-builtin line runs as a command pane (ctl's Shell -c; exit N shown, logged), a shell's typed in. - Through a mount a malformed write is EINVAL, a well-formed one that fails EIO: log's err says why. - lock/unlock need a held ctl fd (exec 3>ctl), a held lock fails: retry. A column's last pane leaves it empty; the last pane of all quits. + exec: a non-builtin line (at most 1024 bytes) runs as a command pane (Shell -c), a shell's typed in; once whole. + Through a mount a malformed write is EINVAL, a failed one EIO or an errno that fits (ENOENT): log's err says why. + lock/unlock need a held ctl fd (exec 3>ctl); a held lock fails: retry. fs.md has the rest. Repl python on a terminal's ctl: a .py body's clicks go to it (Repl - unbinds, Repl says it); tags stay commands. |
