diff options
Diffstat (limited to 'runtime/doc/news-0.9.txt')
-rw-r--r-- | runtime/doc/news-0.9.txt | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/runtime/doc/news-0.9.txt b/runtime/doc/news-0.9.txt new file mode 100644 index 0000000000..789bc9e0bc --- /dev/null +++ b/runtime/doc/news-0.9.txt @@ -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 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. + +• |'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()| 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 |vim.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: |