Skip to content
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

Closed
teto opened this issue Mar 10, 2021 · 83 comments
Closed

Following HEAD: breaking changes on master #14090

teto opened this issue Mar 10, 2021 · 83 comments
Labels
compatibility compatibility with Vim or older Neovim enhancement feature request project-management Neovim project matters (release process, logo, etc.)

Comments

@teto
Copy link
Member

teto commented Mar 10, 2021

Moved from https://github.com/neovim/neovim/wiki/Following-HEAD

Breaking changes are now tracked in :help news



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() or vim.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

After those steps, it is safe to pip install neovim again, if any third-party package has it as a formal dependency. Otherwise it shouldn't be necessary.
import neovim is still supported, both in plugins and third-party software using it as a library. If import neovim fails, then the upgrade wasn't successful. Follow the instructions above.

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:

Before nvim_ui_attach send a single nvim_command request with the command "autocmd VimEnter * call rpcrequest(1, 'vimenter')".
In the vimenter method handler the UI can then safely execute any requests.
Nvim will only enter normal mode when the handler returns (because rpcrequest() is a blocking call).

2018/06/10

Changes from #7679:

Nvim treats a stdin stream as text by default:

echo foo | nvim

    To get the old behavior, pass stdin to -s:

    echo foo | nvim -s -

Windows only: nvim *.txt (glob/wildcard expression) is treated literally. Use the :next (:n) command instead:

nvim +"n *.txt"

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.

To disable cursor style changes, set guicursor to empty:

:set guicursor=

Note: guicursor is enabled by default only if Nvim is certain it won't cause problems on your terminal. If you know that cursor shaping works on your terminal, set guicursor in your init.vim:

:set guicursor=n-v-c:block-Cursor/lCursor-blinkon0,i-ci:ver25-Cursor/lCursor,r-cr:hor20-Cursor/lCursor

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.

If your vimrc calls :filetype, Neovim will not change your preference.
If your vimrc calls :filetype off or :syntax off, that will be respected.
If filetype plugin indent on and/or syntax on is in your vimrc, you can delete those lines.

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:

Assuming /tmp/foo does not exist and /tmp can be written to, mkdir('/tmp/foo/bar', 'p', 0700) will create both /tmp/foo and /tmp/foo/bar with the octal permissions 0700. Vim's mkdir() will create /tmp/foo with 0755.
If you try to create an existing directory with 'p', such as with mkdir('/', 'p')), mkdir() will silently fail. In Vim this was an error.
Upon failure, mkdir() related error messages now include strerror() text.

See #3041 for more information.

@teto teto added the enhancement feature request label Mar 10, 2021
@neovim neovim locked as off-topic and limited conversation to collaborators Mar 10, 2021
@teto teto pinned this issue Mar 10, 2021
@bfredl
Copy link
Member

bfredl commented Mar 15, 2021

nvim_set_hl_ns was renamed to nvim__set_hl_ns to indicate the API is not yet stable (it is going to change after 0.5.0, #13457 )

@bfredl
Copy link
Member

bfredl commented Mar 15, 2021

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).

@teto
Copy link
Member Author

teto commented Mar 16, 2021

vim.TSHighlighter will not work anymore starting from #14145 (it was deprecated months ago and should pose no issue).

@teto teto unpinned this issue Apr 2, 2021
@janlazo
Copy link
Contributor

janlazo commented May 8, 2021

nvim_win_set_buf does not block autocommands. #13664
Reverted in #14531 to not break nvim_open_win().

@mjlbach
Copy link
Contributor

mjlbach commented May 30, 2021

#14649 was merged which deprecated focusable_float, focusable_preview, and fancy_floating_markdown . Please use open_floating_preview directly.

@justinmk justinmk changed the title Following HEAD - subscribe to follow master breaking changes Following HEAD: breaking changes on master Jul 4, 2021
@mjlbach
Copy link
Contributor

mjlbach commented Jul 19, 2021

#15094:

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:
vim.tbl_deep_extend("force", {a=true}, {a={b= 1}})

@mjlbach
Copy link
Contributor

