# 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, 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. 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: the shell entry, 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 file at line 1, row 2 the shell (no path, so `@pN`), row 4 the # file at line 100 — so the body visibly rides the list. key n stable 700 15000 snap step1 snapstyle step1 key n stable 700 15000 snap step2-shell 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. press right 16 28 release right 16 28 stable 700 15000 snap look-row