Home Explore Blog CI



neovim

2nd chunk of `runtime/doc/news-0.9.txt`
478917f986dc954cde9d47487a45e52dc33a371f54dd81410000000100000fd4
 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()|

Title: Neovim 0.9: Further New Features and Enhancements
Summary
This section describes additional new features in Neovim 0.9, including the `NVIM_APPNAME` environment variable for configuring directories, the ability to run Lua scripts from the shell, an omnifunc implementation for Lua, an experimental Lua file loader, version string parsing, improved clipboard integration with tmux, the `showcmdloc` option for displaying command information, the `splitkeep` option for horizontal split behavior, fuzzy matching for command-line completion, enhanced diffing with `linematch`, the `--remote-ui` option, codelens clearing, LSP client support for `willSave` and `willSaveWaitUntil`, preliminary support for `workspace/didChangeWatchedFiles`, LSP DiagnosticsTag support, diagnostic status checking, and Treesitter enhancements.