# acme button-3 in a text file = search: right-click / right-select reuse the # `/` machinery. A click expands the file-ish word (config.isFileChar) and, when # it names no file, searches the buffer for it — hits into the +Search output # buffer, n/N walk them like `/`. A right-select searches the span verbatim. # A real path (sub/dep.txt:3) still resolves and OPENS — expansion keeps / . : # so paths are not broken; only the non-file case falls through to search. dirmk sub file sub/dep.txt d1\nd2\nDEPTARGET\nd4\nd5\nd6 file code.txt run count_x now\nopen sub/dep.txt:3 here\ncount_x again\npick two words # Builtins announce themselves by default, and an announcement is a band at # the top of the body -- which moves every row this script clicks. What the # verbs do is what is under test, not the announcement. config Verbose off # the +Search listing is what this walks: LookWord list (search, acme's look3, # is the default; ctl.zig tests it) config LookWord list start 31 210 -n 1 wait 8000 code.txt stable 700 20000 # open code.txt: type the name in a shell, right-click it (ordinary look) press left 5 9 release left 5 9 stable 400 5000 key i text code.txt key esc settle 100 stable 400 5000 press right 6 9 release right 6 9 wait 10000 count_x stable 700 15000 snap opened # code.txt opens under the shell's text, its line 1 on screen row 8. # right-CLICK the identifier `count_x` (line 1, the 'n' at col 15). It names no # file, so the click searches for it: the results list both lines containing it. press right 15 8 release right 15 8 # Locations stack the target under its line now: two rows, two waits. wait 10000 code.txt:1:5-11 wait 10000 run count_x now stable 700 15000 snap search # right-SELECT `pick two` (line 4, sweep cols 8..15): a multi-word span passes # through verbatim (the space is kept), unlike a click's single-word expansion. press right 8 11 drag right 15 11 release right 15 11 wait 10000 code.txt:4:1-8 wait 10000 pick two words stable 700 15000 snap select # right-CLICK the path `sub/dep.txt:3` (line 2, col 18): isFileChar keeps / . : # so the click expands the whole token and it RESOLVES — a look, not a search — # opening dep.txt scrolled to line 3 (DEPTARGET). The "don't break paths" case. press right 18 9 release right 18 9 wait 10000 DEPTARGET stable 700 15000 snap path-open # A click does not merely LIST the hits, it goes to one: this re-search of # `count_x` (line 1, col 15) also STEPS onto hit 1, so the cursor lands in the # match, not where the click was. press right 15 8 release right 15 8 stable 700 15000 snap step1 # ...and the same word clicked in its OTHER place (line 3, col 10) opens NO # second +Search: the list is already armed on this pattern, so the click is # `n`. Cursor moves to hit 2, line 3. press right 10 10 release right 10 10 stable 700 15000 snap step2 # past the last hit the ring wraps: back to hit 1, line 1. press right 10 10 release right 10 10 stable 700 15000 snap step3 # acme sized code.txt to its four lines, so line 4 is on its last row: a # pane's last row is text like any other, never a resize handle. # A LEFT sweep over `pick two` (line 4, cols 8..15) and then a right CLICK # INSIDE it: the click takes the whole selection — the search is for the # two-word span (`4:1-8`), which the file-ish word expansion could never # produce from the single word under the click. press left 8 11 drag left 15 11 release left 15 11 stable 400 5000 press right 11 11 release right 11 11 stable 700 15000 snap selclick # ...and a right click OUTSIDE the selection is the ordinary word click again: # `words` (line 4, col 19), not the span left lying in the pane. press right 19 11 release right 19 11 stable 700 15000 snap outside