-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Following HEAD: breaking changes on master #14090
Comments
|
Tree-sitter was bumped from 0.18 to 0.19. This breaks ABI compatibility with tree-sitter parsers compiled for 0.18. nvim-treesitter/nvim-treesitter#1000 will be needed to stay compatible. if you use tree-sitter both neovim core and nvim-treesitter need to be updated together (after the PR in nvim-treesitter repo is merged, which should happen very soon). |
|
#14649 was merged which deprecated focusable_float, focusable_preview, and fancy_floating_markdown . Please use open_floating_preview directly. |
Right now, empty tables are treated as lists in the deep extend method, which means if you use force and have an empty table value in a table on the right, it will overwrite the existing value. vim.tbl_deep_extend("force", { ss = { a = 1 } }, { ss = {} }) ==> empty This PR changes it such that: vim.tbl_deep_extend("force", { ss = { a = 1 } }, { ss = { b = 1} }) => has both a and b It also fixes an issue when merging values of a different type. This used to fail: |
#14831 replaces opts.open_loclist with unified opts.open, which now works for both open_qflist and open_loclist |
#15504 was merged which changes the handler signature to 4 arguments instead of 6. See details in the commit message for df17d78 Most plugins should already work transparently with these changes, as we warned authors ahead of time. If you have custom handlers in your configuration, you will also need to update them to match the new call style. If you want to support neovim 0.5 and 0.5.1+, you can wrap your handler like so: function M.mk_handler(fn)
return function(...)
local count = select('#', ...)
local config_or_client_id = select(4, ...)
local is_new = type(config_or_client_id) ~= 'number' or count == 4
if is_new then
return fn(...)
else
local err = select(1, ...)
local method = select(2, ...)
local result = select(3, ...)
local client_id = select(4, ...)
local bufnr = select(5, ...)
local config = select(6, ...)
return fn(err, result, { method = method, client_id = client_id, bufnr = bufnr }, config)
end
end
end See: mfussenegger/nvim-lsp-compl@29a81f3 for a worked example on how to add a compatibility layer. |
The legacy Instead, use the approach documented in
|
Breaking changes to Lua modules: |
Breaking change in LSP diagnostics API: Specifically:
|
Breaking changes from Neovim's implementation of Vim's blob feature
|
Breaking change for packages: start packages are not visible in |
Breaking change in Windows builds: Default build now uses LibUV 1.42.0 on all platforms, including Windows. This removes support for
(Note that the minimum required version for LibUV remains 1.28.0, so distributions may still build against older versions that retain support for earlier Windows versions.) |
|
|
Differences in API usage:
|
Renamed
|
#16252 merges a new change to the incremental sync implementation for the built-in language server client. This should fix handling of unicode (utf-8, 16, and 32) encodings as well as handling newlines correctly for windows and (extremely old pre macos 9) macs (because, why not?). The implementation should also be slightly faster, and is extremely commented to encourage external PRs. I also added test coverage for the most common failure cases. To revert to sending full buffers, should you find an issue: With lspconfig (or start_client for that matter), to disable incremental sync you can use the following. require('lspconfig').pyright.setup {
flags = {
allow_incremental_sync = false
}
} Please file PRs with test scenarios (see I am merging this (and providing the long explanatory post) so we have time to fully test before 0.6 is released. I will revert if there are widespread regressions.
|
32-bit Windows/MinGW builds are no longer part of the nightly/release artifacts. #16317 |
#19693 changed the nightly (and release) builds and appimages to be built on Ubuntu 20.04 instead of Ubuntu 18.04, which is being deprecated by Github. This means that Linux releases (including app images) from now on require GLIBC 2.29 or above. Users that cannot upgrade their distribution need to build from source instead. |
The 'winhighlight' feature was throughly reimplemented as window local highlight namespaces in #13457 . This is supposed to be fully backwards compatible while enabling many new usecases (like window local syntax highlighting). though if there unexpected changes to highlighting when updating master, this PR is likely the cause. |
#19862 changed the behavior of |
#19743 changed Vim functions In non-multigrid UI the only change is that the returned height now excludes winbar, and this is compatible with Vim. In multigrid UI this means the return value of these functions now reflect the space available for buffer lines in a window. No change in |
The rules for defining highlights in tree-sitter highlights.scm changed. #19931 Previously the following two mechanisms were available
Both of these are now removed. Instead capture names, including the initial
There are no special behaviour for upper-case names (case-insensitive just like all highlight group names). The same fallback rule still applies: if a highlight is defined for |
Highlight group names (#19830)Previously if a highlight group with a name outside the regexp Additionally the ASCII character period ( |
#20020 introduced the following breaking changes:
|
Treesitter parsers and queries (#15391) Neovim now bundles parsers and highlight queries for Lua, Vimscript, and C; by default the former are installed in To enable treesitter highlighting for Lua, add Note that this does not work with |
#20039 |
Treesitter runtime queries (#20105) The behavior of the runtime queries changed and now works as follows:
This has to be done to correctly handle different version of the queries, working with different parsers following #15391. |
#20217 made Lua Funcrefs work as methods in Vim script. When using a Funcref converted from a Lua function as a method in Vim script, the result of the base expression is now passed as the first argument instead of being ignored. |
#20103: The methods |
|
#20344 changed |
#20364 changed |
#20387 changed |
#20545: cscope has been removed |
#20428 removes The filetype detection logic and tests still align with Vim, so additions or changes still need to be contributed there first and then ported to Neovim. |
#21472:
|
#18706
|
#21768: In 'statuscolumn' evaluation, |
#21832: libiconv is now a required build dependency. |
#22060: |
#22137: Unsaved changes are now preserved rather than discarded when stdio channel is closed. |
#22257 removed the (undocumented) To enable treesitter highlighting for Lua files (or any of the file types with a bundled parser), either put vim.api.nvim_create_autocmd('FileType', {
pattern = 'lua', -- or { 'lua', 'help' },
callback = function() vim.treesitter.start() end,
}) |
Breaking changes are now tracked in
|
You can also subscribe to all changes to |
Moved from https://github.com/neovim/neovim/wiki/Following-HEAD
Breaking changes are now tracked in
:help news
https://github.com/neovim/neovim/blob/master/runtime/doc/news.txt at https://app.github-file-watcher.com/
:checkhealth
to detect and fix common problems.2021/3/9
#13875 was merged which makes it an error to use vim.fn to call functions in vim.api. For example, before this PR it was possible to call either
vim.fn.nvim_get_current_buf()
orvim.api.nvim_get_current_buf()
to get the current buffer; now, trying to call vim.fn.nvim_get_current_buf results in an error that says to use vim.api.nvim_get_current_buf instead. Any plugins that use vim.fn to call functions available in vim.api will therefore not work until updated to use vim.api.Older changes
Ye olde list of changes
2021/3/4
We have closed the github discussions in favour of our new forum https://neovim.discourse.group/. Please use that now. If there is some content from the github discussions you would like salvaged, contact us on gitter and we can restore it temporarily.
2021/3/3
Neovim 0.5 changed the undofile format compared to older versions ( #13973 ). New versions of neovim will not read undofiles written by nvim before #13973 (will show "incompatible version" error). Nvim 0.4 (or up to bda1292 ) can be used to recover older undofiles, so if you worried about unsaved changes lurking around in undofiles it would make sense to keep such version around somewhere to recover them.
This change was necessary to keep tree-sitter and plugins dependent on byte-level buffer change events fully working with undo states from a undofile.
2021/1/3
:LspInstall
and:LspInstallInfo
have been removed in lspconfig (in neovim/nvim-lspconfig#498 as a follow up of neovim/nvim-lspconfig#334). Refer to the server documentation to install them manually. Some servers may require cmd to be set to point at their previously installed location (elixir, sumneko, omnisharp).#13739 Logs for both neovim and the language server client have been moved to
$XDG_CACHE_DIR/nvim
.2020/11/23
We changed the way tree-sitter parsers are integrated in nvim. One major change is that the parser:parse() method changed to return a tree to a table of trees. Please expect the tree update callbacks to change soon.
2020/11/15
nvim_lsp has been renamed to lspconfig to make the goal of https://github.com/neovim/nvim-lspconfig/ clearer, i.e., it conveys only LSP server configurations. You should update your lua require calls as shown here neovim/nvim-lspconfig#348.
2021/1/3
:LspInstall and :LspInstallInfo have been removed in lspconfig (in neovim/nvim-lspconfig#498 as a follow up of neovim/nvim-lspconfig#334). Refer to the server documentation to install them manually. Some servers may require cmd to be set to point at their previously installed location (elixir, sumneko, omnisharp).
#13739 Logs for both neovim and the language server client have been moved to $XDG_CACHE_DIR/nvim.
2020/11/23
We changed the way tree-sitter parsers are integrated in nvim. One major change is that the parser:parse() method changed to return a tree to a table of trees. Please expect the tree update callbacks to change soon.
2020/11/15
nvim_lsp has been renamed to lspconfig to make the goal of https://github.com/neovim/nvim-lspconfig/ clearer, i.e., it conveys only LSP server configurations. You should update your lua require calls as shown here neovim/nvim-lspconfig#348.
2020/11/12
Large updates to vim.lsp.diagnostic. See #12655
2020/11/03
We moved tree-sitter as a dependency rather than vendoring the code. Thus there is now a new build dependency : libtree-sitter. At the time of writing, neovim is built against treesitter 0.17.3. Linux distributions and homebrew (already done) must update their package accordingly.
2020/09/24
We changed the behavior of folded lines so that it behaves more like regular lines (taking into account cursorline, as well as the column highlights such as LineNr) in #12515 . This departs from vim and may cause some issues so please bear with us as we fix them.
2020/09/09
PSA: Some larger changes to tree-sitter highlighting is planned to land on master very soon. Expect breakages for a little while. If you have a master working for your needs and want it to keep working, it might make sense to wait for a few days/weeks. But if you want to help with betatesting, please follow along. :] More updates will be posted here and on gitter.im/neovim/neovim regularly.
2020/03/03
#11716 foldcolumn changed from a number to a string to allow auto:X values. Also the limit was changed from 12 to 9.
2019/12/23
#11234 jobstart() or system() fail with error (instead of silently) if the command is not executable.
2019/12/04
#11135 sets nostartofline as a default. The cursor stays in the same column after gg or G for instance.
2019/07/07
Floating windows no longer implicitly disables the number column. Instead use style='minimal' argument to nvim_open_win() to disable UI features like number column, End-of-buffer lines etc.
2019/06/10
#10123 Nvim core requires libluv. This may require building with -DUSE_BUNDLED_LUV=ON if you were previously using -DUSE_BUNDLED_LUV=OFF. Previously luv was only needed for running tests; now nvim statically links libluv in order to provide the vim.loop Lua interface.
2019/03/31
#9819 MenuPopupChanged renamed to CompleteChanged.
2019/01/20
#9526: Neovim always uses the system allocator, instead of jemalloc.
2018/11/18
The Python package neovim was renamed to pynvim.
"Neovim" can mean a lot of things. It can relate to the editor, or the project, or (prior to this change) the Python module, or the Ruby gem, etc. Especially confusing was the fact that the Python side would refer to it as neovim whereas the Neovim side referred to it as python-client. Now, both sides call it pynvim for the greater good.
For the time being, neovim acts as a transitional package for the new pynvim. Unfortunately, due to limitations in pip, the neovim package cannot be safely upgraded with pip install --upgrade neovim on all systems.
Steps to update "pynvim" (formerly "neovim") Python package:
python -m pip uninstall neovim pynvim
python -m pip install pynvim
2018/09/22
#9024: The meaning of the --embed and --headless flags changed to facilitate better startup behaviour with external UIs. UI embedders (any user of nvim_ui_attach) must start Nvim without --headless:
nvim --embed
Embedders not using the UI protocol must use:
nvim --embed --headless
In the "--embed only" case Nvim waits for nvim_ui_attach before continuing startup (user config, reading buffers) so that UIs can deterministically handle (display) early messages, dialogs, etc. The client can do other requests before nvim_ui_attach (e.g. nvim_get_api_info for feature-detection). During this pre-startup phase the user config is of course not available (similar to --cmd).
For most UI embedders this improves startup behavior automatically, by supporting startup messages and swapfile dialogs. For others it is potentially a breaking change, which can be easily avoided by specifying --headless (which is backwards-compatible for that use-case).
UIs that need additional initialization after init.vim can use this pattern:
2018/06/10
Changes from #7679:
2018/02/23
Default fillchars for 'vert' and 'sep' changed from respectively | and - to │ and · when the ambiwidth setting is different from double, else old defaults apply. #8035
2017/11/18
VimL (Vimscript) compatibility: count is no longer an alias to v:count. This helps avoid mistakes in scripts. #7407
2017/08/21
:terminal now starts in normal mode (#6808), like any other buffer, instead of terminal mode. This avoids the cursor getting "trapped" when a terminal is started.
2017/05/15
The highlight option is now read-only (#6737), so that the built-in highlight groups (and their behaviors) are predictable and can be used as keys for features like winhighlight.
2017/04/03
Default 'mouse' setting changed from mouse=a to mouse= (empty). This will change again in the future after mouse=a is improved. To continue using mouse, add this to your init.vim:
set mouse=a
2017/04/02
Support for $NVIM_TUI_ENABLE_CURSOR_SHAPE was removed. Use the guicursor option to control cursor styling. See FAQ.
2016/12/12
#5529 merged Vim's support for "partial functions" which made Nvim more strict about when the implicit self variable is available. Functions that reference self (which is common with job callbacks) must either be declared as dict functions:
function! s:on_stdout(id, data, event) dict abort
or as part of the job options dictionary:
let s:opts = { ... }
function! s:opts.on_stdout(id, data, event) abort
Job callbacks also must have at least 3 parameters now. See #5763 (comment)
2016/11/05
'encoding' cannot be changed to a value other than "utf-8", even during initialization. #2905
(Background: [#2929][2929] restricted 'encoding' to be modifiable only during initialization. One year later, we've found no problems with UTF-8 as the internal encoding, and are now making this mandatory. This only affects the internals of Nvim, it doesn't affect file encodings or plugins.)
2016/02/14
:filetype plugin indent on and :syntax on are now executed by default after your vimrc.
See :help startup for complete details.
2015/10/17
The 'viminfo' option is now an alias for 'shada'. 'viminfo' can no longer include n and it can no longer be shared with Vim.
See #3469 for more information.
2015/07/26
The behavior of the mkdir() function has changed:
See #3041 for more information.
The text was updated successfully, but these errors were encountered: