v0.9.0
版本发布时间: 2023-04-07 19:45:58
neovim/neovim最新发布版本:nightly(2024-10-18 13:12:28)
NVIM v0.9.0
Build type: Release
LuaJIT 2.1.0-beta3
Notable changes
For a summary of notable changes, see runtime/doc/news.txt or just :help news
within nvim.
Install
Windows
Zip
- Download nvim-win64.zip
- Extract the zip.
- Run
nvim-qt.exe
MSI
- Download nvim-win64.msi
- Run the MSI
- Search and run
nvim-qt.exe
or runnvim.exe
on your CLI of choice.
macOS
- Download nvim-macos.tar.gz
- Run
xattr -c ./nvim-macos.tar.gz
(to avoid "unknown developer" warning) - Extract:
tar xzvf nvim-macos.tar.gz
- Run
./nvim-macos/bin/nvim
Linux (x64)
AppImage
- Download nvim.appimage
- 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
- If your system does not have FUSE you can extract the appimage:
Tarball
- Download nvim-linux64.tar.gz
- Extract:
tar xzvf nvim-linux64.tar.gz
- Run
./nvim-linux64/bin/nvim
Other
- Install by package manager
SHA256 Checksums
fa93f06bec111fea6f316f186b96e19ba289a2dca2d0731e23597398b7397c8f nvim-linux64.tar.gz
0e1e6d53c6c8055de23bdb33f60bb64af0baf11390669c1b40ecbbf2c7a34547 nvim.appimage
b53d0e2662a5003e335a410247ff2c1df7cb3c36c00db14e08551437e69bcca3 nvim.appimage.zsync
ba571c320c9ba98f1f78a9656b0b1fd21aa5833a61054f377c15c09366b96aca nvim-macos.tar.gz
9efe2ff55a13edf32afcfe51194d8e85bb62be7f09ff86384ffb0b8eed2bf716 nvim-win64.zip
adc92c40ea4552dd57898a5f4ec1e635f65ba133340bc9b59c73165cc4cae1bb nvim-win64.msi
Changes since 0.8.0
Breaking
- Remove hardcopy
- Make iconv a non-optional dep
- Remove has("debug") (#22060)
- Make libintl a required dependency
- Rename vim.pretty_print => vim.print
- Rename sanitizer options from CLANG_* to ENABLE_*
- Remove the .deb release (#22773)
- column: Ensure 'statuscolumn' works with virtual and wrapped lines
- cscope: Remove
- defaults: Change default 'commentstring' value to empty (#22862)
- edit: Remove old c implementation of hebrew keymap
- editorconfig: Change editorconfig_enable to editorconfig
- exepath: Prefers extensionless for powershell
- health: Remove deprecated health.lua
- lsp: Add rule-based sem token highlighting (#22022)
- lua: Execute Lua with "nvim -l"
- messages: Graduate the 'msgsep' feature
- options: Deprecate paste, remove pastetoggle (#22647)
- rpc: Preseve files when stdio channel is closed (#22137)
- runtime: Remove filetype.vim (#20428)
- treesitter: Remove g:ts_highlight_lua (#22257)
- treesitter: Remove silent option from language.add()
- treesitter: Consolidate query util functions
- treesitter: Remove deprecated show_tree func
- treesitter: Deprecate top level indexes to modules (#22761)
- treesitter: Rename help parser to vimdoc
Features
- Added support for
@generic
to lua2dox.lua - Added support for optional params to lua2dox
- Added support for specifying types for lua2dox
- Mention ":help news" in intro #20674
- ":write ++p" creates parent dirs #20835
- Add vim.secure.read()
-
vim.inspect_pos
,vim.show_pos
,:Inspect
- $NVIM_APPNAME #22128
- Try to recover from missing tempdir #22573
- Add
vim.filetype.get_option()
- Add
vim.treesitter.language.get_filetypes()
(#22643) - Allow function passed to defaulttable to take an argument (#22839)
- api: Nvim_select_popupmenu_item support cmdline pum (#20652)
- api: Add command name to Lua command callback opts
- api: Show more exception info
- api: More fields in nvim_list_uis
- api: Add filetype option nvim_get_option_value
- api: Add nvim_get_hl (#22693)
- api: Nvim_exec2(), deprecate nvim_exec() #19032
- api: Evaluate 'statuscolumn' with nvim_eval_statusline()
- api: Set statuscolumn line number in nvim_eval_statusline()
- aucmd_win: Allow crazy things with hidden buffers (#21250)
- checkhealth: Improve treesitter report
- checkhealth: Check runtime ($VIMRUNTIME)
- checkhealth: Use "help" syntax, avoid tabpage #20879
- clipboard: Copy to system clipboard in tmux when supported (#20936)
- clipboard: Added wayclip support (#21091)
-
diagnostic: Add
suffix
option toopen_float()
(#21130) -
diagnostic: Add
suffix
option tovirt_text
config (#21140) - diagnostic: Don't open quickfix/loclist if no diagnostics #21397
- diagnostic: Vim.diagnostic.is_disabled() #21527
- diagnostic: Add support for tags
- docs: Nested lists in HTML, update :help parser
- docs: Format parameters as a list #20485
- docs: Update parser, HTML gen #20720
- docs-html: Try to use tags for ToC headings
- editorconfig: Add builtin EditorConfig support
- editorconfig: Add editorconfig syntax file
- editorconfig: Allow editorconfig to be toggled dynamically
- exrc: Use vim.secure.read() for 'exrc' option
- exrc: Support .nvim.lua (#21436)
- extmarks: Allow preventing spellchecking with spell = false
- extmarks: Extend nvim_buf_get_extmarks()
- filetype: Fall back to file extension when matching from hashbang (#22140)
- float: Open float relative to mouse #21531
- fs: Add opts argument to vim.fs.dir()
- gen_help_html.lua: Remove old AWK scripts
-
health: Detect tmux RGB support via
client_termfeatures
- help: Highlighted codeblocks
- highlight: Add DiagnosticOk (and associated) highlight groups (#21286)
- highlight: Define the concept of altfont as a (c)term rendering attribute
- l10n: Update Turkish translations (#20444)
- l10n: Update zh_CN translations (#21085)
- lsp: Add bufnr option to lsp.start (#20473)
- lsp: Support window/showDocument (#19977)
- lsp: Run handler in coroutine to support async response (#21026)
- lsp: Support set title in lsp relate floatwindow (#21110)
- lsp: Support willSave & willSaveWaitUntil capability (#21315)
- lsp: Initial support for semantic token highlighting
- lsp: Highlight semantic token modifiers (#21390)
- lsp: Add function to get semantic tokens at cursor
- lsp: Add function to clear codelens (#21504)
- lsp: Show active clients in :checkhealth vim.lsp (#21670)
- lsp: Add triggerKind option for vim.lsp.buf.code_action (#21905)
- lsp: Implement workspace/didChangeWatchedFiles (#21293)
- lsp: Implement workspace/didChangeWatchedFiles (#22405)
- lsp: Overwrite omnifunc/tagfunc set by ftplugin #22267
- lsp: Render markdown in docs hover #22766
- lsp: Create default link from @lsp.type.comment to Comment (#22888)
- lua: Send "--" literally to Lua "-l" script
- lua: Exit 1 on Lua "-l" script error
- lua: Execute stdin ("-") as Lua
- lua: Store "nvim -l" scriptname in _G.arg[0]
- lua: Low-level interpreter mode (nvim -ll)
- lua: Make sure require'bit' always works, even with PUC lua 5.1
- lua: Add semver api
- lua: Omnifunc for builting lua interpreter
- lua: Use vim.empty_dict() for empty return value in new api functions (#22737)
-
lua: Allow
:=expr
as a shorter version of:lua =expr
-
lua: Add
vim.loader
- lua-api: Avoid unnecessary allocations (#19877)
- man: Add health check
- man.lua: Support spaces in manpage names
- message: Avoid spam on failed os_msg
- packaging: Add start menu and desktop shortcuts on Windows
- provider: Add support for Yarn node modules on Windows (#21246)
-
secure: Add
:trust
command and vim.secure.trust() (#21107) - spell: Support nospell in treesitter queries
-
spell: Also source
spell/LANG.lua
when settingspelllang
(#22111) - test: Add Lua forms for API methods (#20152)
- treesitter: Add vim.treesitter.show_tree() (#21322)
- treesitter: Add 'lang' option to show_tree() (#21341)
- treesitter: Show filetype associated with parser (#17633)
- treesitter: Allow capture text to be transformed
- treesitter: Add metadata option for get_node_text
- treesitter: Respect metadata[id].range for offset!
- treesitter: Playground improvements
- treesitter: Add filetype -> lang API
- treesitter: Upstream foldexpr from nvim-treesitter
- treesitter: Expand the API
- treesitter: Add :InspectTree command (#22477)
- treesitter: Bundle query parser and queries (#22483)
- treesitter: Use upstream format for injection queries
- tui: Run TUI as external process
- tui: Graduate the +tui feature
- tui: Support altfont mode in tui.c
- ui: Add support to display a title in the border of a float (#20184)
- ui: Add 'statuscolumn' option
- ui: Restore has('gui_running')
- ui: Add scroll_delta to win_viewport event #19270
- vim-patch: Mention original author #20772
- vim.diff: Allow passing an integer for linematch
- vim.fs: Pass path to find() predicate, lazy evaluate #22378
- vim.fs: Improve normalize
- vim.gsplit: Gain features of vim.split
- vim.version: More coercion with strict=false
- web: Syntax highlighting via highlight.js
- window/ui: Add splitkeep option (#19243)
- windows: Show icon in terminal titlebar, taskbar #20607
Performance
- column: Only build fold/sign column when present in 'statuscolumn'
- completion: Use one call to globpath() for .vim and .lua #21942
- diagnostic: Use api variable and improve validate (#21111)
- lsp: Update semantic tokens algorithm for parsing modifiers (#21383)
- lsp: Only redraw the windows containing LSP tokens
- lsp: Better binary search mid calculation in semantic token (#22607)
- statuscolumn: Only fill click defs array once per redraw (#21884)
- statusline: UI elements are always redrawn on K_EVENT
- treesitter: Smarter languagetree invalidation
- treesitter: More efficient foldexpr
- ui: Mitigate redraw latency regression from TUI refactor
Bug Fixes
- Make_filter_cmd for :! powershell
- :! pwsh redirection for
command not found
- Find multibyte file name in line (#20519)
- Change did_emsg back to int
- 'scroll' is not set correctly for floats with 'splitkeep'
- Setting tabline option not redrawing tabline
- Avoid unsigned overflow in home_replace() (#20854)
- Add lfs to luarc.json (#20979)
- Vim.ui.input always calls callback #21006
- Don't disable compositor widgets when a GUI with multigrid attaches
- Pvs warnings (#21145)
- Clang warnings (#21247)
- Vim.opt_local:append ignoring global option value (#21382)
- Issues with command line if ui elements are externalized
- Properly close builtin popup in ext_popupmenu
- Failing XDG test on Windows CI
- Pass value instead of pointer to isalpha (#21898)
- Use correct number for INT_MAX (#21951)
- Add manifest file to correctly determine Windows version (#21953)
- Uv_tty_set_mode failed in Windows #22264
- Lsp github issue template example (#22285)
- Remove "Features" section from --version/:version (#22315)
- Remove "Compiled by:" from :version/--version (#22316)
- Add missing void as function argument (#22317)
- Windows assertion failure due to incorrect path length (#22324)
- Resolve error from -Werror=maybe-uninitialized
- Address -Wmaybe-uninitialized warnings (#22436)
- Pasting in terminal buffer on windows #22566
- Invalid buffer size argument to snprintf #22729
- Snprintf buffer overflow detected by -D_FORTIFY_SOURCE=3 (#22780)
- MSVC: Set the active code page to utf-8 (#22384)
- Windows: Restore console title at exit #21922
- api: Dynamically allocate line buffer for nvim_out_write (#20537)
- api: Nvim_buf_get_text regression (#21071)
- api: Nvim_win_set_cursor redraw cursorcolumn for non-current window (#21072)
- api: Set correct curbuf when temporarily changing curwin (#21371)
- api: "emsg_silent" should imply "silent" in nvim_cmd (#21438)
- api: Nvim_create_autocmd crash on invalid types inside pattern array
- api: Avoid memory leak with click functions in nvim_eval_statusline() (#21845)
- api: Don't allow hiding aucmd_win from another tabpage (#21975)
- api: Allow empty Lua table for nested dicts #22268
- api: Set script context when setting usercmd or option (#22624)
- api: Vim.filetype.get_option() (#22753)
- api: Make nvim_get_hl return 'cterm' attrs properly
- api: Use local LastSet structure in nvim_get_option_info (#22741)
- api: Return both link and attributes with nvim_get_hl (#22824)
- api: Avoid double hit-enter prompt with nvim_err_writeln (#22879)
- autocmd: Handle recursion for force set (#22820)
- buffer_updates: Save and restore current window cursor (#16732)
- build: "make clean" fails
- build: Duplicate version string "v0.8.0-v0.8.0" #20578
- build: Fix invalid use of EXITFREE
- chansend: Sending lines to terminal in reverse order on Windows #19315
- ci: Skip test on windows (#21502)
- ci/release/winget: Bump action version
- client: Wait for session to exit
- clint: Disable whitespace/newline #20619
- clipboard: Prefer xsel #20918
- clipboard: Update version regex pattern (#21012)
- clipboard: Show provider warning when not during batch changes #21451
- column: Avoid drawing columns for virt_lines_leftcol
- column: Estimate 'statuscolumn' width appropriately
- column: No longer reset nrwidth_line_count for 'statuscolumn'
- column: Cmdwin cursor is offset with 'statuscolumn' (#22445)
- column: Issues with 'statuscolumn' width (#22542)
- column: Rebuild status column when sign column is invalidated (#22690)
- column: Invalidate statuscolumn width when UPD_NOT_VALID (#22723)
- completion: Set pum_size even if ext_popupmenu is used (#20648)
- completion: Correct what modes support fuzzy completion
- completion: Include lua syntaxes in :ownsyntax completion (#21941)
- coverity/433537: Don't call kv_concat_len() when read_size is 0 (#21664)
- decoration: Redraw correctly when re-using ids
- decoration: Call providers in win_update() earlier
- decoration: Do not reset must_redraw after calling providers (#21459)
- decoration: Don't show signcolumn for non-sign_text extmark (#22135)
- diagnostic: Correct type annotations; add Diagnostic type (#21120)
- diagnostic: Clear stale cache on reset (#21454)
- diagnostic: Sort diagnostics by column (#21457)
- diagnostic: Revert notification on missing diagnostics (#21632)
- diagnostic: Use correct field name for tags (#22835)
- diff: Remove size_t underflow (#20929)
- diff: Fix a crash in diff mode with linematch enabled (#21070)
- diff: Handle long lines without crashing (#21389)
- diff: Avoid restoring invalid 'foldcolumn' value (#21650)
- diff: "nvim -d" should only diff arglist files #21829
- diff: Adjust extmarks after diffput/diffget (#22440)
- diff: Add NULL check
- diff: Trigger on_bytes only once after diffget/diffput
- diff.c: Regression in diffgetput (#20843)
- docs: Missing "(" in :help HTML
- docs: Nil as viable argument for goto_prev (#20852)
- docs-html: Keycodes, taglinks, column_heading #20498
- docs-html: Update parser
- docs-html: Misaligned tabs after conceal #20690
- edit: Don't subtract msg_scrolled when removing double quote (#22630)
- editorconfig: Do not highlight unknown properties as errors (#21673)
- embed: Handle stdio in server properly
- eval: Make error number of charidx() same as Vim
- eval: Change some tv_dict_add() usages back to hash_add()
- events: Save v:event for cmdline autocommands separately (#21316)
- events: Skip WinScrolled for newly-created float windows (#21333)
- ex_cmds: Fix a mistake in the porting of Vim patch 8.1.0306 (#21096)
- exit: The TUI should not ui_flush() itself (#21625)
- exit: Skip unnecessary steps in TUI preserve_exit() (#21897)
- extmarks: Adjust extmarks when inserting prompt prefix
- extmarks: Problems with folded virtual lines (#21930)
- extmarks: Don't leak memory on error (#22507)
- fileio: Use first available directory in backupdir for backupcopy (#20655)
- fileio.c: Don't use uninitialized memory (#22031)
- filetype: Don't pass empty string to detect (#20766)
- filetype: Correctly detect tex files
- filetype: Make vim.filetype.match() work with contents only (#22181)
- filetype: Avoid recursive FileType autocmds (#22813)
- filetype: Make recursive work...again (#22826)
- float: Make closing float in another tab return to correct window
- float: Fix ml_get error with bufpos
- float: Fix crash with bufpos and non-existent window (#21319)
- float: Remove -1 in height clamp
- folds: Fix fold marker multibyte comparison (#20439)
- folds: Use long for number of folded lines (#21447)
- folds: Cursorline highlight is not always applied on closed folds (#22242)
- folds: Handle visual blockwise indent insertion correctly (#22898)
- fs: Duplicate path separator #21509
- health: Correct tmux rgb verification (#20868)
-
health: Fix
tmux_esc_time
comparison - health: Iterate using ipairs correctly (#22119)
- health: Stop using deprecated ts.language.inspect_language() (#22850)
- help: Force tree reparse after local addition insertion
- helpers: Restore channel id after a call to WITH_SCRIPT_CONTEXT
- highlight: Link more treesitter groups by default (#20711)
- highlight: Properly deal with underline mask when listing (#22057)
- highlight: Avoid ORing underline flags (#22372)
- highlight: Use winhl=Foo:Bar even when Bar is empty
- inspect: Alwasy resolve full treesitter lang hl groups
- intro: Omit patch version in ":help news" item #20713
- intro: Make :help news line easier to translate (#21974)
- lintcommit: Capitalized description #22282
- loader: Disable profiling by default
- lsp: Reporting bogus capabilities in CodeActionKind #20678
- lsp: Ignore hover and signatureHelp responses on buffer change (#21121)
-
lsp: Render
{lang} code blocks and set separator default to false (#21271)
- lsp: Remove workspaceFolders field (#21284)
- lsp: Call show_document with correct args
- lsp: Ensure open_logfile is safe for fast events (#21288)
- lsp: Followup fixes for semantic tokens support (#21357)
- lsp: Correct some type annotations (#21365)
- lsp: Fix get_active_clients bufnr parameter (#21366)
- lsp: Ignore null responses for semanticTokens request (#21364)
- lsp: Token_edit.data might be null on deletion (#21462)
- lsp: Adjust gravity of semantic tokens extmarks (#21574)
- lsp: Fix nil client access in get_active_clients (#21524)
- lsp: Change vim.lsp.get_active_clients.filter name annotation to string (#21624)
- lsp: Correct callHierarchy capability to fix lsp.buf.incoming_calls() (#21665)
-
lsp: Fix
removed
param value in add_workspace_folder (#21915) - lsp: Assert workspace/applyEdit receives params (#21945)
- lsp: Check method is supported when range formatting (#21970)
- lsp: Check if the buffer is a directory before w! it (#22289)
- lsp: Wrong format of bufnr and client order in error message (#22336)
- lsp: Fix some type annotations (#22397)
- lsp: CallHierarchy methods also require the callHierarchyProvider (#22427)
- lsp: Use buffer scheme for files not stored on disk (#22407)
- lsp: Only fire LspDetach for attached buffers (#22468)
- lsp: Don't monitor files if workspace_folders is nil (#22531)
- lsp: Change LspTokenUpdate to use buffer instead of pattern (#22559)
- lsp: Prevent lsp tests from picking up local user config (#22606)
- lsp: Send didClose on buffer rename (#22623)
- lsp: Use line start/end for visual line selection (#22632)
- lsp: Remove_workspace_folders fails if client has no workspace_folders #22633
- lsp: Vim.lsp.util.apply_text_edits cursor validation #22636
- lsp: Kill buffers after renaming a directory #22618
- lsp: Avoid switching buffers on lsp attach (#22689)
- lsp: Jump to tag locations reliably when :ltag is used (#22750)
- lsp: Add missing silent check in lsp hover handler (#22763)
- lsp/window_showDocument: Correctly handle external resources #20867
-
lua: Properly configure luacheck and remove
local vim = ...
lines (#20551) - lua: Assert failure with vim.regex() error inside :silent! (#20555)
- lua: On_yank error with blockwise multibyte region #20162
- lua: Pesc, tbl_islist result types #20751
-
lua: Make
vim.deepcopy
work withvim.NIL
- lua: Always return nil values in vim.tbl_get when no results
- lua: Mark some eval functions that can run in API-fast
- lua: Vim.deprecate() shows ":help deprecated" #22677
- luado: Get old_line length before executing Lua code
- man: Support MacOS 13
-
man: Handle absolute paths as
:Man
targets (#20624) -
man: Use italics for
<bs>_
(#22086) - man.lua: Set modifiable before writing page (#20914)
-
man.lua: Use
env
command (#21007) - man.lua: Open in current window if it's already a man page (#21987)
- man.lua: Tests, naming
- mappings: Use all buckets in second round of unmap (#21534)
- mappings: Fix check for cpo-B inverted in completion
- mappings: Make "<" escaping in completion match Vim
- mark: Do not restore view in op-pending mode (#20889)
- memline: Use long instead of linenr_T for db_line_count
- memory: Fix memory alignment for dynamic allocation
- messages: Reset msg_grid_scroll_discount when redrawing (#21000)
- messages: Don't set cmdline_row when messages have scrolled (#21015)
- mouse: Ensure no scrolling with "ver:0" in 'mousescroll' (#20861)
- mouse: Statusline click registered as statuscolumn (#21748)
- options: No matter what is said, 'cmdheight' is tab-local (susy baka)
- options: Fix local 'sidescrolloff' doesn't work for mouse (#21162)
- options: Restore exists() behavior for options (#21510)
- paste: Feed keys as typed in cmdline mode (#20959)
- path: Don't remove trailing slash when getting absolute path (#20853)
- powershell: Wrong length allocation for ":%w !" #20530
- qflist: Avoid read of uninitialized memory (#20709)
- rbuffer: Handle edge case where write_ptr has wrapped around
- redraw: Get the line again after evaluating something
- remote: Don't leak memory on failure to connect to server (#21931)
- rpc: Don't free args on error in rpc_send_event
- rpc: Don't parse msgpack if buflen is 0 (#21899)
- rpc: Ignore redraw events when not in UI client (#21892)
- rpc: Ignore redraw events when exiting (#22184)
- runtime: Properly rely on t_Co for colorschemes (#20602)
-
runtime: Use
g:terminal_color_{0-15}
in colorschemes (#20637) - screen: Correctly draw background and eob with 'rightleft' (#22640)
- screen: Redraw the ruler for a current floating window
- secure: Crash when hitting escape in prompt (#21283)
- shell: On Windows :make does not echo #22728
- showcmd: Assert failure with cmdheight=0 (#21536)
- sleep: Correct cursor placement (#22639)
- spell: Fix wrong cast (#20810)
- spell: Properly source spell/LANG.{vim,lua} (#22716)
- startup: Support .exrc or .nvimrc with init.lua (#21181)
- status: Handle unprintable chars in the statusline
- statuscolumn: Fix crashes and clang/PVS warnings (#21725)
- statuscolumn: Fix sign column highlights (#21727)
- statuscolumn: Foldcolumn buffer is too small (#21761)
- statuscolumn: Make %l/%r respect 'number'/'relativenumber' (#21747)
- statuscolumn: Always fill click defs array (#21878)
- statusline: Don't show showcmd when not enough space (#21550)
- statusline: Make nvim_eval_statusline() work with %S (#21553)
- statusline: Don't leak memory with zero-width click labels
- statusline: Don't leak memory with truncated click labels
- stdpath: Default to /tmp if stdpath('run') cannot be created #20952
- syntax: Correct conceal for annotated code blocks (#21272)
- tabline: Avoid memory leak in tabline click definitions (#21847)
- terminal: Fix 'mousescroll' not respected in terminal mode (#21415)
- test: Unset XDG_CONFIG_HOME when running oldtest
- test: Fix issues detected by running unittests in ASAN/UBSAN
- test: Fix C imports on macOS arm64
- tests: Only get the color map once, even for multiple test files
- tests: Initialize Screen.colors in API highlight tests
- tests: Use -l mode for lsp tests
- tests: Fixes for using vim.mpack and more ASAN
- tests: Adapt treesitter/highlight_spec priority test
-
treesitter: Properly restore
'syntax'
(#21358) - treesitter: Really restore syntax
- treesitter: Validate language name
- treesitter: Fix most diagnostics
- treesitter: Don't trample parsers when filetype!=lang
- treesitter: Make params optional
- treesitter: Fixup language invalidation (#22381)
- treesitter: Remove virtual text from playground
- treesitter: Ipairs -> pairs
- treesitter: Fixup for health
- treesitter: Maintain cursor position when toggling anonymous nodes
- treesitter: Disallow empty filetypes
- treesitter: Typos in _range.lua
- treesitter: Break early from loop when match is found (#22499)
- treesitter: Raise ts_match_limit to 256 (#22497)
- treesitter: Is_in_node_range (#22582)
- treesitter: Correct include_bytes arg for parse()
- treesitter: Do not error on empty filetype
- treesitter: Better lang handling of get_parser()
- treesitter: Foldexpr (#22652)
- treesitter: InspectTree does not respect 'splitright' #22692
- treesitter: Annotations
- treesitter: Add missing deprecate
- treesitter: Update queries from nvim-treesitter
- treesitter: Use capture metadata range if exists
- treesitter: Disable folding in inspect_tree() (#22885)
- treesitter: Do not track ranges of the root tree (#22912)
- ts: Check buffer is loaded when restoring options (#21419)
- tui: Resume main thread if suspending isn't implemented (#20523)
- tui: Set cursor color param as string when required #21407
- tui: More work in the TUI
- tui: Do not set ui_client_termname if it is already set (#21607)
- tui: Make a copy of data->params before unibi_format() (#21643)
- tui: Do not invoke loop recursively for pad()
- tui: Set stdin as "blocking" on exit (#21973)
- tui: Detach/attach on suspend/resume (#22040)
- tui: Exit on input eof
- tui: Set taskbar, icon in Windows #22270
- tui: Only forward stdin_fd on first attach (#22293)
- tui: Properly check if stdin is a tty (#22321)
- tui: Avoid stack-use-after-scope with cursor color (#22435)
- tutor: Failing to get buf name #20933
- ui: Msg_ext_set_kind for nvim_echo (#20476)
- ui: Setting 'cmdheight' with global statusline (#20515)
- ui: Send grid_resize events before triggering VimResized (#20760)
- ui: Fix some cases of stale highlight definitions
- ui: Allow resize commands to set 'cmdheight' to 0
- ui: Fix fragile UI_CALL macro invocation (#21656)
- ui: Convert title_pos string in nvim_win_get_config
- ui: Set stc to empty in floatwin with minimal style (#21720)
- ui: Command line issues with external messages (#21709)
- ui: Re-organize tty fd handling and fix issues
- ui: Make sure screen is valid after resizing
- ui: Recording change doesn't trigger statusline redraw
- ui: Ruler is not redrawn in cmdline with redrawstatus
- ui-ext: Correct message kind in history before vim.ui_attach()
- ui-ext: Log and clear error in ui_comp_event (#21147)
- ui-ext: Force cursor update after resize in char-based UI
- unittest: Delete unused duplicated code
- unittests: Do not consider process crash to be a success
- unittests: Fix TUI broken test previously ignored
- vim-patches: Ensure libfuse is installed
- vim.diff: Correctly apply hunk offsets with linematch (#20931)
- vim.diff: Fix fastforward off-by-1 (#20937)
- vim.ui.input: Return empty string when inputs nothing (#20883)
- vim.version: Incorrect version.cmp()
- vim.version: Prerelease compare
- win_close: Remove float grid after closing buffer (#21551)
- win_update: Don't use unintialized memory in edge case (#22266)
- windows: Set console icon later in startup
- windows: Consistent normalization in fs.find
Build System
- Remove unused variable CMAKE_C_COMPILER_ARG1
- Remove code for cross-compilation
- Remove url for 32-bit winyank
- Remove unnecessary translation-related code
- Rely on builtin cmake downloading rather than custom script
- Define EP_PREFIX property
- Only generate compilation database for the nvim target (#20449)
- Remove EXITFREE for debug builds
- Generate compilation database for older cmake versions
- Add clang-tidy configuration file (#15601)
- Fix incorrect clang-tidy identifier rules (#20650)
- Rely on default cmake installation if possible
- Give example on complex regexes
- Preprocess vim patches with uncrustify #20786
- Copy each treesitter parser library individually #20797
- Fix plural messages missing from .po files (#20830)
- Make update-po support optwin.vim (#20840)
- Remove python linting #20851
- Add EXCLUDE option to add_glob_target
- Always ignore user's cmake preset (#20935)
- Allow IWYU to fix includes for all .c files
- Restrict
git describe
to top level source directory (#20993) - Fix help tags generation when SHELL=fish (#21562)
- Add git sha to version when built with nix flake (#21210)
- Remove workaround for old luajit versions
- Remove workaround for ancient clang versions
- Use modern cmake (#21589)
- Include our libraries before system libraries (#21746)
- Enable iwyu with target properties instead of variables (#21797)
- Exclude tui/terminfo_defs.h from lintc-clint (#21822)
- Enable cmake workflow presets (#21860)
- Remove nvim as a dependency of unittests (#21903)
- Various cmake fixes (#21902)
- Bump MSVC warning to level two (#21890)
- Use CMAKE_POSITION_INDEPENDENT_CODE instead of -fPIC (#21947)
- Make generated source files reproducible #21586
- Remove unnecessary unit test code (#21940)
- Use cmake for all platforms for unibilium and libtermkey (#21926)
- Simplify treesitter installation (#21969)
- Use upstream CMakeLists.txt for unibilium (#21976)
- Delete pthreads import (#21732)
- Remove GNU make check (#21977)
- Remove tests for libtermkey (#21983)
- Use cmake to build treesitter on all platforms (#21984)
- Introduce default build variables (#21991)
- Use cmake to build libvterm on all platform (#21986)
- Check if libvterm version meets requirement (#22010)
- Find unibilium without relying on libfindmacros (#22015)
- Fix dependencies in find modules (#22017)
- Enable ccache by default if available (#22020)
- Enable ccache project-wide (#22045)
- Add uninstall make target (#22059)
- Remove unnecessary file generation (#22099)
- Update release data
- Stop relying on CMAKE_BUILD_TYPE to determine the build type (#22051)
- Unbreak building neovim with multi-config generators (#22104)
- Don't build libnvim when running the CI (#22149)
- Remove duplicate INTERFACE keyword (#22106)
- Prefer -D
= over -D = (#22164) - Replace check-single-includes with clang-tidy (#22061)
- Remove unused function get_test_target (#22176)
- Reuse source files with interface library (#22177)
- Create test/CMakeLists.txt and move test-related code (#22179)
- Remove codecov related files (#20859)
- Mark uninteresting variables as advanced (#22208)
- Enable MSVC level 3 warnings (#21934)
- Don't check environment variable to detect CI (#22234)
- Treat clang-tidy warnings as errors (#22238)
- Remove ENABLE_COMPILER_SUGGESTIONS option (#22249)
- Only use HOSTNAME_PRG if HOSTNAME is undefined (#22288)
- Use custom command to create single versiondef (#22290)
- Use libuv config file (#22209)
- Test multi-config generator (#22310)
- Build all dependencies in parallel (#22329)
- Remove unused dependency penlight (#22334)
- Build luajit in parallel (#22327)
- Set libtermkey project language to C (#22410)
- Remove pkgconfig-related code (#22422)
- Remove libfindmacros library (#22423)
- Cmake cleanup (#22251)
- Unset variables ending with "URL" if USE_EXISTING_SRC_DIR is ON
- Show build type specific compiler flags when using --version
- Fix unknown pragma warning with mingw (#22533)
- Consistently use the provided option paths
- Fix USE_EXISTING_SRC_DIR option
- Silence git describe error output
- Remove workaround for incorrectly packaged libluv
- Enable unit testing on release builds (#22554)
- Fix build warning when using gcc 4.9.2
- Explicitly add dependency include dir for header generation
- Sanitizers for gcc
- Set CMAKE_C_STANDARD to 99 for all dependencies
- Drop curl.exe on Windows
- Download wintools executables separately
- Cmake cleanup
- MSVC: Enable assertions on RelWithDebInfo build type (#22326)
- Windows: Fix redoing version generation (#21880)
- Windows: Make bundling nvim-qt optional (#21866)
- Windows: Allow building without custom md5sum
- bump_deps.lua: Run command -v in shell (#22030)
- ci: Let ASAN print tracebacks for more errors (SIGABORT, SIGILL)
- cmake: Add modelines to enable syntax highlighting
- deps: Restore support for USE_EXISTING_SRC_DIR (#20491)
- deps: Add build type for libuv (#20575)
- deps: Disable shared library for libvterm. (#20566)
- deps: Bump tree-sitter to v0.20.8 (#22663)
- deps: Bump luarocks to v3.9.2
- deps: Bump coxpcall to 1.17.0-1
- deps: Bump luacheck to 1.1.0-1
- deps: Bump mpack to 1.0.10
- deps: Bump lua parser to v0.0.14 (#20897)
- deps: Switch vim parser to maintained fork (#22896)
- deps: Bump vimdoc parser to v2.0.0 (#22870)
- deps: Set query parser to release (#22603)
- deps: Bump libvterm to v0.3.1
- deps: Bump msgpack-c to v6.0.0 (#22522)
- deps: Bump win32yank to v0.1.1 (#22700)
- deps: Bump actions/stale from 7 to 8
- deps: Switch to Launchpad for libvterm and libtermkey (#22811)
- editorconfig: Set indent_size to 4 for python files (#21135)
- lint: Remove clint.py rules for braces #20880
- lint: Add more shell scripts to lintsh
- lintsh: Double quote to prevent word splitting (#21571)
- luarocks: Update busted version to v2.1.1 (#22029)
- nix: Change the pkgs to final, add new version of libvterm (#20410)
- nix: Update nixpkgs
- nix: Clean up nix flake (#21565)
- nix: Remove pylint as it has been removed (#21572)
- nix: Fixed build (#22918)
- vim-patch.sh: Handle added/removed files properly
- vim-patch.sh: Checkout files with path for uncrustify (#20863)
- windows: Export extern symbols for use in FFI #22756
- windows: Specify Windows 8 as the minimum version (#22173)
- windows: Work around luarocks not finding its own md5sum
Documentation
- Refer to vim.lsp.start() in LSP issue template #20422
- Fix incorrect :help tag (#20511)
- Added proper annotations to functions in shared.lua
- Fix typos
- Fix/remove invalid URLs #20647
- "supported platforms" matrix #19615
- Update vimdoc parser #20747
- ":che" is ":checkhealth" #20147
- .git-blame-ignore-revs (#20820)
- Swap CursorLineFold and CursorLineSign (#20875)
- Add language annotation to Nvim manual
- Add missing docs from some Vim patches (#21296)
- Dark/light color/accessibilty pass for generated html docs #21345
- Add links to extmarks and namespaces (#21378)
- Remove "How-to disable mouse" menu item #21394
- Add security policy (#17338)
- Fix order of numbers in syntax.txt (#21581)
- Clarify line about converse of lua-heredoc (#21592)
- Fix treesitter parsing errors
- Add 'statuscolumn' docstrings (#21717)
- Builtin TUI is no longer channel 0 (#21794)
- Treesitter.add_directive, add_predicate #21206
- Docs: use codeblocks in runtime/doc/options.txt (#21919)
- Clarify :runtime behavior without [where] again (#22003)
- Clarify "pipe" mode for sockconnect
- Reword news.txt to ensure a consistent style (#22215)
- Remove mentions of 'balloonexpr' #22049
- Remove the test badge from the README (#22350)
- Mention getmousepos() for click execute function label
- Naming conventions, guidelines
- Fix more treesitter parsing errors
- Use build/bin/nvim instead of nvim in gen_vimdoc (#22398)
- Fix vim.treesitter tags
- Lua2dox.lua debugging
- Module-level docstrings (@defgroup) #22498
- Add missing highlight groups for floats
- Add removed features in news.txt
- Fix g:terminal_color_x terminal colors #22746
- More details about vim.region (#21116)
- How to debug TUI using gdb/lldb #22771
- Add vim.treesitter.query.get_query() to deprecated.txt
- README: Add Kotlin as a language which can use the API (#21567)
- README: Fix CI status badge (#22308)
- api: Pattern is not expanded for autocommands (#20812)
- api: Fix treesitter parsing errors
- api: Tweak data arg for nvim_create_autocmd (#22008)
- api: Link to nvim_set_hl_ns from nvim_set_hl (#22678)
- dev-style: Remove rule about variable declarations (#20446)
- dev-style: Remove rules covered by uncrustify
- diagnostic: Number → integer (#22512)
- docstrings: Fix runtime type annotations
- editorconfig: Update news.txt
- editorconfig: Add editorconfig.txt
- editorconfig: Number → integer (#22514)
- filetype: Number → integer (#22516)
- gen: Support language annotation in docstrings
- gitignore: Correct oldtest path
- help: Consistent headers for local additions
- highlight: Fix type annotations (#22272)
-
html: Render
@see
items as a list #22675 - inspect: Number → integer (#22511)
- lsp: Add formatting APIs to deprecated.txt (#20487)
- lsp: Update buf_notify and rpc.notify params types (#21753)
- lsp: Fix type annotation on convert_input_to_markdown_lines (#21772)
- lsp: Format arguments to start_client() (#21980)
- lsp: Update cmd_env description (#22438)
- lsp: Change type annotations from number → integer (#22510)
- lsp: Type annotation for lsp.client (#22509)
- lsp: More precise type annotations (#22621)
- lsp: Opt-out of default LSP "gq" #22615
- lua: Add clarifications for fs.find() and fs.normalize() (#21132)
- lua: Correct the tags for vim.opt_local and vim.opt_global (#21138)
- lua: Correct vim.spell.check example (#21311)
- lua: Add guide to using Lua in Neovim (#21137)
-
lua: Add
vim.json
(#21538) - lua: Fix treesitter parsing errors
- lua: Adjust some type annotations
- lua: Lua-guide: <Nop> is for rhs of vim.keymap.set(), not lhs (#21814)
- lua: Use luaref tag instead of www.lua.org #21813
- lua: Number → integer (#22517)
- luvref: Fix treesitter parsing errors
- luvref: Update to version bump
- maintain: CI strategy #20778
- maintain: Add note on updating luvref.txt
- manual: Fix treesitter parsing errors
- news: Add news.txt and link from README (#20426)
- options: Remove mentions of 'imactivatefunc' and 'imstatusfunc'
- shell: Mention "&" for piping with powershell #20459
- support: Update tested versions (#21126)
- test: Using cmake directly (without make) #22781
- treesitter: Fix predicate syntax (#21016)
-
treesitter: Change links for
eq?
andset!
to codeblocks (#21047) - treesitter: Use full function names in tags (#21321)
- treesitter: Fix parse errors
- treesitter: Number → integer (#22513)
- treesitter: Add query injections
- tutor: Fix TODO line demo (#21965)
- uri: Number → integer (#22515)
- usr: Make usr_05.txt more coherent with Nvim changes (#22428)
- usr_05: Update sentence about Nvim default behavior of Q (#20817)
- vim.fs: Normalize Windows example was incorrect (#21966)
- website: Soft wrap code blocks #21644
Refactor
- Remove char_u type and replace with char, uint8_t, etc
- remove STRNCMP (#21208) and STRLCPY (#21235)
- Remove clint error suppression as all errors has been fixed #21782
- Explicitly convert HANDLE to intptr_t for _open_osfhandle()
- Clang-tidy fixes to silence clangd warning (#20683)
- Fix uncrustify lint errors
- Move do_mouse() and its helpers to mouse.c (#20895)
- Fix clang-tidy warnings
- Click definition functions #20923
- Remove stray emsg check after #20992 (#20996)
- Move tabline code to statusline.c (#21008)
- Convert drawline.c draw states to enum (#21067)
- Remove STDC_ISO_10646 check
- Deprecate 'secure' option
- Remove old TODO comments that aren't relevant anymore (#21144)
- Maybe suppress a PVS warning
- Rework parameter validation in vim.secure.trust() (#21223)
- Buffer_ensure_loaded()
- Move ex_retab() to indent.c
- Remove COMMA (#21260)
- Make sure getting a callback doesn't modify argument
- Rename mch_msg => os_msg
- Rename mch_get_acl => os_get_acl
- Eliminate os_unix.c #21621
- Extract code to open stdin for reading
- Eliminate bump-deps.sh using "nvim -l"
- Fix IWYU mapping file and use IWYU (#21802)
- Format with stylua (#21821)
- Remove E5500, adjust tests
- Fix sign conversion warning from gcc (#21833)
- Use uint8_t for blobs and ga_append() (#21916)
- Use flexible arrays instead of the length-of-one trick (#22072)
- Reduce scope of locals as per the style guide (#22206)
- Move init_default_autocmds to lua
- Rename show_tree => inspect_tree #22474
- Move ga_loaded to runtime.c (#22626)
- Do more in TRY_WRAP
- Add const and remove unnecessary casts (#22841)
- Use bool type for global variables (#22842)
- Rename local API alias from a to api
- Make error message definitions const
- Remove use of reserved c++ keywords
- PVS: Suppress false positive V547 in drawline.c (#21875)
- PVS/V1048: Remove unnecessary assignment (#21870)
- PVS/V1048: Remove redundant assignment (#21871)
- PVS/V1048: Remove duplicated assignments (#21873)
- PVS/V581: Merge identical if statements (#22390)
- api: Do not allocate temporaries for internal events
- api: VALIDATE macros #22187 #22256 #22262
- build: Remove unused stdlib function and include checks
- build: Graduate HAVE_LOCALE_H feature
- build: Graduate libtreesitter features which are 1+ years old
- build: Graduate msgpack-c FLOAT32 "feature" since forever
- build: Graduate unibilium VAR_FROM feature from 2017
- build: Graduate -Wvla, -fno-common and -Og "features"
- build: Make installation of runtime/ more effective
- checkhealth: Convert "nvim" check to Lua
- clint: Convert short to int16_t (#20815)
- column: Remove unused build_statuscol_str() arguments
- completion: Don't add and remove '^' for Lua (#22702)
- diagnostic: Remove deprecated function (#20423)
- diagnostic: DRY for loop #21521
- diff.c: Reduce scope of variables (#20781)
- diff.c: Break up ex_diffgetput()
- diff.c: Allocate hunks directly in ga_array
- diff.c: Factor out hunk extraction
- diff.c: Factor out hunk processing
- diff.c: Simplify diff_buf_idx()
- diff.c: Internal does not need diffstyle
- diff.c: Factor out diffblock deletion
- diff.c: Copy lines via memmove
- drawline.c: Leadcol/trailcol
- drawline.c: Move number column helpers function together
- drawscreen.c: Reduce scopes of locals (#20668)
- eval: Make get_lval() explicitly check for v:lua
- eval.c: Factor out get_number_tv() (#21893)
- exit: Pass error message to preserve_exit() (#22097)
- extmarks: Some minor internal API changes
- f_has: Remove wrong comment (#21561)
- fileio.c: Reduce scope of locals
- fileio.c: Refactor match_file_path()
- fileio.c: Refactor vim_rename()
- fileio.c: Refactor buf_write_bytes
- fileio.c: Refactor buf_write_bytes (2)
- fileio.c: Remove HAS_BW_FLAGS
- fileio.c: Factor out autocmd handling from buf_write()
- fileio.c: More bools
- fileio.c: Reduce scope of locals
- fileio.c: Do not use macros for error handling
- fileio.c: Factor out buf_write post autocmds
- fileio.c: Factor out file info calc
- fileio.c: Make unreadable expression readable
- fileio.c: Factor out backup creation
- fileio.c: Remove HAVE_ACL ifdefs
- fileio.c: Normalize ifdefs
- fs: Replace vim.fn/vim.env in vim.fs (#20379)
- highlight: Rename FloatBorderTitle #20988
- highlight: Reshape the HL_UNDER* bits into a 3-bit integer mask
- highlight_group.c: Reduce scope of locals
- intro: Avoid Coverity warning (#22000)
- loader: Use vim.fs
- loader: Remove BufWritePost autocmd
- loader: Add typing for package.loaders
- loader: Simplify tracking logic
- loader: Cache hash information
- log: Reduce compile time LOG_LEVEL granularity
- lsp: Remove deprecated lsp functions (#20421)
- lsp: Extract a _create_server method in lsp_spec
- lsp: Remove deprecated vim.lsp.buf_get_clients calls (#21337)
- lsp: Remove workaround for missing bit module (#22373)
- lsp: Remove deprecated code (#22389)
- lsp: Remove _resolve_capabilities_compat (#22628)
- lsp: Do not parse verbose output when overwriting options (#22810)
- lua: Move _G.arg init to nlua_init()
- lua: Get all marks instead of iterating over namespaces
- lua2dox: Format with stylua
- main.c: Remove unreachable use_builtin_ui conditions (#22338)
- man: Pass env directly to spawn() (#20591)
- man: Add type annotations
- memory: Simplify new alignment logic
- option.c: Reduce scope of locals
- option.c: Add get_varp_from and get_varp_scope_from
- option.c: De-nest set_option_value
- option.c: Use intermediate for options ref
- option.c: Add do_set_num
- option.c: Add do_set_bool
- option.c: Simplify do_set_string
- option.c: Factor out common skip check
- option.c: Factor out loop code from do_set()
- option.c: Remove goto
- option.c: Change nextchar to uint8_t
- option.c: Use skiptowhite_esc
- option.c: Factor out set op parsing
- option.c: Factor out option prefix parsing
- option.c: Factor out option name parsing
- option.c: Factor out opt_idx validation
- option.c: De-nest code in do_set_option
- option.c: Move bool prefix check
- option.c: Add do_set_option_value
- option.c: Factor out some nextchar checks
- option.c: Factor out string option special case handling
- options: Don't pass negative number to illegal_char() (#21999)
- optionstr.c: Reduce scope of locals
- optionstr.c: Break up did_set_string_option 1-52
- optionstr.c: Remove some simple did_set_* functions
- optionstr.c: Add did_set_string_option_for
- optionstr.c: Break up did_option_listflags
- optionstr.c: Remove some redundant parens
- optionstr.c: Break up did_set_expropt
- optionstr.c: Move handling of formatlistpat
- optionstr.c: Align comments (#22070)
- params: Open -s and -w script files after parsing commands
- pty: Remove old logic for inheriting termios from host terminal
- redraw: No type argument in update_screen()
- redraw: Various simplifications
- redraw: Make cursor position redraw use the "redraw later" pattern
- runtime: Use vim.version to compare versions #22550
- runtime.c: Factor out find_script_by_name() (#22620)
- screen: Screen.c delenda est
- sleep: Simplify rube goldberg implementation of :sleep
- spell: Use uint8_t for "byts" variables (#22519)
- statusline: Move statusline defs to statusline_defs.h
- tag: Remove return type from do_tag()
- test: Create an lsp-specific helpers.lua file
- tests: Lift retry() into assert_log()
- tests: Run unittests using main nvim binary in interpreter mode
- tests: Move lua-client into core and use it for functionaltests
- treesitter: Add vim.treesitter.get_node() (#22360)
- treesitter: Use string.format to create lines
- treesitter: Simplify some range functions
- treesitter: Delegate region calculation to treesitter (#22553)
- treesitter: Use byte ranges from treesitter (#22589)
- treesitter: Add Range type aliase for Range4|Range6
- treesitter: Delegate region calculation to treesitter (#22576)
- treesitter: Move inspect_tree impl
- tui: Use nvim_echo() for verbose terminfo
- tui/input.c: Remove unused multithreading code (#22342)
- ui: Statusbar invalidation to win_set_inner_size()
- ui: Devirtualize the ui layer
- ui: Cleanup 'redrawdebug', introduce "flush" mode
- ui: Don't reimplement redrawing in focus gained handling
- ui: Remove some superfluous ui_flush() calls
- ui: Ui_log() can now just be a function
- uncrustify: Move macros definitions to enable formatting
- uncrustify: Improved formatting rules
- vim.gsplit: Remove "keepsep"
- vim.version: Cleanup
- vim.version: Use lazy.nvim semver module
- vim.version: Use lazy.nvim semver module
- win_close: Remove "force", don't pass on "free_buf" (#21921)
- win_line: Rename attr to vi_attr (#21487)
- win_line: Move some variables into a struct (#22490)
- window: Remove aucmd_win check from one_window() (#21972)
- window.c: Reduce scope of locals (#20301)
- windows: Move os_icon_xx functions
Testing
- Introduce skip() #21010
- Remove skip for 32-bit MSVC (#21030)
- Don't skip parser_spec on windows (#20294)
- Add a Lua test for swap file created before boot
- Fix failing tui_spec.lua tests (#21117)
- Use isCI to simplify CI detection (#21134)
- Simplify platform detection (#21020)
- Adding/removing winbar should not cause win_pos events (#21226)
- Use luv.os_uname for fast platform detection (#21157)
- Add more tests for float window bufpos (#21318)
- Convert another test in test_matchadd_conceal.vim to Lua (#21353)
- Remove unused variable (#21552)
- Add test cases for command line issues
- Add more tests for Unicode
- Avoid consecutive mouse input at different positions (#21781)
- Align Test_shell_options, Test_shellslash with Nvim default
- Avoid noise in NVIM_LOG_FILE
- Exepath() returns correct path with cmd.exe, powershell #21928
- Remove unused field ext_float (#22243)
- Make expect_unchanged() less confusing (#22255)
- Make {MATCH:} behave less unexpectedly in screen:expect()
- Don't search entire repo for files
- Move oldtests to test directory (#22536)
- Use a wider screen in the rightleft winhl test (#22641)
- Unskip working Windows tests (#22537)
- Re-bundle cat on windows (#21255)
- Windows not detected in msys shells #22671
- Use exec_capture() in more places (#22787)
- Fix flaky watchfiles tests (#22637)
- Replace lfs with luv and vim.fs
- Improve editor/fold_spec.lua and editor/put_spec.lua (#22916)
- Windows: Normalize paths for test summary
- api: Migrate screenchar() test in in window API to screen test
- editorconfig: Add editorconfig tests
- exit_spec: Make sure that autocommands are triggered (#22188)
- fileio_spec: Avoid expect_exit() without calling clear() (#21810)
- float_spec: Add missing sum_scroll_delta #22648
- help: Drop treesitter parse error to 0
- highlight_spec: Fix warning in Visual highlight test (#22719)
- legacy/prompt_buffer_spec: Align script with oldtest more (#22354)
- lsp: Call clear() before willSave tests (#21336)
- lsp: Add a screen:expect() between insert() and feed_command() (#21577)
- lua/diagnostic_spec: Remove unnecessary after_each()
- lua/fs_spec: Fix vim.fs.dir() test (#21503)
- lua/ui_spec: Fix Ctrl-C test flakiness (#21039)
- old: Test_lambda.vim garbagecollect() -> test_garbagecollect_now()
- old: Remove stray test42 files (#20966)
- old: Make Test_help_tagjump() test order match upstream
- old: Add missing lines from Vim patch 8.2.0522 (#21048)
- old: Make ":h local-additions" work properly in test_help.vim
- old: Skip Vim9 script with less divergence
- old: Change $TMPDIR from Xtest-tmpdir to X-test-tmpdir (#21346)
- old: Make test_signs.vim closer to upstream (#21479)
- old: Run some part of 'cpoptions' tests
- old: Make getting an unused PID work (#22529)
- old: Move memfile_test.c to test/old/ (#22567)
- old: Unskip working tests on Windows (#22650)
- shada: Fix shada syntax definitions test
- statuscolumn: Add more tests for wrapped lines (#21718)
- statuscolumn: %l should follow default wrap behavior (#21766)
- statuscolumn_spec: Remove unnecessary feed('lh')
- statusline: UI elements are not redrawn on K_EVENT unnecessarily
- syn_attr_spec: Add more information (#21912)
- termxx_spec: Fix TermClose bdelete test flakiness (#22463)
- treesitter/parser_spec: Correct time unit (#22471)
- tui_spec: Don't use nested terminal for resize at startup (#21583)
- tui_spec: Avoid race between nvim_paste and nvim_input (#21639)
- tui_spec: Improve cursor_address test (#21700)
- tui_spec: Doesn't use Unicode in cursor_address test (#21703)
- tui_spec: Make rapid resize test test what it wants to test (#21933)
- tui_spec: Don't expect exact screen in rapid resize test (#21935)
- tui_spec: Remove unnecessary arguments for remote UI
- tui_spec: Use RPC request to setup autocommands
- ui: Wait for another success with failure after success
- undo_spec: Add more tests for writing in Insert mode
- unit: Use file:close() properly (#21505)
- vim.fs.normalize: Enable test on Windows
1、 nvim-linux64.tar.gz 10.07MB
2、 nvim-linux64.tar.gz.sha256sum 86B
3、 nvim-macos.tar.gz 11.78MB
4、 nvim-macos.tar.gz.sha256sum 84B
5、 nvim-win64.msi 39.78MB
6、 nvim-win64.msi.sha256sum 81B
7、 nvim-win64.zip 40.07MB
8、 nvim-win64.zip.sha256sum 81B
9、 nvim.appimage 15.11MB
10、 nvim.appimage.sha256sum 80B
11、 nvim.appimage.zsync 53.08KB
12、 nvim.appimage.zsync.sha256sum 86B