From 198889ab8f78b12c9881a20309a792e419ba1386 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Sat, 8 Aug 2026 10:44:56 -0300 Subject: Esc alternates between the last two panes; Toggleterm is gone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Esc ran Toggleterm, which hopped between the newest DOC and the newest TERMINAL. That distinction never earned its keep. It made Esc unpredictable — which of three panes you landed on depended on their kinds, not on where you had been — and it could not alternate between two files at all, which is the case you hit most. Editing two files, Esc did nothing. The replacement already existed. Last (SPC j j) is "the pane you were in before this one, whichever it was": it walks the jump stack for the newest entry naming a different pane and restores its line and column. So Esc, and Shift-Esc in tty, now run Last, and Toggleterm is deleted rather than renamed — a third implementation of "go to the other pane" was the thing to avoid. SPC w t goes with it; the w group is the four directional moves, and the jump group already had SPC j j. Held down, Esc alternates. Two files, a file and its shell, a file and a +Search — all the same, because Last has no notion of kind to get wrong. This depends on the swap in the same series: Last reads the stack backwards, and until hopping stopped appending, the pane you came from could fall off it. windownav.snap needed only its keys and prose changed — its golden did not move at all, which is the useful evidence here: for the one scenario the old builtin handled well, Last produces an identical focus sequence. Coverage for what it did not handle is new: a unit test opens a second FILE by looking its name and asserts Esc alternates between two panes of the SAME kind, which is the case that used to be a no-op. Docs follow: tutor.txt, docs/helix-keys.md, docs/design.typ, and the builtin index goldens, which are now one row shorter. 75/75 snapshots, both unit suites, and the macOS ABI build all pass. --- test/snapshots/jumps.snap | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'test/snapshots/jumps.snap') diff --git a/test/snapshots/jumps.snap b/test/snapshots/jumps.snap index 6ab9df2a..1e2a9075 100644 --- a/test/snapshots/jumps.snap +++ b/test/snapshots/jumps.snap @@ -16,10 +16,13 @@ stable 700 20000 # a FILE boots alone now, so this is one column holding big.txt, focused, and # the stack is one entry deep snap start -# two focus moves, so the stack is file -> shell -> file. The shell has to be -# opened before it can be walked to, and SPC c n (Newcol) puts it in a column -# of its own on the right AND focuses it — so opening it IS the first of the -# two moves, and the stack below is the same one a shell at boot left. +# two focus moves. The shell has to be opened before it can be walked to, and +# SPC c n (Newcol) puts it in a column of its own on the right AND focuses it — +# so opening it IS the first of the two moves, and the stack below is the same +# one a shell at boot left. Walking straight back to the file does NOT leave +# `file -> shell -> file` behind: a hop to the entry under the top one is the +# same two places again, so trackJump swaps them rather than appending, and the +# stack is `shell -> file` with the file on top (see trackJump). key space c n stable 700 15000 snap to-shell @@ -40,7 +43,7 @@ snap back-in-file key c-o stable 400 5000 snap back-to-shell -# Ctrl-i forward, twice: the shell entry, then line 100 again. Sent as the +# Ctrl-i forward, twice: back to line 1 of the file, then line 100 again. Sent as the # kitty-protocol CSI u (`CSI 105;5u`) because on the wire Ctrl-i IS Tab — # see config.jump_keys. send \e[105;5u @@ -63,15 +66,21 @@ stable 700 15000 snap jumplist # n/N step the rows and look them, exactly as they do a +Search: the stepped # row is selected in the buffer (snapstyle) and the pane it names follows. -# Row 1 is the file at line 1, row 2 the shell (no path, so `@pN`), row 4 the +# Row 1 is the shell (no path, so `@pN`), row 2 the file at line 1, row 4 the # file at line 100 — so the body visibly rides the list. +# +# ponytail: stepping onto an `@pN` row selects it but does NOT focus that pane — +# the cursor stays where it was, which is why step1-shell's header is still the +# file's. Only rows with a PATH move focus. Nothing tested this before, because +# until the swap above the shell never survived on the stack to be listed at +# all. Fix belongs in the location-list step, next to the path case. key n stable 700 15000 -snap step1 -snapstyle step1 +snap step1-shell +snapstyle step1-shell key n stable 700 15000 -snap step2-shell +snap step2-file key n stable 700 15000 key n @@ -82,8 +91,9 @@ stable 700 15000 snap step-back # and an ordinary LOOK on a row goes there too — the leading word IS a # location, so the right-click look resolves it like any other path. Row 4 -# again, this time by clicking it. -press right 16 28 -release right 16 28 +# again, this time by clicking it: the buffer's four rows are the last four +# screen rows, so row 4 is the bottom one. +press right 16 30 +release right 16 30 stable 700 15000 snap look-row -- cgit v1.3