# RULE: there is ONE focus history and it is a stack of LOCATIONS — a pane and # a spot in it. Ctrl-o walks it back, Ctrl-i walks it forward again, `SPC j j` # (Last) hops to the newest OTHER pane, and `SPC j l` (Jumplist) writes the # same stack out as an output buffer whose rows are ordinary look targets, so # n/N step them. What gets ONTO the stack is decided in one place (trackJump): # focus ended the update in a different pane, or more than a bodyful of rows # away in the same one — which is why `100G` below leaves a location behind # and the j/k that follow it do not. # # Focus and position both show in the golden's `cursor=` header: that is the # ACTIVE pane's cursor, so each snap is named by where it should land. lines big.txt 200 start 30 150 big.txt wait 8000 big.txt 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. 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 key space w h stable 400 5000 snap to-file # a FAR motion inside one pane: 100G is a jump, so the line we left is # remembered and Ctrl-o can come back to it text 100 key G stable 400 5000 snap goto-100 # Ctrl-o: back to line 1 of the same pane — a stack of panes could not do this key c-o stable 400 5000 snap back-in-file # ...and back again into the shell key c-o stable 400 5000 snap back-to-shell # 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 stable 400 5000 snap forward-file send \e[105;5u stable 400 5000 snap forward-100 # SPC j j — the newest OTHER pane, and pressing it again comes straight back key space j j stable 400 5000 snap last key space j j stable 400 5000 snap last-back # SPC j l — the stack as text: `location text` rows, the file naming itself # and the shell spelled @pN because it has no path key space j l 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 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-shell snapstyle step1-shell key n stable 700 15000 snap step2-file key n stable 700 15000 key n stable 700 15000 snap step4-line100 key N 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: 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