ExecEval (execute-keys / evaluation-commands)

#1

Description

The execute-keys and evaluate-commands commands can be used to
run Kakoune commands:

execute-keys [<switches>] <key> ...
evaluate-commands [<switches>] <command> ...

execute-keys runs keys as if they were pressed, whereas
evaluate-commands evaluates its given parameters as if they were
entered in the command prompt. By default, their execution happens
within the context of the current client, and stops when the last
key/command is reached, or an error is raised.

execute-keys also save the following registers, who are then
restored when the commands have been executed: /, ", |,
^, @. evaluate-commands does not save any registers by
default. (See :doc registers)

Optional switches

-client <name>
execute in the context of the client named name

-try-client <name>
execute in the context of the client named name if such client
exists, or else in the current context

-draft
execute in a copy of the context of the selected client. Modifications
to the selections or input state will not affect the client. This
permits to make some modification to the buffer without modifying the
user’s selection

-itersel
execute once per selection, in a context with only the considered
selection. This permits avoiding cases where the selections may get
merged

-buffer <names>
execute in the context of each buffers in the comma separated list
names. * as a name can be used to iterate on all non-debug buffers
(See :doc buffers)

-save-regs <regs>
regs is a string of registers to be restored after execution (overwrites
the list of registers saved by default, c.f. description)

evaluate-commands specific switches

-no-hooks
disable hook execution while executing the keys/commands (See
:doc hooks)

execute-keys specific switches

-with-maps
use user key mapping in instead of built in keys (See
:doc mapping)

-with-hooks
the execution of keys will trigger existing hooks (See
:doc hooks)