neovim/runtime/doc/news.txt
Lewis Russell c0952e62fd
feat(lua): add vim.system()
feat(lua): add vim.system()

Problem:

  Handling system commands in Lua is tedious and error-prone:
  - vim.fn.jobstart() is vimscript and comes with all limitations attached to typval.
  - vim.loop.spawn is too low level

Solution:

  Add vim.system().
  Partly inspired by Python's subprocess module
  Does not expose any libuv objects.
2023-06-07 13:52:23 +01:00

146 lines
5.8 KiB
Plaintext

*news.txt* Nvim
NVIM REFERENCE MANUAL
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.
==============================================================================
BREAKING CHANGES *news-breaking*
The following changes may require adaptations in user config or plugins.
• |vim.tbl_islist()| now checks whether a table is actually list-like (i.e.,
has integer keys without gaps and starting from 1). For the previous
behavior (only check for integer keys, allow gaps or not starting with 1),
use |vim.tbl_isarray()|.
• "#" followed by a digit no longer stands for a function key at the start of
the lhs of a mapping.
• `:behave` was removed. if you used `:behave mswin`, the following is equivalent: >vim
set selection=exclusive
set selectmode=mouse,key
set mousemodel=popup
set keymodel=startsel,stopsel
<
• When switching windows, |CursorMoved| autocommands trigger when Nvim is back
in the main loop rather than immediately. This is more compatible with Vim.
• |LspRequest| autocmd was promoted from a |User| autocmd to a first class
citizen.
• Renamed `vim.treesitter.playground` to `vim.treesitter.dev`.
==============================================================================
ADDED FEATURES *news-added*
The following new APIs or features were added.
• Neovim's LSP client now always saves and restores named buffer marks when
applying text edits.
• Nvim now supports the `positionEncoding` server capability. If a server
responds with the `positionEncoding` capability in its initialization
response, Nvim automatically sets the client's `offset_encoding` field.
• Dynamic registration of LSP capabilities. An implication of this change is
that checking a client's `server_capabilities` is no longer a sufficient
indicator to see if a server supports a feature. Instead use
`client.supports_method(<method>)`. It considers both the dynamic
capabilities and static `server_capabilities`.
• |vim.iter()| provides a generic iterator interface for tables and Lua
iterators |luaref-in|.
• Added |vim.keycode()| for translating keycodes in a string.
• Added |vim.treesitter.query.omnifunc()| for treesitter query files (set by
default).
• |'smoothscroll'| option to scroll by screen line rather than by text line
when |'wrap'| is set.
• |Query:iter_matches()| now has the ability to set the maximum start depth
for matches.
• Added inline virtual text support to |nvim_buf_set_extmark()|.
• The terminal buffer now supports reflow (wrapped lines adapt when the buffer
is resized horizontally). Note: Lines that are not visible and kept in
|'scrollback'| are not reflown.
• |vim.system()| for running system commands.
==============================================================================
CHANGED FEATURES *news-changed*
The following changes to existing APIs or features add new behavior.
• |vim.tbl_contains()| now works for general tables and allows specifying a
predicate function that is checked for each value. (Use |vim.list_contains()|
for checking list-like tables (integer keys without gaps) for literal values.)
• |vim.region()| can use a string accepted by |getpos()| as position.
• vim.diagnostic.config() now accepts a function for the virtual_text.prefix
option, which allows for rendering e.g., diagnostic severities differently.
• Defaults:
• 'shortmess' includes the "C" flag.
• Automatic linting of treesitter query files (see |ft-query-plugin|).
Can be disabled via: >lua
vim.g.query_lint_on = {}
< • Enabled treesitter highlighting for treesitter query files.
• The `workspace/didChangeWatchedFiles` LSP client capability is now enabled
by default.
• |LspRequest| autocmd callbacks now contain additional information about the LSP
request status update that occurred.
• `:source` without arguments treats a buffer with its 'filetype' set to "lua"
as Lua code regardless of its extension.
• |:checkhealth| buffer now implements |folding|. The initial folding status is
defined by the 'foldenable' option.
==============================================================================
REMOVED FEATURES *news-removed*
The following deprecated functions or APIs were removed.
• Vimball support is removed.
- :Vimuntar command removed.
==============================================================================
DEPRECATIONS *news-deprecations*
The following functions are now deprecated and will be removed in a future
release.
• Checkhealth functions:
- |health#report_error|, |vim.health.report_error()| Use |vim.health.error()| instead.
- |health#report_info|, |vim.health.report_info()| Use |vim.health.info()| instead.
- |health#report_ok|, |vim.health.report_ok()| Use |vim.health.ok()| instead.
- |health#report_start|, |vim.health.report_start()| Use |vim.health.start()| instead.
- |health#report_warn|, |vim.health.report_warn()| Use |vim.health.warn()| instead.
• |API| functions:
- |nvim_buf_get_option()| Use |nvim_get_option_value()| instead.
- |nvim_buf_set_option()| Use |nvim_set_option_value()| instead.
- |nvim_get_option()| Use |nvim_get_option_value()| instead.
- |nvim_set_option()| Use |nvim_set_option_value()| instead.
- |nvim_win_get_option()| Use |nvim_get_option_value()| instead.
- |nvim_win_set_option()| Use |nvim_set_option_value()| instead.
• `vim.loop` has been renamed to `vim.uv`.
vim:tw=78:ts=8:sw=2:et:ft=help:norl: