Before a terminal-side TAB on the main screen, Emacsvox captures the public
screen and waits briefly for output to settle. An inline completion speaks the
newly displayed field; for example, ~/sr<TAB> can speak src slash after the
shell displays ~/src/.
An ambiguous completion printed as columns or help rows is presented as one transaction after the input line is redrawn. Small inferred lists speak up to eight candidates. Router-style descriptions keep their layout rather than being forced into a shell-token model. Large lists are counted and shortened for automatic speech. If candidates have already scrolled beyond the bounded screen, the count is a lower bound, such as “at least N visible”, not an invented total.
Identical repeated lists, split output, bells, wrapping, and resizing are coalesced without repeating the candidate text. This works from rendered results for local Readline, SSH, and unstructured router help. No visible change means there is nothing reliable to announce. On an alternate screen, TAB is navigation rather than shell completion.
Use C-e q c to read the retained candidate/help layout, or open frozen review with C-e q r and press c. This is useful for large or multi-column results and does not ask the terminal to complete again.