Skip to content
6264aa5
Compare
Choose a tag to compare
Pre-release
NVIM v0.8.0-dev-852-g6264aa521
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3

Install

Windows

Zip

  1. Download nvim-win64.zip
  2. Extract the zip.
  3. Run nvim-qt.exe

MSI

  1. Download nvim-win64.msi
  2. Run the MSI
  3. Search and run nvim-qt.exe or run nvim.exe on your CLI of choice.

macOS

  1. Download nvim-macos.tar.gz
  2. Run xattr -c ./nvim-macos.tar.gz (to avoid "unknown developer" warning)
  3. Extract: tar xzvf nvim-macos.tar.gz
  4. Run ./nvim-macos/bin/nvim

Linux (x64)

Tarball

  1. Download nvim-linux64.tar.gz
  2. Extract: tar xzvf nvim-linux64.tar.gz
  3. Run ./nvim-linux64/bin/nvim

Debian Package

  1. Download nvim-linux64.deb
  2. Install the package using sudo apt install ./nvim-linux64.deb
  3. Run nvim

AppImage

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

90abe381ef1f6d5c5f7aa373ffd1188025c59415181d7167540dcce983f702bd  nvim-linux64.tar.gz
cc795430da175eba0b69e86e5b6f30858986cb7ab8449763fb997a1b05374090  nvim-linux64.deb
2509f4332198625f55eec6d134b2e9beb4d32fd98ccdc93478c1fbf3687fb5e7  nvim.appimage
f49f23b31a99baede9da6f61bbc5d5426f7233c6cfd0b4afc60c04c43c6ddf40  nvim.appimage.zsync
22842dba79170e7c4831f2e7ba35827edfa30bcdecf96528cd9c95f755a03dba  nvim-macos.tar.gz
42a7f72e85d5e7f58fb55c64d4e0fc3d180ddf7059b16820a15b8ca66607edaf  nvim-win64.zip
3fa01882fa6944df716cf1a9218de2dcc7749b29b64aab83acd42f378820d028  nvim-win64.msi
v0.7.2
Compare
Choose a tag to compare
NVIM v0.7.2
Build type: Release
LuaJIT 2.1.0-beta3

Install

Windows

Zip

  1. Download nvim-win64.zip
  2. Extract the zip.
  3. Run nvim-qt.exe

MSI

  1. Download nvim-win64.msi
  2. Run the MSI
  3. Search and run nvim-qt.exe or run nvim.exe on your CLI of choice.

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-macos/bin/nvim

Linux (x64)

Tarball

  1. Download nvim-linux64.tar.gz
  2. Extract: tar xzvf nvim-linux64.tar.gz
  3. Run ./nvim-linux64/bin/nvim

Debian Package

  1. Download nvim-linux64.deb
  2. Install the package using sudo apt install ./nvim-linux64.deb
  3. Run nvim

AppImage

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

fa75852890ca4b57551da194c696d3bbd14d9d2e966bc188d1e7e52ee942b71d  nvim-linux64.tar.gz
dce77cae95c2c115e43159169e2d2faaf93bce6862d5adad7262f3aa3cf60df8  nvim-linux64.deb
33b5d020c730b6d1b5185b1306ead83b6b8f8fab0239e0580c72b5224a9658e1  nvim.appimage
0ef9478020bb6539b0f8e0d037e65cd5c69bfcb2353ee6231b0131fd30cfbd58  nvim.appimage.zsync
39cb6b62f965dccebe433083e33974e1af3c4579a14bf818066b3d5250968495  nvim-macos.tar.gz
0e969e15c7e4d9b128ec1e06159ead386d262fdc94616ddbb0c245abcc798ae8  nvim-win64.zip
8cd7d3ae8ceeff9c0af8e5b1e216beb86230494f50f2f8dad2684fd2936b1494  nvim-win64.msi
Compare
Choose a tag to compare
NVIM v0.7.2
Build type: Release
LuaJIT 2.1.0-beta3

Install

Windows

Zip

  1. Download nvim-win64.zip
  2. Extract the zip.
  3. Run nvim-qt.exe

MSI

  1. Download nvim-win64.msi
  2. Run the MSI
  3. Search and run nvim-qt.exe or run nvim.exe on your CLI of choice.

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-macos/bin/nvim

Linux (x64)

Tarball

  1. Download nvim-linux64.tar.gz
  2. Extract: tar xzvf nvim-linux64.tar.gz
  3. Run ./nvim-linux64/bin/nvim

Debian Package

  1. Download nvim-linux64.deb
  2. Install the package using sudo apt install ./nvim-linux64.deb
  3. Run nvim

AppImage

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

fa75852890ca4b57551da194c696d3bbd14d9d2e966bc188d1e7e52ee942b71d  nvim-linux64.tar.gz
dce77cae95c2c115e43159169e2d2faaf93bce6862d5adad7262f3aa3cf60df8  nvim-linux64.deb
33b5d020c730b6d1b5185b1306ead83b6b8f8fab0239e0580c72b5224a9658e1  nvim.appimage
0ef9478020bb6539b0f8e0d037e65cd5c69bfcb2353ee6231b0131fd30cfbd58  nvim.appimage.zsync
39cb6b62f965dccebe433083e33974e1af3c4579a14bf818066b3d5250968495  nvim-macos.tar.gz
0e969e15c7e4d9b128ec1e06159ead386d262fdc94616ddbb0c245abcc798ae8  nvim-win64.zip
8cd7d3ae8ceeff9c0af8e5b1e216beb86230494f50f2f8dad2684fd2936b1494  nvim-win64.msi
Compare
Choose a tag to compare
NVIM v0.7.0
Build type: Release
LuaJIT 2.1.0-beta3

Install

Windows

Zip

  1. Download nvim-win64.zip
  2. Extract the zip.
  3. Run nvim-qt.exe

MSI

  1. Download nvim-win64.msi
  2. Run the MSI
  3. Search and run nvim-qt.exe or run nvim.exe on your CLI of choice.

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-osx64/bin/nvim

Linux (x64)

Tarball

  1. Download nvim-linux64.tar.gz
  2. Extract: tar xzvf nvim-linux64.tar.gz
  3. Run ./nvim-linux64/bin/nvim

Debian Package

  1. Download nvim-linux64.deb
  2. Install the package using sudo apt install ./nvim-linux64.deb
  3. Run nvim

AppImage

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

