# The Find builtin (SPC f f) = `fd`, in-core: it arms the SAME tag input `/` # does, but Enter walks the pane's DIRECTORY instead of its text and writes one # matching path per row into a "+Search" OUTPUT BUFFER. Every row is therefore # an ordinary look target, which is the whole point: n/N SELECT the next/prev # one with no code of their own, and the look chord — Enter, the same one that # opens a path anywhere else — is what OPENS it. Focus then follows the file # that opened, but the look was made FROM the results buffer, so the next n # resumes stepping that same list. Where each pane lands is acme's placement # (docs/typ/guide.typ, where new panes go): under the text of the pane with the # most blank rows. The walk skips .git, matches the NAME # case-insensitively, and sorts (readdir order is not stable). `SPC f s` is # Save, which moved out of `w` to make this group. dirmk sub dirmk sub/nest dirmk .git file here.txt Find file zqmark-alpha.txt alpha body file sub/ZQMARK-beta.txt beta body file sub/nest/zqmark-gamma.txt gamma body file other.txt nothing to match here file .git/zqmark-hidden.txt hidden body start 41 120 here.txt wait 8000 here.txt stable 700 20000 # SPC f is a GROUP now (Find + New + Save): the indicator stays on the tag key space key f stable 400 5000 snap group # ... and the second f arms the input, marker visible in the tag key f stable 400 5000 snap armed text zqm stable 400 5000 snap typing # Enter walks: three hits, sorted, .git's copy skipped, other.txt not matched key enter wait 10000 zqmark-alpha.txt stable 700 15000 snap results # n SELECTS row 1 and Enter looks it — a path, so the file OPENS, under the # list's text, and each file after it under the one before. key n key enter wait 10000 beta body stable 700 15000 snap first snapstyle first key n key enter wait 10000 gamma body stable 700 15000 snap second key n key enter wait 10000 alpha body stable 700 15000 snap third # N walks back up one row; Enter looks it, and the file is already open, so # the look just focuses it key N key enter stable 700 15000 snap back # executing the WORD Find (middle-click in a body) arms the same input — the # enum IS the dispatch — and Esc abandons it. The input is its own line, so an # abandoned one leaves nothing behind in the tag press middle 8 4 release middle 8 4 stable 700 10000 snap word key esc settle 100 stable 400 5000 snap cancel # every search is asked from a PANE, and both a look and now a step leave you # somewhere else — so click back into here.txt first. That is not bookkeeping: # a search never refills the buffer it was asked FROM (fillResults skips it), # so `owned by here.txt` is the whole premise of the two steps below. press left 8 4 release left 8 4 stable 400 5000 # a no-match walk opens an empty list of its own, under the last file's text. key space key f key f text zzqq key enter stable 700 10000 # n does not stop on the empty list, because the walk is a RING across panes # rather than one buffer's rows: with nothing look-able here it carries on # into the list that DOES have some — the zqm one — and resumes it one row # past where the N above left it. Nothing opens; only the selection moved. key n stable 400 5000 snap nomatch # ... and asking for `zqm` AGAIN re-arms the list it ALREADY filled instead of # stacking an identical twin under the empty one — even though the step above # left the cursor sitting in the zqm list, so the reuse is by what a buffer # HOLDS (this search, this pattern, this directory), not by which one anything # happens to point at. Asked from here.txt again (the click, as above), and # the LIST it rewrites is therefore the `nomatch` frame unchanged, down to the # byte — only the cursor comes back with it. press left 8 4 release left 8 4 stable 400 5000 key space key f key f text zqm key enter wait 10000 zqmark-alpha.txt stable 700 15000 snap refit # Find is a TOPBAR word too: the same # builtin the leader path runs, reached with the mouse. Chorded — a selection # held when it runs IS the argument — so dragging over `alpha` and clicking # Find walks for that name with nothing typed and no input armed. Row 17 is # `alpha body`: the three found files stack in the order the looks above # OPENED them, which is beta, gamma, alpha down the column. press left 8 17 drag left 13 17 release left 13 17 stable 400 5000 press middle @Find 1 release middle @Find 1 stable 700 15000 snap topbar