Files
watchexec.nvim/doc/watchexec.txt
T

286 lines
10 KiB
Plaintext
Raw Normal View History

*watchexec.nvim* Integrate the watchexec CLI into Neovim.
==============================================================================
CONTENTS *watchexec-contents*
1. Introduction ................................ |watchexec-introduction|
2. Requirements ................................ |watchexec-requirements|
3. Installation ................................ |watchexec-installation|
4. Setup ....................................... |watchexec-setup|
5. Configuration .............................. |watchexec-config|
6. Commands ................................... |watchexec-commands|
7. Keymaps .................................... |watchexec-keymaps|
8. Highlight Groups ........................... |watchexec-highlights|
9. API ........................................ |watchexec-api|
==============================================================================
1. INTRODUCTION *watchexec-introduction*
watchexec.nvim integrates the watchexec CLI into Neovim, providing a floating
or split output window for displaying file-watching command output. It also
includes a status indicator that shows the last command outcome (success or
failure) when the output window is hidden, and highlights relevant keywords
(Error, Warning, Success) in the output buffer.
==============================================================================
2. REQUIREMENTS *watchexec-requirements*
- Neovim >= 0.10.
- watchexec CLI: https://github.com/watchexec/watchexec
Install via cargo: `cargo install watchexec`
==============================================================================
3. INSTALLATION *watchexec-installation*
lazy.nvim~
>lua
{
"stevanfreeborn/watchexec.nvim",
opts = {},
}
<
packer.nvim~
>lua
use {
"stevanfreeborn/watchexec.nvim",
config = function()
require("watchexec").setup({})
end,
}
<
vim-plug~
>vim
Plug 'stevanfreeborn/watchexec.nvim'
lua require("watchexec").setup({})
<
==============================================================================
4. SETUP *watchexec-setup*
Call `setup()` in your init.lua with an optional configuration table:
>lua
require("watchexec").setup({
auto_scroll = false,
max_lines = 1000,
watchexec = {
bin = "watchexec",
args = { "--shell", "bash" },
},
window = {
type = "split",
split = "below",
size = 15,
},
indicator = {
enabled = true,
position = "bottom-right",
},
})
<
Without calling `setup()`, the plugin uses all default values.
==============================================================================
5. CONFIGURATION *watchexec-config*
The `setup()` function accepts an optional table |watchexec.Config|.
*watchexec.Config*
watchexec (table|nil) ~
*watchexec.Config.watchexec*
Options for the watchexec binary.
bin (string|nil) ~
Path to the watchexec executable. Auto-detected from PATH and candidate
locations (e.g. ~/.cargo/bin/watchexec).
Default: "watchexec"
args (string[]|nil) ~
Extra arguments passed to the watchexec binary before the user command.
Default: {}
window (table|nil) ~
*watchexec.Config.window*
Options for the output window.
type ("float"|"split"|nil) ~
Window type: "float" for a floating window, "split" for a split.
Default: "float"
split ("below"|"above"|"left"|"right"|nil) ~
Split direction. Only used when `type` is "split".
Default: "below"
size (integer|nil) ~
Height (for horizontal splits) or width (for vertical splits) in rows or
columns.
Default: 12
border (string|string[]|nil) ~
Border style for floating windows. See |nvim_open_win()|.
Default: "single"
float (table|nil) ~
Geometry for the floating window.
*watchexec.Config.window.float*
relative (string|nil) ~
Positioning relative to. See |nvim_open_win()|.
Default: "editor"
width (number|nil) ~
Width in columns. Values <= 1 are interpreted as a fraction of the
editor width.
Default: 0.8
height (number|nil) ~
Height in rows. Values <= 1 are interpreted as a fraction of the
editor height.
Default: 0.6
row (number|nil) ~
Row position. Values <= 1 are interpreted as a fraction.
Default: 0.5
col (number|nil) ~
Column position. Values <= 1 are interpreted as a fraction.
Default: 0.5
indicator (table|nil) ~
*watchexec.Config.indicator*
Options for the status indicator, a small non-focusable float that appears
when the main window is hidden to show the last command outcome.
enabled (boolean|nil) ~
Enable or disable the indicator entirely.
Default: true
position ("bottom-left"|"bottom-right"|"top-left"|"top-right"|nil) ~
Screen corner where the indicator appears.
Default: "bottom-right"
success_hl (string|nil) ~
Highlight group for the success state.
Default: "WatchexecSuccess"
failure_hl (string|nil) ~
Highlight group for the failure state.
Default: "WatchexecFailure"
width (integer|nil) ~
Width of the indicator in screen cells.
Default: 2
height (integer|nil) ~
Height of the indicator in screen cells.
Default: 1
2026-07-06 20:34:19 -05:00
padding (table|nil) ~
*watchexec.Config.indicator.padding*
Offset from the editor edges. Each value is a number of screen cells.
x (integer|nil) ~
Horizontal offset from the left or right edge.
Default: 1
y (integer|nil) ~
Vertical offset from the top or bottom edge.
Default: 3
2026-07-06 20:34:19 -05:00
patterns (table|nil) ~
Lua patterns for detecting command lifecycle in output.
*watchexec.Config.indicator.patterns*
success (string|nil) ~
Pattern that signals a successful command completion.
Default: "%[Command was successful%]"
running (string|nil) ~
Pattern that signals a command started running.
Default: "%[Running"
auto_scroll (boolean|nil) ~
*watchexec.Config.auto_scroll*
When true, scrolls the output window to the bottom on each new line.
Default: true
max_lines (integer|nil) ~
*watchexec.Config.max_lines*
Maximum number of lines kept in the output buffer. Oldest lines are trimmed
when exceeded.
Default: 5000
==============================================================================
6. COMMANDS *watchexec-commands*
:WatchexecRun {command} ~ *:WatchexecRun*
Start watchexec with the given shell command. Stops any previously running
process, opens the output window, and begins watching.
:WatchexecStop ~ *:WatchexecStop*
Stop the currently running watchexec process and clear the output window.
:WatchexecToggle ~ *:WatchexecToggle*
Toggle the watchexec output window. If a process is running and the window
is hidden, shows it. If visible, hides it. If no process is running, opens
or closes the window with a placeholder message.
==============================================================================
7. KEYMAPS *watchexec-keymaps*
<Leader>wxt ~ *watchexec-wxt*
Toggle the watchexec output window. Same as |:WatchexecToggle|.
<Leader>wxs ~ *watchexec-wxs*
Stop the currently running watchexec process. Same as |:WatchexecStop|.
<Leader>wxr ~ *watchexec-wxr*
Prompt for a shell command via |input()| and run it under watchexec. Same as
|:WatchexecRun|.
==============================================================================
8. HIGHLIGHT GROUPS *watchexec-highlights*
These groups are defined by the plugin and can be customized by linking or
overriding them in your colorscheme.
*hl-WatchexecSuccess*
WatchexecSuccess ~
Background highlight for the indicator when the last command succeeded.
Default: `guibg=#00ff00`
*hl-WatchexecFailure*
WatchexecFailure ~
Background highlight for the indicator when the last command failed.
Default: `guibg=#ff0000`
The runner also applies built-in diagnostic highlights to output lines:
|hl-DiagnosticError| ~ Matches error, fail, fatal keywords (case-insensitive)
|hl-DiagnosticWarn| ~ Matches warn keywords
|hl-DiagnosticOk| ~ Matches success, passed, ok keywords
==============================================================================
9. API *watchexec-api*
require("watchexec").setup({opts}) ~ *watchexec.setup*
Configure the plugin with |watchexec.Config|. Must be called before using
other functions.
require("watchexec").run({command}) ~ *watchexec.run*
Start a watchexec process for the given shell command. Stops any previous
process and opens the output window if hidden.
require("watchexec").stop() ~ *watchexec.stop*
Stop the currently running watchexec process, clear the output, and reset
the indicator.
require("watchexec").toggle() ~ *watchexec.toggle*
Toggle the output window. Behaviour depends on whether a process is
running and whether the window is currently visible (see |:WatchexecToggle|
for details).
==============================================================================
vim:tw=78:ts=8:ft=help:norl: