mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	docs(news): create new news, rename old news (#22922)
This commit is contained in:
		
							
								
								
									
										323
									
								
								runtime/doc/news-0.9.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										323
									
								
								runtime/doc/news-0.9.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,323 @@ | ||||
| *news-0.9.txt*    Nvim | ||||
|  | ||||
|  | ||||
|                             NVIM REFERENCE MANUAL | ||||
|  | ||||
|  | ||||
| Notable changes in Nvim 0.9 from 0.8                                 *news-0.9* | ||||
|  | ||||
|                                        Type |gO| to see the table of contents. | ||||
|  | ||||
| ============================================================================== | ||||
| BREAKING CHANGES | ||||
|  | ||||
| The following changes may require adaptations in user config or plugins. | ||||
|  | ||||
| • Cscope support is now removed (see |cscope| and |nvim-removed|): | ||||
|   - Commands removed: | ||||
|     - `:cscope` | ||||
|     - `:lcscope` | ||||
|     - `:scscope` | ||||
|     - `:cstag` | ||||
|   - Options removed: | ||||
|     - `cscopepathcomp` | ||||
|     - `cscopeprg` | ||||
|     - `cscopequickfix` | ||||
|     - `cscoperelative` | ||||
|     - `cscopetag` | ||||
|     - `cscopetagorder` | ||||
|     - `cscopeverbose` | ||||
|   - Eval functions removed: | ||||
|     - `cscope_connection()` | ||||
|  | ||||
|   Note: support for |ctags| remains with no plans to remove. | ||||
|  | ||||
|   See https://github.com/neovim/neovim/pull/20545 for more information. | ||||
|  | ||||
| • `:hardcopy` is now removed (see |hardcopy| and |nvim-removed|): | ||||
|   - Commands removed: | ||||
|     - `:hardcopy` | ||||
|   - Options removed: | ||||
|     - `printdevice` | ||||
|     - `printencoding` | ||||
|     - `printexpr` | ||||
|     - `printfont` | ||||
|     - `printheader` | ||||
|     - `printmbcharset` | ||||
|  | ||||
| • 'paste' option is now deprecated and 'pastetoggle' is removed. |paste| works | ||||
|   automatically in GUI and terminal (TUI) Nvim.  Just Paste It.™ | ||||
|  | ||||
| • Changes to |vim.treesitter.get_node_text()|: | ||||
|   - It now returns `string`, as opposed to `string|string[]|nil`. | ||||
|   - The `concat` option has been removed as it was not consistently applied. | ||||
|   - Invalid ranges now cause an error instead of returning `nil`. | ||||
|  | ||||
| • `help` treesitter parser was renamed to `vimdoc`. The only user-visible | ||||
|   change is that language-specific highlight groups need to be renamed from | ||||
|   `@foo.help` to `@foo.vimdoc`. | ||||
|  | ||||
| • The default value of 'commentstring' is now empty instead of "/*%s*/". | ||||
|  | ||||
| • libiconv and intl are now required build dependencies. | ||||
|  | ||||
| ============================================================================== | ||||
| NEW FEATURES | ||||
|  | ||||
| The following new APIs or features were added. | ||||
|  | ||||
| • Treesitter syntax highlighting for `help` files now supports highlighted | ||||
|   code examples. To enable, create a `.config/nvim/ftplugin/help.lua` with | ||||
|   the contents >lua | ||||
|     vim.treesitter.start() | ||||
| < | ||||
|   Note: Highlighted code examples are only available in the Nvim manual, not | ||||
|   in help files taken from Vim. The treesitter `vimdoc` parser is also work in | ||||
|   progress and not guaranteed to correctly highlight every help file in the | ||||
|   wild. | ||||
|  | ||||
| • Added support for semantic token highlighting to the LSP client. This | ||||
|   functionality is enabled by default when a client that supports this feature | ||||
|   is attached to a buffer. Opt-out can be performed by deleting the | ||||
|   `semanticTokensProvider` from the LSP client's {server_capabilities} in the | ||||
|   `LspAttach` callback. | ||||
|  | ||||
|   See |lsp-semantic-highlight| for more information. | ||||
|  | ||||
| • |vim.inspect_pos()|, |vim.show_pos()| and |:Inspect| allow a user to get or show items | ||||
|   at a given buffer position. Currently this includes treesitter 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 Neovim 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 |lua-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 |lua-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. | ||||
|  | ||||
| • |'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/specifications/lsp/3.17/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 virtual lines, | ||||
|   meaning that smooth scrolling can now be implemented more consistently. | ||||
|  | ||||
| • The `:= {expr}` syntax can be used to evaluate a lua expression, as | ||||
|   a shorter form of `:lua ={expr}`. `:=` and `:[range]=` without argument | ||||
|   are unchanged. However `:=#` and similar variants using |ex-flags| | ||||
|   are no longer supported. | ||||
|  | ||||
| • Unsaved changes are now preserved rather than discarded when |channel-stdio| | ||||
|   is closed. | ||||
|  | ||||
| • |nvim_open_win()| now accepts a relative `mouse` option to open a floating win | ||||
|   relative to the mouse. Note that the mouse doesn't update frequently without | ||||
|   setting `vim.o.mousemoveevent = true` | ||||
|  | ||||
| • |nvim_eval_statusline()| supports evaluating the |'statuscolumn'| through a | ||||
|   new `opts` field: `use_statuscol_lnum`. | ||||
|  | ||||
| • |nvim_buf_get_extmarks()| now accepts a -1 `ns_id` to request extmarks from | ||||
|   all namespaces and adds the namespace id to the details array. | ||||
|   Other missing properties have been added to the details array and marks can | ||||
|   be filtered by type. | ||||
|  | ||||
| • |vim.diagnostic.open_float()| (and therefore |vim.diagnostic.config()|) now | ||||
|   accepts a `suffix` option which, by default, renders LSP error codes. | ||||
|   Similarly, the `virtual_text` configuration in |vim.diagnostic.config()| now | ||||
|   has a `suffix` option which does nothing by default. | ||||
|  | ||||
| • |vim.fs.dir()| now has a `opts` argument with a depth field to allow | ||||
|   recursively searching a directory tree. | ||||
|  | ||||
| • |vim.gsplit()| supports all features of |vim.split()|. | ||||
|  | ||||
| • |:highlight| now supports an additional attribute "altfont". | ||||
|  | ||||
| • |:Man| manpage viewer supports manpage names containing spaces. | ||||
|  | ||||
| • |nvim_select_popupmenu_item()| now supports |cmdline-completion| popup menu. | ||||
|  | ||||
| • |nvim_list_uis()| reports all |ui-option| fields. | ||||
|  | ||||
| • |nvim_get_option_value()| now has a `filetype` option so it can return the | ||||
|   default option for a specific filetype. | ||||
|  | ||||
| • build: Several improvements were made to make the code generation scripts more | ||||
|   deterministic, and a `LUA_GEN_PRG` build parameter has been introduced to | ||||
|   allow for a workaround for some remaining reproducibility problems. | ||||
|  | ||||
| ============================================================================== | ||||
| REMOVED FEATURES | ||||
|  | ||||
| The following deprecated functions or APIs were removed. | ||||
|  | ||||
| • `filetype.vim` is removed in favor of |lua-filetype| | ||||
|   (Note that filetype logic and tests still align with Vim, so additions or | ||||
|   changes need to be contributed there first.) | ||||
|   See https://github.com/neovim/neovim/pull/20674. | ||||
|  | ||||
| • 'hkmap', 'hkmapp' and 'aleph' options were removed. Use 'keymap' option instead. | ||||
|  | ||||
| • |LanguageTree:parse()| no longer returns changed regions. Please use the | ||||
|   `on_changedtree` callbacks instead. | ||||
|  | ||||
| • `vim.highlight.create()`, `vim.highlight.link()` were removed, use |nvim_set_hl()| instead. | ||||
|  | ||||
| • `require'health'` was removed. Use |vim.health| instead. | ||||
|  | ||||
| ============================================================================== | ||||
| DEPRECATIONS | ||||
|  | ||||
| The following functions are now deprecated and will be removed in the next | ||||
| release. | ||||
|  | ||||
| • |vim.treesitter.language.add()| replaces `vim.treesitter.language.require_language()` | ||||
|  | ||||
| • |vim.treesitter.get_node_at_pos()| and |vim.treesitter.get_node_at_cursor()| | ||||
|   are both deprecated in favor of |vim.treesitter.get_node()|. | ||||
|  | ||||
| • `vim.api.nvim_get_hl_by_name()`, `vim.api.nvim_get_hl_by_id()` were deprecated, use |nvim_get_hl()| instead. | ||||
|  | ||||
| • The following top level Treesitter functions have been moved: | ||||
|   `vim.treesitter.inspect_language()`    -> `vim.treesitter.language.inspect()` | ||||
|   `vim.treesitter.get_query_files()`     -> `vim.treesitter.query.get_files()` | ||||
|   `vim.treesitter.set_query()`           -> `vim.treesitter.query.set()` | ||||
|   `vim.treesitter.query.set_query()`     -> `vim.treesitter.query.set()` | ||||
|   `vim.treesitter.get_query()`           -> `vim.treesitter.query.get()` | ||||
|   `vim.treesitter.query.get_query()`     -> `vim.treesitter.query.get()` | ||||
|   `vim.treesitter.parse_query()`         -> `vim.treesitter.query.parse()` | ||||
|   `vim.treesitter.query.parse_query()`   -> `vim.treesitter.query.parse()` | ||||
|   `vim.treesitter.add_predicate()`       -> `vim.treesitter.query.add_predicate()` | ||||
|   `vim.treesitter.add_directive()`       -> `vim.treesitter.query.add_directive()` | ||||
|   `vim.treesitter.list_predicates()`     -> `vim.treesitter.query.list_predicates()` | ||||
|   `vim.treesitter.list_directives()`     -> `vim.treesitter.query.list_directives()` | ||||
|   `vim.treesitter.query.get_range()`     -> `vim.treesitter.get_range()` | ||||
|   `vim.treesitter.query.get_node_text()` -> `vim.treesitter.get_node_text()` | ||||
|  | ||||
| • |nvim_exec()| is now deprecated in favor of |nvim_exec2()|. | ||||
|  | ||||
| • Renamed |vim.pretty_print()| to |vim.print()|. | ||||
|  | ||||
|  vim:tw=78:ts=8:sw=2:et:ft=help:norl: | ||||
| @@ -4,7 +4,9 @@ | ||||
|                             NVIM REFERENCE MANUAL | ||||
|  | ||||
|  | ||||
| Notable changes in Nvim 0.9 from 0.8                                     *news* | ||||
| Notable changes in Nvim 0.10 from 0.9                                    *news* | ||||
|  | ||||
| For changes in Nvim 0.9, see |news-0.9|. | ||||
|  | ||||
|                                        Type |gO| to see the table of contents. | ||||
|  | ||||
| @@ -13,279 +15,28 @@ BREAKING CHANGES                                                *news-breaking* | ||||
|  | ||||
| The following changes may require adaptations in user config or plugins. | ||||
|  | ||||
| • Cscope support is now removed (see |cscope| and |nvim-removed|): | ||||
|   - Commands removed: | ||||
|     - `:cscope` | ||||
|     - `:lcscope` | ||||
|     - `:scscope` | ||||
|     - `:cstag` | ||||
|   - Options removed: | ||||
|     - `cscopepathcomp` | ||||
|     - `cscopeprg` | ||||
|     - `cscopequickfix` | ||||
|     - `cscoperelative` | ||||
|     - `cscopetag` | ||||
|     - `cscopetagorder` | ||||
|     - `cscopeverbose` | ||||
|   - Eval functions removed: | ||||
|     - `cscope_connection()` | ||||
|  | ||||
|   Note: support for |ctags| remains with no plans to remove. | ||||
|  | ||||
|   See https://github.com/neovim/neovim/pull/20545 for more information. | ||||
|  | ||||
| • `:hardcopy` is now removed (see |hardcopy| and |nvim-removed|): | ||||
|   - Commands removed: | ||||
|     - `:hardcopy` | ||||
|   - Options removed: | ||||
|     - `printdevice` | ||||
|     - `printencoding` | ||||
|     - `printexpr` | ||||
|     - `printfont` | ||||
|     - `printheader` | ||||
|     - `printmbcharset` | ||||
|  | ||||
| • 'paste' option is now deprecated and 'pastetoggle' is removed. |paste| works | ||||
|   automatically in GUI and terminal (TUI) Nvim.  Just Paste It.™ | ||||
|  | ||||
| • Changes to |vim.treesitter.get_node_text()|: | ||||
|   - It now returns `string`, as opposed to `string|string[]|nil`. | ||||
|   - The `concat` option has been removed as it was not consistently applied. | ||||
|   - Invalid ranges now cause an error instead of returning `nil`. | ||||
|  | ||||
| • `help` treesitter parser was renamed to `vimdoc`. The only user-visible | ||||
|   change is that language-specific highlight groups need to be renamed from | ||||
|   `@foo.help` to `@foo.vimdoc`. | ||||
|  | ||||
| • The default value of 'commentstring' is now empty instead of "/*%s*/". | ||||
|  | ||||
| • libiconv and intl are now required build dependencies. | ||||
| • ... | ||||
|  | ||||
| ============================================================================== | ||||
| NEW FEATURES                                                    *news-features* | ||||
| ADDED FEATURES                                                     *news-added* | ||||
|  | ||||
| The following new APIs or features were added. | ||||
|  | ||||
| • Treesitter syntax highlighting for `help` files now supports highlighted | ||||
|   code examples. To enable, create a `.config/nvim/ftplugin/help.lua` with | ||||
|   the contents >lua | ||||
|     vim.treesitter.start() | ||||
| < | ||||
|   Note: Highlighted code examples are only available in the Nvim manual, not | ||||
|   in help files taken from Vim. The treesitter `vimdoc` parser is also work in | ||||
|   progress and not guaranteed to correctly highlight every help file in the | ||||
|   wild. | ||||
|  | ||||
| • Added support for semantic token highlighting to the LSP client. This | ||||
|   functionality is enabled by default when a client that supports this feature | ||||
|   is attached to a buffer. Opt-out can be performed by deleting the | ||||
|   `semanticTokensProvider` from the LSP client's {server_capabilities} in the | ||||
|   `LspAttach` callback. | ||||
|  | ||||
|   See |lsp-semantic-highlight| for more information. | ||||
|  | ||||
| • |vim.inspect_pos()|, |vim.show_pos()| and |:Inspect| allow a user to get or show items | ||||
|   at a given buffer position. Currently this includes treesitter 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 Neovim 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 |lua-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 |lua-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. | ||||
|  | ||||
| • |'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/specifications/lsp/3.17/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                                                 *news-changes* | ||||
| CHANGED FEATURES                                                 *news-changed* | ||||
|  | ||||
| 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 virtual lines, | ||||
|   meaning that smooth scrolling can now be implemented more consistently. | ||||
|  | ||||
| • The `:= {expr}` syntax can be used to evaluate a lua expression, as | ||||
|   a shorter form of `:lua ={expr}`. `:=` and `:[range]=` without argument | ||||
|   are unchanged. However `:=#` and similar variants using |ex-flags| | ||||
|   are no longer supported. | ||||
|  | ||||
| • Unsaved changes are now preserved rather than discarded when |channel-stdio| | ||||
|   is closed. | ||||
|  | ||||
| • |nvim_open_win()| now accepts a relative `mouse` option to open a floating win | ||||
|   relative to the mouse. Note that the mouse doesn't update frequently without | ||||
|   setting `vim.o.mousemoveevent = true` | ||||
|  | ||||
| • |nvim_eval_statusline()| supports evaluating the |'statuscolumn'| through a | ||||
|   new `opts` field: `use_statuscol_lnum`. | ||||
|  | ||||
| • |nvim_buf_get_extmarks()| now accepts a -1 `ns_id` to request extmarks from | ||||
|   all namespaces and adds the namespace id to the details array. | ||||
|   Other missing properties have been added to the details array and marks can | ||||
|   be filtered by type. | ||||
|  | ||||
| • |vim.diagnostic.open_float()| (and therefore |vim.diagnostic.config()|) now | ||||
|   accepts a `suffix` option which, by default, renders LSP error codes. | ||||
|   Similarly, the `virtual_text` configuration in |vim.diagnostic.config()| now | ||||
|   has a `suffix` option which does nothing by default. | ||||
|  | ||||
| • |vim.fs.dir()| now has a `opts` argument with a depth field to allow | ||||
|   recursively searching a directory tree. | ||||
|  | ||||
| • |vim.gsplit()| supports all features of |vim.split()|. | ||||
|  | ||||
| • |:highlight| now supports an additional attribute "altfont". | ||||
|  | ||||
| • |:Man| manpage viewer supports manpage names containing spaces. | ||||
|  | ||||
| • |nvim_select_popupmenu_item()| now supports |cmdline-completion| popup menu. | ||||
|  | ||||
| • |nvim_list_uis()| reports all |ui-option| fields. | ||||
|  | ||||
| • |nvim_get_option_value()| now has a `filetype` option so it can return the | ||||
|   default option for a specific filetype. | ||||
|  | ||||
| • build: Several improvements were made to make the code generation scripts more | ||||
|   deterministic, and a `LUA_GEN_PRG` build parameter has been introduced to | ||||
|   allow for a workaround for some remaining reproducibility problems. | ||||
| • ... | ||||
|  | ||||
| ============================================================================== | ||||
| REMOVED FEATURES                                                 *news-removed* | ||||
|  | ||||
| The following deprecated functions or APIs were removed. | ||||
|  | ||||
| • `filetype.vim` is removed in favor of |lua-filetype| | ||||
|   (Note that filetype logic and tests still align with Vim, so additions or | ||||
|   changes need to be contributed there first.) | ||||
|   See https://github.com/neovim/neovim/pull/20674. | ||||
|  | ||||
| • 'hkmap', 'hkmapp' and 'aleph' options were removed. Use 'keymap' option instead. | ||||
|  | ||||
| • |LanguageTree:parse()| no longer returns changed regions. Please use the | ||||
|   `on_changedtree` callbacks instead. | ||||
|  | ||||
| • `vim.highlight.create()`, `vim.highlight.link()` were removed, use |nvim_set_hl()| instead. | ||||
|  | ||||
| • `require'health'` was removed. Use |vim.health| instead. | ||||
| • ... | ||||
|  | ||||
| ============================================================================== | ||||
| DEPRECATIONS                                                *news-deprecations* | ||||
| @@ -293,31 +44,7 @@ DEPRECATIONS                                                *news-deprecations* | ||||
| The following functions are now deprecated and will be removed in the next | ||||
| release. | ||||
|  | ||||
| • |vim.treesitter.language.add()| replaces `vim.treesitter.language.require_language()` | ||||
| • ... | ||||
|  | ||||
| • |vim.treesitter.get_node_at_pos()| and |vim.treesitter.get_node_at_cursor()| | ||||
|   are both deprecated in favor of |vim.treesitter.get_node()|. | ||||
|  | ||||
| • `vim.api.nvim_get_hl_by_name()`, `vim.api.nvim_get_hl_by_id()` were deprecated, use |nvim_get_hl()| instead. | ||||
|  | ||||
| • The following top level Treesitter functions have been moved: | ||||
|   `vim.treesitter.inspect_language()`    -> `vim.treesitter.language.inspect()` | ||||
|   `vim.treesitter.get_query_files()`     -> `vim.treesitter.query.get_files()` | ||||
|   `vim.treesitter.set_query()`           -> `vim.treesitter.query.set()` | ||||
|   `vim.treesitter.query.set_query()`     -> `vim.treesitter.query.set()` | ||||
|   `vim.treesitter.get_query()`           -> `vim.treesitter.query.get()` | ||||
|   `vim.treesitter.query.get_query()`     -> `vim.treesitter.query.get()` | ||||
|   `vim.treesitter.parse_query()`         -> `vim.treesitter.query.parse()` | ||||
|   `vim.treesitter.query.parse_query()`   -> `vim.treesitter.query.parse()` | ||||
|   `vim.treesitter.add_predicate()`       -> `vim.treesitter.query.add_predicate()` | ||||
|   `vim.treesitter.add_directive()`       -> `vim.treesitter.query.add_directive()` | ||||
|   `vim.treesitter.list_predicates()`     -> `vim.treesitter.query.list_predicates()` | ||||
|   `vim.treesitter.list_directives()`     -> `vim.treesitter.query.list_directives()` | ||||
|   `vim.treesitter.query.get_range()`     -> `vim.treesitter.get_range()` | ||||
|   `vim.treesitter.query.get_node_text()` -> `vim.treesitter.get_node_text()` | ||||
|  | ||||
| • |nvim_exec()| is now deprecated in favor of |nvim_exec2()|. | ||||
|  | ||||
| • Renamed |vim.pretty_print| to |vim.print|. | ||||
|  | ||||
|  vim:tw=78:ts=8:sw=2:et:ft=help:norl: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Christian Clason
					Christian Clason