Editing the file and reloading
Development reference · View source
After editing the file by hand, run :config-reload. It re-reads the file
this editor loaded, including one given with --config.
- Nothing is watched or polled. The reload happens when you run the command.
- It covers only the workspace you run it in. Run it again in another running session to update that one.
Failed reloads change nothing. Invalid YAML, an out-of-range value, and a deleted file are reported, and the running configuration stays exactly as it was.
- A file replaced atomically (written elsewhere, then renamed) is always read whole.
- A file rewritten in place can be caught half-written. That fails as invalid YAML; reload again once the write finishes.
- A path that never had a file is reported as missing, not as deleted. Create the file and reload to start using it mid-session.
What applies immediately: everything except the restart settings below.
That includes the theme, notifications.history_limit, and the keys
section. Key dispatch, help, and key hints are rebuilt together, with each
running plugin’s keys laid back over them.
What keeps its startup value: editor.mouse, lsp.enable,
mode, workspace.state, and workspace.state_anchor. The status
line names them as needing a restart. The [config] page shows the file’s
value as saved, while the editor keeps using the startup value.
Partial failures:
- A
keyssection that collides with a running plugin’s binding is refused on its own. The rest of the file still applies. - A
themethat cannot be built keeps the current theme on screen and says so.
Language servers are reconfigured, not restarted.
- A server whose
command,args, andinitialization_optionsare unchanged keeps its process, handshake, open documents, and diagnostics. - A changed definition stops and starts again on the next request.
- A language removed from the file stops.
- A remembered launch failure is forgotten when its definition changes, so a corrected command is tried again.
Plugins are matched by id, so moving an entry within the file changes
nothing.
- An unchanged entry keeps its running process.
- A changed entry restarts its plugin. A removed or disabled entry stops it.
- An added entry starts. One that was disabled or refused at startup can be fixed and started the same way.
- A plugin that is busy keeps running until its work is done. Busy means a running job, an activity lease, a helper process, outstanding cleanup, an unsaved remote document, an unanswered command, local filesystem work, or a prompt you are part-way through.
- While a plugin waits,
:pluginsshows the pending state and a notification says so. The saved entry applies by itself when the work is gone.:plugin-restart <id>applies it sooner, or:plugin-stop <id>for an entry the file no longer enables.