News
Nvim :help pages, generated
from source
using the tree-sitter-vimdoc parser.
Notable changes since Nvim 0.12
For changes in the previous release, see
news-0.12.
====== Remove this section before release. ======
The following changes to UNRELEASED features were made during the development
cycle (Nvim HEAD, the "master" branch).
EVENTS
EXPERIMENTS
LSP
LUA
vim.pos, vim.range always require the buf parameter.
DIAGNOSTICS
OPTIONS
TREESITTER
UI
VIMSCRIPT
These changes may require adaptations in your config or plugins.
API
ui-messages msg_show.bufwrite and
msg_show.completion messages are now
msg_show.progress events.
DIAGNOSTICS
vim.diagnostic.Opts.Status.format no longer accepts the table mapping
from severity to text. Use vim.diagnostic.Opts.Signs.text instead.
EDITOR
On Windows, the
trust db now stores paths with "/" slashes. This means the
trust store will be reset.
stdpath("log") moved to stdpath("state")/logs.
EVENTS
LSP
client.attached_buffers[buf] now stores languageId string (was boolean).
LUA
OPTIONS
PLUGINS
TREESITTER
The following new features were added.
API
nvim_open_win() zindex controls whether the UI will use a dimmed cursor
shape when an unfocused float is on top of the cursor.
nvim_echo() distinguishes zero percent from omitted percent for Progress
events.
BUILD
Building using "zig build" requires zig 0.16.x.
DEFAULTS
DIAGNOSTICS
EDITOR
EVENTS
TabMoved is triggered when tabs are reordered.
HIGHLIGHTS
Dimmed for text that should be de-emphasized.
LSP
LSP capabilities:
Support for nested snippets.
LUA
vim.ui.img can display images. Use
:checkhealth img to confirm your
terminal supports it.
writefile() treats Lua strings as "blob", so it can be used to write
binary data.
Added
__eq metamethod to
vim.VersionRange. 2 distinct but representing
the same range instances now compare equal.
Documentation for
vim.fn now points to preferred Lua alternatives when
available.
vim.pos can now convert between positions and buffer offsets.
vim.log for easily creating loggers.
OPTIONS
'winpinned' prevents window from closing unless specifically targeted.
treesitter-highlight performance on large injection-heavy files improves
by 50% to 100% by reusing edited child-tree ranges.
Nvim architecture allows pure-Lua implementations of some vim.fn
functions, which skips the Vimscript <=> Lua "bridge" (no data
conversion/marshalling) entirely, if the vim.fn function is called from
Lua.
The table holding LSP data is now cleared using table.clear,
thus reducing GC and memory reallocation during each data reset.
When parsing the received Content-Length messages,
the RPC client will no longer allocate extra strings.
PLUGINS
provider: add bun support for Node.js plugins
STARTUP
TERMINAL
TREESITTER
v_]N v_[N expand selection to sibling treesitter node.
TUI
The TUI will re-query the terminal's background color when resuming from
a suspended state, and Nvim will update
'background' accordingly.
User can override the builtin "terminfo" via
$NVIM_TERMDEFS. This is
similar to Vim's
t_xx options.
UI
VIMSCRIPT
v:starttime is the process start time (nanoseconds since UNIX epoch).
serverlist() with
info=true returns details for each server (own + peers).
These existing features changed their behavior.
:Open with no arguments uses the current file.
The "buffer" key was renamed to "buf" in these functions (but the old name
"buffer" is still accepted, for backwards compatibility):
These deprecated features were removed.