captures,
LSP semantic tokens, syntax groups and extmarks.
• |vim.treesitter.inspect_tree()| and |:InspectTree| opens a split window
showing a text representation of the nodes in a language tree for the current
buffer.
• 'statuscolumn' option to customize the area to the side of a window,
normally containing the fold, sign and number columns. This new option follows
the 'statusline' syntax and can be used to transform the line numbers, create
mouse click callbacks for |signs|, introduce a custom margin or separator etc.
• |vim.secure.trust()|, |:trust| allows the user to manage files in trust database.
|vim.secure.read()| reads a file and prompts the user if it should be
trusted and, if so, returns the file's contents. Used by 'exrc'
• EditorConfig support is now builtin. This is enabled by default and happens
automatically. To disable it, users should add >lua
vim.g.editorconfig = false
<
(or the Vimscript equivalent) to their |config| file.
• A new environment variable named NVIM_APPNAME enables configuring the
directories where Nvim should find its configuration and state files. See
`:help $NVIM_APPNAME` .
• Added support for running Lua scripts from shell using |-l|. >
nvim -l foo.lua --arg1 --arg2
< Also works with stdin: >
echo "print(42)" | nvim -l -
• Added an omnifunc implementation for Lua, |vim.lua_omnifunc()|
• Added a new experimental |vim.loader| that byte-compiles and caches Lua files.
To enable the new loader, add the following at the top of your |init.lua|: >lua
vim.loader.enable()
• Added |vim.version| for parsing and comparing version strings conforming to
the semver specification.
• When using Nvim inside tmux 3.2 or later, the default clipboard provider
will now copy to the system clipboard. |provider-clipboard|
• 'showcmdloc' option to display the 'showcmd' information in the status
line or tab line. A new %S statusline item is available to place the
'showcmd' text in a custom 'statusline'. Useful for when 'cmdheight' is set
to 0.
• 'splitkeep' option to control the scroll behavior of horizontal splits.
• 'wildoptions' flag "fuzzy" enables |fuzzy-matching| during |cmdline-completion|.
• 'diffopt' now includes a `linematch` option to enable a second-stage diff on
individual hunks to provide much more accurate diffs. This option is also
available to |vim.diff()|
See https://github.com/neovim/neovim/pull/14537.
• |--remote-ui| option was added to connect to a remote instance and display
in it in a |TUI| in the local terminal. This can be used run a headless nvim
instance in the background and display its UI on demand, which previously
only was possible using an external UI implementation.
• Added a |vim.lsp.codelens.clear()| function to clear codelenses.
• Added support for the `willSave` and `willSaveWaitUntil` capabilities to the
LSP client. `willSaveWaitUntil` allows a server to modify a document before it
gets saved. Example use-cases by language servers include removing unused
imports, or formatting the file.
• Added preliminary support for the `workspace/didChangeWatchedFiles` capability
to the LSP client to notify servers of file changes on disk. The feature is
disabled by default and can be enabled by setting the
`workspace.didChangeWatchedFiles.dynamicRegistration=true` capability.
• |vim.diagnostic| now supports LSP DiagnosticsTag.
See: https://microsoft.github.io/language-server-protocol/specification/#diagnosticTag
• vim.diagnostic.is_disabled() checks if diagnostics are disabled in a given
buffer or namespace.
• Treesitter captures can now be transformed by directives. This will allow
more complicated dynamic language injections.
• |vim.treesitter.get_node_text()| now accepts a `metadata` option for
writing custom directives using |vim.treesitter.query.add_directive()|.
• |vim.treesitter.language.add()| replaces `vim.treesitter.language.require_language`.
• |vim.treesitter.foldexpr()|