Home Explore Blog CI



neovim

3rd chunk of `runtime/doc/news-0.9.txt`
1ee8f9cf606d83733c9f8fcdef251f5c9560084385074dd00000000100000bad
 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()| can be used for 'foldexpr' to use treesitter for folding.

• Expanded the TSNode API with:
  - |TSNode:tree()|
  - |TSNode:has_changes()|
  - |TSNode:extra()|
  - |TSNode:equal()|

  Additionally |TSNode:range()| now takes an optional {include_bytes} argument.

• Treesitter injection queries now use the format described at
  https://tree-sitter.github.io/tree-sitter/syntax-highlighting#language-injection .
  Support for the previous format will be removed in a future release.

• Added |nvim_get_hl()| for getting highlight group definitions in a format
  compatible with |nvim_set_hl()|.

• |vim.filetype.get_option()| to get the default option value for a specific
  filetype. This is a wrapper around |nvim_get_option_value()| with caching.

• `require'bit'` is now always available |lua-bit|

==============================================================================
CHANGED FEATURES

The following changes to existing APIs or features add new behavior.

• 'exrc' now supports `.nvim.lua` file.
• 'exrc' is no longer marked deprecated.

• The |TUI| is changed to run in a separate process (previously, a separate
  thread was used). This is not supposed to be a visible change to the user,
  but might be the cause of subtle changes of behavior and bugs.

  Previously, the TUI could be disabled as a build time feature (+tui/-tui),
  resulting in a nvim binary which only could be run headless or embedded
  in an external process. As of this version, TUI is always available.

• Vim's `has('gui_running')` is now supported as a way for plugins to check if
  a GUI (not the |TUI|) is attached to Nvim. |has()|

• |msgsep| is now always enabled even if 'display' doesn't contain the "msgsep"
  flag. It is no longer possible to scroll the whole screen when showing
  messages longer than 'cmdheight'.

• API calls now show more information about where an exception happened.

• The `win_viewport` UI event now contains information about

Title: Neovim 0.9: Further Language Server Protocol, Treesitter, and API Improvements; Changed Features
Summary
This section details continued improvements to Neovim 0.9, including enhancements to Language Server Protocol (LSP) support with file modification capabilities, diagnostics, and file change notifications. It also covers Treesitter improvements, such as capture transformations, new API functions, and updates to injection query formats. Additionally, API enhancements like highlight group definitions and filetype option retrieval are described. The `bit` library is always available. The section also lists changed features, including `.nvim.lua` support for 'exrc', the TUI running in a separate process, support for `has('gui_running')`, message separation always enabled, improved exception information, and updates to the `win_viewport` UI event.