messages
Enables Zonvie’s external messages UI (ext_messages) and controls where each
class of message is shown.
[messages]external = truemsg_pos = { ext-float = "window", mini = "grid" } # display, window, or grid
# Where each class of message goes. These retarget the built-in routes, so# most setups need nothing else.view = "ext-float" # ordinary messagesview_error = "ext-float" # emsg, echoerr, lua_error, rpc_errorview_warn = "ext-float" # wmsgview_history = "split" # :messages / :historyview_search = "mini" # search_count| Key | Description |
|---|---|
external |
Use external messages UI (true/false) |
msg_pos |
Position anchor for message views: { ext-float = "...", mini = "..." }. Values: “display”, “window”, “grid” |
view |
View for ordinary messages (default “ext-float”) |
view_error |
View for errors: emsg, echoerr, lua_error, rpc_error (default “ext-float”) |
view_warn |
View for warnings: wmsg (default “ext-float”) |
view_history |
View for :messages / :history (default “split”) |
view_search |
View for search_count (default “mini”) |
View types are "mini", "ext-float", "confirm", "split", "none", and
"notification". Each view has its own auto-hide default: "mini" and
"ext-float" hide after 4 seconds, while "split", "confirm", and
"notification" stay until dismissed. A route’s timeout overrides that.
Message routing — [[messages.routes]]
Section titled “Message routing — [[messages.routes]]”Routes you declare are consulted before the built-in ones and never replace
them, so declaring a rule for msg_show leaves :messages and the mode/command
indicators on their defaults. The first match wins.
# Long output is easier to read in a split.[[messages.routes]]event = "msg_show"min_height = 20view = "split"
# Hide the ruler outright.[[messages.routes]]event = "msg_ruler"skip = true| Key | Description |
|---|---|
event |
Event type: “msg_show”, “msg_showmode”, “msg_showcmd”, “msg_ruler”, “msg_history_show” (optional, omit to match all) |
kind |
Array of message kinds to match (optional, omit to match all). Kinds: “emsg”, “echoerr”, “lua_error”, “rpc_error”, “wmsg”, “search_count”, “shell_out”, etc. Interactive prompt kinds are not matchable. |
level |
Match by severity instead of kind: “info”, “warn”, or “error” (optional) |
view |
View type (see the list above) |
timeout |
Auto-hide timeout in seconds (optional, 0 = no auto-hide) |
min_height |
Minimum line count to match (optional) |
max_height |
Maximum line count to match (optional) |
skip |
Do not display this message at all (optional) |
enter |
Whether showing the message moves the cursor into the view (optional). Only meaningful for “split” — the ext-float view is a synthetic grid the cursor cannot enter. Unset means the channel default: :messages takes the cursor, routed messages do not. |
return_prompt is never routed: Zonvie answers the press-enter prompt for you,
since the message it confirms has already been displayed.
Interactive prompts ("confirm", "confirm_sub", "number_prompt") are not
configurable — they always reach the confirm view with no timeout, because
Neovim blocks until one is answered. Routes that would send them elsewhere, skip
them, or auto-hide them are overridden.