-
-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build(contrib): add zsh completion #32617
Conversation
It's in contrib so doesn't really matter. But how often are nvim flags in the command line even used to warrant this? Anyway, that's a nitpick, have approved. |
Could you try - '-o[open N windows (default: one per file)]'
- '-O[open N vertical windows (default: one per file)]'
- '-p[open N tab pages (default: one per file)]'
+ '-o+[open N windows (default: one per file)]'
+ '-O+[open N vertical windows (default: one per file)]'
+ '-p+[open N tab pages (default: one per file)]' If I'm not mistaken, this will indicate they require numeric arguments, which should prevent |
this is not part of the build system yet, so packager managers are supposed to install the file by themselves. bash doesn't seem to provide shell completion, zsh embeds its own completion that is bundled with vim's. Instead of copying zsh's completion, this generated one via https://github.com/RobSis/zsh-completion-generator
623b7bf
to
cb27780
Compare
@NotAShelf thanks for the tip, it worked. I was able to confirm this worked after (re)learning a few tricks about zsh completion system. Basically to test, prepend the completion to FPATH (eg. So now depending on the distribs and order in fpath, it's not sure if zsh default completion will prevail or this one. And it might be less complete than zsh's but at least it's tied to neovim now and not zsh, we can improve and cherry-pick from zsh's if that's necessary later. |
contrib/zsh-completion.zsh
Outdated
'--cmd[execute <cmd> before any config]' | ||
'-l[\[args...\] Execute Lua <script> (with optional args)]' | ||
'-S[source <session> after loading the first file]' | ||
'-s[read Normal mode commands from <scriptin>]' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-s
requires argument.
See also https://github.com/zsh-users/zsh/blob/435cb1b748ce1f2f5c38edc1d64f4ee2424f9b3a/Completion/Unix/Command/_vim#L41
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would that work '-s[read Normal mode commands from <scriptin>] file:_files'
(that's what I've added without testing. I wonder if the "script
is mandatory
'-s[read Normal mode commands from ]:script file:_files'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
'-s[read Normal mode commands from <scriptin>]:file:_files'
# ^
See the below patch.
Co-authored-by: Eisuke Kawashima <[email protected]>
Co-authored-by: Eisuke Kawashima <[email protected]>
I would like to mention it in news.txt for package managers to install it. Is news.txt autogenerated/where should I put the announcement ? |
Co-authored-by: Eisuke Kawashima <[email protected]>
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- - 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth - 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418) - 35c5e2310783 store artifact shasums in a single shasum.txt file - 188ec19894e4 turn off translations by default - 328ea02eb7de use utf8proc full casefolding - 737f58e23230 api: rename Dictionary => Dict - a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730) - ad70c9892d5b column: rework 'statuscolumn' %r/l items - eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200) - a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070) - 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079) - a9e725b26e08 diagnostics: sort underline severity_sort (#30898) - e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding` - 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover() - debabaf884fc lsp: pass buffer number to root_dir function - 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers - 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911) - 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877) - dff684fdb3d2 lsp: support multiple clients in lsp.buf.references - 970a27927eb3 lua: do not use typed table for empty dict - de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe - a27419f3fc54 options: disallow setting hidden options #28400 - b922b7d6d788 options: use OptVal for option defaults #26691 - 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022 - 318676ad1348 release: remove backwards compatible releases - ad191be65e2b signs: place higher-priority signs from the left #27781 - 0dd933265ff2 terminal: cursor shape and blink (#31562) - 35e5307af257 terminal: include cursor position in TermRequest event data (#31609) - 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859) - 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups - 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193) - bd4ca22d0334 treesitter: don't parse tree in get_parser() or start() - a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser - 99e0facf3a00 treesitter: use return values in `language.add()` - bda63d5b97df typval: remove distinction of binary and nonbinary strings - 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525 - ca5fca29121a windows: drop cat and tee executables from windows - be89d520d7e9 windows: only support UCRT, even for mingw FEATURES -------------------------------------------------------------------------------- - efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067) - 0631492f9c80 add vim.fs.relpath - f864b68c5b0f allow gx to function for markdown links - f3632e14e3a7 get/set namespace properties #28728 - a66424617156 remove deprecated features - ead5683ff999 api: add err field to nvim_echo() opts - aec4938a21a0 api: broadcast events to ALL channels #28487 - 34d808b73cbc api: combined highlights in nvim_eval_statusline() - 19b25f3feacf api: deprecate nvim_buf_add_highlight() - 5c92b40b4b17 api: deprecate nvim_out/err_write(ln) - d84a95da7e11 api: nvim_get_autocmds filter by id#31549 - 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006 - e00d67ef310c checkhealth: group parsers by name and path in output - 563051a53ef9 clipboard: support g:clipboard="osc52" #33021 - 60ea0467411d clipboard: try cygutils, clip on Windows #30215 - 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400) - 65c7033cbe75 comment: allow commentstring to be determined from node metadata - 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600 - a616272f568a complete: specify reason for CompleteDone - f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223) - ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122 - 2c6b6358722b defaults: add LSP default mappings (again) (#28650) - bb7604eddafb defaults: add default unimpaired style mappings (#28525) - 4662ad5643b2 defaults: completeopt=popup #32909 - e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480) - cc6992f1ca44 defaults: dot-repeat [<Space> #31186 - 6db830e40e92 defaults: enable diffopt "linematch" #32346 - b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736 - 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781 - 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764) - 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261 - 09d76afe84dd defaults: pretty :help headings #30544 - 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984 - 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066) - c9c17fda80d8 deprecations: vim._defer_deprecated_module() - 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler - 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745) - 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302 - 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273) - 21961967ffef diagnostic: update quickfix list by title #31486 - 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868 - 1759b7844a2d diagnostic: virtual_lines #31959 - fd65422b99c7 diff: do not try external when out of memory - 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904 - 6628741ada73 docs: improve `@see` meta docstrings #30693 - 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement - cb6c0fda718e editorconfig: add support for spelling_language (#28638) - 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493) - 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks - 4cced601c8cd extmark: stack multiple highlight groups in `hl_group` - 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921 - 62d9fab9af21 float: add winborder option (#31074) - 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844) - 511b991e6689 fs.lua: add vim.fs.rm() - 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085) - f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491 - b61051ccb4c2 func: allow manual cache invalidation for _memoize - 548f19ccc301 health: close checkhealth buffers with q #31870 - f2fa4ca97ea3 health: highlight headings #30525 - b12b91c27439 health: show :checkhealth in floating window #31086 - 6592873f773b help: use treesitter for table of contents - 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups - 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold - 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034 - 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101 - 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343 - e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347) - 8d55cc218cfe keysets: teach Union and LuaRefOf - 5931f780e028 log: use "ui" as default name for TUI client #30345 - e4c6e732fd04 lsp: add select kind in showMessageRequest #32387 - f20335a54ce7 lsp: add support for completionItem.command resolving - 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable - 6072153796d1 lsp: announce codeLens resolveSupport (#29956) - 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060) - ff097f2091e7 lsp: completion side effects - 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd - 454ae672aad1 lsp: deprecate non-method client functions - 54249d051c3e lsp: deprecate vim.lsp.buf.completion - e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341 - 55e4301036bb lsp: drop fswatch, use inotifywait (#29374) - dad55f5e763f lsp: export diagnostic conversion functions (#30064) - 44229bb85b6c lsp: highlight hover target/range #31110 - 27f3750817b1 lsp: improve LSP doc hover rendering #30695 - 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items` - 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164 - 4e90bc30237a lsp: lsp.completion support set deprecated (#29882) - 6e68fed37441 lsp: multi-client support for signature_help - 629483e24eed lsp: require `offset_encoding` param #31249 - e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name] - 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663) - ce678043e346 lsp: show server name in code actions #30830 - 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611 - a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311) - 3b0fe2659e74 lsp: support completion context #32793 - 41b07b128ccb lsp: support for resolving code action command (#32704) - 35247b00a44e lsp: support function for client root_dir (#31630) - 45e76acaa053 lsp: support hostname in rpc.connect #30238 - b2bad0ac91dd lsp: support postfix snippets in completion - d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings - 5d26934c7cda lsp: update LSP healthcheck format (#28980) - ae2fd91b411d lsp: update LSP types - 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match - e4c1f6667b14 lsp: use the meta model to generate server capability map - 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323 - 92e4e3fb76c2 lsp.util: fix type errors - ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs - cbc82011ce19 lsp.util: improve offset_encoding type annotations - a18fa2f11c3a lsp.util: minor codestyle - 1944c0d610ce lsp.util: refactor get_border_size() - f0973d42272e lsp.util: refactor symbols_to_items() - 0e8568d72c88 lsp.util: remove lsp spec extract - 0621718e3b5f lsp.util: remove metatable in locations_to_items - 3f87e222f79b lsp.util: remove some aliases - e954a16063e6 lsp.util: remove some variables - 5bec7288a5b5 lsp.util: remove uneeded do-end - 8ad000ef7cf0 lsp.util: remove unneeded table - d44d36b8ff6c lsp.util: simplify some bounds checking - 0066dd0f653e lsp.util: use faster version of vim.validate - 1edfe5c09ebc lsp.util: use vim.api alias - 97119a236937 lsp.util: use vim.w/b - cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()` - 9afa1fd35510 lua: add `vim._with` - 518070731003 lua: add `vim.fs.abspath` - b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939) - d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472 - 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690 - 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts - af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012 - be1fbe38b31b lua: vim.text.indent() - fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515) - ea5b748f2438 man.vim: "q" always closes window #30819 - f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark() - 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497) - cfdf68a7acde mbyte: support extended grapheme clusters including more emoji - 124c655f56bc messages: "g<" mapping for ext_messages - cb7b4e296238 messages: "verbose" message kind #31991 - 5bae80899d9d messages: add :!cmd shell message kinds - e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521 - 21151144c6ee meta: add type for quickfix entries - 82a215cb2dc2 options: add 'eventignorewin' (#32152) - d831392b1560 paste: unify cancel and error behavior (#30476) - 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719 - f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697 - e6cfcaed184d snippet: add default keymaps during snippet session - 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887) - 96128a5076b7 startup: validate --listen address - 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735 - 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561 - 8df6736ca14d term: enable reflow by default (#21124) - 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050) - 93480f7fbaa5 term: trigger TermRequest for APC (#32407) - 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117) - 6f0bde11ccd8 terminal: add support for kitty keyboard protocol - 06a1f82f1cc3 terminal: forward X1 and X2 mouse events - e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji - f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999) - 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443) - 34cd94812d42 test: support and document lua test case debugging - b8c75a31e6f4 treesitter: #trim! can trim all whitespace - ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657) - bd3b6ec8360e treesitter: add node_for_range function - 688b961d13bd treesitter: add support for wasm parsers - 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range - 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts` - 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790) - 1af55bfcf21b treesitter: allow get_node to return anonymous nodes - a94a2927d00a treesitter: allow passing lang to InspectTree - 45e606b1fddb treesitter: async parsing - 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559 - 267c7525f738 treesitter: introduce child_with_descendant() - 09f9f0a94625 treesitter: show which nodes are missing in InspectTree - b9b408a56c7e treesitter: start moving get_parser to return nil #30313 - da0ae9534900 treesitter: support modelines in `query.set()` (#30257) - 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282) - 8ba047e33fe3 treesitter: vertical conceal support for highlighter - ff85e54939b0 tui: builtin UI (TUI) sets client info #30397 - 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727) - f93ecd2760f5 tui: parse CSI subparams in termkey (#29805) - 44dbfcfba4b0 tui: recognize X1 and X2 mouse events - e41368f3bc1d tui: support in-band resize events (#29791) - d460928263d0 tui: update 'background' on theme change events (#31350) - 45e319ade639 tutor: give hints to satisfy the line checker #30952 - 4b0e2605eaf9 ui: UI :detach command - 394f69a25dc3 ui: additional arguments for cmdline_show/hide events - a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980 - f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984 - 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192) - 43d552c56648 ui: more intuitive :substitute confirm prompt #31787 - 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575 - a10636fbe7bb ui: specify whether msg_show event is added to history - e049c6e4c08a ui: statusline text inherits highlights #29976 - 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551 - 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool - f4b620c4e643 vim.ui.open: support lemonade #30845 - 3572319b4cb1 vim.validate: improve fast form and deprecate spec form - cb84cd5d9fba win32: embed executable icon FIXES -------------------------------------------------------------------------------- - 200e7ad15786 apply the change on more files - 6720bd440f19 assert failure in VimL expression parser - d123202ae6ef change deprecation presentation - ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121 - 7737f892063a deps build for ARM64 MSVC - 50749f8df89d extend the life of vim.tbl_flatten to 0.13 - 25abcd243e41 fix broken wasmtime build - b6ab29483842 fix incorrect search code - 46b69aaf14a7 include nvim/ascii_defs.h - 01b4da65c229 merge all provider healthchecks into a single health.lua - 5c245ec3e955 remove vim.lsp._with_extend - 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348) - 6aa42e8f92bd resolve all remaining LuaLS diagnostics - e71713ba2b5c show swapfile warning as a warning (#28971) - 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756) - 0829e7575d63 warn when :InspectTree on buffer with no parser #32783 - 47f2769b462e Man: completion on Mac - 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw - 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value` - 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710) - 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908) - 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456 - 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919 - 095c0876c201 api: don't override Vimscript SID (#32610) - bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302) - 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984) - cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078) - 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981) - f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543) - 022449b52236 api: generic error messages, not using TRY_WRAP #31596 - 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390) - ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390 - 167a2383b996 api: not using TRY_WRAP, generic error messages #31595 - bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177 - d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740 - 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243) - e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219 - 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912 - 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576 - 40347f6e27f1 api: only flush nvim__redraw when necessary #31250 - 36f44b3121fc api: remove invalid assertions - 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042 - 9c718bc2bce5 api: validation, documentation of hl_group #31195 - 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544 - ffaab09e9986 build: <termios.h> is system-dependent #31705 - 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME - 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode - 34a2bfdcc5ce build: vimdoc tags are not validated #32801 - 807098824762 channel: handle writing to file instead of pipe (#30519) - c49162be5958 channel: log after (not before) channel-close - 965dc81f818e checkhealth: disable 'listchars' #31245 - 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name - f5dd30948e67 checkhealth: handle nested lua/ directory #32918 - c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988 - 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268 - 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866 - af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007 - a70ad5cdb6de cmdline: ext_cmdline block events for conditionals - bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033 - 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment - 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256 - 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810 - 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182) - 3cb1e825e679 column: check if signcolumn changed in all windows #31439 - 1dcda865591b column: clamp line number for legacy signs - f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003) - f9a49fab0c90 column: modifying a sign should update placed signs (#29750) - d5f6f61879ba column: set signcolumn width after splitting window (#30556) - 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944) - 0a2218f965ac comment: fall back to using trimmed comment markers (#28938) - e788d1a3a903 completion: avoid deleting text when completion leader changes #31448 - bfa365a87267 completion: don't include <Lua function> in -complete= (#30209) - 55dc482e757e completion: fix inconsistent Enter behavior (#30196) - 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395 - e1c2179dd93e coverity: INTEGER_OVERFLOW #31657 - f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618 - 069451bb214b coverity: size_t overflow #30497 - ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665 - c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773) - 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341 - 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687) - a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686) - 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081) - 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858) - a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096) - 34ded4d97b78 decor: exclude invalid marks from meta total - 87610d82db91 decor: set invalid flag for end of invalidated paired marks - 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree - 0e299ebf7559 decorator: noisy errors from decoration provider #31418 - f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375 - 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343) - 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460) - f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884 - 59a171fd99a7 defaults: improve visual search mappings #32378 - 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943 - c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347) - ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983) - 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632) - 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642) - 573fcb8b6641 deps: revert accidental test commits (#30864) - de794f2d2409 diagnostic: broken variable reference #31557 - c78728a3844c diagnostic: clear autocmd only for valid buf (#32861) - f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979 - 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506) - 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464 - d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593) - f69937fdbd16 diagnostic: fix float scope filtering (#29134) - 5bc948c050ce diagnostic: improve current_line refresh logic #32275 - 4b3be56a0369 diagnostic: make docs agree with code (#29561) - fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466 - 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option - 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553 - 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings - 4cbeb6fa3cc7 diagnostic: silence :chistory #31701 - 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585 - 17c25a66fcea diagnostic: virtual lines should scroll horizontally - fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703) - e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321 - c65646c2474d diff: use mmfile_t in linematch - 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708) - f25dd7a8d548 display: correctly store winline info for concealed lines (#32656) - a901fb875f69 docs: add missing properties to hl_info #30032 - cc26cf040028 docs: do not treat indexes as `short_link` - 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680 - 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673 - 09bcb310681e docs: replace `yxx` mappings with `g==` #31947 - efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList` - b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks` - 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706) - 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035) - b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406) - 34344b939c06 editor: avoid scrolling :substitute confirm message #32149 - 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342) - b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634) - 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953) - 4317d366691b event-loop: process input before events in getchar() (#32322) - f05a6666cfcb events: always allow some events to be nested (#32706) - e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473) - 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813) - 8c2d45be7729 exit: close memfiles after processing events (#30872) - c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387 - 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage - 43a2019f09e8 extmarks: issues with revalidating marks #28961 - 84ad95fdc9d4 fileio: copy to correct buffer position when reading - 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991) - aa9f21ee953d filetype: fix typos in filetype detection - 032e024f8ab9 filetype: handle .in files with no filename (#30487) - 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470) - 21cbd9000748 filetype: normalize full path before matching #32227 - 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445) - cff5fa49fc5a float: "Not enough room" error for 1-line float #25192 - 07c5f41da3ad float: can set title/footer without setting border #32594 - be01b361d8ff float: cannot set title/footer independently #31993 - ff1791c9e59b float: close preview float window when no selected #29745 - d2cca606a1b6 float: ensure floating window width can fit title - 8ddcf9d93900 float: handle error in win_float_create() (#29742) - 8b2b1fba2abf float: missing default highlight for title - df915f3afccb float: properly find last window of tabpage (#30571) - 17383870dd3b float: re-sort layers when grid zindex changed #30259 - 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964) - 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto) - 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720 - ceea6898a8bd gen_help_html: handle delimiter, heading #29415 - 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields - 913e81c35f16 getchar: do not simplify keycodes in terminal mode - b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520) - 4bd86120d41e glob: handle overlapping `{}` condition elements #29236 - b47b0b3f757d grid: double grid_line_start() with ext_messages #31292 - fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug' - a9c89bcbf69a gx: allow `@` in url - 570a8da01b55 health: "q" should not close last window #31876 - 2e3f1069f499 health: better layout of vim.treesitter health check - 10f917351906 health: broken ruby detect #28804 - 84e85aeb10ae health: check more "old" files #30421 - 5b778a64ec2e health: fix fetching url with python in provider health (#29594) - b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue - 237d2aef4d70 health: return correct name from 'path2name()' - 5e9040648739 health: set nomodifiable in checkhealth buffers - 91773710145e help: remove runnable code virtual text - ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288) - 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313) - 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids - 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns - 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905 - b67fcd048874 highlight: make `TablineSel` more noticeable #31896 - 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183 - 59e130b6cacd inccommand: ensure cursor is where it belongs - 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) - b52ffd0a59df inspect: always show priority - 9c278af7cc96 inspect: show priority for treesitter highlights - 22fd52325bf6 inspector: update semantic token namespace (#32157) - efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803) - 574ea6a1911b keycodes: recognize <Find>, <Select> #28431 - 67bb0cfa79bc loader: follow the style of the error message for built-in loaders - 44740e561fc9 log: RPC log format #32337 - 851137f67905 log: log unset $TMPDIR at "debug" level #32137 - c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005 - a6f219b06beb log: unintuitive message for undefined $TMPDIR - 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170) - fac96b72a59e lsp: add foldingrange method support check #31463 - 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838) - a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared - b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266) - 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002) - fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478) - 39d79efa1e1e lsp: better multi-client support for callHierarchy - bdfba8598b41 lsp: cancel pending requests before refreshing - f9bf64d74641 lsp: check buffer is loaded and valid #30330 - c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients - 81b372fecd74 lsp: check for nil response from server (#29196) - a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response - 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162) - af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914) - 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap - 025c87441502 lsp: clear lsp client diagnostics (#29050) - c374f264305f lsp: clear word when expand multi-lines word (#32393) - adf7c98d607b lsp: compare URI instead of workspace folder name (#30962) - b4599acbf8e3 lsp: correct hover result handling (#30995) - f8d5811c717b lsp: correctly check for "codeAction/resolve" support - 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close - 2a1f604c77a1 lsp: delete bufvar inside WinClosed event - 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875) - 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029) - 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242) - d56ba71af11c lsp: document_symbol uses loclist by default #32070 - 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501) - 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690) - 5f527f24f0ea lsp: don't use completion filterText if prefix is empty - 305012ea0732 lsp: enable `additionalPropertiesSupport` - 9d9ee3476e64 lsp: ensure watcher cancel - aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522) - 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945) - b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659) - 4b001f297ae2 lsp: fix infinite loop - 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130) - 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212) - 8654a9700690 lsp: handle empty call hierarchy items #30349 - f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc - 882a450a2982 lsp: handle locations exceeding line length #30253 - 008782208d82 lsp: handle mixed encoding in tagfunc params - e0a5c3bb5817 lsp: handle multiline signature help labels #30460 - 8512f669f0e0 lsp: handle nil bytes in strings - f03b1622ad1b lsp: handle nil root_dir in health check (#29007) - ed071672613b lsp: handle non-existent configs in lsp.config/enable - 003b8a251dc1 lsp: handle out-of-bounds character positions #30288 - 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016) - d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807) - f54266dbed6f lsp: hover border type can be string (#31013) - 9a681ad09e2a lsp: hover keymap (#31208) - a14fca432b96 lsp: improve LSP floating preview window cleanup #31353 - e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707) - 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966 - 0e394f136fcb lsp: log when receiving markup messages (#30065) - 203e7a43d1f2 lsp: mention function name in warning #31301 - a4f575abd85e lsp: minimum height for floating popup #31990 - 4fd2694f20d6 lsp: missing method parameter when canceling requests - be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509 - 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716) - 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886 - 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491) - a450fda4eded lsp: prefer `on_list` over `loclist` in default handler - 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904) - eb629cce9171 lsp: redundant spaces in lsp log (#29970) - 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174) - d76f7fef13e5 lsp: reset active request when reporting an error - 6bc79790449f lsp: reset the applied hints on `refresh` request #32446 - 47aaddfa0dda lsp: resize hover window for concealed lines - 081beb3659bd lsp: restore get_language_id behaviour - 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345) - d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145) - 9c2034229739 lsp: reuse client if configs match and no root dir - 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217) - bdff50dee56e lsp: revert text edit application order change (#29877) - e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998) - a108852b008b lsp: semantic token functions allow "0" bufnr #28849 - c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748 - 8a236c242a76 lsp: set floating window filetype after setup #32112 - 3c51058d7611 lsp: set tagstack on jump via goto methods - 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382 - 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747 - 629a5b71b55e lsp: support multiple clients in typehierarchy - e48179f31e65 lsp: suppress completion request if completion is active (#30028) - 50f006b61774 lsp: tagfunc fails in unusual buffer #30700 - 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795) - 19be3d26830c lsp: trim trailing whitespace from completion words (#29122) - aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331) - 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235 - 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText - fe5ae88b20f5 lsp: update request name to capability map #30098 - 5aa9906676f3 lsp: use client.id instead of pairs index (#29143) - c8d7d65679f8 lsp: use correct method for prepareTypehierarchy - b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match - 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails - 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable #32002 - 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608 - 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044) - 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837 - 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests - 3275ae830da9 lsp.protocal: improve typing of constants - acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding - 564173e5568c lsp.util: wrong arguments to 'validate' function - 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595 - b28373638848 lua: `@private` => `@nodoc` #32587 - b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend - c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715) - 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753) - fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505) - 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) - 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203) - bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587) - e2aca58bcc4f lua: don't override script ID from :source (#32626) - d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks - 948f2beed4ea lua: find length of completion prefix earlier (#29384) - ebb963a4a082 lua: format errors from luv callbacks using __tostring - 65a703e06063 lua: ignore stdout and stderr for xdg-open - 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044) - c6d2cbf8f51a lua: pop retval for fast context LuaRef - a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker - 3d707e6f14b7 lua: remove vim.loader.disable() #31344 - 3a8811324604 lua: revert vim.tbl_extend behavior change and document it - 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021) - 40a149e7f992 lua: types for vim.api.keyset.win_config #32700 - 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536) - 960fdc775a88 lua: vim.deprecate does not support major>0 - d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850) - cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218 - 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659) - 9eb042600269 luacats: allow all types inside tuples - ee5aaba21560 man: avoid setting v:errmsg (#30052) - 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180) - da6f68ee6966 man: filter OSC 8 hyperlink markup #29171 - 7940ec69136f man.lua: `:Man <tab>` does not complete #31569 - e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262 - d6653e1cc957 marks: ensure decor is removed with proper range (#32973) - 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477) - 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476) - 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662) - 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862) - 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766) - 012db2b0f509 marks: revalidate marks whose position did not change - 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017 - c4f76299f039 marks: skip right_gravity marks when deleting text - cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560) - 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747) - a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531) - 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char - 15bc930fca94 memline: don't check line count for closed memline #32403 - aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328) - 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952 - d98827b634af messages: avoid empty msg_showmode with 'noshowmode' - 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627 - 21718c67dd96 messages: better formatting for ext_messages #31839 - 92556be33d04 messages: compute msg_col after last newline in ext_messages - ad853d1df093 messages: improve deadly signal messages #32364 - 51853b82bc95 messages: incorrect error message splitting and kind #32990 - 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531 - 7ce27381fb49 messages: lsp window/showMessage is not an error - 1b6442034f6a messages: more ext_messages kinds #31279 - 9c6a3703bb15 messages: no message kind for :undo messages #31590 - ca760e645ba4 messages: no message kind for :write messages #31519 - 909b18d05a8d messages: no message kind for completion menu messages #31646 - f111c32ff9dc messages: no message kind for search pattern #31272 - 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages - 9fa3a0964e9b messages: pass previous highlight id to ext chunks - e025f5a5b30a messages: proper multiline Lua print() messages #31205 - d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669 - d55b17e2b4e0 messages: verbose kind for nvim_echo() - c8e47f648052 meta: do not use hyphens in param names - 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling - 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565) - 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394) - 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655) - f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642) - 5947f249f838 move: half-page scrolling with resized grid at eob (#28821) - ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276) - af0a2157ad29 move: wrong cursor row on concealed line (#32629) - 83479b95abae mpack: remove invalid bool definition - d32780de4daf mswin: UI may hang on exit - fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode - de83cc5842c9 netrw: re-add missing comment marker in syntax file - d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555 - 34e2185022ab options: better handling of empty values - 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978) - 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896) - 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894) - 395f420fc65c options: fix some 'belloff' flags not working properly (#30856) - 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919) - e697c1b43dfb paste: improve repeating of pasted text (#30438) - 052875b9dc3d paste: only record a paste when it's from RPC (#30491) - 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025 - 42aa69b076cb path: avoid chdir() when resolving path (#28799) - 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992) - 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863) - afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819 - ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636 - d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246 - d24fb72c335b pum: don't select item when clicking to the left/right (#30967) - 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609) - 3bcd5624beec regexp: fix typo in E888 error message (#30161) - cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209 - 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf` - b6c1ce8a9545 runtime: add commentstring for glsl ftplugin - 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252) - e641155b023c runtime: avoid E31 in ftplugin (#32578) - 82b02ae2f2af runtime: clean up one-off scripts - 9788b81d7e53 runtime: fully port emoji_list to Lua - 74fcc9452cd9 runtime: gO always says "Help TOC" #32971 - 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures - 8369590eb215 runtime: remove obsolete ftplugin/calender.lua - 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin - 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053) - 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533) - 862338255da6 runtime: sync bundled treesitter queries - 9e80738f3073 runtime: sync bundled treesitter queries - 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473) - 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529) - a5bd6665b00a scripts: update bundled dependencies in bump_deps - 573a71469d37 scrollbind: properly take filler/virtual lines into account - a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153) - 648d6426c863 server: CID 509282: DEADCODE #30316 - f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538 - cd48b72b60af shada: restore search pattern length properly (#28929) - 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031) - 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998) - 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670) - 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970 - d46ebd2a7403 startup: avoid crash with completion from -l script (#32160) - 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285 - 17e00d0cc63c startup: report --startuptime error to stderr (#31131) - 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310 - 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912 - 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265 - 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602) - a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458) - f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509) - 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755) - 69a19295f8fe terminal: delay when finishing terminal process #32846 - f8c8a245aa5b terminal: don't crash on unprintable chars - 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090) - fa46441264b2 terminal: improve cursor refresh handling (#32596) - 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056) - 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620) - c51bf5a6b249 terminal: set cursor cell percentage (#31703) - 5def8714ad70 terminal: set local values of window options (#29326) - e9c077d197a8 termkey: fix null pointer dereference (#31792) - c8e3618e0e68 test: "tempdir not a directory" in CI logs - f7e32fb6e626 test: better management of tmpfiles - db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524) - e61228a214eb tests: needing two calls to setup a screen is cringe - 639734bed4ef tests: remove the __extension__ keyword in filter_complex_blocks (#32483) - 59baa5e8a1f9 tohtml: apply sp color if present #30110 - 67c39f5ecae0 tohtml: disable modeline #32822 - e37404f7fecc tohtml: enclose font-family names in quotation marks - 25db0a138537 tohtml: extmark text may be out of bounds - 8cd9feb50166 tohtml: ignore lsp inlay hints - eb37241d38ad tohtml: properly handle multiple hl groups #29012 - 2ed6423c7e9d tohtml: replace ipairs with pairs - 88c7997503e1 tohtml: show how many warnings are hidden - 118ae7e5ed6c tohtml: support ranges again - c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488 - b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536 - 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field - 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree - bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer - a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233 - 6696ea7f1038 treesitter: clean up parsing queue - 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036) - f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil - 7a20f93a929a treesitter: correct condition in `__has_ancestor` - 9b25c68db21c treesitter: correctly parse queries with combined injections - 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()` - 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree - da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav - 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709 - aa2b44fbb07f treesitter: don't return error message on success #31955 - b0bbe25c4808 treesitter: don't spam query errors in the highlighter - b88874d33c15 treesitter: empty queries can disable injections (#31748) - d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542) - f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results - c4eb0b64bd49 treesitter: find buffer in multiple windows #28922 - 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree - 5331f87f6145 treesitter: indent size for inspect_tree #28727 - 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198 - 052e048db676 treesitter: lint top-level anonymous nodes - 4b9095285160 treesitter: mark supertype nodes as named - 096ae3bfd707 treesitter: nil access when running string parser async - c3337e357a83 treesitter: nil check query for has_conceal_line - 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240 - 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter - d3193afc2559 treesitter: remove duplicate symbol names in language.inspect() - cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041 - 1827ab7a1f9a treesitter: separately track the number of valid regions - 36990f324de2 treesitter: show proper node name error messages - 4349bdbd0bd0 treesitter: specify success status in edit_query return value - e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid - 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error - ae917dbd06cb treesitter: sync queries from upstream - c4e9ff30a6b6 treesitter: sync queries with upstream - d8eec8156098 treesitter: update lua, markdown queries - 6e44a6a289c5 treesitter: update queries - 5a54681025ec treesitter: uv_dlclose after uv_dlerror - e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers - 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet - 8474f529780b treesitter.foldexpr: robustness against ctrl-c - f81131cca2b4 tui: also reset cursor color if it was invisible (#31348) - 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793) - 720ec5cec2df tui: cursor color in suckless terminal #32310 - b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804) - d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197) - a811d4babd22 tui: only reset cursor color if it was changed (#31337) - 0c0352783fca tui: remove DCS escaping in tmux (#32723) - 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884) - f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960) - bc63ffcf39e8 tui: reset clear_region attributes during startup #28713 - b02c83941493 tui: set id parameter in OSC 8 sequences (#29840) - 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096) - 8b8096500d08 tutor: incorrect lines marked as correct #29833 - 31745b17e60d types: add narrower vim.validate types - 44410d063ad2 types: add some vim.fn type annotations - b813075b8a55 types: do not mark unstable API as private - e947f226bebe types: use vararg return type annotation - a1906c23ddab ui: Windows :detach is opt-in - 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718) - 216ec7397214 ui: avoid redundant ext_cmdline events (#32237) - 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419) - 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222 - 7eba016c8681 ui: ensure screen update before waiting for input #30576 - 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950 - 6e4df18b457e ui: no fast context for prompt message kinds #31224 - 6b8c56c7f6da ui: schedule UI detach (#32827) - b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089 - d1fd674df3eb ui: update title in more cases (#31508) - 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284 - d049752e45c3 version: fix vim.version().prerelease - 8bdfc2ab2b25 version: return nil with empty string - 6401b433f7c0 vim.fs: default to follow=false #32859 - 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480 - 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782 - 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths - a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter - 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781) - 734dba04d13b vim.system: close pipe handles after process handle - 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638 - ad3472e29169 vim.system: resolve executable paths on windows - 33464189bc02 vim.text: handle very long strings (#30075) - 4cff4185647c vim.text: remove assert from vim.text.hexdecode - d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302 - 8bf79bd13c4d vim.wo: never allow non-zero bufnr - 453f2c52d291 vim_snprintf: special-case handling of binary format - 32e128f20992 watch: exclude .git when using inotifywait (#29914) - 9e23b4e1852f watch: ignore nonexistent paths (ENOENT) - a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099) - 88f07d6ca4a6 win-msi: set installer scope to machine #29895 - 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551) - 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507) - 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo PERFORMANCE -------------------------------------------------------------------------------- - 48251134ee59 add fast path to vim.validate (#28977) - 3abd7ed4a4cd consider only active decorations when drawing lines - 8d2ee542a82a decor: join predicates and matches cache - 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288 - b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777) - 15f2da55a8de events: use hashy for event name lookup (#32802) - abf4b65a51b2 filetype: cache (more) pattern data during "add" time - f61efe3fe77c filetype: implement parent pattern pre-matching (#29660) - ff575b388640 filetype: optimize internal data structures - dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596) - 12d4caa9d3e4 keycodes: use hashy for string lookup - f8fc6cb15755 loader: reduce calls to Loader.cache_file - 138a93a057da lsp: avoid repeated table lookup in completion.enable - 7342e6b00d5e lsp: do not apply semantic tokens to folded lines - c85d15e0d557 lsp: don't construct potentially expensive strings - cc1f2d2ca6ca lsp: don't copy completion items in filter pass - 3e855d533f44 lsp: use faster version of str_byteindex - 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103) - 3fdc43024159 treesitter: cache queries strongly - b192d58284a7 treesitter: calculate folds asynchronously - c6abc97006ee treesitter: do not use tree cursors with a small lifetime - cbad2c662873 treesitter: don't block when finding injection ranges - d9ee0d2984e5 treesitter: don't fetch parser for each fold line - 562056c87573 treesitter: only search for injections within the parse range - c57a85e0eda0 treesitter: remove unnecessary foldexpr loop - 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()` - 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512) - 3f3e4837d5f7 validate: use lighter version - 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080) BUILD -------------------------------------------------------------------------------- - 104800ce2ead "popcount" name conflict on NetBSD #28983 - 198a952c13a1 add luals check - ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable - 32e16cb0b6b0 add utf8proc as dependency - b213f5169c33 allow comment after #include for required header (#29722) - 382eb878bcbf bump lua dev dependencies - 1d815acd78e5 bump minimum cmake version to 3.16 - 5284a2a79316 bump unibilium to v2.1.2 - ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802 - 7c652242579b fix lint error on macos - 046e0956eeb3 fix or silence new clang-tidy warnings - 5719f2b91a31 fix uncrustify install in nix devShell (#33020) - 4a0ee22e77d1 make makefile work on msys - 4ee65484b16d make makefile work on windows - 1b90f4a9c472 mark CMake variables advanced #31412 - 0f24b0826a27 move all generator scripts to `src/gen/` - e5ff3020330e remove -O2 from gen_cflags - d74c74aae35e remove `lintcommit` from `lint` target - 573bcb2aaf3e remove enforcement of cmake build type - 0e9c92a90043 remove nix flakes (#28863) - f09f5c45facc reuse code for deps.txt for both deps and main build - e1dc824b7ef4 set luals checklevel to Hint #32392 - cac86e9b4c14 silence "po" noise #30469 - 07b14c8e2ed2 specify POST_BUILD when using add_custom_command - e83ce331da91 use treesitter's CMakeLists.txt - e268fcbdaa1e work around bug in make when PATH includes cmake as dir - b288fa8d62c3 bump_deps: abort if archive doesn't exist - 7ead328a4858 cjson: sync with upstream (#32114) - 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281) - 327110ff8c59 cmake: remove unnecessary policy code - 535c2f8658c4 contrib: add zsh completion (#32617) - 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries - 9216bc927c00 deps: fix formatc target on MSVC - b3641b80083d deps: remove libtermkey dependency - 1247684ae14e deps: remove msgpack-c dependency - fa79a8ad6dee deps: vendor libvterm at v0.3.3 - c614969570ac docs: update CSS #28896 - 0a087f207331 generator: add dependencies on hashy (#32796) - e178331488a0 lpeg: search for lpeg.so on MacOS - 7e099cf3eb1f macos: disable deduplication in link step - f4d9a2983a49 release.sh: fix hang when generating docs (#33026) - b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425) - 7aaa4a51b76f vim-patch.sh: include commit subject #28767 - 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- - 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth - 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418) - 35c5e2310783 store artifact shasums in a single shasum.txt file - 188ec19894e4 turn off translations by default - 328ea02eb7de use utf8proc full casefolding - 737f58e23230 api: rename Dictionary => Dict - a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730) - ad70c9892d5b column: rework 'statuscolumn' %r/l items - eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200) - a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070) - 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079) - a9e725b26e08 diagnostics: sort underline severity_sort (#30898) - e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding` - 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover() - debabaf884fc lsp: pass buffer number to root_dir function - 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers - 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911) - 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877) - dff684fdb3d2 lsp: support multiple clients in lsp.buf.references - 970a27927eb3 lua: do not use typed table for empty dict - de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe - a27419f3fc54 options: disallow setting hidden options #28400 - b922b7d6d788 options: use OptVal for option defaults #26691 - 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022 - 318676ad1348 release: remove backwards compatible releases - ad191be65e2b signs: place higher-priority signs from the left #27781 - 0dd933265ff2 terminal: cursor shape and blink (#31562) - 35e5307af257 terminal: include cursor position in TermRequest event data (#31609) - 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859) - 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups - 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193) - bd4ca22d0334 treesitter: don't parse tree in get_parser() or start() - a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser - 99e0facf3a00 treesitter: use return values in `language.add()` - bda63d5b97df typval: remove distinction of binary and nonbinary strings - 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525 - ca5fca29121a windows: drop cat and tee executables from windows - be89d520d7e9 windows: only support UCRT, even for mingw FEATURES -------------------------------------------------------------------------------- - efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067) - 0631492f9c80 add vim.fs.relpath - f864b68c5b0f allow gx to function for markdown links - f3632e14e3a7 get/set namespace properties #28728 - a66424617156 remove deprecated features - ead5683ff999 api: add err field to nvim_echo() opts - aec4938a21a0 api: broadcast events to ALL channels #28487 - 34d808b73cbc api: combined highlights in nvim_eval_statusline() - 19b25f3feacf api: deprecate nvim_buf_add_highlight() - 5c92b40b4b17 api: deprecate nvim_out/err_write(ln) - d84a95da7e11 api: nvim_get_autocmds filter by id#31549 - 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006 - e00d67ef310c checkhealth: group parsers by name and path in output - 563051a53ef9 clipboard: support g:clipboard="osc52" #33021 - 60ea0467411d clipboard: try cygutils, clip on Windows #30215 - 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400) - 65c7033cbe75 comment: allow commentstring to be determined from node metadata - 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600 - a616272f568a complete: specify reason for CompleteDone - f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223) - ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122 - 2c6b6358722b defaults: add LSP default mappings (again) (#28650) - bb7604eddafb defaults: add default unimpaired style mappings (#28525) - 4662ad5643b2 defaults: completeopt=popup #32909 - e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480) - cc6992f1ca44 defaults: dot-repeat [<Space> #31186 - 6db830e40e92 defaults: enable diffopt "linematch" #32346 - b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736 - 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781 - 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764) - 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261 - 09d76afe84dd defaults: pretty :help headings #30544 - 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984 - 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066) - c9c17fda80d8 deprecations: vim._defer_deprecated_module() - 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler - 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745) - 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302 - 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273) - 21961967ffef diagnostic: update quickfix list by title #31486 - 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868 - 1759b7844a2d diagnostic: virtual_lines #31959 - fd65422b99c7 diff: do not try external when out of memory - 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904 - 6628741ada73 docs: improve `@see` meta docstrings #30693 - 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement - cb6c0fda718e editorconfig: add support for spelling_language (#28638) - 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493) - 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks - 4cced601c8cd extmark: stack multiple highlight groups in `hl_group` - 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921 - 62d9fab9af21 float: add winborder option (#31074) - 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844) - 511b991e6689 fs.lua: add vim.fs.rm() - 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085) - f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491 - b61051ccb4c2 func: allow manual cache invalidation for _memoize - 548f19ccc301 health: close checkhealth buffers with q #31870 - f2fa4ca97ea3 health: highlight headings #30525 - b12b91c27439 health: show :checkhealth in floating window #31086 - 6592873f773b help: use treesitter for table of contents - 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups - 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold - 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034 - 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101 - 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343 - e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347) - 8d55cc218cfe keysets: teach Union and LuaRefOf - 5931f780e028 log: use "ui" as default name for TUI client #30345 - e4c6e732fd04 lsp: add select kind in showMessageRequest #32387 - f20335a54ce7 lsp: add support for completionItem.command resolving - 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable - 6072153796d1 lsp: announce codeLens resolveSupport (#29956) - 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060) - ff097f2091e7 lsp: completion side effects - 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd - 454ae672aad1 lsp: deprecate non-method client functions - 54249d051c3e lsp: deprecate vim.lsp.buf.completion - e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341 - 55e4301036bb lsp: drop fswatch, use inotifywait (#29374) - dad55f5e763f lsp: export diagnostic conversion functions (#30064) - 44229bb85b6c lsp: highlight hover target/range #31110 - 27f3750817b1 lsp: improve LSP doc hover rendering #30695 - 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items` - 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164 - 4e90bc30237a lsp: lsp.completion support set deprecated (#29882) - 6e68fed37441 lsp: multi-client support for signature_help - 629483e24eed lsp: require `offset_encoding` param #31249 - e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name] - 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663) - ce678043e346 lsp: show server name in code actions #30830 - 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611 - a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311) - 3b0fe2659e74 lsp: support completion context #32793 - 41b07b128ccb lsp: support for resolving code action command (#32704) - 35247b00a44e lsp: support function for client root_dir (#31630) - 45e76acaa053 lsp: support hostname in rpc.connect #30238 - b2bad0ac91dd lsp: support postfix snippets in completion - d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings - 5d26934c7cda lsp: update LSP healthcheck format (#28980) - ae2fd91b411d lsp: update LSP types - 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match - e4c1f6667b14 lsp: use the meta model to generate server capability map - 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323 - 92e4e3fb76c2 lsp.util: fix type errors - ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs - cbc82011ce19 lsp.util: improve offset_encoding type annotations - a18fa2f11c3a lsp.util: minor codestyle - 1944c0d610ce lsp.util: refactor get_border_size() - f0973d42272e lsp.util: refactor symbols_to_items() - 0e8568d72c88 lsp.util: remove lsp spec extract - 0621718e3b5f lsp.util: remove metatable in locations_to_items - 3f87e222f79b lsp.util: remove some aliases - e954a16063e6 lsp.util: remove some variables - 5bec7288a5b5 lsp.util: remove uneeded do-end - 8ad000ef7cf0 lsp.util: remove unneeded table - d44d36b8ff6c lsp.util: simplify some bounds checking - 0066dd0f653e lsp.util: use faster version of vim.validate - 1edfe5c09ebc lsp.util: use vim.api alias - 97119a236937 lsp.util: use vim.w/b - cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()` - 9afa1fd35510 lua: add `vim._with` - 518070731003 lua: add `vim.fs.abspath` - b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939) - d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472 - 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690 - 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts - af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012 - be1fbe38b31b lua: vim.text.indent() - fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515) - ea5b748f2438 man.vim: "q" always closes window #30819 - f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark() - 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497) - cfdf68a7acde mbyte: support extended grapheme clusters including more emoji - 124c655f56bc messages: "g<" mapping for ext_messages - cb7b4e296238 messages: "verbose" message kind #31991 - 5bae80899d9d messages: add :!cmd shell message kinds - e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521 - 21151144c6ee meta: add type for quickfix entries - 82a215cb2dc2 options: add 'eventignorewin' (#32152) - d831392b1560 paste: unify cancel and error behavior (#30476) - 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719 - f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697 - e6cfcaed184d snippet: add default keymaps during snippet session - 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887) - 96128a5076b7 startup: validate --listen address - 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735 - 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561 - 8df6736ca14d term: enable reflow by default (#21124) - 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050) - 93480f7fbaa5 term: trigger TermRequest for APC (#32407) - 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117) - 6f0bde11ccd8 terminal: add support for kitty keyboard protocol - 06a1f82f1cc3 terminal: forward X1 and X2 mouse events - e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji - f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999) - 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443) - 34cd94812d42 test: support and document lua test case debugging - b8c75a31e6f4 treesitter: #trim! can trim all whitespace - ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657) - bd3b6ec8360e treesitter: add node_for_range function - 688b961d13bd treesitter: add support for wasm parsers - 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range - 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts` - 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790) - 1af55bfcf21b treesitter: allow get_node to return anonymous nodes - a94a2927d00a treesitter: allow passing lang to InspectTree - 45e606b1fddb treesitter: async parsing - 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559 - 267c7525f738 treesitter: introduce child_with_descendant() - 09f9f0a94625 treesitter: show which nodes are missing in InspectTree - b9b408a56c7e treesitter: start moving get_parser to return nil #30313 - da0ae9534900 treesitter: support modelines in `query.set()` (#30257) - 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282) - 8ba047e33fe3 treesitter: vertical conceal support for highlighter - ff85e54939b0 tui: builtin UI (TUI) sets client info #30397 - 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727) - f93ecd2760f5 tui: parse CSI subparams in termkey (#29805) - 44dbfcfba4b0 tui: recognize X1 and X2 mouse events - e41368f3bc1d tui: support in-band resize events (#29791) - d460928263d0 tui: update 'background' on theme change events (#31350) - 45e319ade639 tutor: give hints to satisfy the line checker #30952 - 4b0e2605eaf9 ui: UI :detach command - 394f69a25dc3 ui: additional arguments for cmdline_show/hide events - a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980 - f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984 - 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192) - 43d552c56648 ui: more intuitive :substitute confirm prompt #31787 - 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575 - a10636fbe7bb ui: specify whether msg_show event is added to history - e049c6e4c08a ui: statusline text inherits highlights #29976 - 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551 - 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool - f4b620c4e643 vim.ui.open: support lemonade #30845 - 3572319b4cb1 vim.validate: improve fast form and deprecate spec form - cb84cd5d9fba win32: embed executable icon FIXES -------------------------------------------------------------------------------- - 200e7ad15786 apply the change on more files - 6720bd440f19 assert failure in VimL expression parser - d123202ae6ef change deprecation presentation - ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121 - 7737f892063a deps build for ARM64 MSVC - 50749f8df89d extend the life of vim.tbl_flatten to 0.13 - 25abcd243e41 fix broken wasmtime build - b6ab29483842 fix incorrect search code - 46b69aaf14a7 include nvim/ascii_defs.h - 01b4da65c229 merge all provider healthchecks into a single health.lua - 5c245ec3e955 remove vim.lsp._with_extend - 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348) - 6aa42e8f92bd resolve all remaining LuaLS diagnostics - e71713ba2b5c show swapfile warning as a warning (#28971) - 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756) - 0829e7575d63 warn when :InspectTree on buffer with no parser #32783 - 47f2769b462e Man: completion on Mac - 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw - 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value` - 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710) - 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908) - 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456 - 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919 - 095c0876c201 api: don't override Vimscript SID (#32610) - bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302) - 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984) - cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078) - 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981) - f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543) - 022449b52236 api: generic error messages, not using TRY_WRAP #31596 - 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390) - ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390 - 167a2383b996 api: not using TRY_WRAP, generic error messages #31595 - bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177 - d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740 - 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243) - e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219 - 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912 - 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576 - 40347f6e27f1 api: only flush nvim__redraw when necessary #31250 - 36f44b3121fc api: remove invalid assertions - 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042 - 9c718bc2bce5 api: validation, documentation of hl_group #31195 - 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544 - ffaab09e9986 build: <termios.h> is system-dependent #31705 - 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME - 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode - 34a2bfdcc5ce build: vimdoc tags are not validated #32801 - 807098824762 channel: handle writing to file instead of pipe (#30519) - c49162be5958 channel: log after (not before) channel-close - 965dc81f818e checkhealth: disable 'listchars' #31245 - 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name - f5dd30948e67 checkhealth: handle nested lua/ directory #32918 - c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988 - 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268 - 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866 - af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007 - a70ad5cdb6de cmdline: ext_cmdline block events for conditionals - bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033 - 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment - 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256 - 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810 - 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182) - 3cb1e825e679 column: check if signcolumn changed in all windows #31439 - 1dcda865591b column: clamp line number for legacy signs - f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003) - f9a49fab0c90 column: modifying a sign should update placed signs (#29750) - d5f6f61879ba column: set signcolumn width after splitting window (#30556) - 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944) - 0a2218f965ac comment: fall back to using trimmed comment markers (#28938) - e788d1a3a903 completion: avoid deleting text when completion leader changes #31448 - bfa365a87267 completion: don't include <Lua function> in -complete= (#30209) - 55dc482e757e completion: fix inconsistent Enter behavior (#30196) - 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395 - e1c2179dd93e coverity: INTEGER_OVERFLOW #31657 - f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618 - 069451bb214b coverity: size_t overflow #30497 - ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665 - c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773) - 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341 - 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687) - a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686) - 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081) - 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858) - a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096) - 34ded4d97b78 decor: exclude invalid marks from meta total - 87610d82db91 decor: set invalid flag for end of invalidated paired marks - 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree - 0e299ebf7559 decorator: noisy errors from decoration provider #31418 - f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375 - 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343) - 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460) - f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884 - 59a171fd99a7 defaults: improve visual search mappings #32378 - 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943 - c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347) - ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983) - 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632) - 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642) - 573fcb8b6641 deps: revert accidental test commits (#30864) - de794f2d2409 diagnostic: broken variable reference #31557 - c78728a3844c diagnostic: clear autocmd only for valid buf (#32861) - f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979 - 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506) - 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464 - d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593) - f69937fdbd16 diagnostic: fix float scope filtering (#29134) - 5bc948c050ce diagnostic: improve current_line refresh logic #32275 - 4b3be56a0369 diagnostic: make docs agree with code (#29561) - fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466 - 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option - 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553 - 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings - 4cbeb6fa3cc7 diagnostic: silence :chistory #31701 - 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585 - 17c25a66fcea diagnostic: virtual lines should scroll horizontally - fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703) - e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321 - c65646c2474d diff: use mmfile_t in linematch - 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708) - f25dd7a8d548 display: correctly store winline info for concealed lines (#32656) - a901fb875f69 docs: add missing properties to hl_info #30032 - cc26cf040028 docs: do not treat indexes as `short_link` - 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680 - 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673 - 09bcb310681e docs: replace `yxx` mappings with `g==` #31947 - efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList` - b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks` - 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706) - 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035) - b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406) - 34344b939c06 editor: avoid scrolling :substitute confirm message #32149 - 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342) - b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634) - 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953) - 4317d366691b event-loop: process input before events in getchar() (#32322) - f05a6666cfcb events: always allow some events to be nested (#32706) - e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473) - 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813) - 8c2d45be7729 exit: close memfiles after processing events (#30872) - c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387 - 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage - 43a2019f09e8 extmarks: issues with revalidating marks #28961 - 84ad95fdc9d4 fileio: copy to correct buffer position when reading - 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991) - aa9f21ee953d filetype: fix typos in filetype detection - 032e024f8ab9 filetype: handle .in files with no filename (#30487) - 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470) - 21cbd9000748 filetype: normalize full path before matching #32227 - 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445) - cff5fa49fc5a float: "Not enough room" error for 1-line float #25192 - 07c5f41da3ad float: can set title/footer without setting border #32594 - be01b361d8ff float: cannot set title/footer independently #31993 - ff1791c9e59b float: close preview float window when no selected #29745 - d2cca606a1b6 float: ensure floating window width can fit title - 8ddcf9d93900 float: handle error in win_float_create() (#29742) - 8b2b1fba2abf float: missing default highlight for title - df915f3afccb float: properly find last window of tabpage (#30571) - 17383870dd3b float: re-sort layers when grid zindex changed #30259 - 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964) - 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto) - 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720 - ceea6898a8bd gen_help_html: handle delimiter, heading #29415 - 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields - 913e81c35f16 getchar: do not simplify keycodes in terminal mode - b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520) - 4bd86120d41e glob: handle overlapping `{}` condition elements #29236 - b47b0b3f757d grid: double grid_line_start() with ext_messages #31292 - fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug' - a9c89bcbf69a gx: allow `@` in url - 570a8da01b55 health: "q" should not close last window #31876 - 2e3f1069f499 health: better layout of vim.treesitter health check - 10f917351906 health: broken ruby detect #28804 - 84e85aeb10ae health: check more "old" files #30421 - 5b778a64ec2e health: fix fetching url with python in provider health (#29594) - b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue - 237d2aef4d70 health: return correct name from 'path2name()' - 5e9040648739 health: set nomodifiable in checkhealth buffers - 91773710145e help: remove runnable code virtual text - ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288) - 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313) - 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids - 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns - 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905 - b67fcd048874 highlight: make `TablineSel` more noticeable #31896 - 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183 - 59e130b6cacd inccommand: ensure cursor is where it belongs - 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) - b52ffd0a59df inspect: always show priority - 9c278af7cc96 inspect: show priority for treesitter highlights - 22fd52325bf6 inspector: update semantic token namespace (#32157) - efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803) - 574ea6a1911b keycodes: recognize <Find>, <Select> #28431 - 67bb0cfa79bc loader: follow the style of the error message for built-in loaders - 44740e561fc9 log: RPC log format #32337 - 851137f67905 log: log unset $TMPDIR at "debug" level #32137 - c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005 - a6f219b06beb log: unintuitive message for undefined $TMPDIR - 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170) - fac96b72a59e lsp: add foldingrange method support check #31463 - 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838) - a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared - b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266) - 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002) - fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478) - 39d79efa1e1e lsp: better multi-client support for callHierarchy - bdfba8598b41 lsp: cancel pending requests before refreshing - f9bf64d74641 lsp: check buffer is loaded and valid #30330 - c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients - 81b372fecd74 lsp: check for nil response from server (#29196) - a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response - 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162) - af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914) - 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap - 025c87441502 lsp: clear lsp client diagnostics (#29050) - c374f264305f lsp: clear word when expand multi-lines word (#32393) - adf7c98d607b lsp: compare URI instead of workspace folder name (#30962) - b4599acbf8e3 lsp: correct hover result handling (#30995) - f8d5811c717b lsp: correctly check for "codeAction/resolve" support - 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close - 2a1f604c77a1 lsp: delete bufvar inside WinClosed event - 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875) - 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029) - 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242) - d56ba71af11c lsp: document_symbol uses loclist by default #32070 - 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501) - 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690) - 5f527f24f0ea lsp: don't use completion filterText if prefix is empty - 305012ea0732 lsp: enable `additionalPropertiesSupport` - 9d9ee3476e64 lsp: ensure watcher cancel - aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522) - 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945) - b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659) - 4b001f297ae2 lsp: fix infinite loop - 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130) - 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212) - 8654a9700690 lsp: handle empty call hierarchy items #30349 - f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc - 882a450a2982 lsp: handle locations exceeding line length #30253 - 008782208d82 lsp: handle mixed encoding in tagfunc params - e0a5c3bb5817 lsp: handle multiline signature help labels #30460 - 8512f669f0e0 lsp: handle nil bytes in strings - f03b1622ad1b lsp: handle nil root_dir in health check (#29007) - ed071672613b lsp: handle non-existent configs in lsp.config/enable - 003b8a251dc1 lsp: handle out-of-bounds character positions #30288 - 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016) - d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807) - f54266dbed6f lsp: hover border type can be string (#31013) - 9a681ad09e2a lsp: hover keymap (#31208) - a14fca432b96 lsp: improve LSP floating preview window cleanup #31353 - e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707) - 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966 - 0e394f136fcb lsp: log when receiving markup messages (#30065) - 203e7a43d1f2 lsp: mention function name in warning #31301 - a4f575abd85e lsp: minimum height for floating popup #31990 - 4fd2694f20d6 lsp: missing method parameter when canceling requests - be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509 - 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716) - 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886 - 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491) - a450fda4eded lsp: prefer `on_list` over `loclist` in default handler - 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904) - eb629cce9171 lsp: redundant spaces in lsp log (#29970) - 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174) - d76f7fef13e5 lsp: reset active request when reporting an error - 6bc79790449f lsp: reset the applied hints on `refresh` request #32446 - 47aaddfa0dda lsp: resize hover window for concealed lines - 081beb3659bd lsp: restore get_language_id behaviour - 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345) - d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145) - 9c2034229739 lsp: reuse client if configs match and no root dir - 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217) - bdff50dee56e lsp: revert text edit application order change (#29877) - e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998) - a108852b008b lsp: semantic token functions allow "0" bufnr #28849 - c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748 - 8a236c242a76 lsp: set floating window filetype after setup #32112 - 3c51058d7611 lsp: set tagstack on jump via goto methods - 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382 - 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747 - 629a5b71b55e lsp: support multiple clients in typehierarchy - e48179f31e65 lsp: suppress completion request if completion is active (#30028) - 50f006b61774 lsp: tagfunc fails in unusual buffer #30700 - 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795) - 19be3d26830c lsp: trim trailing whitespace from completion words (#29122) - aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331) - 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235 - 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText - fe5ae88b20f5 lsp: update request name to capability map #30098 - 5aa9906676f3 lsp: use client.id instead of pairs index (#29143) - c8d7d65679f8 lsp: use correct method for prepareTypehierarchy - b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match - 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails - 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable #32002 - 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608 - 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044) - 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837 - 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests - 3275ae830da9 lsp.protocal: improve typing of constants - acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding - 564173e5568c lsp.util: wrong arguments to 'validate' function - 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595 - b28373638848 lua: `@private` => `@nodoc` #32587 - b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend - c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715) - 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753) - fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505) - 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) - 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203) - bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587) - e2aca58bcc4f lua: don't override script ID from :source (#32626) - d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks - 948f2beed4ea lua: find length of completion prefix earlier (#29384) - ebb963a4a082 lua: format errors from luv callbacks using __tostring - 65a703e06063 lua: ignore stdout and stderr for xdg-open - 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044) - c6d2cbf8f51a lua: pop retval for fast context LuaRef - a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker - 3d707e6f14b7 lua: remove vim.loader.disable() #31344 - 3a8811324604 lua: revert vim.tbl_extend behavior change and document it - 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021) - 40a149e7f992 lua: types for vim.api.keyset.win_config #32700 - 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536) - 960fdc775a88 lua: vim.deprecate does not support major>0 - d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850) - cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218 - 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659) - 9eb042600269 luacats: allow all types inside tuples - ee5aaba21560 man: avoid setting v:errmsg (#30052) - 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180) - da6f68ee6966 man: filter OSC 8 hyperlink markup #29171 - 7940ec69136f man.lua: `:Man <tab>` does not complete #31569 - e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262 - d6653e1cc957 marks: ensure decor is removed with proper range (#32973) - 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477) - 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476) - 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662) - 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862) - 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766) - 012db2b0f509 marks: revalidate marks whose position did not change - 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017 - c4f76299f039 marks: skip right_gravity marks when deleting text - cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560) - 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747) - a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531) - 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char - 15bc930fca94 memline: don't check line count for closed memline #32403 - aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328) - 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952 - d98827b634af messages: avoid empty msg_showmode with 'noshowmode' - 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627 - 21718c67dd96 messages: better formatting for ext_messages #31839 - 92556be33d04 messages: compute msg_col after last newline in ext_messages - ad853d1df093 messages: improve deadly signal messages #32364 - 51853b82bc95 messages: incorrect error message splitting and kind #32990 - 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531 - 7ce27381fb49 messages: lsp window/showMessage is not an error - 1b6442034f6a messages: more ext_messages kinds #31279 - 9c6a3703bb15 messages: no message kind for :undo messages #31590 - ca760e645ba4 messages: no message kind for :write messages #31519 - 909b18d05a8d messages: no message kind for completion menu messages #31646 - f111c32ff9dc messages: no message kind for search pattern #31272 - 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages - 9fa3a0964e9b messages: pass previous highlight id to ext chunks - e025f5a5b30a messages: proper multiline Lua print() messages #31205 - d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669 - d55b17e2b4e0 messages: verbose kind for nvim_echo() - c8e47f648052 meta: do not use hyphens in param names - 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling - 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565) - 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394) - 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655) - f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642) - 5947f249f838 move: half-page scrolling with resized grid at eob (#28821) - ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276) - af0a2157ad29 move: wrong cursor row on concealed line (#32629) - 83479b95abae mpack: remove invalid bool definition - d32780de4daf mswin: UI may hang on exit - fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode - de83cc5842c9 netrw: re-add missing comment marker in syntax file - d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555 - 34e2185022ab options: better handling of empty values - 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978) - 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896) - 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894) - 395f420fc65c options: fix some 'belloff' flags not working properly (#30856) - 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919) - e697c1b43dfb paste: improve repeating of pasted text (#30438) - 052875b9dc3d paste: only record a paste when it's from RPC (#30491) - 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025 - 42aa69b076cb path: avoid chdir() when resolving path (#28799) - 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992) - 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863) - afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819 - ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636 - d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246 - d24fb72c335b pum: don't select item when clicking to the left/right (#30967) - 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609) - 3bcd5624beec regexp: fix typo in E888 error message (#30161) - cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209 - 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf` - b6c1ce8a9545 runtime: add commentstring for glsl ftplugin - 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252) - e641155b023c runtime: avoid E31 in ftplugin (#32578) - 82b02ae2f2af runtime: clean up one-off scripts - 9788b81d7e53 runtime: fully port emoji_list to Lua - 74fcc9452cd9 runtime: gO always says "Help TOC" #32971 - 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures - 8369590eb215 runtime: remove obsolete ftplugin/calender.lua - 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin - 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053) - 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533) - 862338255da6 runtime: sync bundled treesitter queries - 9e80738f3073 runtime: sync bundled treesitter queries - 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473) - 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529) - a5bd6665b00a scripts: update bundled dependencies in bump_deps - 573a71469d37 scrollbind: properly take filler/virtual lines into account - a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153) - 648d6426c863 server: CID 509282: DEADCODE #30316 - f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538 - cd48b72b60af shada: restore search pattern length properly (#28929) - 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031) - 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998) - 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670) - 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970 - d46ebd2a7403 startup: avoid crash with completion from -l script (#32160) - 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285 - 17e00d0cc63c startup: report --startuptime error to stderr (#31131) - 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310 - 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912 - 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265 - 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602) - a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458) - f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509) - 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755) - 69a19295f8fe terminal: delay when finishing terminal process #32846 - f8c8a245aa5b terminal: don't crash on unprintable chars - 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090) - fa46441264b2 terminal: improve cursor refresh handling (#32596) - 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056) - 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620) - c51bf5a6b249 terminal: set cursor cell percentage (#31703) - 5def8714ad70 terminal: set local values of window options (#29326) - e9c077d197a8 termkey: fix null pointer dereference (#31792) - c8e3618e0e68 test: "tempdir not a directory" in CI logs - f7e32fb6e626 test: better management of tmpfiles - db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524) - e61228a214eb tests: needing two calls to setup a screen is cringe - 639734bed4ef tests: remove the __extension__ keyword in filter_complex_blocks (#32483) - 59baa5e8a1f9 tohtml: apply sp color if present #30110 - 67c39f5ecae0 tohtml: disable modeline #32822 - e37404f7fecc tohtml: enclose font-family names in quotation marks - 25db0a138537 tohtml: extmark text may be out of bounds - 8cd9feb50166 tohtml: ignore lsp inlay hints - eb37241d38ad tohtml: properly handle multiple hl groups #29012 - 2ed6423c7e9d tohtml: replace ipairs with pairs - 88c7997503e1 tohtml: show how many warnings are hidden - 118ae7e5ed6c tohtml: support ranges again - c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488 - b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536 - 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field - 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree - bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer - a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233 - 6696ea7f1038 treesitter: clean up parsing queue - 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036) - f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil - 7a20f93a929a treesitter: correct condition in `__has_ancestor` - 9b25c68db21c treesitter: correctly parse queries with combined injections - 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()` - 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree - da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav - 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709 - aa2b44fbb07f treesitter: don't return error message on success #31955 - b0bbe25c4808 treesitter: don't spam query errors in the highlighter - b88874d33c15 treesitter: empty queries can disable injections (#31748) - d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542) - f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results - c4eb0b64bd49 treesitter: find buffer in multiple windows #28922 - 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree - 5331f87f6145 treesitter: indent size for inspect_tree #28727 - 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198 - 052e048db676 treesitter: lint top-level anonymous nodes - 4b9095285160 treesitter: mark supertype nodes as named - 096ae3bfd707 treesitter: nil access when running string parser async - c3337e357a83 treesitter: nil check query for has_conceal_line - 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240 - 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter - d3193afc2559 treesitter: remove duplicate symbol names in language.inspect() - cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041 - 1827ab7a1f9a treesitter: separately track the number of valid regions - 36990f324de2 treesitter: show proper node name error messages - 4349bdbd0bd0 treesitter: specify success status in edit_query return value - e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid - 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error - ae917dbd06cb treesitter: sync queries from upstream - c4e9ff30a6b6 treesitter: sync queries with upstream - d8eec8156098 treesitter: update lua, markdown queries - 6e44a6a289c5 treesitter: update queries - 5a54681025ec treesitter: uv_dlclose after uv_dlerror - e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers - 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet - 8474f529780b treesitter.foldexpr: robustness against ctrl-c - f81131cca2b4 tui: also reset cursor color if it was invisible (#31348) - 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793) - 720ec5cec2df tui: cursor color in suckless terminal #32310 - b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804) - d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197) - a811d4babd22 tui: only reset cursor color if it was changed (#31337) - 0c0352783fca tui: remove DCS escaping in tmux (#32723) - 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884) - f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960) - bc63ffcf39e8 tui: reset clear_region attributes during startup #28713 - b02c83941493 tui: set id parameter in OSC 8 sequences (#29840) - 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096) - 8b8096500d08 tutor: incorrect lines marked as correct #29833 - 31745b17e60d types: add narrower vim.validate types - 44410d063ad2 types: add some vim.fn type annotations - b813075b8a55 types: do not mark unstable API as private - e947f226bebe types: use vararg return type annotation - a1906c23ddab ui: Windows :detach is opt-in - 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718) - 216ec7397214 ui: avoid redundant ext_cmdline events (#32237) - 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419) - 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222 - 7eba016c8681 ui: ensure screen update before waiting for input #30576 - 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950 - 6e4df18b457e ui: no fast context for prompt message kinds #31224 - 6b8c56c7f6da ui: schedule UI detach (#32827) - b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089 - d1fd674df3eb ui: update title in more cases (#31508) - 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284 - d049752e45c3 version: fix vim.version().prerelease - 8bdfc2ab2b25 version: return nil with empty string - 6401b433f7c0 vim.fs: default to follow=false #32859 - 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480 - 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782 - 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths - a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter - 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781) - 734dba04d13b vim.system: close pipe handles after process handle - 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638 - ad3472e29169 vim.system: resolve executable paths on windows - 33464189bc02 vim.text: handle very long strings (#30075) - 4cff4185647c vim.text: remove assert from vim.text.hexdecode - d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302 - 8bf79bd13c4d vim.wo: never allow non-zero bufnr - 453f2c52d291 vim_snprintf: special-case handling of binary format - 32e128f20992 watch: exclude .git when using inotifywait (#29914) - 9e23b4e1852f watch: ignore nonexistent paths (ENOENT) - a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099) - 88f07d6ca4a6 win-msi: set installer scope to machine #29895 - 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551) - 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507) - 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo PERFORMANCE -------------------------------------------------------------------------------- - 48251134ee59 add fast path to vim.validate (#28977) - 3abd7ed4a4cd consider only active decorations when drawing lines - 8d2ee542a82a decor: join predicates and matches cache - 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288 - b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777) - 15f2da55a8de events: use hashy for event name lookup (#32802) - abf4b65a51b2 filetype: cache (more) pattern data during "add" time - f61efe3fe77c filetype: implement parent pattern pre-matching (#29660) - ff575b388640 filetype: optimize internal data structures - dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596) - 12d4caa9d3e4 keycodes: use hashy for string lookup - f8fc6cb15755 loader: reduce calls to Loader.cache_file - 138a93a057da lsp: avoid repeated table lookup in completion.enable - 7342e6b00d5e lsp: do not apply semantic tokens to folded lines - c85d15e0d557 lsp: don't construct potentially expensive strings - cc1f2d2ca6ca lsp: don't copy completion items in filter pass - 3e855d533f44 lsp: use faster version of str_byteindex - 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103) - 3fdc43024159 treesitter: cache queries strongly - b192d58284a7 treesitter: calculate folds asynchronously - c6abc97006ee treesitter: do not use tree cursors with a small lifetime - cbad2c662873 treesitter: don't block when finding injection ranges - d9ee0d2984e5 treesitter: don't fetch parser for each fold line - 562056c87573 treesitter: only search for injections within the parse range - c57a85e0eda0 treesitter: remove unnecessary foldexpr loop - 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()` - 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512) - 3f3e4837d5f7 validate: use lighter version - 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080) BUILD -------------------------------------------------------------------------------- - 104800ce2ead "popcount" name conflict on NetBSD #28983 - 198a952c13a1 add luals check - ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable - 32e16cb0b6b0 add utf8proc as dependency - b213f5169c33 allow comment after #include for required header (#29722) - 382eb878bcbf bump lua dev dependencies - 1d815acd78e5 bump minimum cmake version to 3.16 - 5284a2a79316 bump unibilium to v2.1.2 - ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802 - 7c652242579b fix lint error on macos - 046e0956eeb3 fix or silence new clang-tidy warnings - 5719f2b91a31 fix uncrustify install in nix devShell (#33020) - 4a0ee22e77d1 make makefile work on msys - 4ee65484b16d make makefile work on windows - 1b90f4a9c472 mark CMake variables advanced #31412 - 0f24b0826a27 move all generator scripts to `src/gen/` - e5ff3020330e remove -O2 from gen_cflags - d74c74aae35e remove `lintcommit` from `lint` target - 573bcb2aaf3e remove enforcement of cmake build type - 0e9c92a90043 remove nix flakes (#28863) - f09f5c45facc reuse code for deps.txt for both deps and main build - e1dc824b7ef4 set luals checklevel to Hint #32392 - cac86e9b4c14 silence "po" noise #30469 - 07b14c8e2ed2 specify POST_BUILD when using add_custom_command - e83ce331da91 use treesitter's CMakeLists.txt - e268fcbdaa1e work around bug in make when PATH includes cmake as dir - b288fa8d62c3 bump_deps: abort if archive doesn't exist - 7ead328a4858 cjson: sync with upstream (#32114) - 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281) - 327110ff8c59 cmake: remove unnecessary policy code - 535c2f8658c4 contrib: add zsh completion (#32617) - 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries - 9216bc927c00 deps: fix formatc target on MSVC - b3641b80083d deps: remove libtermkey dependency - 1247684ae14e deps: remove msgpack-c dependency - fa79a8ad6dee deps: vendor libvterm at v0.3.3 - c614969570ac docs: update CSS #28896 - 0a087f207331 generator: add dependencies on hashy (#32796) - e178331488a0 lpeg: search for lpeg.so on MacOS - 7e099cf3eb1f macos: disable deduplication in link step - f4d9a2983a49 release.sh: fix hang when generating docs (#33026) - b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425) - 7aaa4a51b76f vim-patch.sh: include commit subject #28767 - 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- - 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth - 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418) - 35c5e2310783 store artifact shasums in a single shasum.txt file - 188ec19894e4 turn off translations by default - 328ea02eb7de use utf8proc full casefolding - 737f58e23230 api: rename Dictionary => Dict - a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730) - ad70c9892d5b column: rework 'statuscolumn' %r/l items - eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200) - a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070) - 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079) - a9e725b26e08 diagnostics: sort underline severity_sort (#30898) - e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding` - 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover() - debabaf884fc lsp: pass buffer number to root_dir function - 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers - 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911) - 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877) - dff684fdb3d2 lsp: support multiple clients in lsp.buf.references - 970a27927eb3 lua: do not use typed table for empty dict - de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe - a27419f3fc54 options: disallow setting hidden options #28400 - b922b7d6d788 options: use OptVal for option defaults #26691 - 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022 - 318676ad1348 release: remove backwards compatible releases - ad191be65e2b signs: place higher-priority signs from the left #27781 - 0dd933265ff2 terminal: cursor shape and blink (#31562) - 35e5307af257 terminal: include cursor position in TermRequest event data (#31609) - 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859) - 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups - 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193) - bd4ca22d0334 treesitter: don't parse tree in get_parser() or start() - a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser - 99e0facf3a00 treesitter: use return values in `language.add()` - bda63d5b97df typval: remove distinction of binary and nonbinary strings - 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525 - ca5fca29121a windows: drop cat and tee executables from windows - be89d520d7e9 windows: only support UCRT, even for mingw FEATURES -------------------------------------------------------------------------------- - efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067) - 0631492f9c80 add vim.fs.relpath - f864b68c5b0f allow gx to function for markdown links - f3632e14e3a7 get/set namespace properties #28728 - a66424617156 remove deprecated features - ead5683ff999 api: add err field to nvim_echo() opts - aec4938a21a0 api: broadcast events to ALL channels #28487 - 34d808b73cbc api: combined highlights in nvim_eval_statusline() - 19b25f3feacf api: deprecate nvim_buf_add_highlight() - 5c92b40b4b17 api: deprecate nvim_out/err_write(ln) - d84a95da7e11 api: nvim_get_autocmds filter by id#31549 - 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006 - e00d67ef310c checkhealth: group parsers by name and path in output - 563051a53ef9 clipboard: support g:clipboard="osc52" #33021 - 60ea0467411d clipboard: try cygutils, clip on Windows #30215 - 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400) - 65c7033cbe75 comment: allow commentstring to be determined from node metadata - 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600 - a616272f568a complete: specify reason for CompleteDone - f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223) - ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122 - 2c6b6358722b defaults: add LSP default mappings (again) (#28650) - bb7604eddafb defaults: add default unimpaired style mappings (#28525) - 4662ad5643b2 defaults: completeopt=popup #32909 - e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480) - cc6992f1ca44 defaults: dot-repeat [<Space> #31186 - 6db830e40e92 defaults: enable diffopt "linematch" #32346 - b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736 - 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781 - 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764) - 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261 - 09d76afe84dd defaults: pretty :help headings #30544 - 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984 - 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066) - c9c17fda80d8 deprecations: vim._defer_deprecated_module() - 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler - 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745) - 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302 - 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273) - 21961967ffef diagnostic: update quickfix list by title #31486 - 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868 - 1759b7844a2d diagnostic: virtual_lines #31959 - fd65422b99c7 diff: do not try external when out of memory - 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904 - 6628741ada73 docs: improve `@see` meta docstrings #30693 - 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement - cb6c0fda718e editorconfig: add support for spelling_language (#28638) - 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493) - 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks - 4cced601c8cd extmark: stack multiple highlight groups in `hl_group` - 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921 - 62d9fab9af21 float: add winborder option (#31074) - 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844) - 511b991e6689 fs.lua: add vim.fs.rm() - 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085) - f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491 - b61051ccb4c2 func: allow manual cache invalidation for _memoize - 548f19ccc301 health: close checkhealth buffers with q #31870 - f2fa4ca97ea3 health: highlight headings #30525 - b12b91c27439 health: show :checkhealth in floating window #31086 - 6592873f773b help: use treesitter for table of contents - 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups - 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold - 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034 - 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101 - 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343 - e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347) - 8d55cc218cfe keysets: teach Union and LuaRefOf - 5931f780e028 log: use "ui" as default name for TUI client #30345 - e4c6e732fd04 lsp: add select kind in showMessageRequest #32387 - f20335a54ce7 lsp: add support for completionItem.command resolving - 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable - 6072153796d1 lsp: announce codeLens resolveSupport (#29956) - 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060) - ff097f2091e7 lsp: completion side effects - 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd - 454ae672aad1 lsp: deprecate non-method client functions - 54249d051c3e lsp: deprecate vim.lsp.buf.completion - e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341 - 55e4301036bb lsp: drop fswatch, use inotifywait (#29374) - dad55f5e763f lsp: export diagnostic conversion functions (#30064) - 44229bb85b6c lsp: highlight hover target/range #31110 - 27f3750817b1 lsp: improve LSP doc hover rendering #30695 - 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items` - 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164 - 4e90bc30237a lsp: lsp.completion support set deprecated (#29882) - 6e68fed37441 lsp: multi-client support for signature_help - 629483e24eed lsp: require `offset_encoding` param #31249 - e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name] - 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663) - ce678043e346 lsp: show server name in code actions #30830 - 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611 - a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311) - 3b0fe2659e74 lsp: support completion context #32793 - 41b07b128ccb lsp: support for resolving code action command (#32704) - 35247b00a44e lsp: support function for client root_dir (#31630) - 45e76acaa053 lsp: support hostname in rpc.connect #30238 - b2bad0ac91dd lsp: support postfix snippets in completion - d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings - 5d26934c7cda lsp: update LSP healthcheck format (#28980) - ae2fd91b411d lsp: update LSP types - 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match - e4c1f6667b14 lsp: use the meta model to generate server capability map - 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323 - 92e4e3fb76c2 lsp.util: fix type errors - ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs - cbc82011ce19 lsp.util: improve offset_encoding type annotations - a18fa2f11c3a lsp.util: minor codestyle - 1944c0d610ce lsp.util: refactor get_border_size() - f0973d42272e lsp.util: refactor symbols_to_items() - 0e8568d72c88 lsp.util: remove lsp spec extract - 0621718e3b5f lsp.util: remove metatable in locations_to_items - 3f87e222f79b lsp.util: remove some aliases - e954a16063e6 lsp.util: remove some variables - 5bec7288a5b5 lsp.util: remove uneeded do-end - 8ad000ef7cf0 lsp.util: remove unneeded table - d44d36b8ff6c lsp.util: simplify some bounds checking - 0066dd0f653e lsp.util: use faster version of vim.validate - 1edfe5c09ebc lsp.util: use vim.api alias - 97119a236937 lsp.util: use vim.w/b - cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()` - 9afa1fd35510 lua: add `vim._with` - 518070731003 lua: add `vim.fs.abspath` - b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939) - d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472 - 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690 - 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts - af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012 - be1fbe38b31b lua: vim.text.indent() - fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515) - ea5b748f2438 man.vim: "q" always closes window #30819 - f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark() - 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497) - cfdf68a7acde mbyte: support extended grapheme clusters including more emoji - 124c655f56bc messages: "g<" mapping for ext_messages - cb7b4e296238 messages: "verbose" message kind #31991 - 5bae80899d9d messages: add :!cmd shell message kinds - e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521 - 21151144c6ee meta: add type for quickfix entries - 82a215cb2dc2 options: add 'eventignorewin' (#32152) - d831392b1560 paste: unify cancel and error behavior (#30476) - 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719 - f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697 - e6cfcaed184d snippet: add default keymaps during snippet session - 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887) - 96128a5076b7 startup: validate --listen address - 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735 - 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561 - 8df6736ca14d term: enable reflow by default (#21124) - 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050) - 93480f7fbaa5 term: trigger TermRequest for APC (#32407) - 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117) - 6f0bde11ccd8 terminal: add support for kitty keyboard protocol - 06a1f82f1cc3 terminal: forward X1 and X2 mouse events - e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji - f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999) - 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443) - 34cd94812d42 test: support and document lua test case debugging - b8c75a31e6f4 treesitter: #trim! can trim all whitespace - ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657) - bd3b6ec8360e treesitter: add node_for_range function - 688b961d13bd treesitter: add support for wasm parsers - 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range - 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts` - 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790) - 1af55bfcf21b treesitter: allow get_node to return anonymous nodes - a94a2927d00a treesitter: allow passing lang to InspectTree - 45e606b1fddb treesitter: async parsing - 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559 - 267c7525f738 treesitter: introduce child_with_descendant() - 09f9f0a94625 treesitter: show which nodes are missing in InspectTree - b9b408a56c7e treesitter: start moving get_parser to return nil #30313 - da0ae9534900 treesitter: support modelines in `query.set()` (#30257) - 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282) - 8ba047e33fe3 treesitter: vertical conceal support for highlighter - ff85e54939b0 tui: builtin UI (TUI) sets client info #30397 - 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727) - f93ecd2760f5 tui: parse CSI subparams in termkey (#29805) - 44dbfcfba4b0 tui: recognize X1 and X2 mouse events - e41368f3bc1d tui: support in-band resize events (#29791) - d460928263d0 tui: update 'background' on theme change events (#31350) - 45e319ade639 tutor: give hints to satisfy the line checker #30952 - 4b0e2605eaf9 ui: UI :detach command - 394f69a25dc3 ui: additional arguments for cmdline_show/hide events - a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980 - f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984 - 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192) - 43d552c56648 ui: more intuitive :substitute confirm prompt #31787 - 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575 - a10636fbe7bb ui: specify whether msg_show event is added to history - e049c6e4c08a ui: statusline text inherits highlights #29976 - 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551 - 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool - f4b620c4e643 vim.ui.open: support lemonade #30845 - 3572319b4cb1 vim.validate: improve fast form and deprecate spec form - cb84cd5d9fba win32: embed executable icon FIXES -------------------------------------------------------------------------------- - 200e7ad15786 apply the change on more files - 6720bd440f19 assert failure in VimL expression parser - d123202ae6ef change deprecation presentation - ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121 - 7737f892063a deps build for ARM64 MSVC - 50749f8df89d extend the life of vim.tbl_flatten to 0.13 - 25abcd243e41 fix broken wasmtime build - b6ab29483842 fix incorrect search code - 46b69aaf14a7 include nvim/ascii_defs.h - 01b4da65c229 merge all provider healthchecks into a single health.lua - 5c245ec3e955 remove vim.lsp._with_extend - 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348) - 6aa42e8f92bd resolve all remaining LuaLS diagnostics - e71713ba2b5c show swapfile warning as a warning (#28971) - 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756) - 0829e7575d63 warn when :InspectTree on buffer with no parser #32783 - 47f2769b462e Man: completion on Mac - 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw - 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value` - 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710) - 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908) - 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456 - 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919 - 095c0876c201 api: don't override Vimscript SID (#32610) - bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302) - 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984) - cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078) - 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981) - f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543) - 022449b52236 api: generic error messages, not using TRY_WRAP #31596 - 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390) - ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390 - 167a2383b996 api: not using TRY_WRAP, generic error messages #31595 - bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177 - d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740 - 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243) - e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219 - 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912 - 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576 - 40347f6e27f1 api: only flush nvim__redraw when necessary #31250 - 36f44b3121fc api: remove invalid assertions - 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042 - 9c718bc2bce5 api: validation, documentation of hl_group #31195 - 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544 - ffaab09e9986 build: <termios.h> is system-dependent #31705 - 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME - 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode - 34a2bfdcc5ce build: vimdoc tags are not validated #32801 - 807098824762 channel: handle writing to file instead of pipe (#30519) - c49162be5958 channel: log after (not before) channel-close - 965dc81f818e checkhealth: disable 'listchars' #31245 - 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name - f5dd30948e67 checkhealth: handle nested lua/ directory #32918 - c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988 - 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268 - 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866 - af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007 - a70ad5cdb6de cmdline: ext_cmdline block events for conditionals - bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033 - 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment - 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256 - 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810 - 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182) - 3cb1e825e679 column: check if signcolumn changed in all windows #31439 - 1dcda865591b column: clamp line number for legacy signs - f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003) - f9a49fab0c90 column: modifying a sign should update placed signs (#29750) - d5f6f61879ba column: set signcolumn width after splitting window (#30556) - 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944) - 0a2218f965ac comment: fall back to using trimmed comment markers (#28938) - e788d1a3a903 completion: avoid deleting text when completion leader changes #31448 - bfa365a87267 completion: don't include <Lua function> in -complete= (#30209) - 55dc482e757e completion: fix inconsistent Enter behavior (#30196) - 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395 - e1c2179dd93e coverity: INTEGER_OVERFLOW #31657 - f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618 - 069451bb214b coverity: size_t overflow #30497 - ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665 - c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773) - 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341 - 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687) - a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686) - 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081) - 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858) - a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096) - 34ded4d97b78 decor: exclude invalid marks from meta total - 87610d82db91 decor: set invalid flag for end of invalidated paired marks - 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree - 0e299ebf7559 decorator: noisy errors from decoration provider #31418 - f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375 - 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343) - 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460) - f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884 - 59a171fd99a7 defaults: improve visual search mappings #32378 - 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943 - c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347) - ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983) - 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632) - 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642) - 573fcb8b6641 deps: revert accidental test commits (#30864) - de794f2d2409 diagnostic: broken variable reference #31557 - c78728a3844c diagnostic: clear autocmd only for valid buf (#32861) - f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979 - 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506) - 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464 - d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593) - f69937fdbd16 diagnostic: fix float scope filtering (#29134) - 5bc948c050ce diagnostic: improve current_line refresh logic #32275 - 4b3be56a0369 diagnostic: make docs agree with code (#29561) - fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466 - 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option - 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553 - 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings - 4cbeb6fa3cc7 diagnostic: silence :chistory #31701 - 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585 - 17c25a66fcea diagnostic: virtual lines should scroll horizontally - fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703) - e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321 - c65646c2474d diff: use mmfile_t in linematch - 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708) - f25dd7a8d548 display: correctly store winline info for concealed lines (#32656) - a901fb875f69 docs: add missing properties to hl_info #30032 - cc26cf040028 docs: do not treat indexes as `short_link` - 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680 - 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673 - 09bcb310681e docs: replace `yxx` mappings with `g==` #31947 - efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList` - b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks` - 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706) - 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035) - b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406) - 34344b939c06 editor: avoid scrolling :substitute confirm message #32149 - 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342) - b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634) - 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953) - 4317d366691b event-loop: process input before events in getchar() (#32322) - f05a6666cfcb events: always allow some events to be nested (#32706) - e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473) - 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813) - 8c2d45be7729 exit: close memfiles after processing events (#30872) - c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387 - 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage - 43a2019f09e8 extmarks: issues with revalidating marks #28961 - 84ad95fdc9d4 fileio: copy to correct buffer position when reading - 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991) - aa9f21ee953d filetype: fix typos in filetype detection - 032e024f8ab9 filetype: handle .in files with no filename (#30487) - 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470) - 21cbd9000748 filetype: normalize full path before matching #32227 - 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445) - cff5fa49fc5a float: "Not enough room" error for 1-line float #25192 - 07c5f41da3ad float: can set title/footer without setting border #32594 - be01b361d8ff float: cannot set title/footer independently #31993 - ff1791c9e59b float: close preview float window when no selected #29745 - d2cca606a1b6 float: ensure floating window width can fit title - 8ddcf9d93900 float: handle error in win_float_create() (#29742) - 8b2b1fba2abf float: missing default highlight for title - df915f3afccb float: properly find last window of tabpage (#30571) - 17383870dd3b float: re-sort layers when grid zindex changed #30259 - 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964) - 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto) - 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720 - ceea6898a8bd gen_help_html: handle delimiter, heading #29415 - 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields - 913e81c35f16 getchar: do not simplify keycodes in terminal mode - b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520) - 4bd86120d41e glob: handle overlapping `{}` condition elements #29236 - b47b0b3f757d grid: double grid_line_start() with ext_messages #31292 - fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug' - a9c89bcbf69a gx: allow `@` in url - 570a8da01b55 health: "q" should not close last window #31876 - 2e3f1069f499 health: better layout of vim.treesitter health check - 10f917351906 health: broken ruby detect #28804 - 84e85aeb10ae health: check more "old" files #30421 - 5b778a64ec2e health: fix fetching url with python in provider health (#29594) - b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue - 237d2aef4d70 health: return correct name from 'path2name()' - 5e9040648739 health: set nomodifiable in checkhealth buffers - 91773710145e help: remove runnable code virtual text - ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288) - 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313) - 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids - 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns - 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905 - b67fcd048874 highlight: make `TablineSel` more noticeable #31896 - 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183 - 59e130b6cacd inccommand: ensure cursor is where it belongs - 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) - b52ffd0a59df inspect: always show priority - 9c278af7cc96 inspect: show priority for treesitter highlights - 22fd52325bf6 inspector: update semantic token namespace (#32157) - efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803) - 574ea6a1911b keycodes: recognize <Find>, <Select> #28431 - 67bb0cfa79bc loader: follow the style of the error message for built-in loaders - 44740e561fc9 log: RPC log format #32337 - 851137f67905 log: log unset $TMPDIR at "debug" level #32137 - c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005 - a6f219b06beb log: unintuitive message for undefined $TMPDIR - 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170) - fac96b72a59e lsp: add foldingrange method support check #31463 - 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838) - a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared - b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266) - 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002) - fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478) - 39d79efa1e1e lsp: better multi-client support for callHierarchy - bdfba8598b41 lsp: cancel pending requests before refreshing - f9bf64d74641 lsp: check buffer is loaded and valid #30330 - c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients - 81b372fecd74 lsp: check for nil response from server (#29196) - a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response - 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162) - af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914) - 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap - 025c87441502 lsp: clear lsp client diagnostics (#29050) - c374f264305f lsp: clear word when expand multi-lines word (#32393) - adf7c98d607b lsp: compare URI instead of workspace folder name (#30962) - b4599acbf8e3 lsp: correct hover result handling (#30995) - f8d5811c717b lsp: correctly check for "codeAction/resolve" support - 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close - 2a1f604c77a1 lsp: delete bufvar inside WinClosed event - 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875) - 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029) - 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242) - d56ba71af11c lsp: document_symbol uses loclist by default #32070 - 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501) - 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690) - 5f527f24f0ea lsp: don't use completion filterText if prefix is empty - 305012ea0732 lsp: enable `additionalPropertiesSupport` - 9d9ee3476e64 lsp: ensure watcher cancel - aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522) - 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945) - b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659) - 4b001f297ae2 lsp: fix infinite loop - 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130) - 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212) - 8654a9700690 lsp: handle empty call hierarchy items #30349 - f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc - 882a450a2982 lsp: handle locations exceeding line length #30253 - 008782208d82 lsp: handle mixed encoding in tagfunc params - e0a5c3bb5817 lsp: handle multiline signature help labels #30460 - 8512f669f0e0 lsp: handle nil bytes in strings - f03b1622ad1b lsp: handle nil root_dir in health check (#29007) - ed071672613b lsp: handle non-existent configs in lsp.config/enable - 003b8a251dc1 lsp: handle out-of-bounds character positions #30288 - 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016) - d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807) - f54266dbed6f lsp: hover border type can be string (#31013) - 9a681ad09e2a lsp: hover keymap (#31208) - a14fca432b96 lsp: improve LSP floating preview window cleanup #31353 - e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707) - 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966 - 0e394f136fcb lsp: log when receiving markup messages (#30065) - 203e7a43d1f2 lsp: mention function name in warning #31301 - a4f575abd85e lsp: minimum height for floating popup #31990 - 4fd2694f20d6 lsp: missing method parameter when canceling requests - be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509 - 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716) - 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886 - 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491) - a450fda4eded lsp: prefer `on_list` over `loclist` in default handler - 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904) - eb629cce9171 lsp: redundant spaces in lsp log (#29970) - 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174) - d76f7fef13e5 lsp: reset active request when reporting an error - 6bc79790449f lsp: reset the applied hints on `refresh` request #32446 - 47aaddfa0dda lsp: resize hover window for concealed lines - 081beb3659bd lsp: restore get_language_id behaviour - 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345) - d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145) - 9c2034229739 lsp: reuse client if configs match and no root dir - 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217) - bdff50dee56e lsp: revert text edit application order change (#29877) - e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998) - a108852b008b lsp: semantic token functions allow "0" bufnr #28849 - c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748 - 8a236c242a76 lsp: set floating window filetype after setup #32112 - 3c51058d7611 lsp: set tagstack on jump via goto methods - 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382 - 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747 - 629a5b71b55e lsp: support multiple clients in typehierarchy - e48179f31e65 lsp: suppress completion request if completion is active (#30028) - 50f006b61774 lsp: tagfunc fails in unusual buffer #30700 - 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795) - 19be3d26830c lsp: trim trailing whitespace from completion words (#29122) - aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331) - 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235 - 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText - fe5ae88b20f5 lsp: update request name to capability map #30098 - 5aa9906676f3 lsp: use client.id instead of pairs index (#29143) - c8d7d65679f8 lsp: use correct method for prepareTypehierarchy - b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match - 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails - 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable #32002 - 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608 - 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044) - 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837 - 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests - 3275ae830da9 lsp.protocal: improve typing of constants - acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding - 564173e5568c lsp.util: wrong arguments to 'validate' function - 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595 - b28373638848 lua: `@private` => `@nodoc` #32587 - b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend - c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715) - 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753) - fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505) - 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) - 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203) - bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587) - e2aca58bcc4f lua: don't override script ID from :source (#32626) - d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks - 948f2beed4ea lua: find length of completion prefix earlier (#29384) - ebb963a4a082 lua: format errors from luv callbacks using __tostring - 65a703e06063 lua: ignore stdout and stderr for xdg-open - 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044) - c6d2cbf8f51a lua: pop retval for fast context LuaRef - a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker - 3d707e6f14b7 lua: remove vim.loader.disable() #31344 - 3a8811324604 lua: revert vim.tbl_extend behavior change and document it - 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021) - 40a149e7f992 lua: types for vim.api.keyset.win_config #32700 - 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536) - 960fdc775a88 lua: vim.deprecate does not support major>0 - d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850) - cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218 - 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659) - 9eb042600269 luacats: allow all types inside tuples - ee5aaba21560 man: avoid setting v:errmsg (#30052) - 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180) - da6f68ee6966 man: filter OSC 8 hyperlink markup #29171 - 7940ec69136f man.lua: `:Man <tab>` does not complete #31569 - e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262 - d6653e1cc957 marks: ensure decor is removed with proper range (#32973) - 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477) - 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476) - 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662) - 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862) - 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766) - 012db2b0f509 marks: revalidate marks whose position did not change - 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017 - c4f76299f039 marks: skip right_gravity marks when deleting text - cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560) - 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747) - a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531) - 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char - 15bc930fca94 memline: don't check line count for closed memline #32403 - aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328) - 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952 - d98827b634af messages: avoid empty msg_showmode with 'noshowmode' - 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627 - 21718c67dd96 messages: better formatting for ext_messages #31839 - 92556be33d04 messages: compute msg_col after last newline in ext_messages - ad853d1df093 messages: improve deadly signal messages #32364 - 51853b82bc95 messages: incorrect error message splitting and kind #32990 - 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531 - 7ce27381fb49 messages: lsp window/showMessage is not an error - 1b6442034f6a messages: more ext_messages kinds #31279 - 9c6a3703bb15 messages: no message kind for :undo messages #31590 - ca760e645ba4 messages: no message kind for :write messages #31519 - 909b18d05a8d messages: no message kind for completion menu messages #31646 - f111c32ff9dc messages: no message kind for search pattern #31272 - 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages - 9fa3a0964e9b messages: pass previous highlight id to ext chunks - e025f5a5b30a messages: proper multiline Lua print() messages #31205 - d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669 - d55b17e2b4e0 messages: verbose kind for nvim_echo() - c8e47f648052 meta: do not use hyphens in param names - 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling - 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565) - 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394) - 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655) - f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642) - 5947f249f838 move: half-page scrolling with resized grid at eob (#28821) - ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276) - af0a2157ad29 move: wrong cursor row on concealed line (#32629) - 83479b95abae mpack: remove invalid bool definition - d32780de4daf mswin: UI may hang on exit - fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode - de83cc5842c9 netrw: re-add missing comment marker in syntax file - d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555 - 34e2185022ab options: better handling of empty values - 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978) - 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896) - 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894) - 395f420fc65c options: fix some 'belloff' flags not working properly (#30856) - 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919) - e697c1b43dfb paste: improve repeating of pasted text (#30438) - 052875b9dc3d paste: only record a paste when it's from RPC (#30491) - 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025 - 42aa69b076cb path: avoid chdir() when resolving path (#28799) - 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992) - 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863) - afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819 - ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636 - d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246 - d24fb72c335b pum: don't select item when clicking to the left/right (#30967) - 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609) - 3bcd5624beec regexp: fix typo in E888 error message (#30161) - cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209 - 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf` - b6c1ce8a9545 runtime: add commentstring for glsl ftplugin - 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252) - e641155b023c runtime: avoid E31 in ftplugin (#32578) - 82b02ae2f2af runtime: clean up one-off scripts - 9788b81d7e53 runtime: fully port emoji_list to Lua - 74fcc9452cd9 runtime: gO always says "Help TOC" #32971 - 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures - 8369590eb215 runtime: remove obsolete ftplugin/calender.lua - 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin - 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053) - 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533) - 862338255da6 runtime: sync bundled treesitter queries - 9e80738f3073 runtime: sync bundled treesitter queries - 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473) - 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529) - a5bd6665b00a scripts: update bundled dependencies in bump_deps - 573a71469d37 scrollbind: properly take filler/virtual lines into account - a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153) - 648d6426c863 server: CID 509282: DEADCODE #30316 - f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538 - cd48b72b60af shada: restore search pattern length properly (#28929) - 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031) - 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998) - 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670) - 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970 - d46ebd2a7403 startup: avoid crash with completion from -l script (#32160) - 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285 - 17e00d0cc63c startup: report --startuptime error to stderr (#31131) - 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310 - 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912 - 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265 - 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602) - a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458) - f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509) - 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755) - 69a19295f8fe terminal: delay when finishing terminal process #32846 - f8c8a245aa5b terminal: don't crash on unprintable chars - 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090) - fa46441264b2 terminal: improve cursor refresh handling (#32596) - 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056) - 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620) - c51bf5a6b249 terminal: set cursor cell percentage (#31703) - 5def8714ad70 terminal: set local values of window options (#29326) - e9c077d197a8 termkey: fix null pointer dereference (#31792) - c8e3618e0e68 test: "tempdir not a directory" in CI logs - f7e32fb6e626 test: better management of tmpfiles - db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524) - e61228a214eb tests: needing two calls to setup a screen is cringe - 639734bed4ef tests: remove the __extension__ keyword in filter_complex_blocks (#32483) - 59baa5e8a1f9 tohtml: apply sp color if present #30110 - 67c39f5ecae0 tohtml: disable modeline #32822 - e37404f7fecc tohtml: enclose font-family names in quotation marks - 25db0a138537 tohtml: extmark text may be out of bounds - 8cd9feb50166 tohtml: ignore lsp inlay hints - eb37241d38ad tohtml: properly handle multiple hl groups #29012 - 2ed6423c7e9d tohtml: replace ipairs with pairs - 88c7997503e1 tohtml: show how many warnings are hidden - 118ae7e5ed6c tohtml: support ranges again - c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488 - b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536 - 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field - 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree - bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer - a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233 - 6696ea7f1038 treesitter: clean up parsing queue - 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036) - f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil - 7a20f93a929a treesitter: correct condition in `__has_ancestor` - 9b25c68db21c treesitter: correctly parse queries with combined injections - 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()` - 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree - da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav - 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709 - aa2b44fbb07f treesitter: don't return error message on success #31955 - b0bbe25c4808 treesitter: don't spam query errors in the highlighter - b88874d33c15 treesitter: empty queries can disable injections (#31748) - d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542) - f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results - c4eb0b64bd49 treesitter: find buffer in multiple windows #28922 - 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree - 5331f87f6145 treesitter: indent size for inspect_tree #28727 - 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198 - 052e048db676 treesitter: lint top-level anonymous nodes - 4b9095285160 treesitter: mark supertype nodes as named - 096ae3bfd707 treesitter: nil access when running string parser async - c3337e357a83 treesitter: nil check query for has_conceal_line - 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240 - 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter - d3193afc2559 treesitter: remove duplicate symbol names in language.inspect() - cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041 - 1827ab7a1f9a treesitter: separately track the number of valid regions - 36990f324de2 treesitter: show proper node name error messages - 4349bdbd0bd0 treesitter: specify success status in edit_query return value - e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid - 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error - ae917dbd06cb treesitter: sync queries from upstream - c4e9ff30a6b6 treesitter: sync queries with upstream - d8eec8156098 treesitter: update lua, markdown queries - 6e44a6a289c5 treesitter: update queries - 5a54681025ec treesitter: uv_dlclose after uv_dlerror - e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers - 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet - 8474f529780b treesitter.foldexpr: robustness against ctrl-c - f81131cca2b4 tui: also reset cursor color if it was invisible (#31348) - 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793) - 720ec5cec2df tui: cursor color in suckless terminal #32310 - b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804) - d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197) - a811d4babd22 tui: only reset cursor color if it was changed (#31337) - 0c0352783fca tui: remove DCS escaping in tmux (#32723) - 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884) - f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960) - bc63ffcf39e8 tui: reset clear_region attributes during startup #28713 - b02c83941493 tui: set id parameter in OSC 8 sequences (#29840) - 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096) - 8b8096500d08 tutor: incorrect lines marked as correct #29833 - 31745b17e60d types: add narrower vim.validate types - 44410d063ad2 types: add some vim.fn type annotations - b813075b8a55 types: do not mark unstable API as private - e947f226bebe types: use vararg return type annotation - a1906c23ddab ui: Windows :detach is opt-in - 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718) - 216ec7397214 ui: avoid redundant ext_cmdline events (#32237) - 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419) - 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222 - 7eba016c8681 ui: ensure screen update before waiting for input #30576 - 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950 - 6e4df18b457e ui: no fast context for prompt message kinds #31224 - 6b8c56c7f6da ui: schedule UI detach (#32827) - b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089 - d1fd674df3eb ui: update title in more cases (#31508) - 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284 - d049752e45c3 version: fix vim.version().prerelease - 8bdfc2ab2b25 version: return nil with empty string - 6401b433f7c0 vim.fs: default to follow=false #32859 - 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480 - 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782 - 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths - a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter - 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781) - 734dba04d13b vim.system: close pipe handles after process handle - 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638 - ad3472e29169 vim.system: resolve executable paths on windows - 33464189bc02 vim.text: handle very long strings (#30075) - 4cff4185647c vim.text: remove assert from vim.text.hexdecode - d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302 - 8bf79bd13c4d vim.wo: never allow non-zero bufnr - 453f2c52d291 vim_snprintf: special-case handling of binary format - 32e128f20992 watch: exclude .git when using inotifywait (#29914) - 9e23b4e1852f watch: ignore nonexistent paths (ENOENT) - a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099) - 88f07d6ca4a6 win-msi: set installer scope to machine #29895 - 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551) - 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507) - 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo PERFORMANCE -------------------------------------------------------------------------------- - 48251134ee59 add fast path to vim.validate (#28977) - 3abd7ed4a4cd consider only active decorations when drawing lines - 8d2ee542a82a decor: join predicates and matches cache - 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288 - b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777) - 15f2da55a8de events: use hashy for event name lookup (#32802) - abf4b65a51b2 filetype: cache (more) pattern data during "add" time - f61efe3fe77c filetype: implement parent pattern pre-matching (#29660) - ff575b388640 filetype: optimize internal data structures - dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596) - 12d4caa9d3e4 keycodes: use hashy for string lookup - f8fc6cb15755 loader: reduce calls to Loader.cache_file - 138a93a057da lsp: avoid repeated table lookup in completion.enable - 7342e6b00d5e lsp: do not apply semantic tokens to folded lines - c85d15e0d557 lsp: don't construct potentially expensive strings - cc1f2d2ca6ca lsp: don't copy completion items in filter pass - 3e855d533f44 lsp: use faster version of str_byteindex - 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103) - 3fdc43024159 treesitter: cache queries strongly - b192d58284a7 treesitter: calculate folds asynchronously - c6abc97006ee treesitter: do not use tree cursors with a small lifetime - cbad2c662873 treesitter: don't block when finding injection ranges - d9ee0d2984e5 treesitter: don't fetch parser for each fold line - 562056c87573 treesitter: only search for injections within the parse range - c57a85e0eda0 treesitter: remove unnecessary foldexpr loop - 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()` - 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512) - 3f3e4837d5f7 validate: use lighter version - 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080) BUILD -------------------------------------------------------------------------------- - 104800ce2ead "popcount" name conflict on NetBSD #28983 - 198a952c13a1 add luals check - ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable - 32e16cb0b6b0 add utf8proc as dependency - b213f5169c33 allow comment after #include for required header (#29722) - 382eb878bcbf bump lua dev dependencies - 1d815acd78e5 bump minimum cmake version to 3.16 - 5284a2a79316 bump unibilium to v2.1.2 - ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802 - 7c652242579b fix lint error on macos - 046e0956eeb3 fix or silence new clang-tidy warnings - 5719f2b91a31 fix uncrustify install in nix devShell (#33020) - 4a0ee22e77d1 make makefile work on msys - 4ee65484b16d make makefile work on windows - 1b90f4a9c472 mark CMake variables advanced #31412 - 0f24b0826a27 move all generator scripts to `src/gen/` - e5ff3020330e remove -O2 from gen_cflags - d74c74aae35e remove `lintcommit` from `lint` target - 573bcb2aaf3e remove enforcement of cmake build type - 0e9c92a90043 remove nix flakes (#28863) - f09f5c45facc reuse code for deps.txt for both deps and main build - e1dc824b7ef4 set luals checklevel to Hint #32392 - cac86e9b4c14 silence "po" noise #30469 - 07b14c8e2ed2 specify POST_BUILD when using add_custom_command - e83ce331da91 use treesitter's CMakeLists.txt - e268fcbdaa1e work around bug in make when PATH includes cmake as dir - b288fa8d62c3 bump_deps: abort if archive doesn't exist - 7ead328a4858 cjson: sync with upstream (#32114) - 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281) - 327110ff8c59 cmake: remove unnecessary policy code - 535c2f8658c4 contrib: add zsh completion (#32617) - 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries - 9216bc927c00 deps: fix formatc target on MSVC - b3641b80083d deps: remove libtermkey dependency - 1247684ae14e deps: remove msgpack-c dependency - fa79a8ad6dee deps: vendor libvterm at v0.3.3 - c614969570ac docs: update CSS #28896 - 0a087f207331 generator: add dependencies on hashy (#32796) - e178331488a0 lpeg: search for lpeg.so on MacOS - 7e099cf3eb1f macos: disable deduplication in link step - f4d9a2983a49 release.sh: fix hang when generating docs (#33026) - b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425) - 7aaa4a51b76f vim-patch.sh: include commit subject #28767 - 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- - 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth - 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418) - 35c5e2310783 store artifact shasums in a single shasum.txt file - 188ec19894e4 turn off translations by default - 328ea02eb7de use utf8proc full casefolding - 737f58e23230 api: rename Dictionary => Dict - a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730) - ad70c9892d5b column: rework 'statuscolumn' %r/l items - eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200) - a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070) - 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079) - a9e725b26e08 diagnostics: sort underline severity_sort (#30898) - e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding` - 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover() - debabaf884fc lsp: pass buffer number to root_dir function - 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers - 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911) - 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877) - dff684fdb3d2 lsp: support multiple clients in lsp.buf.references - 970a27927eb3 lua: do not use typed table for empty dict - de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe - a27419f3fc54 options: disallow setting hidden options #28400 - b922b7d6d788 options: use OptVal for option defaults #26691 - 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022 - 318676ad1348 release: remove backwards compatible releases - ad191be65e2b signs: place higher-priority signs from the left #27781 - 0dd933265ff2 terminal: cursor shape and blink (#31562) - 35e5307af257 terminal: include cursor position in TermRequest event data (#31609) - 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859) - 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups - 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193) - bd4ca22d0334 treesitter: don't parse tree in get_parser() or start() - a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser - 99e0facf3a00 treesitter: use return values in `language.add()` - bda63d5b97df typval: remove distinction of binary and nonbinary strings - 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525 - ca5fca29121a windows: drop cat and tee executables from windows - be89d520d7e9 windows: only support UCRT, even for mingw FEATURES -------------------------------------------------------------------------------- - efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067) - 0631492f9c80 add vim.fs.relpath - f864b68c5b0f allow gx to function for markdown links - f3632e14e3a7 get/set namespace properties #28728 - a66424617156 remove deprecated features - ead5683ff999 api: add err field to nvim_echo() opts - aec4938a21a0 api: broadcast events to ALL channels #28487 - 34d808b73cbc api: combined highlights in nvim_eval_statusline() - 19b25f3feacf api: deprecate nvim_buf_add_highlight() - 5c92b40b4b17 api: deprecate nvim_out/err_write(ln) - d84a95da7e11 api: nvim_get_autocmds filter by id#31549 - 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006 - e00d67ef310c checkhealth: group parsers by name and path in output - 563051a53ef9 clipboard: support g:clipboard="osc52" #33021 - 60ea0467411d clipboard: try cygutils, clip on Windows #30215 - 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400) - 65c7033cbe75 comment: allow commentstring to be determined from node metadata - 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600 - a616272f568a complete: specify reason for CompleteDone - f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223) - ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122 - 2c6b6358722b defaults: add LSP default mappings (again) (#28650) - bb7604eddafb defaults: add default unimpaired style mappings (#28525) - 4662ad5643b2 defaults: completeopt=popup #32909 - e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480) - cc6992f1ca44 defaults: dot-repeat [<Space> #31186 - 6db830e40e92 defaults: enable diffopt "linematch" #32346 - b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736 - 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781 - 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764) - 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261 - 09d76afe84dd defaults: pretty :help headings #30544 - 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984 - 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066) - c9c17fda80d8 deprecations: vim._defer_deprecated_module() - 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler - 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745) - 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302 - 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273) - 21961967ffef diagnostic: update quickfix list by title #31486 - 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868 - 1759b7844a2d diagnostic: virtual_lines #31959 - fd65422b99c7 diff: do not try external when out of memory - 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904 - 6628741ada73 docs: improve `@see` meta docstrings #30693 - 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement - cb6c0fda718e editorconfig: add support for spelling_language (#28638) - 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493) - 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks - 4cced601c8cd extmark: stack multiple highlight groups in `hl_group` - 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921 - 62d9fab9af21 float: add winborder option (#31074) - 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844) - 511b991e6689 fs.lua: add vim.fs.rm() - 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085) - f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491 - b61051ccb4c2 func: allow manual cache invalidation for _memoize - 548f19ccc301 health: close checkhealth buffers with q #31870 - f2fa4ca97ea3 health: highlight headings #30525 - b12b91c27439 health: show :checkhealth in floating window #31086 - 6592873f773b help: use treesitter for table of contents - 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups - 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold - 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034 - 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101 - 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343 - e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347) - 8d55cc218cfe keysets: teach Union and LuaRefOf - 5931f780e028 log: use "ui" as default name for TUI client #30345 - e4c6e732fd04 lsp: add select kind in showMessageRequest #32387 - f20335a54ce7 lsp: add support for completionItem.command resolving - 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable - 6072153796d1 lsp: announce codeLens resolveSupport (#29956) - 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060) - ff097f2091e7 lsp: completion side effects - 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd - 454ae672aad1 lsp: deprecate non-method client functions - 54249d051c3e lsp: deprecate vim.lsp.buf.completion - e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341 - 55e4301036bb lsp: drop fswatch, use inotifywait (#29374) - dad55f5e763f lsp: export diagnostic conversion functions (#30064) - 44229bb85b6c lsp: highlight hover target/range #31110 - 27f3750817b1 lsp: improve LSP doc hover rendering #30695 - 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items` - 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164 - 4e90bc30237a lsp: lsp.completion support set deprecated (#29882) - 6e68fed37441 lsp: multi-client support for signature_help - 629483e24eed lsp: require `offset_encoding` param #31249 - e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name] - 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663) - ce678043e346 lsp: show server name in code actions #30830 - 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611 - a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311) - 3b0fe2659e74 lsp: support completion context #32793 - 41b07b128ccb lsp: support for resolving code action command (#32704) - 35247b00a44e lsp: support function for client root_dir (#31630) - 45e76acaa053 lsp: support hostname in rpc.connect #30238 - b2bad0ac91dd lsp: support postfix snippets in completion - d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings - 5d26934c7cda lsp: update LSP healthcheck format (#28980) - ae2fd91b411d lsp: update LSP types - 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match - e4c1f6667b14 lsp: use the meta model to generate server capability map - 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323 - 92e4e3fb76c2 lsp.util: fix type errors - ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs - cbc82011ce19 lsp.util: improve offset_encoding type annotations - a18fa2f11c3a lsp.util: minor codestyle - 1944c0d610ce lsp.util: refactor get_border_size() - f0973d42272e lsp.util: refactor symbols_to_items() - 0e8568d72c88 lsp.util: remove lsp spec extract - 0621718e3b5f lsp.util: remove metatable in locations_to_items - 3f87e222f79b lsp.util: remove some aliases - e954a16063e6 lsp.util: remove some variables - 5bec7288a5b5 lsp.util: remove uneeded do-end - 8ad000ef7cf0 lsp.util: remove unneeded table - d44d36b8ff6c lsp.util: simplify some bounds checking - 0066dd0f653e lsp.util: use faster version of vim.validate - 1edfe5c09ebc lsp.util: use vim.api alias - 97119a236937 lsp.util: use vim.w/b - cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()` - 9afa1fd35510 lua: add `vim._with` - 518070731003 lua: add `vim.fs.abspath` - b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939) - d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472 - 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690 - 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts - af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012 - be1fbe38b31b lua: vim.text.indent() - fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515) - ea5b748f2438 man.vim: "q" always closes window #30819 - f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark() - 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497) - cfdf68a7acde mbyte: support extended grapheme clusters including more emoji - 124c655f56bc messages: "g<" mapping for ext_messages - cb7b4e296238 messages: "verbose" message kind #31991 - 5bae80899d9d messages: add :!cmd shell message kinds - e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521 - 21151144c6ee meta: add type for quickfix entries - 82a215cb2dc2 options: add 'eventignorewin' (#32152) - d831392b1560 paste: unify cancel and error behavior (#30476) - 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719 - f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697 - e6cfcaed184d snippet: add default keymaps during snippet session - 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887) - 96128a5076b7 startup: validate --listen address - 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735 - 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561 - 8df6736ca14d term: enable reflow by default (#21124) - 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050) - 93480f7fbaa5 term: trigger TermRequest for APC (#32407) - 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117) - 6f0bde11ccd8 terminal: add support for kitty keyboard protocol - 06a1f82f1cc3 terminal: forward X1 and X2 mouse events - e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji - f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999) - 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443) - 34cd94812d42 test: support and document lua test case debugging - b8c75a31e6f4 treesitter: #trim! can trim all whitespace - ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657) - bd3b6ec8360e treesitter: add node_for_range function - 688b961d13bd treesitter: add support for wasm parsers - 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range - 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts` - 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790) - 1af55bfcf21b treesitter: allow get_node to return anonymous nodes - a94a2927d00a treesitter: allow passing lang to InspectTree - 45e606b1fddb treesitter: async parsing - 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559 - 267c7525f738 treesitter: introduce child_with_descendant() - 09f9f0a94625 treesitter: show which nodes are missing in InspectTree - b9b408a56c7e treesitter: start moving get_parser to return nil #30313 - da0ae9534900 treesitter: support modelines in `query.set()` (#30257) - 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282) - 8ba047e33fe3 treesitter: vertical conceal support for highlighter - ff85e54939b0 tui: builtin UI (TUI) sets client info #30397 - 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727) - f93ecd2760f5 tui: parse CSI subparams in termkey (#29805) - 44dbfcfba4b0 tui: recognize X1 and X2 mouse events - e41368f3bc1d tui: support in-band resize events (#29791) - d460928263d0 tui: update 'background' on theme change events (#31350) - 45e319ade639 tutor: give hints to satisfy the line checker #30952 - 4b0e2605eaf9 ui: UI :detach command - 394f69a25dc3 ui: additional arguments for cmdline_show/hide events - a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980 - f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984 - 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192) - 43d552c56648 ui: more intuitive :substitute confirm prompt #31787 - 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575 - a10636fbe7bb ui: specify whether msg_show event is added to history - e049c6e4c08a ui: statusline text inherits highlights #29976 - 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551 - 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool - f4b620c4e643 vim.ui.open: support lemonade #30845 - 3572319b4cb1 vim.validate: improve fast form and deprecate spec form - cb84cd5d9fba win32: embed executable icon FIXES -------------------------------------------------------------------------------- - 200e7ad15786 apply the change on more files - 6720bd440f19 assert failure in VimL expression parser - d123202ae6ef change deprecation presentation - ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121 - 7737f892063a deps build for ARM64 MSVC - 50749f8df89d extend the life of vim.tbl_flatten to 0.13 - 25abcd243e41 fix broken wasmtime build - b6ab29483842 fix incorrect search code - 46b69aaf14a7 include nvim/ascii_defs.h - 01b4da65c229 merge all provider healthchecks into a single health.lua - 5c245ec3e955 remove vim.lsp._with_extend - 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348) - 6aa42e8f92bd resolve all remaining LuaLS diagnostics - e71713ba2b5c show swapfile warning as a warning (#28971) - 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756) - 0829e7575d63 warn when :InspectTree on buffer with no parser #32783 - 47f2769b462e Man: completion on Mac - 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw - 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value` - 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710) - 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908) - 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456 - 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919 - 095c0876c201 api: don't override Vimscript SID (#32610) - bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302) - 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984) - cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078) - 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981) - f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543) - 022449b52236 api: generic error messages, not using TRY_WRAP #31596 - 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390) - ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390 - 167a2383b996 api: not using TRY_WRAP, generic error messages #31595 - bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177 - d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740 - 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243) - e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219 - 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912 - 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576 - 40347f6e27f1 api: only flush nvim__redraw when necessary #31250 - 36f44b3121fc api: remove invalid assertions - 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042 - 9c718bc2bce5 api: validation, documentation of hl_group #31195 - 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544 - ffaab09e9986 build: <termios.h> is system-dependent #31705 - 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME - 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode - 34a2bfdcc5ce build: vimdoc tags are not validated #32801 - 807098824762 channel: handle writing to file instead of pipe (#30519) - c49162be5958 channel: log after (not before) channel-close - 965dc81f818e checkhealth: disable 'listchars' #31245 - 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name - f5dd30948e67 checkhealth: handle nested lua/ directory #32918 - c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988 - 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268 - 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866 - af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007 - a70ad5cdb6de cmdline: ext_cmdline block events for conditionals - bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033 - 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment - 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256 - 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810 - 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182) - 3cb1e825e679 column: check if signcolumn changed in all windows #31439 - 1dcda865591b column: clamp line number for legacy signs - f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003) - f9a49fab0c90 column: modifying a sign should update placed signs (#29750) - d5f6f61879ba column: set signcolumn width after splitting window (#30556) - 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944) - 0a2218f965ac comment: fall back to using trimmed comment markers (#28938) - e788d1a3a903 completion: avoid deleting text when completion leader changes #31448 - bfa365a87267 completion: don't include <Lua function> in -complete= (#30209) - 55dc482e757e completion: fix inconsistent Enter behavior (#30196) - 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395 - e1c2179dd93e coverity: INTEGER_OVERFLOW #31657 - f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618 - 069451bb214b coverity: size_t overflow #30497 - ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665 - c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773) - 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341 - 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687) - a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686) - 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081) - 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858) - a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096) - 34ded4d97b78 decor: exclude invalid marks from meta total - 87610d82db91 decor: set invalid flag for end of invalidated paired marks - 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree - 0e299ebf7559 decorator: noisy errors from decoration provider #31418 - f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375 - 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343) - 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460) - f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884 - 59a171fd99a7 defaults: improve visual search mappings #32378 - 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943 - c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347) - ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983) - 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632) - 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642) - 573fcb8b6641 deps: revert accidental test commits (#30864) - de794f2d2409 diagnostic: broken variable reference #31557 - c78728a3844c diagnostic: clear autocmd only for valid buf (#32861) - f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979 - 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506) - 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464 - d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593) - f69937fdbd16 diagnostic: fix float scope filtering (#29134) - 5bc948c050ce diagnostic: improve current_line refresh logic #32275 - 4b3be56a0369 diagnostic: make docs agree with code (#29561) - fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466 - 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option - 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553 - 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings - 4cbeb6fa3cc7 diagnostic: silence :chistory #31701 - 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585 - 17c25a66fcea diagnostic: virtual lines should scroll horizontally - fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703) - e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321 - c65646c2474d diff: use mmfile_t in linematch - 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708) - f25dd7a8d548 display: correctly store winline info for concealed lines (#32656) - a901fb875f69 docs: add missing properties to hl_info #30032 - cc26cf040028 docs: do not treat indexes as `short_link` - 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680 - 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673 - 09bcb310681e docs: replace `yxx` mappings with `g==` #31947 - efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList` - b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks` - 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706) - 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035) - b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406) - 34344b939c06 editor: avoid scrolling :substitute confirm message #32149 - 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342) - b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634) - 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953) - 4317d366691b event-loop: process input before events in getchar() (#32322) - f05a6666cfcb events: always allow some events to be nested (#32706) - e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473) - 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813) - 8c2d45be7729 exit: close memfiles after processing events (#30872) - c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387 - 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage - 43a2019f09e8 extmarks: issues with revalidating marks #28961 - 84ad95fdc9d4 fileio: copy to correct buffer position when reading - 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991) - aa9f21ee953d filetype: fix typos in filetype detection - 032e024f8ab9 filetype: handle .in files with no filename (#30487) - 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470) - 21cbd9000748 filetype: normalize full path before matching #32227 - 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445) - cff5fa49fc5a float: "Not enough room" error for 1-line float #25192 - 07c5f41da3ad float: can set title/footer without setting border #32594 - be01b361d8ff float: cannot set title/footer independently #31993 - ff1791c9e59b float: close preview float window when no selected #29745 - d2cca606a1b6 float: ensure floating window width can fit title - 8ddcf9d93900 float: handle error in win_float_create() (#29742) - 8b2b1fba2abf float: missing default highlight for title - df915f3afccb float: properly find last window of tabpage (#30571) - 17383870dd3b float: re-sort layers when grid zindex changed #30259 - 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964) - 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto) - 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720 - ceea6898a8bd gen_help_html: handle delimiter, heading #29415 - 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields - 913e81c35f16 getchar: do not simplify keycodes in terminal mode - b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520) - 4bd86120d41e glob: handle overlapping `{}` condition elements #29236 - b47b0b3f757d grid: double grid_line_start() with ext_messages #31292 - fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug' - a9c89bcbf69a gx: allow `@` in url - 570a8da01b55 health: "q" should not close last window #31876 - 2e3f1069f499 health: better layout of vim.treesitter health check - 10f917351906 health: broken ruby detect #28804 - 84e85aeb10ae health: check more "old" files #30421 - 5b778a64ec2e health: fix fetching url with python in provider health (#29594) - b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue - 237d2aef4d70 health: return correct name from 'path2name()' - 5e9040648739 health: set nomodifiable in checkhealth buffers - 91773710145e help: remove runnable code virtual text - ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288) - 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313) - 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids - 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns - 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905 - b67fcd048874 highlight: make `TablineSel` more noticeable #31896 - 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183 - 59e130b6cacd inccommand: ensure cursor is where it belongs - 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) - b52ffd0a59df inspect: always show priority - 9c278af7cc96 inspect: show priority for treesitter highlights - 22fd52325bf6 inspector: update semantic token namespace (#32157) - efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803) - 574ea6a1911b keycodes: recognize <Find>, <Select> #28431 - 67bb0cfa79bc loader: follow the style of the error message for built-in loaders - 44740e561fc9 log: RPC log format #32337 - 851137f67905 log: log unset $TMPDIR at "debug" level #32137 - c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005 - a6f219b06beb log: unintuitive message for undefined $TMPDIR - 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170) - fac96b72a59e lsp: add foldingrange method support check #31463 - 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838) - a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared - b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266) - 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002) - fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478) - 39d79efa1e1e lsp: better multi-client support for callHierarchy - bdfba8598b41 lsp: cancel pending requests before refreshing - f9bf64d74641 lsp: check buffer is loaded and valid #30330 - c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients - 81b372fecd74 lsp: check for nil response from server (#29196) - a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response - 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162) - af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914) - 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap - 025c87441502 lsp: clear lsp client diagnostics (#29050) - c374f264305f lsp: clear word when expand multi-lines word (#32393) - adf7c98d607b lsp: compare URI instead of workspace folder name (#30962) - b4599acbf8e3 lsp: correct hover result handling (#30995) - f8d5811c717b lsp: correctly check for "codeAction/resolve" support - 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close - 2a1f604c77a1 lsp: delete bufvar inside WinClosed event - 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875) - 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029) - 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242) - d56ba71af11c lsp: document_symbol uses loclist by default #32070 - 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501) - 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690) - 5f527f24f0ea lsp: don't use completion filterText if prefix is empty - 305012ea0732 lsp: enable `additionalPropertiesSupport` - 9d9ee3476e64 lsp: ensure watcher cancel - aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522) - 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945) - b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659) - 4b001f297ae2 lsp: fix infinite loop - 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130) - 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212) - 8654a9700690 lsp: handle empty call hierarchy items #30349 - f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc - 882a450a2982 lsp: handle locations exceeding line length #30253 - 008782208d82 lsp: handle mixed encoding in tagfunc params - e0a5c3bb5817 lsp: handle multiline signature help labels #30460 - 8512f669f0e0 lsp: handle nil bytes in strings - f03b1622ad1b lsp: handle nil root_dir in health check (#29007) - ed071672613b lsp: handle non-existent configs in lsp.config/enable - 003b8a251dc1 lsp: handle out-of-bounds character positions #30288 - 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016) - d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807) - f54266dbed6f lsp: hover border type can be string (#31013) - 9a681ad09e2a lsp: hover keymap (#31208) - a14fca432b96 lsp: improve LSP floating preview window cleanup #31353 - e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707) - 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966 - 0e394f136fcb lsp: log when receiving markup messages (#30065) - 203e7a43d1f2 lsp: mention function name in warning #31301 - a4f575abd85e lsp: minimum height for floating popup #31990 - 4fd2694f20d6 lsp: missing method parameter when canceling requests - be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509 - 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716) - 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886 - 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491) - a450fda4eded lsp: prefer `on_list` over `loclist` in default handler - 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904) - eb629cce9171 lsp: redundant spaces in lsp log (#29970) - 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174) - d76f7fef13e5 lsp: reset active request when reporting an error - 6bc79790449f lsp: reset the applied hints on `refresh` request #32446 - 47aaddfa0dda lsp: resize hover window for concealed lines - 081beb3659bd lsp: restore get_language_id behaviour - 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345) - d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145) - 9c2034229739 lsp: reuse client if configs match and no root dir - 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217) - bdff50dee56e lsp: revert text edit application order change (#29877) - e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998) - a108852b008b lsp: semantic token functions allow "0" bufnr #28849 - c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748 - 8a236c242a76 lsp: set floating window filetype after setup #32112 - 3c51058d7611 lsp: set tagstack on jump via goto methods - 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382 - 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747 - 629a5b71b55e lsp: support multiple clients in typehierarchy - e48179f31e65 lsp: suppress completion request if completion is active (#30028) - 50f006b61774 lsp: tagfunc fails in unusual buffer #30700 - 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795) - 19be3d26830c lsp: trim trailing whitespace from completion words (#29122) - aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331) - 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235 - 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText - fe5ae88b20f5 lsp: update request name to capability map #30098 - 5aa9906676f3 lsp: use client.id instead of pairs index (#29143) - c8d7d65679f8 lsp: use correct method for prepareTypehierarchy - b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match - 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails - 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable #32002 - 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608 - 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044) - 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837 - 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests - 3275ae830da9 lsp.protocal: improve typing of constants - acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding - 564173e5568c lsp.util: wrong arguments to 'validate' function - 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595 - b28373638848 lua: `@private` => `@nodoc` #32587 - b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend - c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715) - 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753) - fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505) - 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) - 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203) - bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587) - e2aca58bcc4f lua: don't override script ID from :source (#32626) - d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks - 948f2beed4ea lua: find length of completion prefix earlier (#29384) - ebb963a4a082 lua: format errors from luv callbacks using __tostring - 65a703e06063 lua: ignore stdout and stderr for xdg-open - 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044) - c6d2cbf8f51a lua: pop retval for fast context LuaRef - a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker - 3d707e6f14b7 lua: remove vim.loader.disable() #31344 - 3a8811324604 lua: revert vim.tbl_extend behavior change and document it - 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021) - 40a149e7f992 lua: types for vim.api.keyset.win_config #32700 - 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536) - 960fdc775a88 lua: vim.deprecate does not support major>0 - d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850) - cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218 - 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659) - 9eb042600269 luacats: allow all types inside tuples - ee5aaba21560 man: avoid setting v:errmsg (#30052) - 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180) - da6f68ee6966 man: filter OSC 8 hyperlink markup #29171 - 7940ec69136f man.lua: `:Man <tab>` does not complete #31569 - e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262 - d6653e1cc957 marks: ensure decor is removed with proper range (#32973) - 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477) - 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476) - 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662) - 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862) - 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766) - 012db2b0f509 marks: revalidate marks whose position did not change - 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017 - c4f76299f039 marks: skip right_gravity marks when deleting text - cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560) - 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747) - a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531) - 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char - 15bc930fca94 memline: don't check line count for closed memline #32403 - aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328) - 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952 - d98827b634af messages: avoid empty msg_showmode with 'noshowmode' - 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627 - 21718c67dd96 messages: better formatting for ext_messages #31839 - 92556be33d04 messages: compute msg_col after last newline in ext_messages - ad853d1df093 messages: improve deadly signal messages #32364 - 51853b82bc95 messages: incorrect error message splitting and kind #32990 - 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531 - 7ce27381fb49 messages: lsp window/showMessage is not an error - 1b6442034f6a messages: more ext_messages kinds #31279 - 9c6a3703bb15 messages: no message kind for :undo messages #31590 - ca760e645ba4 messages: no message kind for :write messages #31519 - 909b18d05a8d messages: no message kind for completion menu messages #31646 - f111c32ff9dc messages: no message kind for search pattern #31272 - 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages - 9fa3a0964e9b messages: pass previous highlight id to ext chunks - e025f5a5b30a messages: proper multiline Lua print() messages #31205 - d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669 - d55b17e2b4e0 messages: verbose kind for nvim_echo() - c8e47f648052 meta: do not use hyphens in param names - 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling - 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565) - 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394) - 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655) - f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642) - 5947f249f838 move: half-page scrolling with resized grid at eob (#28821) - ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276) - af0a2157ad29 move: wrong cursor row on concealed line (#32629) - 83479b95abae mpack: remove invalid bool definition - d32780de4daf mswin: UI may hang on exit - fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode - de83cc5842c9 netrw: re-add missing comment marker in syntax file - d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555 - 34e2185022ab options: better handling of empty values - 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978) - 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896) - 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894) - 395f420fc65c options: fix some 'belloff' flags not working properly (#30856) - 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919) - e697c1b43dfb paste: improve repeating of pasted text (#30438) - 052875b9dc3d paste: only record a paste when it's from RPC (#30491) - 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025 - 42aa69b076cb path: avoid chdir() when resolving path (#28799) - 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992) - 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863) - afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819 - ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636 - d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246 - d24fb72c335b pum: don't select item when clicking to the left/right (#30967) - 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609) - 3bcd5624beec regexp: fix typo in E888 error message (#30161) - cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209 - 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf` - b6c1ce8a9545 runtime: add commentstring for glsl ftplugin - 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252) - e641155b023c runtime: avoid E31 in ftplugin (#32578) - 82b02ae2f2af runtime: clean up one-off scripts - 9788b81d7e53 runtime: fully port emoji_list to Lua - 74fcc9452cd9 runtime: gO always says "Help TOC" #32971 - 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures - 8369590eb215 runtime: remove obsolete ftplugin/calender.lua - 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin - 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053) - 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533) - 862338255da6 runtime: sync bundled treesitter queries - 9e80738f3073 runtime: sync bundled treesitter queries - 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473) - 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529) - a5bd6665b00a scripts: update bundled dependencies in bump_deps - 573a71469d37 scrollbind: properly take filler/virtual lines into account - a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153) - 648d6426c863 server: CID 509282: DEADCODE #30316 - f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538 - cd48b72b60af shada: restore search pattern length properly (#28929) - 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031) - 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998) - 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670) - 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970 - d46ebd2a7403 startup: avoid crash with completion from -l script (#32160) - 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285 - 17e00d0cc63c startup: report --startuptime error to stderr (#31131) - 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310 - 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912 - 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265 - 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602) - a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458) - f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509) - 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755) - 69a19295f8fe terminal: delay when finishing terminal process #32846 - f8c8a245aa5b terminal: don't crash on unprintable chars - 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090) - fa46441264b2 terminal: improve cursor refresh handling (#32596) - 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056) - 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620) - c51bf5a6b249 terminal: set cursor cell percentage (#31703) - 5def8714ad70 terminal: set local values of window options (#29326) - e9c077d197a8 termkey: fix null pointer dereference (#31792) - c8e3618e0e68 test: "tempdir not a directory" in CI logs - f7e32fb6e626 test: better management of tmpfiles - db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524) - e61228a214eb tests: needing two calls to setup a screen is cringe - 639734bed4ef tests: remove the __extension__ keyword in filter_complex_blocks (#32483) - 59baa5e8a1f9 tohtml: apply sp color if present #30110 - 67c39f5ecae0 tohtml: disable modeline #32822 - e37404f7fecc tohtml: enclose font-family names in quotation marks - 25db0a138537 tohtml: extmark text may be out of bounds - 8cd9feb50166 tohtml: ignore lsp inlay hints - eb37241d38ad tohtml: properly handle multiple hl groups #29012 - 2ed6423c7e9d tohtml: replace ipairs with pairs - 88c7997503e1 tohtml: show how many warnings are hidden - 118ae7e5ed6c tohtml: support ranges again - c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488 - b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536 - 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field - 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree - bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer - a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233 - 6696ea7f1038 treesitter: clean up parsing queue - 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036) - f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil - 7a20f93a929a treesitter: correct condition in `__has_ancestor` - 9b25c68db21c treesitter: correctly parse queries with combined injections - 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()` - 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree - da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav - 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709 - aa2b44fbb07f treesitter: don't return error message on success #31955 - b0bbe25c4808 treesitter: don't spam query errors in the highlighter - b88874d33c15 treesitter: empty queries can disable injections (#31748) - d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542) - f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results - c4eb0b64bd49 treesitter: find buffer in multiple windows #28922 - 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree - 5331f87f6145 treesitter: indent size for inspect_tree #28727 - 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198 - 052e048db676 treesitter: lint top-level anonymous nodes - 4b9095285160 treesitter: mark supertype nodes as named - 096ae3bfd707 treesitter: nil access when running string parser async - c3337e357a83 treesitter: nil check query for has_conceal_line - 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240 - 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter - d3193afc2559 treesitter: remove duplicate symbol names in language.inspect() - cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041 - 1827ab7a1f9a treesitter: separately track the number of valid regions - 36990f324de2 treesitter: show proper node name error messages - 4349bdbd0bd0 treesitter: specify success status in edit_query return value - e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid - 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error - ae917dbd06cb treesitter: sync queries from upstream - c4e9ff30a6b6 treesitter: sync queries with upstream - d8eec8156098 treesitter: update lua, markdown queries - 6e44a6a289c5 treesitter: update queries - 5a54681025ec treesitter: uv_dlclose after uv_dlerror - e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers - 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet - 8474f529780b treesitter.foldexpr: robustness against ctrl-c - f81131cca2b4 tui: also reset cursor color if it was invisible (#31348) - 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793) - 720ec5cec2df tui: cursor color in suckless terminal #32310 - b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804) - d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197) - a811d4babd22 tui: only reset cursor color if it was changed (#31337) - 0c0352783fca tui: remove DCS escaping in tmux (#32723) - 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884) - f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960) - bc63ffcf39e8 tui: reset clear_region attributes during startup #28713 - b02c83941493 tui: set id parameter in OSC 8 sequences (#29840) - 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096) - 8b8096500d08 tutor: incorrect lines marked as correct #29833 - 31745b17e60d types: add narrower vim.validate types - 44410d063ad2 types: add some vim.fn type annotations - b813075b8a55 types: do not mark unstable API as private - e947f226bebe types: use vararg return type annotation - a1906c23ddab ui: Windows :detach is opt-in - 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718) - 216ec7397214 ui: avoid redundant ext_cmdline events (#32237) - 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419) - 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222 - 7eba016c8681 ui: ensure screen update before waiting for input #30576 - 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950 - 6e4df18b457e ui: no fast context for prompt message kinds #31224 - 6b8c56c7f6da ui: schedule UI detach (#32827) - b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089 - d1fd674df3eb ui: update title in more cases (#31508) - 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284 - d049752e45c3 version: fix vim.version().prerelease - 8bdfc2ab2b25 version: return nil with empty string - 6401b433f7c0 vim.fs: default to follow=false #32859 - 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480 - 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782 - 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths - a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter - 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781) - 734dba04d13b vim.system: close pipe handles after process handle - 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638 - ad3472e29169 vim.system: resolve executable paths on windows - 33464189bc02 vim.text: handle very long strings (#30075) - 4cff4185647c vim.text: remove assert from vim.text.hexdecode - d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302 - 8bf79bd13c4d vim.wo: never allow non-zero bufnr - 453f2c52d291 vim_snprintf: special-case handling of binary format - 32e128f20992 watch: exclude .git when using inotifywait (#29914) - 9e23b4e1852f watch: ignore nonexistent paths (ENOENT) - a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099) - 88f07d6ca4a6 win-msi: set installer scope to machine #29895 - 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551) - 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507) - 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo PERFORMANCE -------------------------------------------------------------------------------- - 48251134ee59 add fast path to vim.validate (#28977) - 3abd7ed4a4cd consider only active decorations when drawing lines - 8d2ee542a82a decor: join predicates and matches cache - 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288 - b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777) - 15f2da55a8de events: use hashy for event name lookup (#32802) - abf4b65a51b2 filetype: cache (more) pattern data during "add" time - f61efe3fe77c filetype: implement parent pattern pre-matching (#29660) - ff575b388640 filetype: optimize internal data structures - dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596) - 12d4caa9d3e4 keycodes: use hashy for string lookup - f8fc6cb15755 loader: reduce calls to Loader.cache_file - 138a93a057da lsp: avoid repeated table lookup in completion.enable - 7342e6b00d5e lsp: do not apply semantic tokens to folded lines - c85d15e0d557 lsp: don't construct potentially expensive strings - cc1f2d2ca6ca lsp: don't copy completion items in filter pass - 3e855d533f44 lsp: use faster version of str_byteindex - 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103) - 3fdc43024159 treesitter: cache queries strongly - b192d58284a7 treesitter: calculate folds asynchronously - c6abc97006ee treesitter: do not use tree cursors with a small lifetime - cbad2c662873 treesitter: don't block when finding injection ranges - d9ee0d2984e5 treesitter: don't fetch parser for each fold line - 562056c87573 treesitter: only search for injections within the parse range - c57a85e0eda0 treesitter: remove unnecessary foldexpr loop - 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()` - 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512) - 3f3e4837d5f7 validate: use lighter version - 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080) BUILD -------------------------------------------------------------------------------- - 104800ce2ead "popcount" name conflict on NetBSD #28983 - 198a952c13a1 add luals check - ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable - 32e16cb0b6b0 add utf8proc as dependency - b213f5169c33 allow comment after #include for required header (#29722) - 382eb878bcbf bump lua dev dependencies - 1d815acd78e5 bump minimum cmake version to 3.16 - 5284a2a79316 bump unibilium to v2.1.2 - ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802 - 7c652242579b fix lint error on macos - 046e0956eeb3 fix or silence new clang-tidy warnings - 5719f2b91a31 fix uncrustify install in nix devShell (#33020) - 4a0ee22e77d1 make makefile work on msys - 4ee65484b16d make makefile work on windows - 1b90f4a9c472 mark CMake variables advanced #31412 - 0f24b0826a27 move all generator scripts to `src/gen/` - e5ff3020330e remove -O2 from gen_cflags - d74c74aae35e remove `lintcommit` from `lint` target - 573bcb2aaf3e remove enforcement of cmake build type - 0e9c92a90043 remove nix flakes (#28863) - f09f5c45facc reuse code for deps.txt for both deps and main build - e1dc824b7ef4 set luals checklevel to Hint #32392 - cac86e9b4c14 silence "po" noise #30469 - 07b14c8e2ed2 specify POST_BUILD when using add_custom_command - e83ce331da91 use treesitter's CMakeLists.txt - e268fcbdaa1e work around bug in make when PATH includes cmake as dir - b288fa8d62c3 bump_deps: abort if archive doesn't exist - 7ead328a4858 cjson: sync with upstream (#32114) - 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281) - 327110ff8c59 cmake: remove unnecessary policy code - 535c2f8658c4 contrib: add zsh completion (#32617) - 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries - 9216bc927c00 deps: fix formatc target on MSVC - b3641b80083d deps: remove libtermkey dependency - 1247684ae14e deps: remove msgpack-c dependency - fa79a8ad6dee deps: vendor libvterm at v0.3.3 - c614969570ac docs: update CSS #28896 - 0a087f207331 generator: add dependencies on hashy (#32796) - e178331488a0 lpeg: search for lpeg.so on MacOS - 7e099cf3eb1f macos: disable deduplication in link step - f4d9a2983a49 release.sh: fix hang when generating docs (#33026) - b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425) - 7aaa4a51b76f vim-patch.sh: include commit subject #28767 - 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
this is not part of the build system yet, so packager managers are supposed to install the file by themselves.
bash doesn't seem to provide shell completion, zsh embeds its own completion that is bundled with vim's.
Instead of copying zsh's completion, this generated one via https://github.com/RobSis/zsh-completion-generator
Setting as draft as I believe autocomplete generates: