# h/j/k/l ON A TAGLINE move focus BETWEEN taglines. A tag is a place in the # LAYOUT, not just a line of text, so the four letters walk the layout and land # on the neighbour's TAG (top row of the window), still in normal mode — you # walk the taglines and never drop through a body. They run the SAME # Left/Down/Up/Right builtins `SPC w h/j/k/l` and `Ctrl-w h/j/k/l` run: one # focusDir, three routes to it. The ARROWS keep the in-tag grapheme motion, so # no capability was traded away. # # Evidence is the `cursor=` header (the ACTIVE pane's cursor, which while a tag # is focused sits on THAT pane's tag row) plus the tag text itself: a focused # tag renders its owner's mode, so NOR means the tag is in normal mode and the # pane we left is back in its body mode. file w.txt alpha\nbeta\ngamma start 30 100 w.txt wait 8000 Kill Newcol wait 8000 w.txt stable 700 20000 # Alt-n: a shell below the file, so the left column has two rows and every # direction has somewhere to go key a-n stable 700 15000 key space w k stable 400 5000 snap start # `:` -> the file's OWN tagline, normal mode, parked at the tail's start key : stable 400 5000 snap colon # l -> right, onto the launch shell's TAGLINE (not its body) key l stable 400 5000 snap right-tag # h -> back left onto the file's tagline key h stable 400 5000 snap left-tag # j -> down onto the tagline of the shell under the file key j stable 400 5000 snap down-tag # k -> back up onto the file's key k stable 400 5000 snap up-tag # k again: nothing above the file — but "nothing" is not nowhere. Above the # topmost tagline is the TOPBAR, row 0, the global one. It is not a pane, so # focusDir can never find it; this fallback is the one place k walks off the # layout entirely. Evidence is the cursor=0,0 header: the bar has the keyboard # and parks on `Kill`. key k stable 400 5000 snap up-edge # the bar speaks the tag's own one-line vocabulary: w to the next word start key w stable 400 5000 snap topbar-word # h/l are plain graphemes up here — row 0 has no window to its left or right to # walk to — and the arrows still mean what they always did key l right stable 400 5000 snap topbar-graphemes # j is the mirror of the k that got you here: back DOWN onto the topmost pane's # tagline, still in normal mode, so the hop is a round trip key j stable 400 5000 snap back-down # the arrows are still in-tag motion: two rights walk two columns of the tail key right right stable 400 5000 snap arrows-still-motion key esc settle 100 stable 400 5000 snap back-to-body # A TERMINAL MUST NOT LOSE ITS TTY MODE. Put the launch shell in raw tty mode # (Ctrl-b), come back, then hop onto its tagline and off again: exitTagEdit # restores the body mode the tag hijacked, so its prefix reads TTY again. key c-w l stable 400 5000 key c-b stable 700 15000 snap tty-on key c-w h stable 400 5000 key : key l stable 400 5000 snap tty-tag key esc settle 100 stable 400 5000 snap tty-restored # Enter/Tab on the BAR runs the word under the cursor through the very dispatch # a middle click on it uses, and leaves the bar FIRST — `Kill` lives up here, so # a builtin that frees the session must never return into a focused topbar (the # same hazard the pane-tag chord has with `Del`). `Dump` is the visible one: the # bar GROWS a `Restore ` word, which is also the case where the line gets # longer than the column you were parked on. key c-w h stable 400 5000 key : key k stable 400 5000 key $ stable 400 5000 snap topbar-dollar key enter stable 700 15000 snap topbar-exec # THE DELETION HAZARD, from the bar itself: `Restore` frees every pane and # swaps the core out from under the caller. Walk back onto the word the Dump # just grew — B twice off the tail, because the LONG word motions are the ones # that step over a path in one go — and run it. The bar drops focus BEFORE the # builtin, so nothing reaches for state the swap already freed. key : key k stable 400 5000 key $ B B stable 400 5000 snap topbar-restore-word key enter stable 900 15000 snap topbar-restored