mjlbach commented Jul 22, 2021

#14831 replaces opts.open_loclist with unified opts.open, which now works for both open_qflist and open_loclist

@justinmk justinmk added compatibility compatibility with Vim or older Neovim project-management Neovim project matters (release process, logo, etc.) labels Aug 28, 2021
@justinmk justinmk added this to the unplanned milestone Aug 28, 2021
@mjlbach
Copy link
Contributor

mjlbach commented Sep 5, 2021

#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.

@justinmk
Copy link
Member

justinmk commented Sep 6, 2021

The legacy MANPAGER="nvim -c 'set ft=man' -" approach to configuring Nvim as your man pager is no longer supported. #15487

Instead, use the approach documented in :help :Man:

export MANPAGER='nvim +Man!'

@justinmk
Copy link
Member

justinmk commented Sep 9, 2021

Breaking changes to Lua modules:

@clason
Copy link
Member

clason commented Sep 16, 2021

Breaking change in LSP diagnostics API:

Specifically:

@janlazo
Copy link
Contributor

janlazo commented Sep 17, 2021

Breaking changes from Neovim's implementation of Vim's blob feature

@bfredl
Copy link
Member

bfredl commented Sep 18, 2021

Breaking change for packages: start packages are not visible in &rtp and vim.o.rtp. Use API functions nvim_list_runtime_path() and nvim_get_runtime_file() instead. #15632

@clason
Copy link
Member

clason commented Oct 5, 2021

Breaking change in Windows builds:

Default build now uses LibUV 1.42.0 on all platforms, including Windows. This removes support for

  • Windows 7
  • mouse and alternate buffers in TUI for Windows 8 and 8.1

(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.)

@clason clason pinned this issue Oct 5, 2021
@justinmk
Copy link
Member

:checkhealth changes #15259 , #15914 :

  • :checkhealth no longer collects and presents :echo output from healthchecks. It only presents data explicitly given to the health#report_* family of functions.
  • builtin healthchecks were renamed: instead of :checkhealth treesitter lsp , call :checkhealth vim.treesitter vim.lsp

@janlazo
Copy link
Contributor

janlazo commented Oct 17, 2021

