summaryrefslogtreecommitdiff
path: root/docs/tags.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 18:53:37 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commitb8c5e8772e646fa21f6afdd2a875a1bd52848bd5 (patch)
tree70bca3d554501c49107b27396c7756e0e8ad62a3 /docs/tags.md
parentc4ab29bce30f427decf3e199eebecfd415714a96 (diff)
downloadpardes-b8c5e8772e646fa21f6afdd2a875a1bd52848bd5.tar.gz
pardes-b8c5e8772e646fa21f6afdd2a875a1bd52848bd5.zip
A column can be empty, as acme's can; new panes go where acme's makenewwindow puts them
Newcol makes an empty column; closing a column's last pane leaves it empty with the keyboard on its tag; Delcol and Joincol alone take a column away; the session's last pane closing quits. The +New stand-in and replaceStillborn / stillborn_joiner are gone. Every new pane goes through exec.placeNew, which follows acme's makenewwindow (active column, empty column whole, blank space, halving the biggest) or, with Placement pardes, the old rules. ColumnTags is gone: column tags are always shown. A grip drag shows acme's box cursor. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'docs/tags.md')
-rw-r--r--docs/tags.md68
1 files changed, 64 insertions, 4 deletions
diff --git a/docs/tags.md b/docs/tags.md
index fdea1472..7787d7f1 100644
--- a/docs/tags.md
+++ b/docs/tags.md
@@ -1,8 +1,9 @@
# Editable tags
Pardes has three levels of command text: the workspace tag, one tag per
-column, and each pane's tag. Column commands run in that column's active
-pane (or its first pane when focus comes from another column). This makes
+column, and each pane's tag. Column commands act on that column and run in
+its active pane (or its first pane when focus comes from another column); a
+column with no pane is described under [empty columns](#empty-columns). This makes
`New`, `Tty`, `Find`, and `Grep` available beside the work they act on.
`New` appears only in the column tag by default; pane tags keep their own
save, terminal, close, and collapse commands. `Tty` opens a new embedded terminal.
@@ -152,7 +153,7 @@ upgrade to `Mode`; customized command text is preserved.
## Saved workspaces
`Dump` and `Restore` preserve customized workspace and column tags, including
-intentionally empty tags. New columns start with the standard column tag.
+intentionally empty tags, and columns that hold no pane. New columns start with the standard column tag.
Closing a column keeps surviving columns' tags; `Joincol` keeps the destination
column's tag. Old dumps without these optional fields retain the defaults.
The automatic `Restore` shortcut does not overwrite a customized workspace
@@ -163,7 +164,66 @@ than three rows it is omitted so a pane still has room. SDL and TTY share the
same tag text, editing and layout; SDL additionally uses compact font sizing
and subtle pixel separators.
-`ColumnTags` toggles the column row (on by default) without deleting its text.
+The column row is always shown. An old `ColumnTags` line in an init file is
+ignored, with a message saying so.
`FocusTint` controls active-column and active-pane emphasis. SDL also honors
the shared bold, underline, and strikethrough attributes, including diagnostic
underlines and the optional `SyntaxBold` keyword weight.
+
+## Empty columns
+
+A column can hold no pane, as acme's can: its tag stands over blank space, the
+frame's own fill, where acme paints white (cols.c:186-188). `Newcol` makes an
+empty column right of the keyboard's and gives its tag the keyboard. Closing a
+column's last pane (`Del`, `Del k`/`Del j`, a shell exiting, a drag to another
+column) leaves the column empty where it was, and the keyboard goes to its tag
+if it was on that pane. Only `Delcol` and `Joincol` take a column away.
+
+`Delcol` and `Joincol` from a column's tag act on that column; `Delcol`
+written to a pane's ctl closes that pane's column. A pane dragged onto an
+empty column fills it.
+
+## Where new panes go
+
+Every new pane goes through one placement, chosen by the `Placement` setting:
+`acme` (the default) or `pardes`. `Placement pardes` or `Placement acme` sets
+it, in an init file, a tag or the root ctl; bare `Placement` flips it; `SPC c
+p` is its leader path, and `Config` reports it.
+
+`Placement acme` is acme's makenewwindow (util.c:449-495). The core keeps
+acme's *active column* (activecol, dat.c:37): the column last typed in
+(acme.c:487), clicked in with the select button (acme.c:659), dropped into by
+a grip (acme.c:640), whose tag was given the keyboard (`Newcol`, an emptied
+column, `Ctrl-w k`), or that was given the last new pane (util.c:467). A Look
+click moves the keyboard but not the active column, as button 3 does not in
+acme. A new pane goes into the column a command's tag belongs to when it came
+from a column tag, else the active column, else the keyboard's pane's, and
+never into a new column:
+
+- an empty column it takes whole (util.c:468-469);
+- from a tag, or 9P's `pane/new` (acme's `t->w == nil`), it takes the bottom
+ half of the column's last pane (coladd, cols.c:62-65);
+- from a pane's text (a Look, `Tty`, `Alt-n`, a Grep or Find listing), it goes
+ right under the text of the pane with the most blank rows when that is more
+ than 15 rows, or more than 3 and more than half the biggest pane
+ (util.c:482-486); otherwise it halves the biggest pane, or the asking pane
+ when that is in the column and not much smaller (util.c:487-491);
+- `New` goes into its own column, the bottom half of its last pane
+ (look.c:921-923);
+- a command pane or a `+Errors` pane goes to the last column, the bottom
+ half of its last pane (util.c:94-98).
+
+`Placement pardes` is what pardes did before: an empty column whose tag asked,
+or has the keyboard, is filled; a scratch goes right under the pane that asked;
+a shell under it or the nearest pane with room; a document beside the last one
+read, or in a column of its own on the left when there is none and the column
+is at least 200 cells wide; a command pane at the foot of the last column.
+
+Down from an empty column's tag stays there, and the pane-to-pane keys pass
+over an empty column; Left and Right from a tag walk every column's tag.
+
+One divergence from acme: acme keeps running when its last window closes,
+every column empty. Pardes quits when the session's last pane closes, as
+`Delcol` of the last column always has. A key, a prompt or a command in
+pardes runs in a pane, so a session without one would have nothing to run
+them in.