# `@`...`` — a word that names a COMMAND instead of a file to open. The # delimiters are config.cmd_open/cmd_close and nothing else in the editor knows # how one is spelled. # # A backtick is not a file char, so the ordinary word expansion would stop dead # inside one and hand a look the fragment `echo`. config.wordBounds takes the # whole run instead, which is what makes a single CLICK the way you invoke one # (acme does the same for its own `<`/`|`/`>` command words). # # EXECUTE runs it and leaves you where you were; LOOK runs it and lands you in # the shell that answered — looking at a thing means being shown it, and a # directory's look has always been exactly that (a shell there, ls'd). # # And Look and Exec are ORDINARY BUILTINS now, so their names are executable # words like Save or Grep: `Look p.txt` run off the page is the same look a # right click on `p.txt` is. Which is also what makes `@`Look .`` nest — Exec # unwraps it and the contents go straight back through the one dispatcher. file cmds.txt @`echo ZZ''E` @`echo ZZ''L` Look p.txt @`Look .` file p.txt just text file zzmark.txt x start 31 120 cmds.txt wait 8000 Newcol Joincol wait 8000 cmds.txt stable 700 20000 snap opened # a single middle CLICK inside the run (col 11 is inside `echo`) expands to the # whole `@`echo ZZ''E`` and executes it in a shell; focus stays on the file press middle 11 4 release middle 11 4 wait 10000 ZZE stable 700 15000 snap atexec # LOOK on the second one (col 24, inside its `echo`) runs it too AND focuses # the shell that answered — that is the whole difference between the two verbs press right 24 4 release right 24 4 wait 10000 ZZL stable 700 15000 snap atlook # `Look p.txt` middle-dragged: the builtin by NAME, with an argument press middle 36 4 drag middle 45 4 release middle 45 4 wait 10000 just text stable 700 15000 snap lookword # nesting: `@`Look .`` — Exec unwraps it, `Look .` is parsed as the ordinary # Look builtin with an argument, and Look opens the directory (an existing # shell there, ls'd — zzmark.txt is only ever in that listing) press middle 49 4 release middle 49 4 wait 10000 zzmark.txt stable 700 15000 snap nested # the same syntax typed into a TAG — the other place the expansion has to know # about backticks (tagChordText). The look above left the shell focused, so `:` # opens ITS tag; `i` then End walks to the end of the tail, and the chord runs # the word under the cursor exactly as the body's does. key : key i key end key space text Exec key left key tab stable 700 8000 # ...except that word is `Exec` ITSELF, with nothing to execute. This is the # case that must not hang a re-entrant dispatcher: it runs out of argument # immediately and does nothing at all. snap execword key end key space text @`echo ZZ''T` key left key tab wait 10000 ZZT stable 700 15000 snap tagcmd