DirChanged autocmd event, #15952 (comment)

  • Don't trigger DirChanged when :lcd, :tcd, :cd didn't change directory. (Relative path always triggers DirChanged, DirChanged is triggered when changing to the same directory using relative path DirChanged is triggered when changing to the same directory using relative path vim/vim#8978 (comment).)
  • Set to "auto" instead of "window" if triggered by 'autochdir'. v:event.scope is still "window".
  • Always call slash_adjust for cwd under MS Windows.
    Make the behavior of :lcd - and :tcd - match both Vim and Neovim's documentation.
  • Change scope name "tab" to "tabpage" to match Vim's "tabpage" pattern
  • Prevent DirChanged from being triggered by sesdir of 'sessionoptions'

@gpanders
Copy link
Member

vim.diagnostic.show_line_diagnostics and vim.diagnostic.show_position_diagnostics are removed in favor of vim.diagnostic.open_float: #16057

goto_next and goto_prev now take a "float" key in their options table rather than "enable_popup" and "popup_opts".

Differences in API usage:

Before After
vim.diagnostic.show_line_diagnostics() vim.diagnostic.open_float(0, {scope="line"})
vim.diagnostic.show_position_diagnostics() vim.diagnostic.open_float(0, {scope="cursor"})
vim.diagnostic.goto_next { enable_popup = false } vim.diagnostic.goto_next { float = false }
vim.diagnostic.goto_next { enable_popup = true, popup_opts = {...} } vim.diagnostic.goto_next { float = {...} }
vim.diagnostic.show_line_diagnostics({opts}, buffer, 17) vim.diagnostic.open_float(buffer, {{opts}, scope="line", pos=17}
vim.diagnostic.show_position_diagnositcs({opts}, buffer, {row, col}) vim.diagnostic.open_float(buffer, {{opts}, scope="cursor", pos={row, col}}

@justinmk
Copy link
Member

Renamed vim.mpack functions #16175

  • vim.mpack.unpack => vim.mpack.decode
  • vim.mpack.pack => vim.mpack.encode

@mjlbach
Copy link
Contributor

mjlbach commented Nov 9, 2021

#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 incremental_sync_spec.lua) if you find a bug, otherwise it is extremely difficult for me to reproduce/debug for you. There is a known issue with on_lines which should not impact users.

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.

Update: There is a regression in undo behavior, likely due to exposing an underling bug in nvim_buf_attach rather than the new incremental sync implementation itself. Please file reproductions at: #16274 and revert to non-incremental sync until fixed. Fixed.

@jamessan
Copy link
Member

32-bit Windows/MinGW builds are no longer part of the nightly/release artifacts. #16317

@clason
Copy link
Member

clason commented Aug 11, 2022

#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.

@bfredl
Copy link
Member

bfredl commented Aug 17, 2022

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.

@clason
Copy link
Member

clason commented Aug 21, 2022

#19862 changed the behavior of fargs in Lua callbacks for nvim_create_user_command with nargs='?' to match the behavior of nargs='*' if no arguments were provided (fargs = {} instead of fargs = { "" }).

@zeertzjq
Copy link
Member

#19743 changed Vim functions winheight(), winwidth(), getwininfo() to return inner window width and height.

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 nvim_win_get_height and nvim_win_get_width.

@bfredl
Copy link
Member

bfredl commented Aug 26, 2022

The rules for defining highlights in tree-sitter highlights.scm changed. #19931

Previously the following two mechanisms were available

  • use a capture name with initial uppercase. @WarningMsg.foo automatically mapped to highlight group WarningMsg
  • (undocumented but often used) extend the vim.treesitter.highlighter.hl_map dict to translate lowercase groups.

Both of these are now removed. Instead capture names, including the initial @, are now directly usable as highlight groups, both using ex commands and the api:

   :hi link @foo.bar MyHighlight
   :lua vim.api.nvim_set_hl(0, "@string.special", {fg="Green"})

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 @foo but not for @foo.bar, the former is used for @foo.bar captures.

@lewis6991
Copy link
Member

lewis6991 commented Aug 28, 2022

Highlight group names (#19830)

Previously if a highlight group with a name outside the regexp [a-zA-Z0-9_] was defined, Nvim would emit an invalid character warning message. This has now been promoted to an error with the code E5248.

Additionally the ASCII character period (.) and at-sign (@) has been added to the allowed list of characters of a highlight group name to support the application of defining hierarchical highlight groups, e.g. @keyword.

@zeertzjq
Copy link
Member

zeertzjq commented Aug 31, 2022

#20020 introduced the following breaking changes:

  • nvim_get_keymap now always returns a LuaRef object as callback for a Lua mapping regardless of how it is called. The LuaRef object can be called from Lua and Vim script, but is lost over RPC.
  • maparg() now returns a Funcref instead of a ref number as callback for a Lua mapping. The Funcref can be called from Lua and Vim script, but is lost over RPC.

@clason
Copy link
Member

clason commented Sep 6, 2022

Treesitter parsers and queries (#15391)

Neovim now bundles parsers and highlight queries for Lua, Vimscript, and C; by default the former are installed in /usr/local/lib/nvim/parsers, the latter in /usr/local/share/nvim/runtime/queries. Parsers and queries from plugins and user configs should take precedence, but conflicts cannot be ruled out in some situations.

To enable treesitter highlighting for Lua, add vim.g.ts_highlight_lua = true to your init.lua. (Note that this disables regex syntax highlighting, which plugins may rely on for functionality. In this case, add vim.bo.syntax = 'ON' to ftplugin/lua.lua in your config.)

Note that this does not work with brew install neovim --HEAD, which doesn't bundle parsers, see https://github.com/orgs/Homebrew/discussions/3611.

@bfredl
Copy link
Member

bfredl commented Sep 6, 2022

#20039 nvim_parse_cmd() now returns tab = -1 instead of tab = 0 when :tab modifier is absent. This makes it possible for :[n]tab to be properly forwarded to nvim_cmd() for all valid non-negative values.

@vigoux
Copy link
Member

vigoux commented Sep 8, 2022

Treesitter runtime queries (#20105)

The behavior of the runtime queries changed and now works as follows:

  • The first query in the rtp without and extends modeline will be used as the base query (typically implies the priority "user config > plugins > bundled runtime").
  • All queries (without a specific order) with an extends modeline are concatenated with the base query, see :h lua-treesitter-query.

This has to be done to correctly handle different version of the queries, working with different parsers following #15391.

@zeertzjq
Copy link
Member

zeertzjq commented Sep 16, 2022

#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.

@lewis6991
Copy link
Member

#20103: The methods append, prepend, remove in vim.opt[_local] no longer return a value and now act on the option object in-place.

@justinmk
Copy link
Member

  • renamed vim.treesitter.get_captures_at_position => vim.treesitter.get_captures_at_pos
  • renamed vim.treesitter.get_node_at_position => vim.treesitter.get_node_at_pos

#20331

@zeertzjq
Copy link
Member

#20344 changed :undo! to notify buffer update callbacks.

@zeertzjq
Copy link
Member

#20364 changed nvim_parse_cmd to omit count, range, reg fields for commands that do not support these fields, so that the result of nvim_parse_cmd can be used directly in nvim_cmd without causing an error.

@zeertzjq
Copy link
Member

#20387 changed nvim_cmd to use digits in the beginning of the first argument as count if the command supports a count.

@lewis6991
Copy link
Member

#20545: cscope has been removed

@clason
Copy link
Member

clason commented Oct 17, 2022

#20428 removes filetype.vim in favor of the now default filetype.lua. (If you install from the repo, make sure to clean out /usr/local/share/nvim/runtime before make install.)

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.

@lewis6991
Copy link
Member

#21472: :hardcopy is now removed

  • Commands removed:
    • :hardcopy
  • Options removed:
    • printdevice
    • printencoding
    • printexpr
    • printfont
    • printheader
    • printmbcharset

@justinmk
Copy link
Member

justinmk commented Jan 7, 2023

#18706 nvim -l now invokes Lua scripts instead of setting the 'lisp' option. To set the 'lisp' option as -l formerly did, just set it like any other option:

nvim -c "set lisp"

@zeertzjq
Copy link
Member

#21768: In 'statuscolumn' evaluation, v:wrap has been replaced by v:virtnum. v:virtnum is negative when drawing virtual lines, zero when drawing the actual buffer line, and positive when drawing the wrapped part of a buffer line.

luukvbaal referenced this issue in luukvbaal/statuscol.nvim Jan 18, 2023
@lewis6991
Copy link
Member

#21832: libiconv is now a required build dependency.

@dundargoc
Copy link
Member

#22060: has("debug") has been removed.

@zeertzjq
Copy link
Member

#22137: Unsaved changes are now preserved rather than discarded when stdio channel is closed.

@clason
Copy link
Member

clason commented Feb 15, 2023

#22257 removed the (undocumented) vim.g.ts_highlight_lua variable that enabled treesitter highlighting for Lua files. (This variable was only meant for easier testing during the last development cycle.)

To enable treesitter highlighting for Lua files (or any of the file types with a bundled parser), either put vim.treesitter.start() in a .config/nvim/ftplugin/lua.lua (and/or help.lua, c.lua, vim.lua) or in an autocommand like

vim.api.nvim_create_autocmd('FileType', {
  pattern = 'lua', -- or { 'lua', 'help' },
  callback = function() vim.treesitter.start() end,
})

@justinmk
Copy link
Member

justinmk commented Mar 12, 2023

Breaking changes are now tracked in :help news

@justinmk justinmk unpinned this issue Mar 12, 2023
@clason
Copy link
Member

clason commented Mar 12, 2023

You can also subscribe to all changes to news.txt with a RSS reader via http:https://github.com/neovim/neovim/commits/master/runtime/doc/news.txt.atom

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
compatibility compatibility with Vim or older Neovim enhancement feature request project-management Neovim project matters (release process, logo, etc.)
Projects
None yet
Development

No branches or pull requests