12.1 Input Modes And Completion Responsibilities

EAT has four input modes. Emacsvox announces the mode name when you switch. The mode determines whether a key edits text in Emacs or reaches the terminal program.

Semi-character mode

The default. Most keys, including TAB, go to the terminal, while prefixes such as C-x, C-c, and M-x remain available. Use C-q before a normally reserved key to send it through. C-c C-j selects this mode.

Character mode

Supported input keys go to the terminal, useful for programs needing Emacs-like keys. Emacsvox’s review prefix remains available as described under Review retained terminal output. Enter character mode with C-c M-d and return to semi-character mode with C-M-m or M-RET before using ordinary Emacs command entry.

Emacs mode

Keys stay in Emacs and send no terminal input. Use it for ordinary buffer motion and inspection. Enter with C-c C-e.

Line mode

Edit the pending line locally and send it with RET. TAB invokes Emacs’s completion-at-point, whose result may be displayed by a front end such as Corfu. Enter from semi-character or Emacs mode with C-c C-l. Line mode is not available in EAT’s embedded Eshell terminal.

Line mode does not create unlimited history. eat-term-scrollback-size still limits retained text by characters, not lines; nil permits unlimited retention. The editable draft follows the terminal extent, and changing input modes does not change this limit.

In semi-character and character modes, TAB belongs to Bash Readline, a remote shell, router CLI, or the running terminal program. Corfu is not involved. In line mode, completion belongs to Emacs and does not query a remote CLI. Semi-character mode is therefore usually appropriate for SSH and network-device sessions. If an Emacs completion backend blocks in line mode, C-g cancels that Emacs operation; switch to semi-character mode when terminal completion was intended.

The shell must have its own completion configuration. For example, completing git pul to git pull in Bash requires suitable programmable definitions, often supplied by bash-completion. Emacsvox neither installs nor substitutes for those definitions.