5b3fced3f185ae1e1497cb5f949597c4065585fc26e7cd25a31f5f791dbd9b59  nvim-linux64.tar.gz
4c36e1708b99f24327cde6fff2c19c2b4217e1a289fac90c2c10492df3ea7a71  nvim-linux64.deb
ac1caae4f1c54e0ce126b9313d993cb0d1cc4a81ef3e09dd26772be37aaa61db  nvim.appimage
9711fd721732ac189e8fa40aea6aadc5816861cf53f6ac498bd21cd6cf602f85  nvim.appimage.zsync
6260a2edb2da35af02b986c8a6506138afcb3f78f81a80734214b2cadf390a42  nvim-macos.tar.gz
a72a90e2897ea296b777c325a37c981a0b51e2fe0c8b8735e3366b65e958cddc  nvim-win64.zip
c79b647338c3728e8d690ff70f81a4dda815adf9195cfdcfaa4f715514b0b3b2  nvim-win64.msi

BREAKING CHANGES

  • Support for Python 2 is dropped. For Python 3, the minimum supported version is 3.6. Legacy :pythonx commands are still available, and always uses the python 3 provider.

  • api: Existing usages of nvim_buf_set_text that use negative line numbers will be off-by-one.

  • highlight: signature of vim.highlight.range was changed.

  • input: distinguish between some input keys which previously were synonyms. This will break some exiting mappings.

    • <cr>, <tab> and <esc> are no longer considered equivalent to <c-m>, <c-i> and <c-[> respectively. In case the terminal or GUI supports distinguishing these keys, these can now be mapped separately. But even if the terminal only can send one code you might still need to change what variant is used in the config.

Features

Core APIs:

  • api: add support for lua function & description in keymap (b411f43)

  • api: add api and lua autocmds (991e472)

  • api: nvim_clear_autocmd (b80651e)

  • api: pass args table to autocommand callbacks (30bc02c)

  • api: remove Lua autocommand callbacks when they return true (#17784) (be35d3c)

  • api: implement nvim_{add,del}_user_command (eff11b3)

  • api: implement nvim_buf_get_text (#15181) (11f7aee)

  • api: add nvim_get_option_value (71ac00c)

  • highlight: ns=0 to set :highlight namespace (4aa0cdd)

  • highlight: support for blend in nvim_set_hl (#17516) (b5bf487)

  • api: add strikethrough, nocombine to set_hl (cb18545)

  • api: relax statusline fillchar width check (3011794)

Lua:

  • lua: add vim.keymap (6d41f65)

  • lua: add vim.spell (#16620) (e11a44a)

  • lua: add proper support of luv threads (b87867e)

  • lua: make :lua =expr print result of expr (d442546)

  • lua: handle lazy submodules in :lua vim. wildmenu completion (5ed6080)

  • lua: add notify_once() (#16956) (d78e466)

  • lua: add support for multiple optional types in vim.validate (#16864) (55c4393)

  • lua: show proper verbose output for lua configuration (ebfe083)

  • lua: more conversions between LuaRef and Vim Funcref (c8656e4)

  • lua: support converting nested Funcref back to LuaRef (#17749) (cac90d2)

  • call __tostring on lua errors if possible before reporting to user (81bffbd)

  • filetype.lua (#16600) (3fd454b)

  • filetype.lua: add support for files under .git (7a574e5)

  • filetype.lua: add support for patch files (27b664a)

  • filetype.lua: add support for tmux.conf files (94d5358)

  • filetype.lua: add support for txt files (#16926) (a45b578)

  • filetype.lua: Add typescript extension to filetype detection (#16923) (8ade800)

  • filetype.lua: fix .cc file not detected (c38d602)

  • filetype.lua: fix .env file not detected (19864bd)

  • filetype: convert patterns for mail buffers (#17238) (4458413)

  • filetype: support scripts.vim with filetype.lua (#17517) (fdea157)

UI and decorations:

  • decorations: support signs (30e4cc3)
  • extmarks: add strict option (11142f6)
  • api: expose extmark more details (5971b86)
  • api: expose extmark right_gravity and end_right_gravity (3d9ae9d)
  • use nvim_buf_set_extmark for vim.highlight (#16963) (b455e01)
  • statusline: support multibyte fillchar (be15ac0)
  • add support for global statusline (5ab1229), closes #9342

Treesitter:

  • ui: allow conceal to be defined in decorations and tree-sitter queries (6eca9b6)
  • tree-sitter: allow Atom-style capture fallbacks (#14196) (8ab5ec4)
  • treesitter: add more default groups to highlight map (#17835) (6d648f5)
  • treesitter: multiline match predicates (6e6c36c)
  • treesitter: set allocator when possible (b1e0aa6)
  • ts: add support for multiline nodes in get_node_text (#14999) (1f3c059)
  • ts: expose minimum language version to lua (#17186) (8c140be)
  • runtime: add query filetype (#17905) (2e85af4)

LSP and diagnostic:

  • diagnostic: add "code" to the diagnostic structure (#17510) (5d6006f)
  • diagnostic: allow retrieving current diagnostic config (c915571)
  • lsp,diagnostic: open folds in jump-related functions (#16520) (222ef0c)
  • lsp: add buf_detach_client (#16250) (1b04da5)
  • lsp: add handler for workspace/workspaceFolders (#17149) (8e702c1)
  • lsp: dynamically generate list title in response_to_list (#17081) (574a582)
  • lsp: enable default debounce of 150 ms (#16908) (55a59e5)
  • lsp: skip or reduce debounce after idle (#16881) (b680392)
  • lsp: use vim.ui.select for selecting lsp client (#16531) (f99f3d9)

Initial work to support remote TUI (and ui client library):

  • ui_client: connect to remote ui (a4400bf)

  • ui_client: implement event handlers (794d274)

  • ui_client: handle resize events (c6640d0)

  • ui_client: implement async paste handling (55b6ade)

  • ui_client: pass user input to remote server (6636160)

  • --headless: add on_print callback to stdioopen (a4069a3)

  • add autocommand event when search wraps around (#8487) (8ad6015)

  • add vim.tbl_get (#17831) (69f1de8)

  • autocmd: add Recording autocmds (8a4e26c)

  • autocmd: populate v:event in RecordingLeave (#16828) (f65b0d4)

  • completion: support selecting item via API from Lua mapping (c7aa646)

  • eval/method: partially port v8.1.1993 (4efcb72), closes #10848

  • eval/method: partially port v8.1.1996 (2ee0bc0)

  • eval/method: partially port v8.1.2004 (0f4510c)

  • eval: partially port v8.2.0878 (d746f5a), closes vim/vim#5481

  • eval: port emsg from v8.2.3284 (8adbba7)

  • events: add DirChangedPre (059d36e), closes vim/vim#9721

  • events: support SIGWINCH for Signal event #18029 (b2cb05b), closes #15411

  • hardcopy: check gui colours for highlights first (e5b5cbd)

  • highlight: support color names for cterm (dc24eeb)

  • ignore nore on maps (0347875)

  • input: delay some conversions to vgetc() (d7488bf)

  • input: enable /, /, /<c-[> pairs unconditionally (ed88ca7)

  • keymap: add F38-F63 keys (#17893) (9da0023)

  • keymap: return nil from an expr keymap (58140a9)

  • mappings: considering map description when filtering (#17423) (9a74c2b)

  • provider: remove support for python2 and python3.[3-5] (baec0d3)

  • remote: add basic --remote support (5862176)

  • runtime: import cleanadd.vim from Vim (#17699) (d33aebb)

  • runtime: include Lua in C++ ftplugin (#17843) (02fd00c)

  • runtime: new checkhealth filetype (#16660) (734fba0)

  • term: use vterm_output_set_callback() (7813b48)

  • test: use nvim_exec in helpers.source() #16064 (72652cb), closes #16071

  • trigger ModeChanged for terminal modes (fdfd1ed)

  • tui: add error logging (#16615) (34d88ed)

  • tui: add support for CSI 4 : [2,4,5] m (f89fb41), closes #17362

  • tui: enable CSI u keys (a11ff55)

  • vim-patch.sh: support additional args for -s (0ec92bb)

Performance Improvements

  • lsp: request only changed portions of the buffer in changetracking (#17118) (9055ec5)
  • only redraw concealed line if cursor has moved horizontally (595c1a7), closes #17889
  • pre-compile embedded Lua source into bytecode (#16631) (4240ce8)
  • screen: reduce cursorline redrawing when jumping around (c29a14d), closes vim/vim#9996
  • treesitter: cache query parsing (9c26939)
  • api: elide luaref copy when setting 'callback' in nvim_set_keymap (9f489f5)

Bug Fixes

  • --headless: do not block on press-enter prompts when no UI (5b34c2a), closes #9358 #11718 #15910
  • not shown in :map commands (07a98b1)
  • add forkpty for SunOS variants (2c8f4d0)
  • add STRNLEN compatability macro (8f1fdbc)
  • anonymous sid not working (7b6ee3e)
  • api, lua: return NIL on failure to find converted function (#17779) (77eb6f9)
  • api/nvim_win_call: share common win_execute logic (452b46f)
  • api: allow empty list for cterm in nvim_set_hl (e35a2d8)
  • api: allow nvim_buf_set_extmark to accept end_row key (#16548) (cf32053)
  • api: convert blob to NUL-terminated API string (f6cc604)
  • api: correctly handle negative line numbers for nvim_buf_set_text (#17498) (1500447), closes #15181
  • api: correctly pass f-args for nvim_create_user_command (#18098) (e463eb8)
  • api: delete all autocmds with the same ID (dc3bbd3)
  • api: force redefinition of user commands by default (#16918) (3923843)
  • api: highlight attribute for underline (96bb178), closes #17624
  • api: improve autocmd error handling (9292938)
  • api: include event in get_autocmds (#17553) (37a86a2)
  • api: make nil value in nvim_set_option_value clear local value (#16710) (33cd1ba)
  • api: nvim__set_hl_ns causes extra redraws (505c12c)
  • api: nvim_win_set_cursor() redraw for cursorline and statusline (f92e749)
  • api: re-route nvim_get_runtime_file errors (d512be5)
  • api: use changedir_func() in nvim_set_current_dir() (23c3f7f)
  • api: validate command names in nvim_add_user_command (#17406) (238b944)
  • api: validate user_command name (#17004) (a34652e)
  • append test for checking zero width node range (58d81ef)
  • aucmd_win: always make aucmd_win the last window (89712dc)
  • aucmd_win: ensure aucmd_win stays floating (2deffb5)
  • autocmd: clean up autocmds only when needed (#17593) (d5bd7ff)
  • autocmd: restore autocmd showing behavior (74a2774)
  • autoload variables not loaded with vim.g & nvim_get_var (f292dd2)
  • bounds check for underdot (7fd1182)
  • build: check for empty value of LUAC_PRG (#16711) (eceb0b3)
  • build: check that LuaJIT has required modules for compilation (#16714) (abdf3a8)
  • build: install luajit modules on windows (#16658) (2abd178)
  • channel: fix channel consistency (5051510)
  • check for interrupt in nvim_echo, write_msg and nlua_print (#16537) (db4bc32)
  • checkhealth: make provider checkhealth output more consistent (#17722) (33ada23)
  • ci/backport: check for event_name == "pull_request_target" (50c8cc3)
  • ci: provide necessary permissions for calling workflow (b55e659)
  • clang/'Dead store': do not assign endcol (#17788) (876d22f)
  • close floating windows when calling win_close() (85ae04d)
  • completion: prevent K_LUA from closing pum (42e5fd3)
  • completion: update submode message when selecting from API (#17022) (69f3719)
  • correct vertical dragging room calculation with global statusline (#17928) (0d4bd42)
  • coverity/175977: big parameter passed by value (da89725)
  • coverity/188749: nullify pointer to fix use-after-free (d224957)
  • coverity/340720: error if nvim_eval_statusline given invalid winid (e850a92)
  • coverity: dead code and operands don't affect result #17662 (c3a6ff6)
  • decorations: do not put empty virt_text (#17872) (ba257d7)
  • define NAME_MAX from _XOPEN_NAME_MAX (8fdf1b2)
  • diagnostic: allow setting arbitrary config values (984270c)
  • diagnostic: assert that diagnostics have line number and column (#16683) (b515160)
  • diagnostic: clamp diagnostics on negative line numbers (#16496) (254c22a)
  • diagnostic: escape special chars in file names (#16527) (62f0157)
  • diagnostic: improve validation for list arguments (#16855) (838631e)
  • diagnostic: make open_float respect global diagnostic options (#17879) (a8e2c45), closes #17878
  • diagnostic: only set default handler config if unset (8a27205)
  • diagnostic: resolve nil opts tables (fc8af96)
  • diagnostic: respect "if_many" source option for virtual text (#16653) (818ae74)
  • diagnostic: set effective buffer number for DiagnosticChanged autocmd (#16474) (99f6260)
  • diagnostic: set effective buffer number in autocmd (again) (#16589) (6063e07), closes #16474
  • diagnostic: use botright copen for qflist (#17475) (d80c9b9)
  • diff: make algorithm work for vim.diff (#17300) (92e92f0), closes #17207
  • do not cast offset to char_u (1a88729)
  • do not pass aucmd to the callback (#17650) (4f007a7)
  • do not save K_EVENT as lastc in Insert mode (ab1ceaa)
  • docs: add bufnr and user_data to diagnostic-structure (#16619) (3aff3d6)
  • docs: spelling in new underlines docs (4472820)
  • don't include pty.h on SunOS (435dd04)
  • don't use cfsetspeed, use i and o variants (05f9f63)
  • enable filetype detection and syntax highlighting with --clean (#17566) (ed1a9c3)
  • eval/method: add missing method support for existing built-ins (752ca2c)
  • eval: v:lua support for - in module names (fb8cd34)
  • event-loop: call vpeekc() directly first to check for character (74998b0)
  • event-loop: check if executed register has ended (64802da)
  • event-loop: duplicate display updating logic in vgetorpeek() (#17913) (a9665bb)
  • events: make v:event readonly in more events (#18070) (f89ca71)
  • ex_normal: spam \n in Ex mode only if in Cmdline mode (#17977) (a783cdd)
  • extmarks: fix signs (2ab2af5), closes #17638
  • extmarks: splice extmarks on accepting spell (ea71c26)
  • filetype.lua: always return a string in getline helper function (#17852) (5e64d65)
  • filetype: expand tildes in filetype patterns (#17091) (59ea8fa)
  • filetype: fix foam pattern detection (6e04c86)
  • filetype: match negative priority patterns after extensions (#16980) (e92b816)
  • filetype: match on rather than (#16943) (f40ce34)
  • filetype: normalize slashes in file paths (6c86079)
  • filetype: set default ft_ignore_pat in filetype.lua (#16917) (60d3bb7)
  • float: do not switch window before deleting last listed buffer (#17840) (a72f338)
  • float: don't always switch window when deleting last listed buffer (#17836) (ff82b27)
  • float: handle buffer deletion with floating windows (3fdb7b5)
  • float: make laststatus=1 behave consistently with floating windows (a9359dc)
  • healthcheck: handle empty reports (300b009)
  • health: do not run external processes in a shell (a87ecf5)
  • highlight: accept NONE as a color name (#17487) (1e7cb2d), closes #17478
  • highlight: allow globals to be cleared (876aaf2), closes #17420
  • highlight: always update window highlight if highlight changed (23dcef9)
  • inccommand: do not change reg_prev_sub when previewing (d11bbac)
  • input: do not translate scroll keys into multiclicks (5499736)
  • input: fix clearing of reg_executing (2a574f7)
  • input: never escape CSI bytes (ff7c3d1)
  • input: put modifiers back into typeahead buffer when needed (8184564)
  • input: remove reinterpreted ALT/META chords from recorded macro (75f4741)
  • keymap: don't coerce false to '' (3cc29b7)
  • keywordprg: retain terminal buffer after K (#17046) (3ee1ba3)
  • line continuation: set growsize to correct value (#17655) (f24121a)
  • lsp and diagnostic highlight priority (#17461) (791e400)
  • lsp: always split text edits on \r, \r\n, and \n (#17087) (b72aae8)
  • lsp: always use target bufnr in location handler (#16876) (e42c906)
  • lsp: avoid attaching to unloaded buffers (#16723) (d6b939a)
  • lsp: avoid nil workspace/symbol query (#17107) (7085e5b)
  • lsp: call config on_exit handler before context is cleared (#16638) (6a92a53)
  • lsp: correct prefix when filterText is present (#17051) (f6329ea)
  • lsp: correctly align start and end range to codepoints during incremental sync (#16670) (36c401d), closes #16624
  • lsp: create lsp requests with position offsets considering client encoding (#16382) (22d7dd2)
  • lsp: ensure pending changes are flushed on skipped debounce (#17015) (3f2fbb8)
  • lsp: explicitly pass bufnr in didSave handler (#16906) (207307d)
  • lsp: fetch offset_encoding from client in references (#17104) (a0201b6)
  • lsp: fix nil-index behavior for UTF-8 in _str_*index_enc methods (#16731) (9625832)
  • lsp: fix applying multiple out-of-range TextEdits (#17037) (43ef7df)
  • lsp: fix lookup of boolean values in workspace/configuration (#18026) (6160973)
  • lsp: forward offset_encoding in rename handler (#17079) (8066abc)
  • lsp: forward offset_encoding to apply_text_edits (#17075) (9304ee3)
  • lsp: handle insertion of previous line (#17618) (3800615)
  • lsp: handle negative activeSignature in signatureHelp (#17064) (e7cd811)
  • lsp: only send valid params in executeCommand (#16987) (e41e8b3)
  • lsp: pass offset_encoding in formatexpr() (#18084) (392cb7a)
  • lsp: progress handlers should return vim.NIL on error (#16472) (730a951)
  • lsp: resolve bufnr for get_lines (#16986) (b65a23a)
  • lsp: resolve nil bufnr (#16902) (e6c1545), closes #16889 #16745
  • lsp: respect all of 'fixeol', 'eol', and 'binary' applying edits (#17574) (d477788)
  • lsp: set tabSize from 'shiftwidth', not 'softtabstop' (#17787) (af427de)
  • lsp: start incremental sync range at previous newline character (#17610) (a5e475f)
  • lsp: strictly enforce passing offset encoding (#17049) (bc722c8)
  • lsp: suppress ContentModified errors from UI (#16904) (d6f0c95)
  • lsp: use "text" filetype for plaintext (#17898) (4d3acd6)
  • lsp: use botright copen for all handlers (#17471) (6a3accc)
  • lua: don't use nlua_error when exiting early (1479083)
  • lua: print multiple return values with =expr (#16933) (287d356)
  • lua: restore priority of the preloader (b518b57)
  • lua: stricter type check when calling API function (#16745) (297ff97), closes #13651
  • make mode() return correct value in ex mode (600e7e3)
  • man.vim: fix search function on some systems (#13709) (7165e77)
  • man.vim: support calling :Man without a section again (#17119) (ad2dbd4)
  • msgpack#strptime: use calendar.timegm to get seconds since epoch (fb14e2a)
  • ops: str_to_reg passing NULL to memcpy (8170260)
  • options: disallow empty 'fdc' and 'scl' (#16765) (70a68dc)
  • paste: avoid edges cases caused by empty chunk (fcc6f66)
  • paste: deal with eol and eof in Visual mode (bfb7754)
  • paste: deal with trailing new line in chunk (a6eafc7)
  • paste: don't move cursor past the end of pasted text in Normal mode (2601e08)
  • paste: escape control characters in Cmdline mode (e263afc)
  • paste: use getcmdtype() to determine whether in cmdline mode (9b1e1fb)
  • prompt: add missing changes from v8.1.0036 (d6ea074)
  • pty_process_win/wait_eof_timer_cb: also check for proc->out.did_eof (4154bf9)
  • pum_redraw: use grid_puts_len() to truncate the text (e6d35b9)
  • PVS/V1019: compound assignment expression is used inside condition (93e0d9b)
  • PVS/V560: ignore false "conditional expression is always false" (#17830) (d3af109), closes /github.com/vim/vim/pull/9993#issuecomment-1076544168
  • PVS/V583: the '?:' operator always returns one and the same value (#17790) (e9b53f3)
  • query.lua: check empty table for lines (afcf644)
  • quickfix: avoid O(N^2) when filling from string typval (#16654) (5ba45a7)
  • remote: make compile again (70d2ab1)
  • remote: report connection error, missing return values (2be938a)
  • remote: report on missing wait commands, typecheck lua results (29c3632)
  • remote: respect silent in error reporting (1dbf867)
  • remote: use STATIC_CSTR_AS_STRING (1201145)
  • resolve nil arguments to API functions (#16889) (36662c9), closes #16745 #16745
  • respect os_proc_children rv of pid not found (045422e)
  • runtime: add missing release metadata (5c1b8b7)
  • runtime: add syntax file for query (#18101) (7d1142b), closes #17905
  • runtime: check markdownError before syn-clear (#16930) (b435755)
  • screen: do not do syntax highlighting at filler or folded lines (#17818) (7735163)
  • screen: do not draw filler lines post eof if already at last row (b326bf5)
  • screen: do not update syntax_last_parsed when drawing folded line (#17826) (52fe8ea)
  • screen: don't put empty sign text in line number column (4ddd6c5)
  • screenpos, float: add top and left border adjustment (ffe3003)
  • screen: truncate double-width character correctly (bc75544)
  • screen: truncate when overwriting right half of a double-width char (28dadd5)
  • set nested before executing callback (#17801) (7fb2310)
  • set RedrawingDisabled before entering aucmd_win (dd21e21)
  • signcol: always trigger a redraw (8ba8f1a), closes #17693
  • signcol: handle edge case with maximum value (e67cd22)
  • signcol: update cursor when signcol changes (9d53791), closes #14195
  • skip libutil on SunOS (b8ae43d)
  • substitute: properly check for empty command line (9955209)
  • syntax.c: correct hunk from Vim patch 8.0.0647 (#17761) (9e66d27)
  • syntax: remove trailing spaces in vim.vim (6795c97)
  • tabpage: correct check for failure to close window (ae0a43e)
  • termdebug: handle exiting during startup properly (#16790) (315858b)
  • terminal: correctly forward mouse events (e0956f7)
  • terminal: fix resize crash with pending scrollback (#14891) (0a1391f)
  • terminal: ignore left-release mouse action (c96f7e2), closes #9483 #8691
  • terminal: return early if there are no invalid rows (c83fedf)
  • terminal: use coladvance() to calculate buffer cursor position (2784a5d)
  • test: only use buffer completion in popupmenu timer test (5ecb2cb)
  • tests: update legacy tab switch test to be sane (6dc31ee)
  • translation: po file for Russian (#17767) (e0fe91f)
  • translation: po file for Ukrainian (#18100) (4dc09f3)
  • ts: escape lang when loading parsers (#16668) (f9080b2)
  • tui: avoid using uninitialized memory in kitty (#17866) (a70b399)
  • tui: correct CSI sequence (#17844) (b81c310), closes #17771 /invisible-island.net/xterm/manpage/xterm.html#VT100
  • tui: end streamed paste correctly when key buffer is empty (40ed2b5)
  • tui: remove ESC NUL forced escape (#17198) (a2f1572)
  • ui: close floating window on BufLeave event (#16557) (576408d)
  • ui: inccomand performance degradation (54cec45)
  • ui: make window resize commands manage cmdheight (463174b)
  • update last cursor on first CursorMoved (#16698) (b42e0c4)
  • uri: change scheme pattern to not include the comma character (#16797) (56f3c41)
  • use normal! in default mapping (#17695) (f291a03)
  • vim-patch.sh: fix N/A files patterns (#18073) (8f95f3e)
  • win_close: count the window the be closed instead of curwin (3539456)
  • win_split_ins: do not fail when oldwin is not valid (0cf2dc6), closes #14240
Compare
Choose a tag to compare
NVIM v0.6.1 (2021-12-31)
Build type: Release
LuaJIT 2.1.0-beta3

Install

Windows

  1. Extract nvim-win64.zip
  2. Run nvim-qt.exe

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-osx64/bin/nvim

Linux (x64)

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

06f1c19b09dd8cc63f970ef7edab8fa3850a154c296f453393d00854f514a847  nvim-linux64.tar.gz
ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5  nvim.appimage
53e60639b49c692cfc54e5e435799aa4cf2cac8fc36ccfadc422bd98ee9cade6  nvim.appimage.zsync
3546be6a13f45411731dc4c93b0932f7d6197b4318ea082cafe7b28d843248f9  nvim-macos.tar.gz
0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4  nvim-win64.zip

Thanks to our sponsors!

Thanks to the large number of financial contributors which help make Neovim possible. In particular, these sponsor neovim with $100 per month or more:

  • Anton Kochkov
  • Airbrake
  • Folke Lemaitre
  • Shea Parkes
  • Roman Fuentes

Changes since 0.6.0

Bug Fixes

  • api: allow nvim_buf_set_extmark to accept end_row key (#16686) (1b54344)
  • diagnostic: assert that diagnostics have line number and column (#16687) (9dae939)
  • diagnostic: clamp diagnostics on negative line numbers (#16497) (096f841)
  • diagnostic: escape special chars in file names (#16588) (beac24d)
  • diagnostic: respect "if_many" source option for virtual text (#16697) (060eeaa)
  • diagnostic: set effective buffer number for DiagnosticChanged autocmd (#16485) (84784a8)
  • diagnostic: set effective buffer number in autocmd (again) (#16590) (08ddfa9), closes #16474
  • lua: do not cast offset to char_u in str_utf_start (93f1ec0)
  • lsp: avoid attaching to unloaded buffers (#16726) (0088994)
  • lsp: call config on_exit handler before context is cleared (#16781) (571609f)
  • lsp: fix nil-index behavior for UTF-8 in _str_*index_enc methods (#16785) (03bd914)
  • lsp: handle offset encoding (#16783) (7b60ec7)
  • lsp: progress handlers should return vim.NIL on error (#16476) (fb11ef0)
  • options: disallow empty 'fdc' and 'scl' (#16776) (37a00be)
  • quickfix: avoid O(N^2) when filling from string typval (#16663) (aa0ddc6)
  • screenpos, float: add top and left border adjustment (8f68548)
  • terminal: fix resize crash with pending scrollback (#16665) (ae249d8)
  • ui: close floating window on BufLeave event (#16664) (785bace)
  • uri: change scheme pattern to not include the comma character (#16798) (0e96f7d)

Features

Compare
Choose a tag to compare
NVIM v0.6.0
Build type: Release
LuaJIT 2.1.0-beta3

Install

Windows

  1. Extract nvim-win64.zip
  2. Run nvim-qt.exe

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-osx64/bin/nvim

Linux (x64)

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

9a7f72e25747c3839f2c8978ef4f902aada0c60ad4b5ff0cb8b9d4c1f0b35586  nvim-linux64.tar.gz
8a2b8bb009f5a10f2908c6806c4745e064a6032db89de7895805fb979c90a08e  nvim.appimage
a20073fc161e3c5ce204e301c39a434943ac9a9dc4438e8371191a014067ac55  nvim.appimage.zsync
03cdbfeec3493f50421a9ae4246abe4f9493715f5e151a79c4db79c5b5a43acc  nvim-macos.tar.gz
d46a161a8e025f8a03a75b1181372f2712116e4edf566b2569cdcc4f371f80c4  nvim-win64.zip

Changes since 0.5.0

BREAKING CHANGES

  • 32-bit windows builds are no longer provided.
  • build deps: use libuv 1.42.0 upstream for WIN32 (#15889) (f6c0a37), closes #15889
    • removes Windows 7 support
    • removes support for mouse and alternate buffers in TUI for Windows 8 and 8.1
  • lsp/diagnostic: highlight groups and signs for LSP diagnostics renamed (e.g. LspDiagnosticsDefaultWarning to DiagnosticWarn) (a5bbb93)
  • diagnostic: make DiagnosticChanged a first class autocmd (#16098) (150a592), closes #16098
    • au User LspDiagnosticsChanged autocommands are not supported. Use the new first-class DiagnosticChanged event instead.
  • lua: register_keystroke_callback => on_key (#15460) (69fe427)
    • note: this breaking change was included in 0.5.1

Features

  • :source, nvim_exec: defer script item creation until s:var access (da9b0ab)
  • :source, nvim_exec: support script-local variables (d4ed51e), closes #13143 #11507
  • lua: add trimempty optional parameter to vim.split (5fa26e2)
  • lua: add vim.str_utf_{start,end} (#16129) (2230b57)
  • lua: add vim.str_utf_pos function (d752cbc)
  • lsp: aggregate code actions from all clients (#15121) (c36df20)
  • api: add lua C bindings for xdiff (#14536) (3d3c0c6)
  • api: evaluate statusline string #16020 (9086938)
  • api: named marks set, get, delete #15346 (49fdc62)
  • api: nvim_get_chan_info: include "argv" for jobs #15537 (0603eba), closes #15440
  • api: win_viewport also sends line_count #15613 (086631c)
  • api: support :terminal input callback in lua (9e41e82)
  • ci: add backport PR action (#14766) (6cc456d)
  • decorations: allow more than one stacked highlight in a virt_text (1495d36)
  • decorations: support virtual lines (392c658) (8d7816c)
  • diagnostic: move vim.lsp.diagnostic to vim.diagostic and support other sources (a5bbb93)
  • diagnostic: add 'prefix' option to open_float (#16321) (3c74ba4)
  • diagnostic: add option to include diagnostic source (d43151e)
  • diagnostic: allow 'prefix' option to return highlight (cc48837)
  • diagnostic: allow customized diagnostic messages (#15742) (d999c96)
  • diagnostic: match(), tolist(), fromlist() #15704 (e61ea77)
  • diagnostic: update jumplist on goto_next/prev (#15942) (b55944e)
  • diagnostic: use scope = 'line' by default for open_float() (#16456) (217f9f8), closes #16453
  • diagnostic: support severity_sort (32c0631)
  • checkhealth: provide function for command line completion (8b43b07)
  • f_chansend: support Blob data argument (7e9ea08)
  • job: add parameter to close stdin (eb7f24b)
  • keywordprg: use :terminal for external commands #15398 (a90513c), closes #2995 #2761
  • lsp: add 'focus' option to open_floating_preview (#16465) (fff8827)
  • lsp: add a registry for client side code action commands (6c03601)
  • lsp: add client command support to codelens (#15820) (19a77cd)
  • lsp: add codeAction/resolve support (#15818) (ec4731d)
  • lsp: add exit_timeout flag (#16070) (80456cf)
  • lsp: add formatexpr (#16186) (52fa1d2)
  • lsp: add lsp healthcheck (e268026)
  • lsp: add per-client commands (#16101) (519d8de)
  • lsp: add tagfunc (#16103) (f940e7a)
  • lsp: add warning message for large log size (e6777a7)
  • lsp: allow configuring zindex for floating windows (#15086) (c487a73)
  • lsp: allow diagnostics to be disabled for a buffer (#15134) (1aeb945)
  • lsp: allow root_dir to be nil (#15430) (ff0833c)
  • lsp: highlight active parameter in signature help (#15018) (af26371)
  • lsp: improve vim.lsp.util.apply_text_edits (#15561) (41cfba6)
  • lsp: include original request params in handler ctx (187579f)
  • lsp: jump to diagnostics by position (#14795) (ea39ff5)
  • lsp: Make line diagnostics display prettier (e43dbfd)
  • lsp: make list handlers configurable (#15199) (3e00d4f)
  • lsp: support textDocument/prepareRename (#15514) (c1f573f)
  • lsp: use uv_spawn to check if server executable (#16430) (1a60580)
  • lsp: use vim.ui.select() in codelenses (#16004) (e7ea54a)
  • lsp: utilize textEdit.range for startbyte in omnifunc (#15957) (e9d6f7c)
  • lua: add lua-cjson as vendored dependency (8decc9f)
  • lua: add vim.mpack for msgpack support in lua (eaf661d)
  • lua: allow passing handles to vim.b/w/t (6c5e7bd)
  • lua: convert binary string with NULs to Blob (de9df82)
  • lua: document support of packages with v:lua syntax (9dd371b)
  • lua: enable stack traces in error output (#16228) (03b805a)
  • lua: expose lua-cjson as vim.json (30fed27)
  • lua: make vim.mpack support vim.NIL and vim.empty_dict() (0f59666)
  • match: allow hl group to be defined after :match command (fca52f5)
  • msgpack: convert Blobs to BIN strings (af6f454)
  • health: support lua healthchecks (9249dcd), closes #15632
  • shada: restore Blob globals properly (ef729fb)
  • terminal: TermClose: set exit code in v:event.status #15406 (50b30de), closes #4713
  • treesitter: add next, prev sibling method (1400841)
  • treesitter: allow to set highlight priority for queries (242608e)
  • ui: add opt.kind to vim.ui.select (#15838) (7ae86c1)
  • ui: add vim.ui.input and use in lsp rename (#15959) (16d4af6)
  • ui: add vim.ui.select and use in code actions (#15771) (63fde08)
  • vim script: support calling v:lua as a method (b2994e3)

Changes

Performance Improvements

  • api: avoid spurious allocations when converting small objects (705e8f1)
  • highlight: use a hashtable for highlight group names (bb4b4d7)
  • lua: optimize vim.deep_equal #15236 (4b452d4)
  • lua: don't use regexes inside lua require'mod' (ea2023f), closes #15147 #15497
  • lsp: improve json deserialization performance (#15854) (912a6e5)
  • map: reduce double pointer indirection to single pointer indirection (9e651a9)
  • treesitter: avoid string lookup of highlight name in hot loop (2460f0a)

Bug Fixes

  • :source, nvim_exec: handle Vimscript line continuations #14809 (6188926), closes #14807
  • :source: copy curbuf lines to memory before sourcing #15111 (afdc9e6)
  • allow str_utfindex second argument to be an explicit nil (#16448) (512ec46)
  • api: fix crash after set_option_value_for() #15390 (8b0e6cc), closes #14097 #13577
  • api: fix nvim_buf_set_extmark (2338345)
  • autocmd: fix conditions in block_autocmds, unblock_autocmds #15372 (29712ae), closes #6279
  • buffer_updates: cleanup test behavior (54b2c68)
  • buffer_updates: handle :delete of the very last line in buffer (8335e26)
  • buffer_updates: handle :sort of already sorted buffer (ef687d3)
  • buffer_updates: make lockmarks not affect extmarks and buffer updates. fixes #12861 (7d171b1)
  • bufupdates: send correct updates for visual paste (1423146)
  • build: add an env var to re-enable the colors (5087347)
  • build: call find_package(Threads) before using its variables (f446ab3)
  • build: export symbols on Windows (aa644b7)
  • build: fix build failure in MinGW (0503e17)
  • build: make vendored libmpack and libmpack-lua build properly (2a08aef)
  • channel: throw error if sending to internal channel w/o terminal (3b89fee)
  • checkhealth: duplicate checks if module name has "-" #15935 (a36c6e5)
  • checkhealth: mitigate issues with duplicate healthchecks #15919 (acd5e83), closes #15259
  • ci: disable broken test on openbsd on all CI due to resource constraints (a3e2636)
  • ci: re-run GHA for ready_for_review events (#15377) (c6ef956)
  • decorations: crash when :bdelete (extmark_free_all) after clear_namespace (cd353aa), closes #15212
  • defaults: "syntax sync maxlines=1" on CmdwinEnter #15552 (5f8518b), closes #15401
  • defaults: do not map Y in visual-mode #15387 (54726e8), closes #13268
  • diagnostic: allow floats to be focusable (#16093) (427bac6)
  • diagnostic: change default severity_sort order (938ed45)
  • diagnostic: clamp line numbers in setqflist and setloclist (5b0d8f8)
  • diagnostic: correctly handle folder level diagnostics (f87779a)
  • diagnostic: deepcopy diagnostics before clamping line numbers (2abc799)
  • diagnostic: do not focus floats in goto functions (#16433) (b5b025f)
  • diagnostic: don't clamp line numbers in setqflist (0341c68)
  • diagnostic: don't return nil when callers expect a table (#15765) (057606e)
  • diagnostic: don't use nil col if missing from qflist (#16357) (5e46f64)
  • diagnostic: error on invalid severity value (#15965) (d5dd0aa)
  • diagnostic: fix navigation with diagnostics placed past end of line (34bb5fa)
  • diagnostic: fix option resolution in open_float (#16229) (fd34784)
  • diagnostic: fix wrong data type in setqflist() (3fd1450)
  • diagnostic: get line count per buffer when clamping (c59f200)
  • diagnostic: handle an unknown or missing client (#16242) (1fdbd29)
  • diagnostic: handle diagnostics placed past the end of line (#16095) (a2994c8)
  • diagnostic: make set() go through cache when calling show() (d93f47d)
  • diagnostic: only update decorations for loaded buffers (#15715) (924e8e4)
  • diagnostic: preserve fields from LSP diagnostics via user_data (#15735) (17b7968)
  • diagnostic: remove useless highlight links (#15683) (c13242c), closes #15585
  • disable clipboard when test registers (dd63d93)
  • docgen: add tagfunc.lua (0746f00)
  • doc: various fixes #15604 (4eb1ebb)
  • eval: add the vimscript-1 feature to has() (18b32fc)
  • eval: checking for a non-empty string is too strict (#15987) (1dbbaf8)
  • eval: fix has('wsl') #16153 (16d06fa), closes #12642 #16143
  • eval: fixup for empty modifier in fnamemodify (#16368) (a7ad509), closes #16367
  • extmark: fix missing virt_lines when using id param of set_extmark (995dbd2)
  • extmarks: splice extmarks on nv_Undo #15920 (e069361)
  • fileio: replace characters over INT_MAX with U+FFFD (#16354) (a2e5c2f), closes #11877
  • float: fix potential heap corruption in win_redr_border (de670f3)
  • float: redraw if w_border_adj changed (7ff1bc1)
  • heath/provider.vim: using list as string #16007 (5365f24), closes #15988
  • highlight: remove syncolor.vim, always include syntax colors (9afa0d2), closes #15176 #12573 #15205
  • inccommand: ignore trailing commands only for previewed command #15638 (1f8c91b), closes #8796 #7494
  • include ci/ in exported tarball (d6f03aa), closes #15856
  • input: never reinterpret unmapped ALT- chrods in Terminal mode (#16222) (5ce35ab)
  • input: resolve isolated (non-ALT/META) mappings #13109 (c4857b6), closes #13042 #13086 #15869
  • jobwait: always drain process event queues #15402 (3c081d0), closes #15349
  • lsp_spec: tests depended on previous session (069d1de)
  • lsp: accept file URIs without a hostname (a2c2a08)
  • lsp: add done flag to messages returned in util.get_progress_messages() (#15985) (45fa70a)
  • lsp: add placeholder cancel function (#16189) (4da0351)
  • lsp: add textDocument/prepareRename to capability map (#15961) (fcc11d5), closes #15899
  • lsp: adjust legacy show diagnostic functions to use correct scope (#16106) (dc6c9fe)
  • lsp: allow diagnostic.clear to accept nil bufnr (#15137) (4ed2d4f)
  • lsp: avoid duplicates in client attached buffers (#16099) (c5525f2)
  • lsp: avoid serializing boolean as key (#15810) (96614f8)
  • lsp: change rpc start notify level to warn (#16467) (04c7b55)
  • lsp: change signature of buf_highlight_references (#16345) (eb3d591)
  • lsp: correctly parse LSP snippets #15579 (516775e), closes #15522
  • lsp: default to UTF-16 in make_position_params (2e3a474)
  • lsp: do not index nil client in progress (#16262) (8f31b21)
  • lsp: do not invoke handlers for unsupported methods (#15926) (d288daa)
  • lsp: don't update active_clients on exit_timeout (#16192) (98f5782)
  • lsp: enable additional capabilities (#15470) (5d63354)
  • lsp: ensure buffers are re-attached on rename (#16266) (ee3a58d)
  • lsp: Ensure users get feedback on references/symbols errors or empty results (256570a)
  • lsp: expose ContentModified error code to callbacks (#15262) (3f09732)
  • lsp: fix cursor row after textEdits (#16038) (bd2f61c)
  • lsp: gracefully handle nil workspaceFolders (#16284) (0ecc58c)
  • lsp: guard textDocument/codeAction command logic #15769 (433bda4)
  • lsp: improve symbols_to_items performance (#16197) (5ad15c9)
  • lsp: Include client name in handler error messages (#15227) (24f2b9e)
  • lsp: pass bufnr for async formatting (#15084) (c31bc6e)
  • lsp: persist diagnostic config for clients (bcc9ba5)
  • lsp: prevent double for cached plaintext markup (910967e)
  • lsp: restore diagnostics extmarks on buffer changes (#15011) (77b33e4)
  • lsp: rewrite incremental sync (#16252) (2ecf0a4)
  • lsp: send buffer contents joined on fileformat-specific linebreak (#16334) (134a638)
  • lsp: send textDocument/didChange for each buffer (#16431) (3451121)
  • lsp: support duplicate params in signature help (#15032) (9132b76)
  • lsp: update lsp-handler signature in call_hierarchy (#15738) (8164adc)
  • lsp: update workspace/applyEdit handler signature (#15573) (3f526fe)
  • lua: fix vim.deepcopy for metatables & cycled tables (#16435) (eb876a0)
  • lua: preserve argument lists which are not lists (6896d22)
  • man.vim: ensure buftype=nofile after :tag or :stag #15675 (29bc648), closes #15650
  • man.vim: filetype=man is too eager #15488 (2548a9e), closes #15487 #15487
  • mouse: fix mouse drag positions on multigrid #12667 (0dcfd0e), closes #15091
  • mouse: correct dragged position in composed layout (810da1a)
  • multigrid: mouse events crash neovim (28ac6c0)
  • nvim_open_win: crash if autocmds delete buffer/window #15549 (0c06da1), closes #15548
  • options: using :set fillchars should clear local value (7528bce)
  • prevent K_EVENT from stopping Select mode CTRL-O #15688 (5f144ef)
  • provider: compare versions as number, not string (python 3.10 support) #15937 (e16adbf), closes #14586
  • screen: make display_tick monotonic up to 2^64. fixes #16152 (9e88c9c)
  • screen: missing search highlights when redrawing from timer #15380 (db695cc), closes #13074 #14064
  • shared: do not treat empty tables as list in deep extend (#15094) (526fc60)
  • sign: reset auto sign column with minimum in float win minimal style (c8f57f6)
  • startup: init.lua: set $MYVIMRC to absolute path #15748 (c76cddf)
  • termdebug: replace mapset with nvim_set_keymap (#15699) (4d7dcbe)
  • termdebug: replace term_getline with getbufline #15598 (11289ad)
  • terminal: close without ! if the job is stopped (55defa1), closes #4683
  • terminal: free terminal if close_buffer() closes a closed terminal (#16264) (14def4d)
  • test/dumplog: tostring(rv) before formatting as string (ddaa0cc)
  • tests: use isolated XDG_DATA_HOME in startup tests (8e663e2)
  • treesitter: do not map hl_group when no mapping is set (f489d98)
  • treesitter: run predicates more often in iter_matches (458f2aa)
  • tui: extend smglr ignores to smglp and smgrp (#16239) (3ba800f)
  • tui: remove obsolete $NVIM detection #15791 (4414584), closes #12937 #11390
  • tutor: formatting, layout #15098 (c52ec8f), closes #15088
  • ui: use nowait for q mapping in floating window (#16427) (c132144)
  • v:lua: fix emsg when calling v:lua directly (da9005a)
  • vim-patch.sh: run nvim with -u NONE -n #16179 (97ae0ab)
  • vim.opt: vimL map string values not trimmed (#14982) (4906156)
  • window: win_close from other tabpage #15454 (90b2da1), closes #15313
  • windowing: positioning of relative floats (9065730)
v0.5.1
Compare
Choose a tag to compare

Nvim release build

NVIM v0.5.1
Build type: Release
LuaJIT 2.1.0-beta3

Release Notes

Install

Windows

  1. Extract nvim-win64.zip (or nvim-win32.zip)
  2. Run nvim-qt.exe

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-osx64/bin/nvim

Linux (x64)

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

d4b5b3984f607eaec1cca1df33120adfbaa89cf167d0cac77eb95fd1a9c21e9d  nvim-linux64.tar.gz
1cfbc587ea5598545ac045ee776965a005b1f0c26d5daf5479b859b092697439  nvim.appimage
65be33fc7bfe939019693d3a8781da97def1b848d083d023d172e8a79a3d1f0a  nvim.appimage.zsync
d736845b8b63e443970ea93636dfbde3e2673a70d2058c057e41b836ac4f6f6c  nvim-macos.tar.gz
0e0dd552a1f28b222b10c07fb94787548cf443b0db6845cf683857e2e13724d2  nvim-win64.zip
d098236b443f487ac82be522e50c4259ee2043370943404db3ab38e06d6d39fa  nvim-win32.zip
Compare
Choose a tag to compare

Nvim release build

NVIM v0.5.0
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3

Release Notes

Install

Windows

  1. Extract nvim-win64.zip (or nvim-win32.zip)
  2. Run nvim-qt.exe

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-osx64/bin/nvim

Linux (x64)

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

SHA256 Checksums

cd59e885143e0fa7e43cfdacbc8e37dc033c56d9205b8f8a8acd08cd9f93737d  nvim-linux64.tar.gz
6305a1cab22433bf7871cbfcdb76f0013314f4a6c04e56e1547a6925df17240b  nvim.appimage
80cd39bfe4923cadb8d9e8576d6b91df5da60db6ec2f40e9bc9b9258d663dca7  nvim.appimage.zsync
6bcfa5192c9460c946e853dbd1a0baf659df5de184436144147711d1bceedeee  nvim-macos.tar.gz
0064bd9f6b270158212ec0a55c1e7255562d4813ad3316592b1f74df041d3c06  nvim-win64.zip
9d0dcdc535ace7500e8395e2d814a415fb9405aedb5cb56382b9f96f98c272e9  nvim-win32.zip
ee77d86
Compare
Choose a tag to compare

Nvim release build.

NVIM v0.4.4
Build type: Release
LuaJIT 2.0.5

Install

Windows

  1. Extract nvim-win64.zip (or nvim-win32.zip)
  2. Run nvim-qt.exe

macOS

  1. Download nvim-macos.tar.gz
  2. Extract: tar xzvf nvim-macos.tar.gz
  3. Run ./nvim-osx64/bin/nvim

Linux (x64)

  1. Download nvim.appimage
  2. Run chmod u+x nvim.appimage && ./nvim.appimage
    • If your system does not have FUSE you can extract the appimage:
      ./nvim.appimage --appimage-extract
      ./squashfs-root/usr/bin/nvim
      

Other

v0.4.3
Compare
Choose a tag to compare

Nvim release build.

NVIM v0.4.3
Build type: Release
LuaJIT 2.0.5