For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- -0f4f7d32ceremove `nvim` and `provider` module for checkhealth -7dbbaaec3frename 'jumpoptions' flag "unload" to "clean" (#30418) -35c5e23107store artifact shasums in a single shasum.txt file -188ec19894turn off translations by default -328ea02eb7use utf8proc full casefolding -737f58e232api: rename Dictionary => Dict -a389dc2f95clipboard: use OSC 52 as fallback clipboard provider (#31730) -ad70c9892dcolumn: rework 'statuscolumn' %r/l items -eb60cd74fbdeps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200) -a119aae4d3diagnostic: filter diagnostics by severity before passing to handlers (#30070) -51ccd12b3ddiagnostic: make virtual text handler opt-in (#32079) -a9e725b26ediagnostics: sort underline severity_sort (#30898) -e8b5dd1e89lsp: `symbol_to_item` requires `offset_encoding` -8260e4860blsp: multiple client support for vim.lsp.buf.hover() -debabaf884lsp: pass buffer number to root_dir function -9b357e30fdlsp: remove client-server handlers from vim.lsp.handlers -3e3775961flsp: rename lsp.completion.trigger() to get() (#32911) -0083e03d6flsp: support multiple clients in goto methods (#30877) -dff684fdb3lsp: support multiple clients in lsp.buf.references -970a27927elua: do not use typed table for empty dict -de48fbbd5fmessages: vim.ui_attach message callbacks are unsafe -a27419f3fcoptions: disallow setting hidden options #28400 -b922b7d6d7options: use OptVal for option defaults #26691 -4d9a1b9852provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022 -318676ad13release: remove backwards compatible releases -ad191be65esigns: place higher-priority signs from the left #27781 -0dd933265fterminal: cursor shape and blink (#31562) -35e5307af2terminal: include cursor position in TermRequest event data (#31609) -3cf602486cterminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859) -041d98fe8dtreesitter: add default fallback to `ft_to_lang` lookups -6913c5e1d9treesitter: default to correct behavior for quantified captures (#30193) -bd4ca22d03treesitter: don't parse tree in get_parser() or start() -a0b52e7cb3treesitter: enforce buffer is loaded when creating parser -99e0facf3atreesitter: use return values in `language.add()` -bda63d5b97typval: remove distinction of binary and nonbinary strings -48e2a73610ui: emit prompt "messages" as cmdline events #31525 -ca5fca2912windows: drop cat and tee executables from windows -be89d520d7windows: only support UCRT, even for mingw FEATURES -------------------------------------------------------------------------------- -efa45832eaadd "jump" options to vim.diagnostic.config() (#29067) -0631492f9cadd vim.fs.relpath -f864b68c5ballow gx to function for markdown links -f3632e14e3get/set namespace properties #28728 -a664246171remove deprecated features -ead5683ff9api: add err field to nvim_echo() opts -aec4938a21api: broadcast events to ALL channels #28487 -34d808b73capi: combined highlights in nvim_eval_statusline() -19b25f3feaapi: deprecate nvim_buf_add_highlight() -5c92b40b4bapi: deprecate nvim_out/err_write(ln) -d84a95da7eapi: nvim_get_autocmds filter by id#31549 -25d8c3a5adapi: nvim_open_win() relative to tabline and laststatus #32006 -e00d67ef31checkhealth: group parsers by name and path in output -563051a53eclipboard: support g:clipboard="osc52" #33021 -60ea046741clipboard: try cygutils, clip on Windows #30215 -2c629ad13fcolumn: apply appropriate numhl highlight to virt_lines (#32400) -65c7033cbecomment: allow commentstring to be determined from node metadata -268a3de0a7complete: CompleteDone reason "cancel", "discard" #32600 -a616272f56complete: specify reason for CompleteDone -f1748b78e3default: bind `vim.lsp.buf.signature_help` in select mode (#31223) -ac207c3ac2defaults: "Show Diagnostics" in mouse popupmenu #32122 -2c6b635872defaults: add LSP default mappings (again) (#28650) -bb7604eddadefaults: add default unimpaired style mappings (#28525) -4662ad5643defaults: completeopt=popup #32909 -e8e3b443f8defaults: disable 'foldcolumn' in terminal buffers (#31480) -cc6992f1cadefaults: dot-repeat [<Space> #31186 -6db830e40edefaults: enable diffopt "linematch" #32346 -b31132f1c1defaults: jump between :terminal shell prompts with ]]/[[ #32736 -0b7cc014fcdefaults: map gO to LSP document_symbol #30781 -26e765f905defaults: map gri to vim.lsp.buf.implementation() (#30764) -76aa3e52bedefaults: popupmenu "Open in browser", "Go to definition" #30261 -09d76afe84defaults: pretty :help headings #30544 -079e5f4f9bdefaults: unimpaired empty line below/above cursor #30984 -1c6d920052defaults: use vim.diagnostic.jump() for default mappings (#29066) -c9c17fda80deprecations: vim._defer_deprecated_module() -38a52caec0diagnostic: add `current_line` option for `virtual_text` handler -8ba73f0e4cdiagnostic: add vim.diagnostic.jump() (#26745) -445ecca398diagnostic: format() can filter diagnostics by returning nil #32302 -99e7323aa3diagnostic: inherit parent 'path' option in open_float (#31273) -21961967ffdiagnostic: update quickfix list by title #31486 -7579af3c51diagnostic: vim.diagnostic.setqflist improvements #30868 -1759b7844adiagnostic: virtual_lines #31959 -fd65422b99diff: do not try external when out of memory -0c296ab224docs: "yxx" runs Lua/Vimscript code examples #31904 -6628741adadocs: improve `@see` meta docstrings #30693 -23290e7676editor: handle new multibyte sequences in normal mode replacement -cb6c0fda71editorconfig: add support for spelling_language (#28638) -4817547ec4ex_cmds: :sleep! hides the cursor while sleeping (#31493) -4f9260d06aext_messages: add hl_id to ext_messages chunks -4cced601c8extmark: stack multiple highlight groups in `hl_group` -931ee5591fextmarks: virtual text can be right-aligned, truncated #31921 -62d9fab9affloat: add winborder option (#31074) -9b8907d905float: allow enabling mouse for non-focusable window (#30844) -511b991e66fs.lua: add vim.fs.rm() -054a287dbeftplugin: change 'commentstring' to `// %s` for C/C++ (#29085) -f398e3a61aftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491 -b61051ccb4func: allow manual cache invalidation for _memoize -548f19ccc3health: close checkhealth buffers with q #31870 -f2fa4ca97ehealth: highlight headings #30525 -b12b91c274health: show :checkhealth in floating window #31086 -6592873f77help: use treesitter for table of contents -3e09fbdf82highlight: add StatusLineTerm and StatusLineTermNC groups -295920845ehighlight: make `PmenuMatch` and `PmenuMatchSel` bold -5b1136a99cinccommand: preview 'nomodifiable' buffers #32034 -61025c9e7ainstall: mention standard paths, XDG vars in Windows installer #29101 -8ef41f5902jobs: jobstart(…,{term=true}), deprecate termopen() #31343 -e7020306a1jumplist: allow opting out of removing unloaded buffers (#29347) -8d55cc218ckeysets: teach Union and LuaRefOf -5931f780e0log: use "ui" as default name for TUI client #30345 -e4c6e732fdlsp: add select kind in showMessageRequest #32387 -f20335a54clsp: add support for completionItem.command resolving -3f1d09bc94lsp: add vim.lsp.config and vim.lsp.enable -6072153796lsp: announce codeLens resolveSupport (#29956) -1f5bcc7c4elsp: completion opts support custom item conversion (#30060) -ff097f2091lsp: completion side effects -7a7747f1e4lsp: deprecate execute_command with client:exec_cmd -454ae672aalsp: deprecate non-method client functions -54249d051clsp: deprecate vim.lsp.buf.completion -e56437cd48lsp: deprecate vim.lsp.start_client #31341 -55e4301036lsp: drop fswatch, use inotifywait (#29374) -dad55f5e76lsp: export diagnostic conversion functions (#30064) -44229bb85blsp: highlight hover target/range #31110 -27f3750817lsp: improve LSP doc hover rendering #30695 -6722149776lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items` -20f22f75eelsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164 -4e90bc3023lsp: lsp.completion support set deprecated (#29882) -6e68fed374lsp: multi-client support for signature_help -629483e24elsp: require `offset_encoding` param #31249 -e00cd1ab40lsp: return resolved config for vim.lsp.config[name] -130b5fd85flsp: return table from lsp/ files on runtimepath (#31663) -ce678043e3lsp: show server name in code actions #30830 -07d5dc8938lsp: show server version in `:checkhealth` #31611 -a1e313ded6lsp: support `textDocument/foldingRange` (#31311) -3b0fe2659elsp: support completion context #32793 -41b07b128clsp: support for resolving code action command (#32704) -35247b00a4lsp: support function for client root_dir (#31630) -45e76acaa0lsp: support hostname in rpc.connect #30238 -b2bad0ac91lsp: support postfix snippets in completion -d3e4ffaffflsp: support utf-8 and utf-32 position encodings -5d26934c7clsp: update LSP healthcheck format (#28980) -ae2fd91b41lsp: update LSP types -0df2c6b5d0lsp: use fuzzy match on filterText instead of prefix match -e4c1f6667blsp: use the meta model to generate server capability map -5581a95534lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323 -92e4e3fb76lsp.util: fix type errors -ff1d7d4299lsp.util: get_bufs_with_prefix -> get_writeable_bufs -cbc82011celsp.util: improve offset_encoding type annotations -a18fa2f11clsp.util: minor codestyle -1944c0d610lsp.util: refactor get_border_size() -f0973d4227lsp.util: refactor symbols_to_items() -0e8568d72clsp.util: remove lsp spec extract -0621718e3blsp.util: remove metatable in locations_to_items -3f87e222f7lsp.util: remove some aliases -e954a16063lsp.util: remove some variables -5bec7288a5lsp.util: remove uneeded do-end -8ad000ef7clsp.util: remove unneeded table -d44d36b8fflsp.util: simplify some bounds checking -0066dd0f65lsp.util: use faster version of vim.validate -1edfe5c09elsp.util: use vim.api alias -97119a2369lsp.util: use vim.w/b -cd53db2157lua: add `context.env` (environment variables) to `vim._with()` -9afa1fd355lua: add `vim._with` -5180707310lua: add `vim.fs.abspath` -b34e137e43lua: allow vim.on_key() callback to consume the key (#30939) -d5ae5c84e9lua: completion for vim.fn, vim.v, vim.o #30472 -0a5a0efda6lua: don't complete private (_) fields after dot (.) #32690 -07cc559cdflua: update `vim._with` to allow more granular option contexts -af0ef2ac9dlua: vim.hl.range() "timeout" #32012 -be1fbe38b3lua: vim.text.indent() -fdeb01cd77main: expand file ~\ or ~/ prefix on Windows (#28515) -ea5b748f24man.vim: "q" always closes window #30819 -f58e7d5facmarks: add conceal_lines to nvim_buf_set_extmark() -51cf84daf9marks: virtual lines support horizontal scrolling (#32497) -cfdf68a7acmbyte: support extended grapheme clusters including more emoji -124c655f56messages: "g<" mapping for ext_messages -cb7b4e2962messages: "verbose" message kind #31991 -5bae80899dmessages: add :!cmd shell message kinds -e16bec41b6messages: confirm kind for z=, :tselect, inputlist() #32521 -21151144c6meta: add type for quickfix entries -82a215cb2doptions: add 'eventignorewin' (#32152) -d831392b15paste: unify cancel and error behavior (#30476) -08c328b8b0runtime: Lua ftplugin 'includeexpr' #32719 -f5714994bcruntime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697 -e6cfcaed18snippet: add default keymaps during snippet session -123f8d229esnippet: set snippet keymaps permanent instead of dynamic (#31887) -96128a5076startup: validate --listen address -230b0c7f02stdlib: overload vim.str_byteindex, vim.str_utfindex #30735 -517ecb85f5stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561 -8df6736ca1term: enable reflow by default (#21124) -4199671047term: support OSC 8 hyperlinks in :terminal (#30050) -93480f7fbaterm: trigger TermRequest for APC (#32407) -3ad977f01dterminal: add support for copying with OSC 52 in embedded terminal (#29117) -6f0bde11ccterminal: add support for kitty keyboard protocol -06a1f82f1cterminal: forward X1 and X2 mouse events -e3bfcf2fd4terminal: support grapheme clusters, including emoji -f1c45fc7a4terminal: support theme update notifications (DEC mode 2031) (#31999) -56d11b494bterminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443) -34cd94812dtest: support and document lua test case debugging -b8c75a31e6treesitter: #trim! can trim all whitespace -ec8922978etreesitter: add more metadata to `language.inspect()` (#32657) -bd3b6ec836treesitter: add node_for_range function -688b961d13treesitter: add support for wasm parsers -8543aa406ctreesitter: allow LanguageTree:is_valid() to accept a range -44ccd9ca24treesitter: allow `iter_captures` to accept `opts` -8b5a0a00c8treesitter: allow disabling captures and patterns on TSQuery (#32790) -1af55bfcf2treesitter: allow get_node to return anonymous nodes -a94a2927d0treesitter: allow passing lang to InspectTree -45e606b1fdtreesitter: async parsing -3dfb9e6f60treesitter: include capture id in return value of `get_captures_at_pos()` #30559 -267c7525f7treesitter: introduce child_with_descendant() -09f9f0a946treesitter: show which nodes are missing in InspectTree -b9b408a56ctreesitter: start moving get_parser to return nil #30313 -da0ae95349treesitter: support modelines in `query.set()` (#30257) -2e5b560482treesitter: table of contents for checkhealth, markdown (#32282) -8ba047e33ftreesitter: vertical conceal support for highlighter -ff85e54939tui: builtin UI (TUI) sets client info #30397 -4fb3b57a19tui: handle kitty key events in libtermkey (#31727) -f93ecd2760tui: parse CSI subparams in termkey (#29805) -44dbfcfba4tui: recognize X1 and X2 mouse events -e41368f3bctui: support in-band resize events (#29791) -d460928263tui: update 'background' on theme change events (#31350) -45e319ade6tutor: give hints to satisfy the line checker #30952 -4b0e2605eaui: UI :detach command -394f69a25dui: additional arguments for cmdline_show/hide events -a0e3fe5741ui: cascading style inheritance for Pmenu* highlights #29980 -f85bc41c80ui: don't show unfocusable windows in :tabs, 'tabline' #27984 -9762c5e340ui: gx: use url extmark attribute and tree-sitter directive (#30192) -43d552c566ui: more intuitive :substitute confirm prompt #31787 -433b342baaui: sign/statuscolumn can combine highlight attrs #31575 -a10636fbe7ui: specify whether msg_show event is added to history -e049c6e4c0ui: statusline text inherits highlights #29976 -611ef35491vim.fs: find(), dir() can "follow" symlinks #31551 -3f15e57b26vim.ui: configurable "gx" / vim.ui.open() tool -f4b620c4e6vim.ui.open: support lemonade #30845 -3572319b4cvim.validate: improve fast form and deprecate spec form -cb84cd5d9fwin32: embed executable icon FIXES -------------------------------------------------------------------------------- -200e7ad157apply the change on more files -6720bd440fassert failure in VimL expression parser -d123202ae6change deprecation presentation -ded15ca8c2completion.enable(false,...) deletes invalid augroup #32121 -7737f89206deps build for ARM64 MSVC -50749f8df8extend the life of vim.tbl_flatten to 0.13 -25abcd243efix broken wasmtime build -b6ab294838fix incorrect search code -46b69aaf14include nvim/ascii_defs.h -01b4da65c2merge all provider healthchecks into a single health.lua -5c245ec3e9remove vim.lsp._with_extend -98ba65b8bereplace NVIM with Nvim in default titlestring (#30348) -6aa42e8f92resolve all remaining LuaLS diagnostics -e71713ba2bshow swapfile warning as a warning (#28971) -0418107074update osc52 termfeatures flag on UIEnter/UILeave (#32756) -0829e7575dwarn when :InspectTree on buffer with no parser #32783 -47f2769b46Man: completion on Mac -89f9f168a5api: alloc and draw cursor window in nvim__redraw -743c5808b6api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value` -487c48ec86api: clamp range lines in `nvim__redraw()` (#31710) -141114c170api: crash on invalid buffer to nvim_buf_del_user_command (#31908) -716adbcc45api: deprecate nvim_subscribe, nvim_unsubscribe #30456 -1e47aa677aapi: deprecated API nvim_get_option does not validate option name #31919 -095c0876c2api: don't override Vimscript SID (#32610) -bff07f6dd0api: don't try to get/set option for invalid option name (#31302) -0e59f6f4c7api: don't use 'winborder' when reconfiguring float (#32984) -cce1eb0806api: error properly with invalid field in nvim_open_win (#30078) -63bbb7c109api: fix 'winborder' preventing splits with nvim_open_win (#32981) -f55213ce0eapi: fix crash/leak with float title/footer on error (#30543) -022449b522api: generic error messages, not using TRY_WRAP #31596 -8de1dc6923api: make `nvim_set_hl()` respect all `cterm` attributes (#31390) -ad60b3fb48api: memory leaks in vim.api.nvim_*get_option #32390 -167a2383b9api: not using TRY_WRAP, generic error messages #31595 -bf48dfadecapi: nvim__complete_set requires completeopt=popup #31177 -d1d7d54680api: nvim_buf_get_text() crashes with large negative column #28740 -6ea45031d5api: nvim_echo free text memory with invalid highlight (#31243) -e2ad251c8dapi: nvim_get_option_value does not clean up on FileType error #31219 -5b9518b436api: nvim_set_decoration_provider callback return type #31912 -01a97d2ad7api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576 -40347f6e27api: only flush nvim__redraw when necessary #31250 -36f44b3121api: remove invalid assertions -235cb5bc5fapi: update "range" windows in nvim__redraw #31042 -9c718bc2bcapi: validation, documentation of hl_group #31195 -289c9d21cbautocmds: once=true Lua event-handler may call itself #29544 -ffaab09e99build: <termios.h> is system-dependent #31705 -486076a0e1build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME -217e26cb64build: surpress spurious warnings from gcc in -E preprocessor mode -34a2bfdcc5build: vimdoc tags are not validated #32801 -8070988247channel: handle writing to file instead of pipe (#30519) -c49162be59channel: log after (not before) channel-close -965dc81f81checkhealth: disable 'listchars' #31245 -4c9f3689a1checkhealth: failed if 'lua' in plugin name -f5dd30948echeckhealth: handle nested lua/ directory #32918 -c48cf18752checkhealth: module not found when `&rtp` has nested paths #32988 -2495e7e22aclipboard: tmux clipboard depends on $TMUX #31268 -847c28f6f6cmdline: always show cmdline when it is a prompt #31866 -af4231d407cmdline: cmdline completion of _defer_require() modules #33007 -a70ad5cdb6cmdline: ext_cmdline block events for conditionals -bbf36ef8efcmdline: prevent cmdline_show events after exiting cmdline #32033 -092042b43dcmdline: simplify and correct grapheme cluster adjustment -86ae59c612colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256 -9b9f54e2c1colorscheme: underline StatusLineNC with 'notermguicolors' #28810 -8bc28978b6column: apply custom highlight to last 'statuscolumn' segment (#32182) -3cb1e825e6column: check if signcolumn changed in all windows #31439 -1dcda86559column: clamp line number for legacy signs -f2083bd55ccolumn: crash with 'signcolumn' set to "number" (#29003) -f9a49fab0ccolumn: modifying a sign should update placed signs (#29750) -d5f6f61879column: set signcolumn width after splitting window (#30556) -063b69bab4column: unnecessary redraws with resized 'statuscolumn' (#32944) -0a2218f965comment: fall back to using trimmed comment markers (#28938) -e788d1a3a9completion: avoid deleting text when completion leader changes #31448 -bfa365a872completion: don't include <Lua function> in -complete= (#30209) -55dc482e75completion: fix inconsistent Enter behavior (#30196) -83a7d97d64coverity: CID 509571 Uninitialized variables #30395 -e1c2179dd9coverity: INTEGER_OVERFLOW #31657 -f9eb68f340coverity: error handling CHECKED_RETURN #31618 -069451bb21coverity: size_t overflow #30497 -ff7832ad3fcoverity/497355: shada_read_when_writing out of bounds read #30665 -c49030b75acoverity/497375: f_strpart cast overflow (#30773) -0fe4362e21coverity/509227/509228: tui driver_ti underflow #30341 -60e1862ccbcoverity/510275: linematch out of bounds access (#30687) -a2008118a0coverity/510436: shada_read_when_writing index out of bounds (#30686) -71507281fbcoverity/530826: validate_opt_idx unchecked negative idx (#32081) -5af9c065addecor: don't draw invalidated virtual lines (#29858) -a8fbe1d409decor: don't use separate DecorSignHighlight for url (#30096) -34ded4d97bdecor: exclude invalid marks from meta total -87610d82dbdecor: set invalid flag for end of invalidated paired marks -33ff546b50decoration: fix crash when on_lines decor provider modifies marktree -0e299ebf75decorator: noisy errors from decoration provider #31418 -f2173b1aa2defaults: cannot remove "How-to disable mouse" menu item #30375 -61aabe0730defaults: default @/Q broken when 'ignorecase' is set (#29343) -8323398bc6defaults: don't replace keycodes in Visual search mappings (#31460) -f6f2334ac2defaults: error messages UX for unimpaired mappings #30884 -59a171fd99defaults: improve visual search mappings #32378 -01739d4673defaults: missing ]Q/[Q unimpaired mappings #30943 -c644228e1ddefaults: omit empty line from unimpaired mapping messages (#31347) -ff93cccbc1defaults: omit extraneous info from unimpaired mapping errors (#30983) -4075e613b2defaults: properly pass count to quickfix commands (#30632) -289380bc40defaults: use "range" instead of "count" for some mappings (#30642) -573fcb8b66deps: revert accidental test commits (#30864) -de794f2d24diagnostic: broken variable reference #31557 -c78728a384diagnostic: clear autocmd only for valid buf (#32861) -f1fcf653cbdiagnostic: clear virtual_lines autocmd only for valid buf #32979 -921dc22fc0diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506) -0e8e4a07f5diagnostic: don't include diagnostic code when using custom formatter #32464 -d918ebe3b8diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593) -f69937fdbddiagnostic: fix float scope filtering (#29134) -5bc948c050diagnostic: improve current_line refresh logic #32275 -4b3be56a03diagnostic: make docs agree with code (#29561) -fd902b1cb2diagnostic: only store quickfix id when creating a new one #31466 -3b1d0e7f70diagnostic: remove deprecated `severity_limit` option -5eda7aafe9diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553 -9a43ec13e6diagnostic: show backtrace for deprecation warnings -4cbeb6fa3cdiagnostic: silence :chistory #31701 -6c975515c5diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585 -17c25a66fcdiagnostic: virtual lines should scroll horizontally -fb842dfc22diagnostic: virtual_lines diagnostic columns (#32703) -e5e81262afdiagnostics: don't apply extmarks to invalid lines #29321 -c65646c247diff: use mmfile_t in linematch -81ea44fa6adisplay: adjust winline info for concealed lines below last line (#32708) -f25dd7a8d5display: correctly store winline info for concealed lines (#32656) -a901fb875fdocs: add missing properties to hl_info #30032 -cc26cf0400docs: do not treat indexes as `short_link` -056009f741docs: markdown instead of vimdoc in meta docstrings #30680 -8801b77ed0docs: missing `@returns` desc in _meta/api.lua #30673 -09bcb31068docs: replace `yxx` mappings with `g==` #31947 -efe92f9dffdocs: update context type in `vim.lsp.LocationOpts.OnList` -b8135a76b7docs: wrong return value annotation for `nvim_buf_get_extmarks` -376de1483edrawline: correct highlight priority with Visual selection (#30706) -9a0239fdc8drawline: don't draw beyond end of window (#29035) -b1c439cef6drawline: don't draw beyond end of window with 'rnu' (#29406) -34344b939ceditor: avoid scrolling :substitute confirm message #32149 -9e7b0bcf51editorconfig: fix indent style for `local.mk` (#31342) -b0a1d35f69eval: don't shorten $HOME in v:stacktrace (#32634) -2a3561819eeval: handle wrong v:lua in expr option properly (#29953) -4317d36669event-loop: process input before events in getchar() (#32322) -f05a6666cfevents: always allow some events to be nested (#32706) -e9f4ceeb74events: don't expand `args.file` for Lua callback (#31473) -1f49a59b8bevents: fix incorrect capitalization of Cmdwin* events (#32813) -8c2d45be77exit: close memfiles after processing events (#30872) -c7ec010adeextmark: builtin completion can still affect nearby extmarks #31387 -93278e7720extmark: clearer error message for invalid ephemeral mark usage -43a2019f09extmarks: issues with revalidating marks #28961 -84ad95fdc9fileio: copy to correct buffer position when reading -93347a67bffiletype: fix :filetype detect error with -u NONE (#29991) -aa9f21ee95filetype: fix typos in filetype detection -032e024f8afiletype: handle .in files with no filename (#30487) -1077843b9bfiletype: make filetype detection work with :doautocmd (#31470) -21cbd90007filetype: normalize full path before matching #32227 -5a8a34dafafiletype: source ftdetect/* after creating scripts.vim autocmds (#29445) -cff5fa49fcfloat: "Not enough room" error for 1-line float #25192 -07c5f41da3float: can set title/footer without setting border #32594 -be01b361d8float: cannot set title/footer independently #31993 -ff1791c9e5float: close preview float window when no selected #29745 -d2cca606a1float: ensure floating window width can fit title -8ddcf9d939float: handle error in win_float_create() (#29742) -8b2b1fba2afloat: missing default highlight for title -df915f3afcfloat: properly find last window of tabpage (#30571) -17383870ddfloat: re-sort layers when grid zindex changed #30259 -206f8f24a2fs: make vim.fs.root work for relative paths and unnamed buffers (#28964) -2c160f39d3ftplugin/man.vim: hide signcolumn (auto) -214ce8d33cgen_help_html: first tag in h2 is broken #30720 -ceea6898a8gen_help_html: handle delimiter, heading #29415 -6c3f7e7e27gen_vimdoc: correctly generate function fields -913e81c35fgetchar: do not simplify keycodes in terminal mode -b109b1abceglob: avoid `subcapture nesting too deep` error (#29520) -4bd86120d4glob: handle overlapping `{}` condition elements #29236 -b47b0b3f75grid: double grid_line_start() with ext_messages #31292 -fe87656f29grid: grid_line_start NULL access with 'redrawdebug' -a9c89bcbf6gx: allow `@` in url -570a8da01bhealth: "q" should not close last window #31876 -2e3f1069f4health: better layout of vim.treesitter health check -10f9173519health: broken ruby detect #28804 -84e85aeb10health: check more "old" files #30421 -5b778a64echealth: fix fetching url with python in provider health (#29594) -b4b4cf46a7health: fix pyenv root and python exepath detect issue -237d2aef4dhealth: return correct name from 'path2name()' -5e90406487health: set nomodifiable in checkhealth buffers -9177371014help: remove runnable code virtual text -ff75f345abhighlight: 'winhl' shouldn't take priority over API (#31288) -458473acb8highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313) -6bcefad5a6highlight: fix the seg fault caused by the invalid linked hl ids -8e81212e15highlight: floating windows inherit NormalFloat from global-ns -6719276040highlight: make TablineSel more noticeable with 'notermguicolors' #31905 -b67fcd0488highlight: make `TablineSel` more noticeable #31896 -862679c70fhighlight: update `PmenuSel` for colored completion items #30183 -59e130b6cainccommand: ensure cursor is where it belongs -16f63b964finput: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) -b52ffd0a59inspect: always show priority -9c278af7ccinspect: show priority for treesitter highlights -22fd52325binspector: update semantic token namespace (#32157) -efe1732c6fjobs: do not block UI when jobwait() doesn't block (#31803) -574ea6a191keycodes: recognize <Find>, <Select> #28431 -67bb0cfa79loader: follow the style of the error message for built-in loaders -44740e561flog: RPC log format #32337 -851137f679log: log unset $TMPDIR at "debug" level #32137 -c908c2560dlog: unify error messages for vim.ui_attach/decor providers #33005 -a6f219b06blog: unintuitive message for undefined $TMPDIR -2e6d295f79lsp: account for changedtick version gap on modified reset (#29170) -fac96b72a5lsp: add foldingrange method support check #31463 -8263ed4670lsp: add textDocument/documentLink to capability map (#28838) -a41b6fd173lsp: autocmds to close lsp preview windows not cleared -b42dc232c5lsp: autotrigger should only trigger on client's triggerCharacters (#32266) -7031949be0lsp: avoid reusing diagnostics from different servers in actions (#30002) -fc9b70826elsp: avoid vim.keymap.del error when stopping a client (#29478) -39d79efa1elsp: better multi-client support for callHierarchy -bdfba8598blsp: cancel pending requests before refreshing -f9bf64d746lsp: check buffer is loaded and valid #30330 -c2bf09ddfflsp: check for configuration workspace folders when reusing clients -81b372fecdlsp: check for nil response from server (#29196) -a9cdf76e3alsp: check for valid buf before processing semantic tokens response -230bc34ca5lsp: check if buffer is valid before LspDetach autocmd (#29162) -af200c10cflsp: check if buffer was detached in on_init callback (#28914) -02097e43c8lsp: check if sig_help window is focusable when configuring cycle keymap -025c874415lsp: clear lsp client diagnostics (#29050) -c374f26430lsp: clear word when expand multi-lines word (#32393) -adf7c98d60lsp: compare URI instead of workspace folder name (#30962) -b4599acbf8lsp: correct hover result handling (#30995) -f8d5811c71lsp: correctly check for "codeAction/resolve" support -7d8db54441lsp: delete b:lsp_floating_preview buf var after win close -2a1f604c77lsp: delete bufvar inside WinClosed event -879d17ea8dlsp: detach all clients on_reload to force buf_state reload (#28875) -292365fa1blsp: do not detach from buffer if there are uninitialized clients (#29029) -37bf4c572alsp: do not reset buf version when detaching client (#29242) -d56ba71af1lsp: document_symbol uses loclist by default #32070 -720b309c78lsp: don't send foreign diagnostics to servers in buf.code_action (#29501) -1f2f460b4alsp: don't show codelens for buffers that don't support it (#29690) -5f527f24f0lsp: don't use completion filterText if prefix is empty -305012ea07lsp: enable `additionalPropertiesSupport` -9d9ee3476elsp: ensure watcher cancel -aec7f1979alsp: fallback to `label` for completion items if all others are missing (#29522) -33d10db5b7lsp: filter completion candidates based on completeopt (#30945) -b3109084c2lsp: fix cursor position after snippet expansion (#30659) -4b001f297alsp: fix infinite loop -983953858elsp: fix isIncomplete condition in completion trigger (#30130) -2ce4a4d91elsp: fix reverse sorting of same position text edits (#29212) -8654a97006lsp: handle empty call hierarchy items #30349 -f279d1ae33lsp: handle encoding bounds in str_utfindex_enc -882a450a29lsp: handle locations exceeding line length #30253 -008782208dlsp: handle mixed encoding in tagfunc params -e0a5c3bb58lsp: handle multiline signature help labels #30460 -8512f669f0lsp: handle nil bytes in strings -f03b1622adlsp: handle nil root_dir in health check (#29007) -ed07167261lsp: handle non-existent configs in lsp.config/enable -003b8a251dlsp: handle out-of-bounds character positions #30288 -5187be81c2lsp: handle using array as open_floating_preview title (#33016) -d9a2acdab3lsp: hide layout in codelenses in virtual text (#28794) (#28807) -f54266dbedlsp: hover border type can be string (#31013) -9a681ad09elsp: hover keymap (#31208) -a14fca432blsp: improve LSP floating preview window cleanup #31353 -e29f245a10lsp: inlay hints are rendered in the correct order (#29707) -0086ee90ddlsp: list all workspace folders in healthcheck #30966 -0e394f136flsp: log when receiving markup messages (#30065) -203e7a43d1lsp: mention function name in warning #31301 -a4f575abd8lsp: minimum height for floating popup #31990 -4fd2694f20lsp: missing method parameter when canceling requests -be8d87014clsp: on detach, cancel pending foldingRange requests #31509 -7d5866d471lsp: open_floating_preview() ignores max_height (#32716) -86770108e2lsp: open_floating_preview() zindex relative to current window #31886 -724d1110b1lsp: pre-filter matches on label if filterText is missing (#29491) -a450fda4edlsp: prefer `on_list` over `loclist` in default handler -6bb40f3dbflsp: prevent desync due to empty buffer (#29904) -eb629cce91lsp: redundant spaces in lsp log (#29970) -43581011e4lsp: remove superfluous on_detach callback from semantic tokens module (#29174) -d76f7fef13lsp: reset active request when reporting an error -6bc7979044lsp: reset the applied hints on `refresh` request #32446 -47aaddfa0dlsp: resize hover window for concealed lines -081beb3659lsp: restore get_language_id behaviour -29c72cdf4alsp: retrigger diagnostics request on server cancellation (#31345) -d9ccd828b0lsp: return call hierarchy item, not the index (#30145) -9c20342297lsp: reuse client if configs match and no root dir -6e45cd7f00lsp: revert buf_versions deprecation/replacement (#29217) -bdff50dee5lsp: revert text edit application order change (#29877) -e8a6c1b021lsp: schedule call to vim.lsp.start for async root_dir (#31998) -a108852b00lsp: semantic token functions allow "0" bufnr #28849 -c3cb702ac7lsp: set 'smoothscroll' in docs hover #30748 -8a236c242alsp: set floating window filetype after setup #32112 -3c51058d76lsp: set tagstack on jump via goto methods -24d7debdfblsp: signature_help highlights wrong parameter #32382 -80e37aa533lsp: str_byteindex_enc bounds checking #30747 -629a5b71b5lsp: support multiple clients in typehierarchy -e48179f31elsp: suppress completion request if completion is active (#30028) -50f006b617lsp: tagfunc fails in unusual buffer #30700 -5ac8db10f0lsp: trigger LspDetach on buffer delete (#28795) -19be3d2683lsp: trim trailing whitespace from completion words (#29122) -aa47af7e69lsp: tune completion word extraction for decorated labels (#29331) -38838fb00alsp: type-errors, other nits in vim.lsp.log #31235 -8d7eb03040lsp: unify get_completion_word for textEdits/insertText -fe5ae88b20lsp: update request name to capability map #30098 -5aa9906676lsp: use client.id instead of pairs index (#29143) -c8d7d65679lsp: use correct method for prepareTypehierarchy -b9e6fa7ec8lsp: use filterText as word if textEdit/label doesn't match -5d08b65ac2lsp: use unresolved code action when `codeAction/resolve` fails -0a7e4e9e5flsp: vim.lsp.enable(...,false) does not disable #32002 -888a803755lsp: vim.lsp.start fails if existing client has no workspace_folders #31608 -42ed0ffad9lsp: when prefix is non word add all result into matches (#30044) -55bdb077b7lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837 -2dcbfe78fclsp.buf: use correct offset_encoding for all requests -3275ae830dlsp.protocal: improve typing of constants -acbc6a7f91lsp.util: inconsistent handling of offset_encoding -564173e556lsp.util: wrong arguments to 'validate' function -614c9322d5lua: SIGSEGV in luv callback with error(nil) #32595 -b283736388lua: `@private` => `@nodoc` #32587 -b6e350a6b4lua: allows tables with integer keys to be merged in tbl_deep_extend -c8b64b7a43lua: always use vim.inspect() for :lua= (#32715) -0e42c81c7flua: avoid recursive vim.on_key() callback (#30753) -fe1e2eff06lua: avoid vim._with() double-free with cmdmod (#31505) -487f44a6c1lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) -43bd9c9c1clua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203) -bdc6e38781lua: don't include text after cursor in completion pattern (#29587) -e2aca58bcclua: don't override script ID from :source (#32626) -d40481322alua: ensure inspect_pos() only shows visible highlight extmarks -948f2beed4lua: find length of completion prefix earlier (#29384) -ebb963a4a0lua: format errors from luv callbacks using __tostring -65a703e060lua: ignore stdout and stderr for xdg-open -6b00c9acfdlua: no omni/cmdline completion for vim.env (#33044) -c6d2cbf8f5lua: pop retval for fast context LuaRef -a5b1b83a26lua: prevent SIGSEGV when lua error is NULL in libuv_worker -3d707e6f14lua: remove vim.loader.disable() #31344 -3a88113246lua: revert vim.tbl_extend behavior change and document it -3688a33354lua: show stacktrace for error in vim.on_key() callback (#31021) -40a149e7f9lua: types for vim.api.keyset.win_config #32700 -7f33c1967blua: use rawget() to get __call in vim.is_callable() (#29536) -960fdc775alua: vim.deprecate does not support major>0 -d832518ec6lua: vim.hl.on_yank highlights wrong region with yi' (#32850) -cd3855fb2blua: vim.tbl_get({}, nil, 1) should return nil #32218 -89d6d6f25clua: wrong script context for option set by func from nvim_exec2 (#32659) -9eb0426002luacats: allow all types inside tuples -ee5aaba215man: avoid setting v:errmsg (#30052) -7588ff2d89man: check if buffer is valid before restoring 'tagfunc' (#30180) -da6f68ee69man: filter OSC 8 hyperlink markup #29171 -7940ec6913man.lua: `:Man <tab>` does not complete #31569 -e08e3d15f6man.lua: skip `Attrs.None` highlights #32262 -d6653e1cc9marks: ensure decor is removed with proper range (#32973) -906ad04dddmarks: handle composing in inline virt_text with 'nowrap' (#32477) -8452032554marks: handle double-with inline virt_text with 'nowrap' (#32476) -86046c5a31marks: ineffective conceal_line callback optimization (#32662) -72f630f92dmarks: issues with invalid marks and marks beyond eob (#32862) -8da59060c6marks: mark winline as invalid if change is in a concealed line (#32766) -012db2b0f5marks: revalidate marks whose position did not change -5cc93ef472marks: revise metadata for start mark of revalidated pair #32017 -c4f76299f0marks: skip right_gravity marks when deleting text -cdedfc3743marks: truncate double-width inline virt_text consistently (#32560) -7371abf755marks: wrong winline info for concealed line with below virt line (#32747) -a9287dd882mbyte: check for utf8proc_map() failure (#30531) -50a576ba57mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char -15bc930fcamemline: don't check line count for closed memline #32403 -aa976f0d93messages: add a trailing space to inputlist() etc. prompts (#32328) -37c77ab46bmessages: attaching/detaching ext_messages causes asserts #31952 -d98827b634messages: avoid empty msg_showmode with 'noshowmode' -31d6885debmessages: better formatting for :highlight with ext_messages #31627 -21718c67ddmessages: better formatting for ext_messages #31839 -92556be33dmessages: compute msg_col after last newline in ext_messages -ad853d1df0messages: improve deadly signal messages #32364 -51853b82bcmessages: incorrect error message splitting and kind #32990 -08f7c22377messages: list_cmd kind for :registers, :au[g] #32531 -7ce27381fbmessages: lsp window/showMessage is not an error -1b6442034fmessages: more ext_messages kinds #31279 -9c6a3703bbmessages: no message kind for :undo messages #31590 -ca760e645bmessages: no message kind for :write messages #31519 -909b18d05amessages: no message kind for completion menu messages #31646 -f111c32ff9messages: no message kind for search pattern #31272 -282f73f067messages: no trailing newline for inputlist, tselect, z= with ext_messages -9fa3a0964emessages: pass previous highlight id to ext chunks -e025f5a5b3messages: proper multiline Lua print() messages #31205 -d1e00a5f6dmessages: typo and unwanted truncation in msg_outtrans_long #31669 -d55b17e2b4messages: verbose kind for nvim_echo() -c8e47f6480meta: do not use hyphens in param names -2cd72258f6mouse: 'statuscolumn' fold and popopmenu handling -81d4e96bc8mouse: don't treat click on hsep as click on statusline (#29565) -102971a396mouse: early return when clicking in padded 'statuscolumn' (#29394) -86c5c8724bmouse: indicate X1 and X2 button clicks on statusline (#30655) -f86864f22fmove: 'scrolloff' cursor correction no longer handles folds properly (#32642) -5947f249f8move: half-page scrolling with resized grid at eob (#28821) -ac7e0ff32fmove: redraw for 'concealcursor' after changing w_wcol (#31276) -af0a2157admove: wrong cursor row on concealed line (#32629) -83479b95abmpack: remove invalid bool definition -d32780de4dmswin: UI may hang on exit -fa99afe35emultibyte: handle backspace of wide clusters in replace mode -de83cc5842netrw: re-add missing comment marker in syntax file -d9585bdcfbnvim__set_complete: pum preview info truncated during completion #32555 -34e2185022options: better handling of empty values -190d0241e2options: fix 'winborder' accepting multiple string values (#32978) -8c532a9ea8options: fix 'winhl' still accepting invalid value (#30896) -1b9dafa67boptions: fix :setglobal not working for 'spelloptions' (#30894) -395f420fc6options: fix some 'belloff' flags not working properly (#30856) -50e63c8171options: missing error check for global 'scl' and 'winhl' (#30919) -e697c1b43dpaste: improve repeating of pasted text (#30438) -052875b9dcpaste: only record a paste when it's from RPC (#30491) -9516997eb0paste: wrong '[ mark after pasting a big string (streamed chunks) #33025 -42aa69b076path: avoid chdir() when resolving path (#28799) -42db8b1759path: crash with nvim_get_runtime_file during wildcard expansion (#32992) -0dfcf3fe12plines: don't count invalidated virt text in char size (#29863) -afc3c43f12popup: new preview_bufnr created when menu item is selected #32819 -ac1c5ccb2cpopup: reuse pum preview float win, set 'winfixbuf' #32636 -d288f7003dpopup: wrong extmark data sync when lines changed in popup preview #30246 -d24fb72c33pum: don't select item when clicking to the left/right (#30967) -73ae7d44a2quickfix: make shortmess+=O work with cmdheight=0 (#29609) -3bcd5624beregexp: fix typo in E888 error message (#30161) -cb924764a4runtime: "E121 Undefined variable s:termguicolors" #32209 -29a47b39ccruntime: E15: Invalid expression in lua file when `gf` -b6c1ce8a95runtime: add commentstring for glsl ftplugin -9ddfcb64bfruntime: add remaining missing commentstrings (#30252) -e641155b02runtime: avoid E31 in ftplugin (#32578) -82b02ae2f2runtime: clean up one-off scripts -9788b81d7eruntime: fully port emoji_list to Lua -74fcc9452cruntime: gO always says "Help TOC" #32971 -69aa33d890runtime: let matchit and matchparen skips fallback on treesitter captures -8369590eb2runtime: remove obsolete ftplugin/calender.lua -41b70a0dearuntime: set 'keywordprg' only once in vim ftplugin -7b16c1fa84runtime: source c ftplugin properly for cpp on Windows (#29053) -12c9791e0fruntime: stop treesitter highlight in b:undo_ftplugin (#29533) -862338255druntime: sync bundled treesitter queries -9e80738f30runtime: sync bundled treesitter queries -5057753431runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473) -8f5e908110runtime: update b:undo_ftplugin in Lua runtime files (#29529) -a5bd6665b0scripts: update bundled dependencies in bump_deps -573a71469dscrollbind: properly take filler/virtual lines into account -a8b6fa07c4search: avoid quadratic time complexity when computing fuzzy score (#32153) -648d6426c8server: CID 509282: DEADCODE #30316 -f4921e2b7dshada: ":wshada/:rshada [filename]" with shadafile=NONE #32538 -cd48b72b60shada: restore search pattern length properly (#28929) -608543f8a9snippet: cancel snippet session when leaving the buffer (#29031) -7994fdba6asnippet: don't override unnamed register on tabstop select (#28998) -5fe4ce6678snippet: modify base indentation when there's actually whitespace (#29670) -424f4cc038snippet: wrong indentation when snippet contains "^" #32970 -d46ebd2a74startup: avoid crash with completion from -l script (#32160) -08153ddd1cstartup: ignore broken $XDG_RUNTIME_DIR #30285 -17e00d0cc6startup: report --startuptime error to stderr (#31131) -8a2aec9974startup: server fails if $NVIM_APPNAME is relative dir #30310 -19fc65acbcstatuscolumn: misleading v:lnum for virtual lines #32912 -87e806186cstatusline: overwriting stl_items with nvim_eval_statusline() {-item #32265 -1c30d86c33tabline: restore behavior of click after last tabpage (#30602) -a49f95d887terminal: avoid mismatched `busy_start` without `busy_stop` (#32458) -f3ce67549cterminal: avoid more `busy_start` lacking `busy_stop` (#32509) -3d49c55d3cterminal: avoid rescheduling events onto the same queue (#32755) -69a19295f8terminal: delay when finishing terminal process #32846 -f8c8a245aaterminal: don't crash on unprintable chars -6d997f8068terminal: handle C0 characters in OSC terminator (#30090) -fa46441264terminal: improve cursor refresh handling (#32596) -1d11808bfdterminal: interrupt/got_int hangs terminal (#30056) -3db3947b0eterminal: restore cursor from 'guicursor' on TermLeave (#31620) -c51bf5a6b2terminal: set cursor cell percentage (#31703) -5def8714adterminal: set local values of window options (#29326) -e9c077d197termkey: fix null pointer dereference (#31792) -c8e3618e0etest: "tempdir not a directory" in CI logs -f7e32fb6e6test: better management of tmpfiles -db2c3d1143tests: filter out lines with __typeof__ keyword (#32524) -e61228a214tests: needing two calls to setup a screen is cringe -639734bed4tests: remove the __extension__ keyword in filter_complex_blocks (#32483) -59baa5e8a1tohtml: apply sp color if present #30110 -67c39f5ecatohtml: disable modeline #32822 -e37404f7fetohtml: enclose font-family names in quotation marks -25db0a1385tohtml: extmark text may be out of bounds -8cd9feb501tohtml: ignore lsp inlay hints -eb37241d38tohtml: properly handle multiple hl groups #29012 -2ed6423c7etohtml: replace ipairs with pairs -88c7997503tohtml: show how many warnings are hidden -118ae7e5edtohtml: support ranges again -c63e49cce2treesitter: #trim! range for nodes ending at col 0 #31488 -b63cd8cbaetreesitter: EditQuery shows swapfile ATTENTION #30536 -55b165ac15treesitter: `TSNode:field()` returns all children with the given field -86b737649btreesitter: add 'QuitPre' event to autocommands in inspect_tree -bc1018a8d3treesitter: avoid computing fold levels for empty buffer -a119dab40ftreesitter: avoid computing foldlevels for reloaded buffer #32233 -6696ea7f10treesitter: clean up parsing queue -99acc9de55treesitter: close InspectTree/EditQuery window on BufUnload (#31036) -f50f86b9fftreesitter: compute folds on_changedtree only if not nil -7a20f93a92treesitter: correct condition in `__has_ancestor` -9b25c68db2treesitter: correctly parse queries with combined injections -3abfaafad2treesitter: detect trees with outdated regions in `is_valid()` -9217e0d671treesitter: display fields for anonymous nodes in :InspectTree -da4e8dc5b0treesitter: do not modify highlight state for _on_spell_nav -0e3e1e6b6dtreesitter: don't open fold when o/O adds a line below #28709 -aa2b44fbb0treesitter: don't return error message on success #31955 -b0bbe25c48treesitter: don't spam query errors in the highlighter -b88874d33ctreesitter: empty queries can disable injections (#31748) -d413038b4ftreesitter: ensure syntaxset augroup exists (#29542) -f8e1ebd6f6treesitter: escape things like `"` in omnifunc results -c4eb0b64bdtreesitter: find buffer in multiple windows #28922 -94d42a3e72treesitter: highlight anonymous nodes in inspect_tree -5331f87f61treesitter: indent size for inspect_tree #28727 -6ef80eb42ctreesitter: keep treeview open if source window is still open #31198 -052e048db6treesitter: lint top-level anonymous nodes -4b90952851treesitter: mark supertype nodes as named -096ae3bfd7treesitter: nil access when running string parser async -c3337e357atreesitter: nil check query for has_conceal_line -6711fa27catreesitter: recalculate folds on VimEnter #32240 -05dcda8f9btreesitter: recognize aliased parsers in omnifunc, query linter -d3193afc25treesitter: remove duplicate symbol names in language.inspect() -cdc9baeaf8treesitter: remove redundant on_bytes callback #31041 -1827ab7a1ftreesitter: separately track the number of valid regions -36990f324dtreesitter: show proper node name error messages -4349bdbd0btreesitter: specify success status in edit_query return value -e7ebc5c13dtreesitter: stop async parsing if buffer is invalid -0f067cd34dtreesitter: suppress get_parser warnings via opts.error -ae917dbd06treesitter: sync queries from upstream -c4e9ff30a6treesitter: sync queries with upstream -d8eec81560treesitter: update lua, markdown queries -6e44a6a289treesitter: update queries -5a54681025treesitter: uv_dlclose after uv_dlerror -e4bc8b5967treesitter.foldexpr: only refresh valid buffers -48acbc4d64treesitter.foldexpr: refresh in the buffers affected by OptionSet -8474f52978treesitter.foldexpr: robustness against ctrl-c -f81131cca2tui: also reset cursor color if it was invisible (#31348) -4846bf05dctui: avoid flushing buffer halfway an OSC 2 sequence (#30793) -720ec5cec2tui: cursor color in suckless terminal #32310 -b5cb69f8a4tui: handle key events for arrow and function keys (#31804) -d7651b27d5tui: move $COLORTERM check to _defaults.lua (#29197) -a811d4babdtui: only reset cursor color if it was changed (#31337) -0c0352783ftui: remove DCS escaping in tmux (#32723) -47c741e30ctui: remove duplicate disabling of synchronized output (#28884) -f32557ca67tui: reset active attr ID when OSC 8 sequence is terminated (#29960) -bc63ffcf39tui: reset clear_region attributes during startup #28713 -b02c839414tui: set id parameter in OSC 8 sequences (#29840) -0231265c8ctui: skip TUI in ui_rgb_attached (#29096) -8b8096500dtutor: incorrect lines marked as correct #29833 -31745b17e6types: add narrower vim.validate types -44410d063atypes: add some vim.fn type annotations -b813075b8atypes: do not mark unstable API as private -e947f226betypes: use vararg return type annotation -a1906c23ddui: Windows :detach is opt-in -594c7f3d77ui: avoid ambiguity about last chunk when flushing halfway (#29718) -216ec73972ui: avoid redundant ext_cmdline events (#32237) -6cdcac4492ui: clamp 'cmdheight' for other tabpages on screen resize (#31419) -318c0415d5ui: correctly pass metadata to get_node_text #30222 -7eba016c86ui: ensure screen update before waiting for input #30576 -5b6477be45ui: flush ext_cmdline events before doing cmdpreview #27950 -6e4df18b45ui: no fast context for prompt message kinds #31224 -6b8c56c7f6ui: schedule UI detach (#32827) -b66106a46cui: superfluous showmode / excessive grid_cursor_goto #29089 -d1fd674df3ui: update title in more cases (#31508) -442d338cb5uri: uri_encode encodes brackets incorrectly for RFC2732 #31284 -d049752e45version: fix vim.version().prerelease -8bdfc2ab2bversion: return nil with empty string -6401b433f7vim.fs: default to follow=false #32859 -47e6b2233fvim.fs: dirname() returns "." on mingw/msys2 #30480 -0bef3b911cvim.fs: joinpath() does not normalize slashes on Windows #31782 -6dc0eb9f41vim.fs.abspath: correctly handle UNC paths -a8ace2c58avim.fs.normalize: normalize case for windows drive letter -4c0d18c197vim.iter: enable optimizations for arrays (lists with holes) (#28781) -734dba04d1vim.system: close pipe handles after process handle -4e130c1ee4vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638 -ad3472e291vim.system: resolve executable paths on windows -33464189bcvim.text: handle very long strings (#30075) -4cff418564vim.text: remove assert from vim.text.hexdecode -d338ec9cb2vim.ui.open: prefer xdg-open on WSL #30302 -8bf79bd13cvim.wo: never allow non-zero bufnr -453f2c52d2vim_snprintf: special-case handling of binary format -32e128f209watch: exclude .git when using inotifywait (#29914) -9e23b4e185watch: ignore nonexistent paths (ENOENT) -a18652ed61win-msi: add bin to PATH per-machine after installation (#29099) -88f07d6ca4win-msi: set installer scope to machine #29895 -4f9311b759window: making float with title/footer non-float leaks memory (#30551) -7b71fdbc1ewindow: respect hide flag of float windows when switching (#30507) -59da82abd9wininfo: when freeing windows, free the lowest priority wininfo PERFORMANCE -------------------------------------------------------------------------------- -48251134eeadd fast path to vim.validate (#28977) -3abd7ed4a4consider only active decorations when drawing lines -8d2ee542a8decor: join predicates and matches cache -48e3ac60c6diagnostics: cache line diagnostics when `current_line` is set #32288 -b8ddd3b6bbevents: remove unnecessary loop in event_nr2name() (#32777) -15f2da55a8events: use hashy for event name lookup (#32802) -abf4b65a51filetype: cache (more) pattern data during "add" time -f61efe3fe7filetype: implement parent pattern pre-matching (#29660) -ff575b3886filetype: optimize internal data structures -dc04ef2a20filetype: skip contents check in `match()` if there is no contents (#29596) -12d4caa9d3keycodes: use hashy for string lookup -f8fc6cb157loader: reduce calls to Loader.cache_file -138a93a057lsp: avoid repeated table lookup in completion.enable -7342e6b00dlsp: do not apply semantic tokens to folded lines -c85d15e0d5lsp: don't construct potentially expensive strings -cc1f2d2ca6lsp: don't copy completion items in filter pass -3e855d533flsp: use faster version of str_byteindex -000129201cmouse: only generate <MouseMove> for a new cell positon (#31103) -3fdc430241treesitter: cache queries strongly -b192d58284treesitter: calculate folds asynchronously -c6abc97006treesitter: do not use tree cursors with a small lifetime -cbad2c6628treesitter: don't block when finding injection ranges -d9ee0d2984treesitter: don't fetch parser for each fold line -562056c875treesitter: only search for injections within the parse range -c57a85e0edtreesitter: remove unnecessary foldexpr loop -64847fbdc9treesitter: use `child_containing_descendant()` in `is_ancestor()` -4b02916334treesitter: use child_containing_descendant() in has-ancestor? (#28512) -3f3e4837d5validate: use lighter version -99b5ffd688vim.text: use lookup table implementation for hex encoding (#30080) BUILD -------------------------------------------------------------------------------- -104800ce2e"popcount" name conflict on NetBSD #28983 -198a952c13add luals check -ef8067a19dadd quotes around `CMAKE_GENERATOR` variable -32e16cb0b6add utf8proc as dependency -b213f5169callow comment after #include for required header (#29722) -382eb878bcbump lua dev dependencies -1d815acd78bump minimum cmake version to 3.16 -5284a2a793bump unibilium to v2.1.2 -ac5a6d9ff5fix RelWithDebInfo optimization flags #31802 -7c65224257fix lint error on macos -046e0956eefix or silence new clang-tidy warnings -5719f2b91afix uncrustify install in nix devShell (#33020) -4a0ee22e77make makefile work on msys -4ee65484b1make makefile work on windows -1b90f4a9c4mark CMake variables advanced #31412 -0f24b0826amove all generator scripts to `src/gen/` -e5ff302033remove -O2 from gen_cflags -d74c74aae3remove `lintcommit` from `lint` target -573bcb2aafremove enforcement of cmake build type -0e9c92a900remove nix flakes (#28863) -f09f5c45fareuse code for deps.txt for both deps and main build -e1dc824b7eset luals checklevel to Hint #32392 -cac86e9b4csilence "po" noise #30469 -07b14c8e2especify POST_BUILD when using add_custom_command -e83ce331dause treesitter's CMakeLists.txt -e268fcbdaawork around bug in make when PATH includes cmake as dir -b288fa8d62bump_deps: abort if archive doesn't exist -7ead328a48cjson: sync with upstream (#32114) -0e2f92ed79clint: make NOLINT work with header checks (#31281) -327110ff8ccmake: remove unnecessary policy code -535c2f8658contrib: add zsh completion (#32617) -51d85f7ea5deps: drop unused bundled bash, python parsers and queries -9216bc927cdeps: fix formatc target on MSVC -b3641b8008deps: remove libtermkey dependency -1247684ae1deps: remove msgpack-c dependency -fa79a8ad6ddeps: vendor libvterm at v0.3.3 -c614969570docs: update CSS #28896 -0a087f2073generator: add dependencies on hashy (#32796) -e178331488lpeg: search for lpeg.so on MacOS -7e099cf3ebmacos: disable deduplication in link step -f4d9a2983arelease.sh: fix hang when generating docs (#33026) -b923fcbaf0vim-patch.sh: don't ignore changes to version*.txt (#29425) -7aaa4a51b7vim-patch.sh: include commit subject #28767 -3146433190vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
Neovim is a project that seeks to aggressively refactor Vim in order to:
- Simplify maintenance and encourage contributions
- Split the work between multiple developers
- Enable advanced UIs without modifications to the core
- Maximize extensibility
See the Introduction wiki page and Roadmap for more information.
Features
- Modern GUIs
- API access from any language including C/C++, C#, Clojure, D, Elixir, Go, Haskell, Java/Kotlin, JavaScript/Node.js, Julia, Lisp, Lua, Perl, Python, Racket, Ruby, Rust
- Embedded, scriptable terminal emulator
- Asynchronous job control
- Shared data (shada) among multiple editor instances
- XDG base directories support
- Compatible with most Vim plugins, including Ruby and Python plugins
See :help nvim-features for the full list, and :help news for noteworthy changes in the latest version!
Install from package
Pre-built packages for Windows, macOS, and Linux are found on the Releases page.
Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void Linux, Gentoo, and more!
Install from source
See BUILD.md and supported platforms for details.
The build is CMake-based, but a Makefile is provided as a convenience. After installing the dependencies, run the following command.
make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install
To install to a non-default location:
make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
make install
CMake hints for inspecting the build:
cmake --build build --target helplists all build targets.build/CMakeCache.txt(orcmake -LAH build/) contains the resolved values of all CMake variables.build/compile_commands.jsonshows the full compiler invocations for each translation unit.
Transitioning from Vim
See :help nvim-from-vim for instructions.
Project layout
├─ cmake/ CMake utils
├─ cmake.config/ CMake defines
├─ cmake.deps/ subproject to fetch and build dependencies (optional)
├─ runtime/ plugins and docs
├─ src/nvim/ application source code (see src/nvim/README.md)
│ ├─ api/ API subsystem
│ ├─ eval/ Vimscript subsystem
│ ├─ event/ event-loop subsystem
│ ├─ generators/ code generation (pre-compilation)
│ ├─ lib/ generic data structures
│ ├─ lua/ Lua subsystem
│ ├─ msgpack_rpc/ RPC subsystem
│ ├─ os/ low-level platform code
│ └─ tui/ built-in UI
└─ test/ tests (see test/README.md)
License
Neovim contributions since b17d96 are licensed under the
Apache 2.0 license, except for contributions copied from Vim (identified by the
vim-patch token). See LICENSE for details.
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda. Please see the
kcc section of the vim docs or visit the ICCF web site, available at these URLs:
https://iccf-holland.org/
https://www.vim.org/iccf/
https://www.iccf.nl/
You can also sponsor the development of Vim. Vim sponsors can vote for
features. The money goes to Uganda anyway.
