<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pardes.git/docs/helix-keys.md, branch main</title>
<subtitle>Pardes</subtitle>
<id>https://git.0x4200.cafe/pardes.git/atom?h=main</id>
<link rel='self' href='https://git.0x4200.cafe/pardes.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/'/>
<updated>2026-10-01T03:12:17Z</updated>
<entry>
<title>The guide walks a newcomer through pardes day to day, and the cheatsheet says what Esc and Shift-Esc really do</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T02:04:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=fb3f5ab5a7758a628a6e343f24a6510a58802599'/>
<id>urn:sha1:fb3f5ab5a7758a628a6e343f24a6510a58802599</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>ThemeSel is Themes and FontSel is Fonts; the old words still work in init files and dumps</title>
<updated>2026-10-01T03:12:16Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T13:31:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=5fd713889b6bdeb27c58941b77266c9336bf7b7d'/>
<id>urn:sha1:5fd713889b6bdeb27c58941b77266c9336bf7b7d</id>
<content type='text'>
The user asked for the plainer words. Every use is renamed: the
builtins, leader paths, /commands, the docs and tutor, tests, and the
themesel golden, re-recorded. An init file's ThemeSel or FontSel runs
the new word and says `ThemeSel: renamed to Themes`, as ColumnTags is
said; a dump naming an output pane by the old word restores it.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Recent lists the files opened lately, closed ones too, and a jump back to a closed file reopens it</title>
<updated>2026-10-01T03:12:16Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T13:30:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=2d0c506583d18d6f004fc117282deb2faea1d17e'/>
<id>urn:sha1:2d0c506583d18d6f004fc117282deb2faea1d17e</id>
<content type='text'>
A file closed by accident, its path forgotten, could not be found again:
the jumplist dropped closed panes. Every file opened (a look, a Save of a
scratch, a Restore, a rename) goes first in a list of 200, kept once, its
dot noted when it closes, kept across sessions in $XDG_STATE_HOME/pardes/
recent. `Recent` (SPC f r) shows it in a reused +Recent, each row
`path:line:col open|closed` a look reopens; /recent reads `open|closed
&lt;path&gt;`. The jumplist keeps a closed file's entries, +Jumps marks them
`(closed)`, and Back to one opens the file at its place. acme has no
such thing; its dump and Load are the nearest.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A column can be empty, as acme's can; new panes go where acme's makenewwindow puts them</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T21:53:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=b8c5e8772e646fa21f6afdd2a875a1bd52848bd5'/>
<id>urn:sha1:b8c5e8772e646fa21f6afdd2a875a1bd52848bd5</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Zig has textobjects: helix's query, ported to the zig grammar pardes builds</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T20:13:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=c5d96bec3d5279904525292ef933a985a974b017'/>
<id>urn:sha1:c5d96bec3d5279904525292ef933a985a974b017</id>
<content type='text'>
pardes builds maxxnino/tree-sitter-zig, whose node names are not those of
the grammar helix's query targets, so the query is ported by hand
(vendor/queries/zig, its MPL header saying it is modified and how): a
function is a Decl holding an FnProto and a Block with pub beside it,
struct/enum/union one ContainerDecl, parameters and arguments ParamDeclList
and FnCallArguments, and comments come in three kinds. That grammar's
comments take their line's newline, and a node ending in a newline is now
taken without it, as helix's grammars have it. The replay test gains fifteen
Zig cases from the installed hx; none walks call arguments, which the
reference helix counts as parameters and 25.07.1's query does not.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>]f, mif and the other textobject keys use helix's own queries</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T20:04:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=df4d11bb95bc7ea9554b55d2211c4704a2594f08'/>
<id>urn:sha1:df4d11bb95bc7ea9554b55d2211c4704a2594f08</id>
<content type='text'>
helix's textobjects.scm for pardes's grammars are vendored in vendor/queries
under MPL-2.0, each with a header naming its source and what it inherits,
inlined; a README says what is there and what is not. syntax.objectAt and
objectNext run them over the file's kept parse, with their #eq? and #match?
predicates, for ]f [f ]t [t ]a [a ]c [c ]T [T ]e [e ]x [x and mi/ma with
f t a c T e x. erlang's and zig's queries do not compile against the grammar
versions pardes builds and are left out; fortran, markdown and powershell
have none in helix. A test replays sixteen Python and JSON cases whose
results were taken from the installed hx, and another holds that every
vendored query compiles.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A selection's other ranges live out of line, made at the second range and freed at one</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T19:57:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=68e30f560e46bb9a30433eb23b4edb1b93d69f46'/>
<id>urn:sha1:68e30f560e46bb9a30433eb23b4edb1b93d69f46</id>
<content type='text'>
The ranges beside the primary were an inline array in every Text, which at
1024 grew each pane by about 60 KiB. They are now allocated when a second
range appears (Text.reserveSels) and given back when the selection is one
range again (Text.dropSels); a column's or the workspace's tag allocates from
Text.gpa, any other text from its pane's. A refused tag edit restores them by
copy. The Pane size budget is back to 128 KiB, and a test holds that a single
cursor allocates nothing for them.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>The git change jumps are marked deferred</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T19:53:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=cd563b1768c688444cc6d172b3679d95b495207c'/>
<id>urn:sha1:cd563b1768c688444cc6d172b3679d95b495207c</id>
<content type='text'>
]g/[g/]G/[G need a diff base per file that pardes does not keep; the design
is agreed to wait, and section C says so.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>The keys doc's skipped list says what is still open and why</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T19:47:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=4242c2cdf6593b3d7cd6dfb0b7a2a4b38ecdc971'/>
<id>urn:sha1:4242c2cdf6593b3d7cd6dfb0b7a2a4b38ecdc971</id>
<content type='text'>
The two rows left for design, the tree-sitter textobject jumps and the git
change jumps, now say what each is waiting on.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>gw labels the words in view and jumps to the one whose label is typed</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-28T19:46:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=ec4f300060ec0c93cc920dd5562eae1e3153d8b7'/>
<id>urn:sha1:ec4f300060ec0c93cc920dd5562eae1e3153d8b7</id>
<content type='text'>
helix goto_word: the words of two or more word characters between the
view's first and last lines get two-letter labels, nearest the cursor first,
one forward and one back in turn (modal.jumpWords). The next two keys choose
one and select it, stretching the selection to it in select mode; any other
key takes the labels away. The words live on Pane.jump, and renderBody paints
their labels over the body's cells in the selection colours, the one change
on the render side.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
