# 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 select the next/prev look-able span and Enter looks it, exactly as they # do a +Search: the stepped span is selected in the buffer (snapstyle) and the # Enter after it moves the pane the row names. 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. # # SPANS, not rows, and this buffer is the one place in the suite where the two # differ: an `@pN` row's trailing text is the pane's DIRECTORY, which is a # look-able word of its own, so row 1 and row 3 each hold TWO stops and # reaching the next row takes two steps. A file row's text is its content line # (`line 1`), which resolves to nothing, so those hold one. Stepping words # rather than rows is what makes the walk the same motion in a results buffer # and in the middle of a paragraph, and this is the price of that. # # An `@pN` row moves focus like any other, which it did not use to: the STEP # only selects now, and the look Enter runs goes to the pane by the same route # a path takes. key n key enter stable 700 15000 snap step1-shell snapstyle step1-shell # past the directory on row 1, then onto row 2 key n stable 400 5000 key n key enter stable 700 15000 snap step2-file # row 3 is the shell again, both its spans, and then row 4 key n stable 400 5000 key n stable 400 5000 key n key enter stable 700 15000 snap step4-line100 # N is the exact inverse: the same two spans of row 3 in the other order, so # two presses land back on its location and Enter follows it to the shell key N stable 400 5000 key N key enter 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 walk above scrolled the list by one, so # the last four screen rows are its rows 2 through 5 and row 4 is the second # from the bottom. press right 16 29 release right 16 29 stable 700 15000 snap look-row