Catalog / Neovim

0.9.0

NVIM 0.9.0

3.4 years agoaddedfixedchangedOriginal notes
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

  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)

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
      

Tarball

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

Other

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 to open_float() (#21130)
  • diagnostic: Add suffix option to virt_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 setting spelllang (#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 with vim.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 m

These notes run past the length kept in the archive. The rest is on the publisher’s page.