Following is a list of commits (fixes/features only) in this release.
See `:help news` in Nvim for release notes.
BREAKING
--------------------------------------------------------------------------------
- 9acb52c8f3 diagnostic: remove deprecated diagnostic APIs (#33072)
- 79bfeecdb4 editor: insert-mode ctrl-r should work like paste #35477
- f72c13341a lsp: pass entire entry to format function (#34166)
- fe23168e2b lsp: reimplement `textDocument/codeLens` as decoration provider
- caa9419355 optwin.lua #36505
- c123b7245c path: support RFC3986 in path_with_url() #36564
- a57c7238f9 plugins: remove shellmenu #35815
- ade58885c4 provider: drop Python 3.7, 3.8 support #33088
- 59eadebe33 runtime: move "tohtml" to pack/dist/opt/ #34557
- 1d5b3b5b4c treesitter: apply `offset!` directive to all captures #34383
- fd1e019e90 treesitter: get_parser return nil on error #37276
- a728eb7af1 treesitter: remove "all" option of Query:iter_matches #33070
- 4369d7d9a7 ui: decouple ext_messages from message grid #27963
FEATURES
--------------------------------------------------------------------------------
- 78f4994627 ":restart +cmd [cmd]" #34788#35045#35223
- b40ca5a01c channel: support :detach, :restart on Windows #37977
- ce27423132 ":wall ++p" creates parent dirs for each buf #36121
- f3c2eb49ba vim.Pos, vim.Range #36397
- 9044d64af9 has('terminfo')
- 70d7979439 render tuple types for API methods
- 5151f635ca serverlist({peer=true}) returns peer addresses #34806
- 7ba043f0f3 api: add "max_height" argument to nvim_win_text_height (#32835)
- e80d19142b api: add nvim_open_tabpage
- 6ebeb07c56 api: experimental nvim__exec_lua_fast #35758
- 1e7406fa38 api: nvim_cmd supports plus ("+cmd", "++opt") flags #30103
- 8b171852a9 api: nvim_echo can emit Progress messages/events #34846
- 612b2e7850 api: nvim_get_commands returns function fields #36415
- 4d04d0123d api: nvim_set_hl{update:boolean} #37546
- 4998b8d7b5 api: nvim_win_set_config accepts unchanged "noautocmd" #36463
- e2a0748cb2 api: nvim_win_set_config can move floatwin to another tabpage
- 094b297a3b api: nvim_win_set_config can move split to other tp as floatwin
- 88774965e5 api: relax contract, allow return-type void => non-void #34811
- 85d33514f9 api: set nvim_echo() kind for ext_messages (#33998)
- cf0f90fe14 async: add `vim._async`
- e1ffa8d33b build: HAVE_UNIBILIUM
- 1f004970f0 build: build.zig MVP: build and run functionaltests on linux
- dc6cf3add9 build: build.zig windows support
- e25b99c5b6 build: make build.zig run unittests
- c4501e98f2 build: make build.zig use luajit on main plattforms
- 8e0692cdc5 build: support full runtime distribution work
- 6d9031390c build.zig: add option to use system dependencies
- 5ec0c1ca07 build.zig: install parsers in install step
- 75fe540500 checkhealth: emoji for OK/WARN/ERROR #33172
- 63323a9c81 checkhealth: trigger FileType event after showing report #33677
- 9722bd7b1b clipboard: g:clipboard="foo" forces the "foo" clipboard tool #33235
- 3a35fdc347 clipboard: wayclip primary clipboard and correct mimetype (#33990)
- 6228acb74f cmdline: completion for :TOhtml #37045
- 3bdebfb87f defaults: don't enable treesitter query linter
- 41cac54325 defaults: exclude temp dirs from 'shada' oldfiles #37631
- 5d06eade25 defaults: map "grt" to LSP type_definition #34642
- 06befe1e34 defaults: map "grx" to vim.lsp.codelens.run() #37689
- 249f305bbc defaults: per-platform 'guifont' default #37175
- d77d961b35 defaults: shelltemp=false #33012
- b10cb0296a defaults: store spellfile in stdpath('data') #33048
- 4fae013a21 diagnostic: add `enabled` filter (#33981)
- 2f24ae8de4 diagnostic: add `format` option to `setloclist`/`setqflist` (#33977)
- c65817774d diagnostic: add `on_jump` callback option
- 7e09fedf43 diagnostic: config.status #36693
- caf7808591 diagnostic: custom status format function #36696
- 01666aae64 diagnostic: fromqflist({merge_lines}) #37416
- 4107442103 diagnostic: highlights in diagnostic.status() #36685
- 68e316e3f9 diagnostic: jump to related info location from `open_float` #34837
- 2767eac320 diagnostics: stack DiagnosticUnnecessary,DiagnosticDeprecated highlights #36590
- a5b8cf145d diff: merge adjacent blocks using inline:word (#37085)
- 45b4bbac28 difftool: replace old "nvim -d" automatically #38057
- d5cfca5b76 docs: numbered listitems
- 4dabeff308 editor: 'autowriteall' on SIGHUP/SIGQUIT #32843
- 55a0843b7c editor: :source can run Lua codeblock / ts injection #36799
- f5829957f2 env: remove VIM_VERSION_NODOT macro #34890
- 551bb63d44 events: MarkSet event, aucmd_defer() #35793
- 23bf4c0531 exrc: search in parent directories (#33889)
- 8d397fa458 exrc: stop searching in parent directories by unsetting 'exrc'
- dc67ba948e exrc: user must view and explicitly run ":trust" #35069
- bffca6e26b extmark: support end_col=-1 if strict=false #28169
- 302e59f734 extui: assign 'filetype' to extui windows (#33924)
- f2988e05db extui: don't enter pager for routed message #34679
- 8defe1afb2 extui: route to "more" window if it is open (#34190)
- 3c9484b550 extui: show dismissed message in cmdline (#34745)
- 9467731865 extui: support paging in the dialog window (#35310)
- 7526fb449d extui: use winborder for msg window #34859
- 8a626e5c4a float: 'statusline' in floating windows #36521
- 216cc893bf float: 'winborder' "bold" style #33189
- dcbe5bdd96 ftplugin: treesitter default highlighting for markdown
- c1fa3c7c37 gen_help_html: generate helptags.json, helptag.html #35442
- 322a6d305d glob: new Glob implementation based on Peglob #33605
- 8c63d84be1 health: check `vim.ui.open()` tool #37569
- 13ed225054 health: create a bug report #31842
- 043f5a291a health: show available queries for `treesitter` (#37005)
- 5a94edad70 health: summary in section heading #33388
- 47b0a718c3 help: gx opens help tag in web browser #35778
- 16f7440cc7 help: super K (":help!") guesses tag at cursor #36205
- cb8c9186e6 highlight: support more SGR attributes #37901
- 0aabe7ae76 inspect: update to a8ca312
- 8a0cbf04d6 iter: peek(), skip(predicate) for non-list iterators #37604
- 448f15ca39 json: pretty-format (indent) with vim.json.encode() #35424
- a897cc17a5 json: vim.json.encode() sort_keys #35574
- abfe6c9ef7 logging: rename ".nvimlog" => "nvim.log" #37935
- 4eed85f9bd logs: show full paths in lsp logs (#33886)
- 7486c2f6aa lsp: <Plug> mapping for signature help cycling #34039
- 903335a6d5 lsp: `Client:stop()` defaults to `exit_timeout` #36783
- 6577d72d81 lsp: `root_markers` can control priority #33485
- d6a6eed4f3 lsp: attach to buftype=help buffers #38412
- 63abb1a88f lsp: builtin :lsp command
- 7c9b865bdd lsp: deprecate `vim.lsp.stop_client` (#36459)
- b877aa34cf lsp: detach LSP clients when 'filetype' changes #33707
- 371aa1c566 lsp: diagnostic related documents support
- 15ff454443 lsp: display codelens as virtual lines, not virtual text #36469
- 63594ffa04 lsp: do completionItem/resolve if completeopt=popup #32820
- c5c6ddba91 lsp: document method types (#35934)
- d08b265111 lsp: enable document_color by default #35086
- 66339e0641 lsp: generate method to client capability map
- acfb9bc614 lsp: graduate ClientConfig `exit_timeout` #36750
- 957093da0d lsp: handle deprecated document symbols (#34751)
- 492ea28612 lsp: handle disabled code actions (#34453)
- 8876413e2d lsp: highlighting the symbol being renamed (#37390)
- d26db4bfbf lsp: improve signature help display #35190
- f99e3a8a2a lsp: incremental selection via "textDocument/selectionRange" #34011
- e82aef2e22 lsp: incremental-selection operator-pending mode #36575
- a4b2192690 lsp: lsp.enable() auto-escalates forced shutdown #36458
- 4430c9a424 lsp: migrate `document_color` to capability framework (#38344)
- e855a23c02 lsp: on_accept can return item to customize behavior #37092
- 729e0acd26 lsp: pass client ID in code action filter (#36046)
- 32f30c4874 lsp: pass resolved config to cmd() #34550
- 8ed68fda50 lsp: semantic token range improvements #37451
- 23ddb2028b lsp: semanticTokens/range #36705
- 3e8a4e1092 lsp: show color preview in completion items #32138
- 145548a24a lsp: show snippet preview if completeopt=popup #32553
- 654303079b lsp: skip invalid header lines #36402
- 4bc7bac884 lsp: start/stop LSPs as necessary during vim.lsp.enable() #33702
- d75ffa5934 lsp: static registration support (#34371)
- cc518cf9ba lsp: support CompletionItem.labelDetails #38403
- 8f5bd569c5 lsp: support `documentColor` dynamic registration #33800
- 4745270bf1 lsp: support `textDocument/colorPresentation` (#34823)
- 9ff1239634 lsp: support `textDocument/documentColor`
- 05bd4398c5 lsp: support `textDocument/documentLink` (#37644)
- 0e70aa0e86 lsp: support `textDocument/inlineCompletion`
- 77e3efecee lsp: support `textDocument/onTypeFormatting` (#34637)
- 03d6cf7aae lsp: support `version` in `textDocument/publishDiagnostics` #36754
- 965468fca1 lsp: support `workspace/codeLens/refresh`
- 835f11595f lsp: support annotated text edits (#34508)
- 02cd564896 lsp: support auto-force escalation in client stop (#36378)
- 02067a9892 lsp: support diagnostic refresh request
- 2031287e93 lsp: support diagnostic related information (#34474)
- 0f3e3c87b7 lsp: support dynamic registration for diagnostics (#36841)
- c5167ffc18 lsp: support linked editing ranges #34388
- 76d213efbe lsp: support multiline semantic tokens #34458
- 9278f792c3 lsp: support range + full semantic token requests #37611
- 016335a7d0 lsp: support refreshing workspace diagnostics
- 7cc07e8383 lsp: support signature help noActiveParameterSupport #34838
- d7e0d46ffa lsp: use stricter types for methods
- c22b03c771 lsp: user-specified sorting of lsp.completion multi-server results #36401
- e406c4efd6 lsp: vim.lsp.get_configs() #37237
- 6888f65be1 lsp: vim.lsp.inline_completion on_accept #35507
- 03d378fda6 lsp: vim.lsp.is_enabled() #33703
- 054eaf8493 lsp: warn about unknown filetype #36910
- cb4559bc32 lsp: workspace diagnostic support (#34262)
- 90d15227c5 lsp: workspace_required #31824
- a8edf6e445 lsp.util: deprecate vim.lsp.util.stylize_markdown
- 98f8224c19 lua: `vim.pos`/`vim.range`
- 0c46ea7d38 lua: add `Iter:unique()` (#37592)
- cf9b36f3d9 lua: add vim.list.unique()
- 7499c9f9a7 lua: conversion between cursor positions
- 62b45b8fe4 lua: conversion between extmark positions
- 9f5b309d82 lua: conversion between vim and lsp position/range
- 047a10bfde lua: function `behavior` for tbl_extend, tbl_deep_extend #33819
- 4d3a67cd62 lua: replace `buffer` with `buf` in vim.keymap.set/del #38360
- 6e1745e96e lua: support vim.Range:has(vim.pos) #37879
- 7ed8cbd095 lua: vim.list.bisect() #35108
- d8a8825679 lua: vim.wait() returns callback results #35588
- f68a5c40f0 messages: add "prev_cmd" argument to msg_history_show (#34779)
- fc2dee1736 messages: cleanup Lua error messages
- 0d13945bbb messages: drop hardcoded 'showmode' delay #38029
- 0741d2520d messages: hl-StderrMsg, hl-StdoutMsg #33429
- 0ee5a4d481 meta: vendor luv meta files
- 7cd5356a6f net: vim.net.request(), :edit [url] #34140
- f29b3b5d45 net: vim.net.request(outbuf) writes response to buffer #36164
- fb0dc825e9 option: custom chars in 'winborder' #33772
- 28e31f5d3d options: default statusline expression #33036
- 5973328eda options: per-buffer 'busy' status #34493
- 0412527a40 outline: smaller indentation #34005
- 2728b4efe0 pack: add `[[` and `]]` mappings in confirmation buffer
- a9db6ec6fa pack: add `active` field to `PackChanged` event data
- d21b8c949a pack: add built-in plugin manager `vim.pack`
- 4a637107d0 pack: add checkhealth
- 98e3a571dd pack: add code actions in confirmation buffer
- d7db552394 pack: add initial lockfile tracking
- 8c28507fcf pack: allow choosing update target in `update()`
- dd828690c7 pack: allow function `opts.load` in `add()`
- c9965491d0 pack: allow running `update()` without Internet connection
- acff86601e pack: allow skip install confirmation in `add()`
- a41703d107 pack: confirm "Always" to install all plugins #35733
- c339b83a4a pack: hint in confirmation buffer that plugin is not active
- dc8235c48c pack: prefer using revision from lockfile during install
- c522cb0e96 pack: support user-defined `data` in plugin spec #35360
- 2e533e364e pack: update `add()` to handle source change for installed plugin
- 069be91106 pack: use `nvim_echo{kind=progress}` to report progress #35625
- a203961535 pack: use colored `nvim_echo` chunks to show progress report
- 7853cde29a pack: vim.pack.get() gets VCS info #35631
- fec02ae8e4 plugins: nvim.difftool can compare directories #35448
- 8a12a01466 progress: better default format + history sync #35533
- 7b7e8cc724 progress: disable cmdline progress msg via messagesopt' #36730
- 4b643d7068 progress: set Progress-event pattern to "source" #38495
- 24684f90ea progress: status api, 'statusline' integration #35428
- 286371b4d2 prompt: multiline prompt input #33371
- 8ab511bba5 prompt: plugins can update prompt during user input #37743
- a940b77cb2 prompt: prompt_appendbuf() appends to prompt buffer #37763
- 5ae41ddde3 prompt: prompt_getinput() gets current input #34491
- 5f8d4a248a provider: detect venv python via "pynvim-python" tool #35273
- f01419f3d5 runtime: accept predicates in take and skip (#34657)
- 8c81ed8678 runtime: revert cfilter, ccomplete to legacy Vim
- 9e1d3f4870 runtime: undotree #35627
- c9d8468020 search: increase `MAX_COUNT` to 999
- 6ba32713ad secure: allow 'path' parameter for trust action 'allow' (#38001)
- 71455173b4 shada: don't store jumplist if '0 in 'shada'
- 840cdb9589 shada: shada should not store nobuflisted buffers #21818
- 701258921e snippet: highlight active tabstop (#35378)
- 4e1644d4d3 spell: opt-out of confirm when downloading spellfiles #36836
- 1d40f67776 ssh: SSH configuration parser #35027
- cf874cee33 startup: provide v:argf for file arguments #35889
- 32aee065a8 startup: warn if NVIM_LOG_FILE is inaccessible #38070
- 4719b94443 statusline: option to specify stacking highlight groups #37153
- b79ff967ac statusline: vim.diagnostic.status() #33723
- 72a63346d8 stdlib: vim.fs.ext() returns file extension #36997
- 6b4ec2264e stdlib: vim.json.decode() can allow comments #37795
- eac2f0443e tag: respect jumpoptions=view when popping tagstack (#37021)
- a945686444 term: increase max scrollback to 1000000
- 6bc0b8ae87 terminal: detect suspended PTY process (#37845)
- 03377b9552 terminal: include sequence terminator in TermRequest event (#37152)
- 71f3a9c590 terminal: parse current buffer contents in nvim_open_term() (#33720)
- 2368a9edbd terminal: support SGR dim, overline attributes #37997
- c8693051a8 terminal: surface exit code via virttext + nvim_get_chan_info #37987
- b38173e493 terminal: synchronized output (mode 2026) #38284
- 72d3a57f27 treesitter: incremental selection
- 586b1b2d9b tui: add nvim_ui_send (#35406)
- 981ea41abb tui: ghostty builtin terminfo #36963
- 8eb0964537 tui: native progress bars for Progress events #35973
- de87ceb3be tui: support APC queries in TermResponse (#34426)
- 977e91b424 tui: use DA1 response to determine OSC 52 support
- abb40ecedd ui: "append" parameter for "msg_show" UI events
- fafc329bbd ui: 'pumborder' (popup menu border) #25541
- 649bb372f6 ui: :connect command #34586
- 7ba0f623d7 ui: avoid setting 'cmdheight' with vim.ui_attach()
- 2b4c1127ad ui: emit "msg_clear" event after clearing the screen (#34035)
- 2c1c0b7af5 ui: ext_cmdline/messages for the TUI #27855
- f29856d034 ui: include compositor info with multigrid
- 9bbbeb60e3 ui: no delay for errors with ext_messages (#33693)
- 07d0da64ed ui: overlay scrollbar on 'pumborder' #36273
- a2b92a5efb ui: show "empty" cursor behind unfocused floatwin #37624
- 97549ad7cf ui: specify whether msg_show event comes from typed command
- 8ae9a44d38 ui: support grid=0 in nvim_input_mouse #32535
- 08c484f2ca ui: use builtin completion popupmenu with ext_cmdline (#31269)
- fbac2e5edc ui2: configure maximum window heights #38392
- 32e0d05d53 ui2: configure targets per message kind #38091
- 9fc985bc98 ui2: more predictable routing #35028
- db2a54996e ui2: replace message by its ID #37672
- e268760e46 ui2: show active paging keys in dialog float title #37919
- 875212c5b3 ui2: support routing "typed_cmd" trigger to target
- 81d2d88f70 undotree: set 'filetype' #36091
- 9595f07425 ux: sexy intro #38378
- 5196162540 version: support multiple Vim versions
- 361671870e vim-patch.sh: -M lists all ported patches
- 7fe02126f9 vim-patch.sh: add n flag to list possible N/A patches (#36431)
- 2f0fbdaa48 vim.fs: root() can specify "equal priority" #34276
- eae2d3b145 vim.hl: allow multiple timed highlights simultaneously #33283
- ea124068f2 vim.pack: lockfile support #35827
- 773075b2bc vim.version: add `vim.version.intersect()`
- aeb8bca12d vim.version: make `tostring()` return human-readable version range
- e42050f4ae vimscript: log function name in "fast" message #32616
- 6edae88052 vimscript: scripts can detect 'android', 'termux' #38218
FIXES
--------------------------------------------------------------------------------
- b233f71b1b :ball w_locked check, reset b_nwindows in free_all_mem() #38484
- f2e60d000e `fn.exists()` typos (#34390)
- 379c37fa0b bug in stylize_markdown
- 2c9d21f722 cursor shape don't resume after `:append`
- 7fdf9f7399 define `vim.mpack`
- bc4bddbb21 don't use logical diagnostic position in `get_prev` and `get_next` #35282
- 3567b7d751 ignore Nvim local config #37805
- fd45bc8cab lsp.enable() don't work correctly inside FileType event #37538
- 0694ca8822 map wincmd instead of remap #34635
- eeba0dc2ed memory leak from double buffer initialization in read_stdin #35413
- dfa5d79d05 misc typos #37471
- cd4c98fded nvim_open_tabpage cleanup, fixes, more tests
- 874e214993 remove exec permission from .gitattributes #33140
- bcc9242bc7 remove quotes around `nil` deprecation alternatives (#36047)
- 7b99e1f0c3 remove typo from buffer-local LSP docs (#35841)
- e991133058 remove unnecessary `nvim -l` from `gen` command #33676
- 92b2a26772 resolve all remaining LuaLS warnings in `src/`
- 431004dda2 screenchar()/screenstring() with hidden floating windows #35560
- 1999c4cdc1 screenchar()/screenstring() with multigrid #32494
- 9204b7541d silence LuaLS's `no-unknown` warnings in `src/`
- 020d5e0f7e stale lines("w$") after nvim_win_set_height when splitkeep=screen #36056
- 2e68e9c051 temporarily disable 0.12 deprecation tests
- 3b6084ddf4 type fixes
- 38aac21083 type of nvim_echo
- d21e2463fd update deps hash for zig 0.14.0
- fa8e4e65ca update lua types for commands
- 9170178ee5 use correct window dimension for range estimation
- 62ba6e8a76 use nvim namespace convention #34010
- 28157738e3 vim.lsp.omnifunc should not throw away other items #35346
- 71a22e20ad vim.ui_attach handles messages during `-l`/`--headless` #36884
- 9c5ade9212 wait() checks condition twice on each interval (#37837)
- 9287c73df9 :connect: don't use freed memory (#38512)
- 7cd22e916b :connect: formalize connect event #38543
- 49d7f694a8 :ls: check for finished terminal properly (#37303)
- 6af1b7e5e8 :print: don't use schar_from_ascii() for illegal byte (#34046)
- 5cfbc35aa8 api: add missing nargs field to user command Lua callbacks #34210
- eeacd7bd71 api: adjust fix for reconfiguring float "relative" (#34287)
- 3cb462a960 api: autocmds mess up nvim_get_option_value's dummy buffer
- 612cd99a00 api: buffer overflow in nvim_buf_get_extmarks overlap #37184
- 006361fc6b api: buffer updates in quickfix buffer #31105
- 76d0206342 api: count parameter in nvim_parse_cmd, nvim_cmd #34253
- c553008e74 api: crash when moving curwin to other tabpage #35679
- b7070778b9 api: cterm type in highlight keyset #37802
- 853eea859f api: disallow moving window between tabpages in more cases
- 0bef1c88f3 api: do not allow opening float to closing buffer
- ef084b5c22 api: don't config split as floatwin relative to itself
- 4362132b10 api: don't re-apply minimal style if unchanged #38152
- 3165e94a64 api: ensure win_get_config() "border" is reciprocal (#34322)
- c7c3f9fc9c api: fix crash in command preview with % #35228
- 7b9512e613 api: fix not capturing output in cmdline mode (#35322)
- d788864cde api: ignore split_disallowed when opening a float
- 3115e3d0d1 api: improve external window validation
- d707ccf988 api: inconsistent scrolling when deleting before topline (#36301)
- 137d5ab01d api: merge split window config only on success
- 22df649210 api: nvim_create_user_command addr option should allow ranges #35077
- 6f12663de5 api: nvim_get_option_value FileType autocmd handling #37414
- 7e2e116343 api: nvim_get_option_value dummy buffer crashes
- 0c1ed63c05 api: nvim_open_tabpage "after" like :[count]tab
- 97b064c9ac api: nvim_open_tabpage positional "enter"
- d7472c0617 api: nvim_open_win default to half-size for splits (#36088)
- 19f5f05ac2 api: nvim_open_win respects requested split window size (#35601)
- 652c3e76c7 api: nvim_parse_cmd "range" when ea.addr_count=0 #33536
- 72b0bfa1fb api: nvim_parse_cmd handle nextcmd for commands without EX_TRLBAR (#36055)
- f3ec657ebc api: nvim_parse_cmd on range-only, modifier-only commands #36665
- c7f38e3bc8 api: nvim_parse_cmd parses :map incorrectly #34068
- 63cbc95d45 api: nvim_set_current_win doesn't reset Visual mode (#37340)
- 9383a096eb api: nvim_set_hl boolean false corrupts underline styles (#38504)
- d19dc6339d api: nvim_set_hl crashes when url= key is passed
- ec18ebcb41 api: nvim_set_keymap() throws error even in pcall() #33228
- 7da4d6abe2 api: on_bytes gets stale data on :substitute #36487
- 2211953266 api: on_detach consistently before buf_freeall autocmds
- a2b9720939 api: open_win leak from naughty autocommands
- 5226801be2 api: parse_expression crash with ident and curly
- a5e5ec8910 api: parse_expression crash with unopened ] and node
- d523750de0 api: populate lhsrawalt in nvim_get_keymap response
- 88dc44260f api: preserve WinConfig style when converting float to split #37264
- 963308439a api: reconfiguring float "relative" does not clear "win" (#34271)
- e13e850517 api: redraw after setting minimal style
- 7be4ae796f api: relax config validation for "win"
- 1901832f26 api: return "style" in nvim_win_get_config() #38122
- 15d57ab0ba api: single-line visual block insert triggers extra on_lines #35098
- f5d03ec930 api: style=minimal not applied immediately for unmoved split
- 0ee8323f2b api: unnecessary errors when not moving split
- af82f36108 api: update topline when flushing with nvim__redraw() (#34346)
- 99529577cc api: use E226 instead of E227 for duplicate abbreviation (#33159)
- 0d73ec5834 api: use original LHS in keymap error message #33135
- 680d25e5b3 api: use standard error messages
- 1ec74fa7b1 api: win_config `border` type #38030
- c924c2a7b3 api: win_config_float_tp grid removal, redraw
- da39966a3a api: win_set_config error message for splitting from a float #35650
- 65170e8dad api: wrong return value with reverse range + overlap #32956
- 285c04e2d0 api,lsp: call on_detach before wiping out the buffer #35355
- acecdbff1f api,lua: handle converting NULL funcref/partial (#37060)
- 4daa8eb5ab appimage: wrong $ARCH used by linuxdeploy #36712
- 5871d26779 autocmd: 'cmdheight' OptionSet with valid window grids (#34619)
- 19379d1255 autocmd: deferred TermResponse lacks "data", may not fire (#37778)
- 05a83265f9 autocmd: fire TabClosed after freeing tab page
- f36dd7557a autocmd: heap UAF with :bwipe in Syntax autocmd
- 6d2330f50d autocmd: parsing of comma-separated buflocal patterns
- d945a93d69 autocmd: potential TabClosed UAF, always set abuf
- 1cde71233f autocmd: skip empty comma-separated patterns properly
- f9ef1a4cab buffer: defer w_buffer clearing to prevent dict watcher crash #36748
- 14d65dae91 buffer: don't allow changedtick watcher to delete buffer (#36764)
- 23aa4853b3 buffer: don't reuse 1-line terminal buffer (#37261)
- 2700f6642a buffer: switching buffer should respect jumpoptions+=view (#36969)
- fa24df3264 bufwrite.c: handle invalid byte sequences #37363
- c26f989b2f build: also check os_win sources with uncrustify in CI
- 8069df2661 build: build.zig: use luajit for windows
- 576e8f62c2 build: disable problematic marktree assert in RelWithDebInfo builds
- 88b45614e9 build: gen_help_html fails #36359
- f0d981544b build: glibc 2.43 happened
- e69beb9b1a build: invalid help tags cause reports to fail #36356
- 3268f51d20 build: musl libc build.zig
- f98b5ee619 build: remove .tar.gz workaround for bug fixed in zig 0.15.2
- a2b0be19bf build: remove deprecated aliases in build.zig removed for zig 0.15
- b4db223d33 build: treesitter parsers are not ReleaseSafe
- 921f8b0df7 build: use correct cmake expression for $<CONFIG>
- ec8a0c7340 build: workaround errors in zig build due to stale cache
- 6741c134e1 build: zig build can has git version
- 41bc3020c4 build.zig: format build.zig to keep lines under 100 chars
- 565cfa04eb build.zig: replace slashes in filepaths #37111
- 64ce5382bd channel: crash on failed sockconnect() (#37811)
- 886efcb853 channel: possible hang after connecting with TCP times out (#37813)
- 4399250e90 channel: unreference list after callback finishes (#37358)
- 5f9f5bc04d checkhealth: check g:loaded_xx_provider for all providers #33168
- e87d2ae383 checkhealth: check outdated pynvim version properly #33175
- 78d2e0b43e checkhealth: don't override user "q" keymap #33132
- 16fbde83c4 checkhealth: don't wrap command in cmd.exe (#38158)
- bd45e2be63 checkhealth: wrong ABI version for treesitter parsers #35327
- ad22d0ace9 cjson: fix `strbuf_set_length` incorrectness #35565
- f5cbf11644 client: avoid :connect race with server detach
- 2483d5ad8a clint.py: replace deprecated codecs.open #36593
- 41199c45d6 clipboard: avoid using stale register width (#36178)
- 95dfb063da clipboard: correct blockwise register width computation (#35038)
- ac12dc49cc clipboard: enable cache for function providers #34470
- 310d01d8fa clipboard: tmux clipboard data may be stale #36787
- d00f680c0d clipboard: use tmux only in a tmux session #36407
- 8aacce90b4 cmake: linker flags, doc generation for cross-compilation #38215
- 9763834170 cmake: use host nlua0 binary when cross-compiling #38089
- 69cae6259e cmd: :update does not write new, unmodified buffer #35929
- fcf752476a cmd: :update writes new file buffers only for real files #35939
- a5c55d200b cmd: bar "|" not allowed after :fclose #34613
- 5de2ec76a3 cmdline: :checkhealth completion with multiple args (#35060)
- f4ee0ab2f1 cmdline: avoid empty @: register after :<CR> (#33126)
- fde1c07891 cmdline: cmdline_block events for :lua debug.debug() #38171
- 0015a105ca cmdline: do not move UI cursor when entering cmdline #33729
- 236d831d77 cmdline: don't treat c_CTRL-D as wildmenu (#36067)
- 95ab723995 cmdline: empty ext_cmdline block events for :<CR> #33118
- 7f2298ad32 cmdline: fix inconsistent behavior with ext_popupmenu (#35688)
- 677446c70f cmdline: make sure pum is removed on leave (#36608)
- dc05598d02 cmdline: set search cursor after ui_flush() (#34418)
- 5977bdba05 cmdline: trigger CmdlineChanged after command preview (#35254)
- efd0fa55c8 cmdline: validate 'incsearch' cursor for "cmdline_show" redraw (#34630)
- 28ff4deda7 colorscheme: adjust `StatusLine[NC]` for diagnostics #36719
- 4a706a7092 column: don't count signs on lines beyond eob #33410
- b40e658717 column: missing redraw with virt_lines_leftcol (#34650)
- 8f78591f9a column: wrong alignment and highlight with empty 'display' (#35495)
- 69419f8b3e completion: CompleteDone reason="discard" when candidate text remains #38169
- 51caf0a3af completion: avoid freeing uninitialized value (#33459)
- b258382176 completion: complete drive-letter filepath on Windows #36353
- 634f6424aa completion: set 'wrap' and scrolloff=0 in preview window (#37327)
- 3f10bb87ef completion: wrong CompleteDone reason for auto-inserted sole match #38280
- e1b3ca6629 compositor: clear old position with last known dimensions #38229
- 6f632a8615 compositor: don't blend uninitialized background cells #34364
- 150490d365 conceal: assert tripped during startup #36136
- ad8bce6674 conceal: check for concealed lines on invalid row (#36084)
- ab72799841 coverity/530026,530028: free resources on early exit in nlua_exec_file #33502
- 0791594101 coverity/530033: free lp->sl_info to fix resource leak #36198
- 0ed5e00077 coverity/532324: free skip_until to prevent leak #36109
- 3e30323135 coverity/554963: preallocate msg.items to avoid FORWARD_NULL #34484
- 501a21f333 coverity/637363: out-of-bounds write #37878
- c5b8ed870b coverity/644326: NULL ptr deref in socket_address_is_tcp #38010
- 20b2dd39cc decor: clamp last column by decor provider range
- ca16b54c86 decor: enable decoration provider in on_start #33337
- 6adf48b66d decor: extmark highlight not applied (#33858)
- 9492df027d defaults: 'guifont' "monospace" fallback, trim spaces #37930
- 57b4fb5c53 defaults: enable :terminal [[,]] motion in operator-pending mode #33217
- 3ebde5ea14 defaults: keywordprg=:help on Windows #33336
- 9567fb0507 defaults: silent `gx` if no `textDocument/documentLink` support #37969
- dc6fc11b87 defaults: start exrc search from parent directory
- cb247e06f0 defaults: visual-mode [[,]] for :terminal shell prompts #33201
- 1c96b72dfa deps: make script/bump_deps.lua update build.zig.zon versions in sync
- 6e12ef4a7b desktop: cannot open filename with spaces using OS file manager #33161
- 2e0158650a diagnostic: accept multiple namespace in `open_float()` (#34073)
- c681336e3c diagnostic: accept multiple namespaces when setting loclist/qflist (#33982)
- d567f899ef diagnostic: allow virtual_{lines,text} cursor exclusivity #33517
- 3ac76977bc diagnostic: check for extmark in get_logical_pos #37127
- 68eece8b84 diagnostic: check if the buffer is loaded #35125
- dbe17da120 diagnostic: deprecate `float` in `vim.diagnostic.Opts.Jump` (#34037)
- efa6d91132 diagnostic: display 1-based related information line/col numbers (#37093)
- 2b21c9c23f diagnostic: ensure autocmd always is always sent diagnostics
- e34e2289c2 diagnostic: fix flaky error
- 583308f599 diagnostic: handle stale diagnostic extmark ids #38060
- 88a72efb46 diagnostic: open_float() handles config.float function #31577
- 09266830bd diagnostic: show diagnostics on buffer load #35866
- 9833f0da5f diagnostic: unstable sorting by severity #37154
- f7b573f80a diagnostics: assert adjusted diagnostic position #37210
- 7a051a4c38 diagnostics: avoid jumping to diagnostics in deleted ranges #35088
- 9641ad9369 diagnostics: diagnostic just after EOL is not highlighted #34085
- e4a100a1e1 diagnostics: extend conversion support from/to quickfix format (#34006)
- 19efabafc5 diagnostics: fixed virtual_text cursormoved autocmd error (#34017)
- 0a113013fb diagnostics: position diagnostics using extmarks #34014
- a1bc5d0ae6 diagnostics: showing stale diagnostics in handlers #35890
- 3594c213a7 diagnostics: validate opts.signs #34565
- 60d0b7d0c3 diff: fix incorrect item size of dout_ga (#34338)
- 0b8a9bde0e diff: set default diff flags properly (#35450)
- aaec3e5b0d difftool: add check for window number when cleaning up layout #36161
- c1e60f36f3 difftool: don't reset quickfix list when closing quickfix window #38088
- c9b74f8b7e difftool: ensure split layout, use systemlist #36145
- c6113da5a9 difftool: fully resolve symlinks when comparing paths #36147
- a88c7962a8 difftool: handle "no differences found" #36671
- d590644620 difftool: silence :only command in setup_layout #36168
- 97a6259442 display: adjust setting winline info for concealed lines (#33717)
- cb2ca54331 display: cursor moves when searching with "n", "*" #29446
- ce0c0c31a0 display: scroll logic does not take into account concealed topline (#33054)
- 5b1561bb71 display: scroll redrawing doesn't account for virt_lines above fold #33374
- 7e8b7bba21 display: wrong cursor column with 'concealcursor' = "n" and virt_text (#33218)
- 5582005ac7 docs: add `--clean` arg to LSP bug report (#36530)
- e74753a221 docs: callback annotation for `vim.ui.input` #34507
- 4a910a2a4e docs: dev.txt is "new layout"
- 9da316fcc4 docs: force blank line after numbered list items #35950
- 4397c4b117 docs: improve adjacent list items
- 8a76129d9f docs: include `?` in list items #35945
- b2722181b0 edit: clear showcmd after clearing last put char (#34517)
- 9a864d0a3c edit: handle cindent properly with completion (#36711)
- 3647b821ea editor: respect [+cmd] when executing :drop #33339
- 966b1da183 editorconfig: a custom property is treated as a section (#34445)
- b618511ef9 editorconfig: use 4 spaces indentation for zig files
- fd973c0a4e env.c: drop envmap, free os_getenv() result #32683
- df9e4a037a eval: 0 should mean current tabpage in gettabvar() (#36891)
- 8156eece24 eval: fix crash with :breakadd expr when calling user func
- 981d4ba45e eval: winnr('$') counts non-current hidden/unfocusable windows #34207
- 1e1619de83 eval: winnrs of unfocusable/hidden windows #35474
- 57c6b61cf2 event-loop: don't call uv_stop() when loop isn't running (#37984)
- 1dbede5b93 events: avoid superfluous CursorMovedI on first autocmd (#33588)
- 0b61bc8982 events: crash on SIGTSTP (Ctrl-Z) #33258
- 0a0c349b6f events: crash on WinScrolled #35995
- 29494f042c ex: error handling for `:lsp` #37061
- 2f35221774 excmd: :trust executed even when inside false condition (#36032)
- c1f142322b excmd: correct :connect abbreviation
- 781ea5b41b exit: stop listening before closing channels (#38480)
- ed9abb1851 exrc: ensure consistent 'exrc' loading sequence #35148
- f7c939fa7a exrc: exrc knows its own location (#34638)
- a393347673 extmark: adjust invalidate range by one for deleted lines #37897
- 589232c0e0 extmark: wrong eol_right_align width calculation (#37034)
- 6dee1672cc extui: "box" window width calculated on last line (#33881)
- ff95d7ff9a extui: adjust "more" window routing (#34251)
- cc78f88201 extui: adjust which messages are sent to "more" window
- 9784bc1346 extui: append consecutive :echon messages
- e512efe369 extui: attempt to perform arithmetic on field 'last_emsg' (#35047)
- 70eb416459 extui: better message highlighting after carriage return (#34034)
- 9e968635ef extui: check if buffers/windows exist before deleting (#34886)
- 3c7c824bdc extui: check option values after VimEnter (#33768)
- 5046ef4c8f extui: clear cmdline buffer for first message (#34490)
- db702782e0 extui: close cmdwin to enter "more" window (#33860)
- c916bdf329 extui: close message window with `q`
- 39a5b7f239 extui: cmdline visibility, cmdheight cursor position (#33774)
- 5e4700152b extui: copy window config to new tabpage (#34308)
- 8c6ea76ebc extui: disable cmdline highlighter when showing a message (#34887)
- 9efdd4fe98 extui: drop "more" window that is no longer floating #33861
- be5a4851ea extui: ensure temporary cmdline config is not restored #35301
- 1256daeead extui: ensure windows are valid in scheduled on_key (#35106)
- cd7cf4bd16 extui: error on :call input('') (#35515)
- 4d56dc43c0 extui: handle carriage return in messages
- f1295fe76f extui: hide inactive "more" window (#33831)
- 3828856233 extui: incorrect cmdline cursor position (#34201)
- a59b052857 extui: map wincmd instead of remapped key (#34151)
- d4ecfc4234 extui: message may overwrite active cmdline #33846
- 76f76fb083 extui: only append messages exceeding 'cmdheight' to "more"
- 33b0a004eb extui: properly setup "more" window for changed buffer
- 5e83d0f5ad extui: reposition "more" window after entering cmdwin
- 7077c59295 extui: reset message state after "search_cmd" message (#34119)
- 7e787f6a4f extui: route interactive messages to more-window (#33885)
- b2a5105c66 extui: search highlighting in extui "more" pager #33792
- d0aedd36df extui: set 'modifiable', 'noswapfile' for buffers (#34582)
- 56709ca168 extui: setup buffers after activating `eventignorewin` (#35915)
- 8e8f4523c6 extui: translate <Tab> in cmdline text (#34055)
- cb036cae5f extui: use visible to determine active "more" (#34327)
- a96665cf48 extui: using tracked message column in cleared buffer (#34154)
- c973c7ae6f extui: write each message chunk pattern separately (#34188)
- 8af28ab9cb filetype: error when `vim.filetype.match{buf=fn.bufadd('a.sh')}` #34155
- 7500f76e61 filetype: fix typo (#37286)
- 095b9f98f3 filetype: handle invalid `bufnr` in _getlines(), _getline() #36272
- e2cb675705 filetype: move fallback logic to vim.filetype.match() #30141
- d131d67e67 float: clamp floating window above cmdline #37899
- 3ccba4cdff float: crash from nasty :fclose autocmds (#36134)
- d4f2b9050d float: cursor visible in "hidden" floating window #30866
- 66e4784f5a float: ensure relative window grid is allocated (#34459)
- eb3201c772 float: null pointer dereference, redundant call #36727
- 3b6e8e484e float: prevent truncation of title that fits exactly #36880
- 31c814a0ed float: respect statusline=3, don't inherit local 'statusline' #36716
- 5943a81fe7 float: style=minimal leaks into normal windows #25185
- cb171ee7cb float: tail truncate long title #28387
- 9269a1da35 floatwin: handle viewport width properly at end of window (#35490)
- 66dddd8b51 folds: adjust filler text drawing for transparent folds
- 1d9990daac folds: avoid unnecessary loop with horizontal scrolling (#33932)
- d73cfefed5 folds: error when deleting lines at end of buffer #35396
- 19715e6e8a fs: expand drive-relative paths on Windows #37084
- d22fcf2917 gO: use non-breaking space #34197
- ac6cf5b03b gen: alias /doc/user/helptag.html to /doc/user/helptag/ #38156
- 805dd5d047 gen: prevent "make doc" failure due to temporary files
- 67fede0fc9 gen_help_html: ASCII art rendering in docs #35262
- a49bf5e1d3 gen_help_html: parser override
- 4b02d1f6f6 gen_vimdoc: unnecessary assert for non-source files
- d2ca90d87e glob: handle numeric literals in pattern matching (#37257)
- 3991f14621 glob: handling commas in letter pattern #34170
- aeebc51851 grid: assert crash during extreme resize layouts #36847
- 1ad9cdd403 grid: check allocated grid size when suspicious scrolling
- 856391bc7f health: "q" keymap not set when health.style=float #37007
- a33284c2c0 health: accept TERM=tmux-direct #35511
- c28113dd9d health: add back `vim.cmd.redraw()` call (#37576)
- 3fb53abe2a health: attempt to concatenate table value #36369
- 8a901a52e1 health: avoid silent failure
- 2422fbdd5f health: bad format() call #34904
- 672f6e60c1 health: bug-report formatting, version check #36809
- 61678811d8 health: check more "old" files #38028
- 31cb37687a health: check shell performance using vim.fn.system() #36980
- 16c8a908ef health: check stable release for non-nightly build #36715
- d927a87ed6 health: checkhealth float opens extra empty buffer #33648
- f19653e370 health: emit Progress message #37123
- cfe10b4014 health: errors in :checkhealth with pyenv-virtualenv #35865
- bd37348939 health: expecting nonexistent "inotifywait" function #33312
- 28b7c2df52 health: floating window closes when opening TOC (gO) #34794
- e4ce0c7270 health: git check and autocmd clean #36713
- 6152bcf42e health: hard fail on invalid "python-*" bin #35382
- 6942dec9b2 health: highlight group conflicts with help #34616
- bfc7bae421 health: improve version check for nightly builds #38147
- 07f048a8d7 health: message should mention "vim.provider" #33095
- e9d03b92b6 health: redraw after emitting progress message #37567
- 06e4b159ed health: show full curl output
- f311c96973 health: update advice for Python #35564
- ae93639ec4 health: use FileType autocmd for bug report winbar #37486
- 1c52e90cd5 help: :help can focus unfocusable/hide window #34442
- 4a4de73043 help: better align local-additions #38097
- 25322a3a3b help: only set url for help files in $VIMRUNTIME #36165
- e49a592595 help: retry once if async parsing fails #36592
- 62d3a2110d help: wrong tag url in third-party help docs #36115
- 625c59fe5f highlight: Normal-linked groups shouldn't override CursorLine #35026
- 64966ba52c highlight: allow ephemeral extmarks past final newline #35888
- e23c083d13 highlight: avoid null deref, misc issues #38164
- 444c195edb highlight: blend underline check and use struct key for attr cache
- d5a8c9d766 highlight: correct change detection in do_highlight for gui colors
- e3c36f31e3 highlight: ensure extmark range is within buffer bounds #35928
- a7177e34c3 highlight: link HLF_8 to something more prominent #34910
- 3af43cffa0 highlight: no match highlight during :substitute prompt #33262
- 336b46a879 highlight: preserve background transparency in 'winblend' #34302
- 5803994a1c highlight: preserve bg transparency with winblend=100 #34825
- bd12aef784 highlight: refresh highlight attrs before message output #25737
- 6af8958055 highlight: respect 'winhighlight' in CursorLine Normal check #36927
- f8d59cfab9 highlight: setting 'winhl' doesn't work with global ns (#37868)
- 64753b5c37 highlight: spurious underline in 'winblend' floating window #34614
- a26cdcb20e inccommand: skip input() during preview #35272
- f348c0ebba incsearch: include compsing characters with Ctrl-L
- a04c73cc17 input: discard following keys when discarding <Cmd>/K_LUA (#36498)
- 592582ba48 input: don't exit on EOF when peeking for input with -es (#36948)
- 29c8dabd41 insexpand: update showmode when updating the screen (#34466)
- e0308dc147 install: only install "tee" on Windows #36629
- cd71221250 intro: crash on small screen #38397
- 4fe51dfdae iter: ArrayIter:last returns nil when filtered to empty #34697
- eaa9aca130 jobs: jobstart(term=true) accepts width/height #33904
- 11e82c108d l10n: update Ukrainian translations #37654
- 16c1334399 langmap: assert failure on mapping to char >= 256 (#37291)
- 14fe370564 logging: don't overwrite NameBuff (#38004)
- ea5007b37f lps: separate namespaces for pull/push diagnostics #37938
- bf4710d8c3 lsp: "attempt to index nil config" #36189
- f068386c9f lsp: "bold" border for vim.lsp.buf.hover #33395
- a9b8a8dc6c lsp: _cancel_all_requests() tries to cancel completed requests #34105
- 97ab24b9c7 lsp: _get_workspace_folders does not handle root_dir() function #36071
- a03ab03a10 lsp: `:lsp restart` restarts on client exit #37125
- 6005fcf671 lsp: `opts.wrap` always `true`
- 4b0700c618 lsp: `vim.Range` check in `document_color.color_presentation()` (#38374)
- d6fffe6b32 lsp: access correct client capability path in `supports_registration`
- 3eaa6c5a66 lsp: add `RequestFailed` error code constant #34645
- c3589753a0 lsp: add `vim.deprecate` call to `vim.lsp.with` (#37960)
- bd41f6eb6c lsp: add deprecation comment to `gen_lsp` (#36185)
- 9f99bf48ea lsp: add missing argument validations (#34519)
- 378435968f lsp: adjust codelens position based on the server-provided range
- 35756022cb lsp: advertise supported fold kinds (#34461)
- 4db58f78b4 lsp: announce `normalizesLineEndings` capability (#34175)
- bac133e4b6 lsp: announce diagnostic tag support (#34436)
- fed9069b8d lsp: avoid `foldclose()` after current window-buffer changed #33901
- 2debe2f30a lsp: avoid automatic request after leaving insert mode (#35767)
- fde0b487fb lsp: avoid re-enabling `document_color` on `registerCapability` (#35774)
- 6f733f4a9b lsp: avoid scheduling client deletion before LspNotify #37685
- 2ee896201c lsp: better handling of "*" configs
- 0501c5fd09 lsp: call `on_list` before reading `loclist` #37645
- 653871da1b lsp: check `nvim.lsp.enable` before `doautoall` #36518
- e94d8f03b9 lsp: check for lens range in `vim.lsp.codelens.run()` (#35294)
- 1bc85d29c1 lsp: check for non-nil buffer state on reset (#36519)
- bbfcde3ab2 lsp: check if buffer is valid in scheduled client:on_attach() #35672
- c789d79966 lsp: check if buffer is valid when resolving code lenses (#35092)
- 0862c1036a lsp: check if client is stopping before reuse #33796
- 42f244bf18 lsp: check whether buffer is valid when scheduled #35461
- 0dc900d744 lsp: clear document_color autocmds #34573
- ace254c9ff lsp: close floating preview window correctly #34946
- a702534c50 lsp: close timer when client exits (#36795)
- b4ba27c238 lsp: codelens extmark line out of range (#35070)
- f2d0b06ecb lsp: completion word includes leading space from label #38435
- 3342aead1d lsp: consistent use of `vim.notify`/logging with unsupported methods
- 55e3a75217 lsp: convert the encoded position to line byte (#34824)
- 8165427b4d lsp: correct capability checks for dynamic registration (#36932)
- 82d0883c2d lsp: correct diagnostic data support and related info capabilities (#34454)
- 2822c38f2e lsp: correct iteration through attached buffers (#36517)
- 213360c389 lsp: custom 'winborder' in make_floating_popup_options() #34868
- 342974773c lsp: cycling signatures with the default `config.focusable`
- 40aef0d02e lsp: decode 'null' in server responses as vim.NIL #34849
- b67eff38fe lsp: deduplicate completion items #36166
- e62dd13f83 lsp: default ClientConfig.exit_timeout to false #36811
- 70ea589d79 lsp: deprecate `vim.lsp.get_buffers_by_client_id` (#36449)
- b938638d2d lsp: deprecate `vim.lsp.protocol.Methods` (#35998)
- f7802dd5d5 lsp: deprecate vim.lsp.set_log_level, vim.lsp.get_log_path #35274
- 8315697449 lsp: detect if Client:request resolved synchronously #33624
- 0cc4f53b40 lsp: do not clear the codelens on the last line #38226
- 18e8839c80 lsp: don't create an `'LspAttach'` `document_color` autocommand
- 90abd2613d lsp: don't empty server start-boundary by next client response #37665
- 0472119fe6 lsp: don't immediately force shutdown when using a timeout (#36455)
- c2c5a0297e lsp: don't overlay insertion-style inline completions (#36477)
- afebbd0f34 lsp: don't override `config.title` in `vim.lsp.buf.signature_help()` #35075
- 729111d3a3 lsp: don't treat MarkedString[] with language id as empty #35518
- ff792f8e69 lsp: enable insertReplaceSupport for use in adjust_start_col #36569
- 8495d96238 lsp: ensure `bufstate` when calling `vim.lsp.document_color.is_enabled`
- f168d215cf lsp: ensure augroup before querying autocmds #38254
- e239179871 lsp: ensure bufnr is passed for buffer-local requests (#36325)
- 40dc2d02a8 lsp: ensure the codelens on the first line is visible
- 9f77124b78 lsp: error on omnifunc completion (#37790)
- 82b844fefe lsp: fallback to empty `capability_path` in `supports_registration`
- 927927e143 lsp: fix error with InsertReplaceEdit events #33973
- 23f4fab0bd lsp: fix incorrect params because of typo (#36871)
- 34116bbd9b lsp: fix nil-index error for `:lsp enable` (#37411)
- 20a392fe38 lsp: fix window to set cursor for inline completion (#36444)
- 4ee2e365a5 lsp: fix workspace diagnostic request to follow spec (#34674)
- 913b05bf63 lsp: format_item should return string (#36025)
- 7c3df3e2ea lsp: get_namespace signature (#38449)
- a8ffa6e323 lsp: guard dynamic capability attachment #38382
- abc96ba0ce lsp: handle `nil` buffer state in `documentColor` clear (#33746)
- 8e48c02061 lsp: handle array with empty string when checking empty hover (#35423)
- 507cd63418 lsp: handle completion/resolve response arriving after on_insert_leave
- 1de77c608f lsp: handle nil request in semantic tokens #36780
- 26cc42e426 lsp: handle nil response in references request #35139
- 5653b25e9b lsp: handle non-string documentation in completion items #38291
- 95dce376f3 lsp: handle providers without subcapabilities
- eaacdc9bdf lsp: ignore empty response on trigger completion #37663
- a0678a5849 lsp: ignore inline completions after leaving insert mode (#36476)
- 7ebfc50775 lsp: ignore invalid fold ranges (#36708)
- 8bfb91accc lsp: ignore stale codelens resolve responses (#38153)
- 5d1fd4aca5 lsp: improper diagnostic end_col computation
- 1f558f8d09 lsp: improve diagnostics handling and comments
- ed562c296a lsp: improve dynamic registration handling #37161
- 5c15df449a lsp: improve error completion message #33812
- cd06e0c9d6 lsp: include client ID when receiving unknown fold kind (#34535)
- 6005bc68b2 lsp: include context for each client in multi-handler results (#34669)
- b459bf5961 lsp: include missing LSP methods and update type annotations
- 18d6436ad2 lsp: inlineCompletion: ignore out-of-range items #35990
- 820fb89172 lsp: make thematic break parsing conform to GFM spec (#35162)
- 13cf80deef lsp: map all LSP methods to server capabilities (#37910)
- 2f78ff816b lsp: misleading logs in non-applicable filetypes #35749
- d976834864 lsp: nil error in ColorScheme autocmd
- 3c4acc0f1a lsp: noisy log message when enabling server without config #36264
- 91e116f3a6 lsp: only auto-detach lsp.config clients #33834
- e5c5b563ec lsp: only auto-detach lsp.config enabled clients #34325
- eb90f5d9e3 lsp: only resolve LSP configs once (#38007)
- 6926fc1615 lsp: opts.reuse_win does not jump if buf is already open #33476
- 4778a4c201 lsp: prevent flicker in codelens virtual text #34888
- 9e93bfdb5f lsp: prioritize showing active signature
- b98aefc584 lsp: properly handle `documentColor` from multiple servers #33656
- c39d18ee93 lsp: raise error when lsp config is invalid type (#37508)
- addd408b39 lsp: redraw codelens after request completed #38352
- 03032d1f73 lsp: remove `vim.lsp.diagnostic.reset()` (#35938)
- 285ea2525f lsp: remove extra notify on empty hover
- 34815777b2 lsp: remove side-effects if `vim.lsp.enable()` raises an error (#37571)
- 181df60533 lsp: remove unused `ns` field
- 371ad48135 lsp: replace `string` types with LSP method alias type annotations where appropriate. (#36180)
- 6a49a277f5 lsp: request diagnostics from all registrations
- 0da9827673 lsp: respect documentation markup kind in completion preview #38338
- 4ef5624729 lsp: restore Client:stop() force-stopping behavior (#35800)
- 0db8efcbe4 lsp: restore virtual document color visibility (#38407)
- 4dd9137215 lsp: reuse_win prioritizes windows/tabs currently displayed #36486
- 70460d557c lsp: scope inline_completion autocmds to buffer (#35965)
- 323d5527ee lsp: set 'linebreak' in floating windows (#36275)
- 4b8980949c lsp: set concealcursor='' in LSP floating windows #36596
- c3991b8ef4 lsp: show notification with empty hover response (#35014)
- 5b1b46ea5a lsp: show title when global winborder is set (#35181)
- 8a94daf80e lsp: simplify semantic tokens range request logic #36950
- 4ed597389c lsp: snippet preview blocked completionItem/resolve request #38428
- 0197f13ed4 lsp: sort items when completeopt include fuzzy #36974
- d53d542359 lsp: stop and close timer when `Capability` is destroyed
- a768d0a95b lsp: stop repeatedly resuming dead coroutine #35743
- 1d8e9b5d07 lsp: store result id for unchanged diagnostic reports
- 8b5d8dfc73 lsp: support `containerName` in symbol requests #35029
- 17c18efbe5 lsp: support v:count in selection_range() #34551
- a1895f024a lsp: support workspace/configuation with no section #27510
- bd225422a5 lsp: tests for :lsp, rename start/stop
- e69b81ad94 lsp: treat 2-triggers-at-once as "last char wins" #35435
- 1f63735f17 lsp: treat nil inlay hint result as empty array (#35458)
- f67306cc67 lsp: typos in method names #36077
- 29c6176f08 lsp: unify LSP error logging prefixes #38354
- 9139c4f90f lsp: update capability maps (#35227)
- db1b7f7412 lsp: update completion items on `TextChangedP`
- 7a8d316879 lsp: update metamodel (#38174)
- 6c3e9b5573 lsp: update on `CursorHoldI` cause users unable to `select()`
- 848c7a7894 lsp: update window title when cycling through signatures #35407
- 006101360d lsp: use LSP method type in more places (#36069)
- 36db6ff2c1 lsp: use LSP textEdit range for completion start boundary (#37491)
- 34c769dd89 lsp: use `bufnr` when getting clients in `symbols_to_items` (#33760)
- 807bc00dd6 lsp: use `vim.notify` with action-less `showMessage` requests (#34720)
- 5fbc5ab810 lsp: use correct `workspace.diagnostics` capability key (#35937)
- 00ad477419 lsp: use correct deprecation function (#34518)
- 6fe68abdf5 lsp: use entire line as completion word (#37949)
- 1d7823451e lsp: use vim.notify for all message types #34489
- f90cd620c5 lsp: vim.lsp.completion clean up triggers on client detach (#38009)
- 5c4b64aae5 lsp: wait for exit_timeout on quit #37597
- 6bb6b47933 lsp: wait to display exit message #37925
- 5554fcc286 lsp: warn on missing config in :checkhealth #33087
- 0cda018345 lsp/diagnostic: key resultId by client and identifier
- 7a5e9ef0aa lsp/diagnostic: use diagnostic provider identifier for code actions #38401
- f0c0c24ed7 lsp/health: always use vim.inspect to show root_markers (#34667)
- 5ad01184f3 lsp/health: ensure valid table before concatenating (#34092)
- 1906da52db lua: close vim.defer_fn() timer if vim.schedule() failed (#37647)
- 103ddaf9ae lua: correct line number reporting for options set in coroutines (#37463)
- b986fd96bc lua: coverity "unreachable" warning #35874
- 40f5115ac4 lua: disable `strict_indexing` when converting LSP positions
- 1264d1156c lua: don't leak timer when vim._watch.watch() fails (#35768)
- c08139d790 lua: don't remove first char of non-file stacktrace source (#37008)
- 9a5641b4b5 lua: drop support for boolean `buf` in `vim.keymap` #38432
- 66066d0f6a lua: extra CR (\r) in `nvim -l` output #38048
- b87bdef2a8 lua: relax `vim.wait()` timeout validation #36900
- 6a330f893b lua: report error in Lua Funcref callback properly (#35555)
- 1aa26f5d55 lua: separate vim.{g,b,w,t} types #37081
- 94144d4678 lua: vim._with() doesn't save boolean options properly (#37354)
- 89b946aa87 lua: vim.diff is nil in uv.new_work() thread #34909
- 40351bbbbe lua: vim.validate `message` param #33675
- bc0635a9fc lua: vim.wait(math.huge) fails #36885
- b3324be0d8 man.lua: :Man ignores section of gzipped manpage #38235
- 87bd16e470 man.lua: :Man slow/hangs if MANPAGER is set #36689
- 5333d6371b man.lua: E95 when piping to :Man #33068
- a8dd5c7e41 man.lua: noisy "ENOENT" error on Windows #33409
- 46220afef8 man.lua: show_toc condition may cause infinite loop #36979
- b8763cb215 man.lua: useless executability check #33438
- 84d3bbef23 map: use names like Map_key_value not Map_keyvalue
- 218ea9fff7 mappings: always include replace_keycodes in mapping dicts (#37272)
- 3341ab0776 marks: clamp conceal_lines corrected line number #33464
- 5773f0e994 marks: make jumpoptions=view work with 'smoothscroll' (#38339)
- 064ff74cdb marks: wrong display after inserting/deleting lines #33389
- 033f1123cd marks: wrong line('w$', win) with conceal_lines (#37047)
- 37c0efb21c marktree: fix edge case bug regarding changing intersections
- 2154d325d5 memfile: avoid potential crash on OOM (#37946)
- 5e470c7af5 menu: fix listing of submenus (#34315)
- 8f9278d7c2 menu: right-click menu fails with E335 when using V after i_ctrl-o #37349
- b47b0caba8 message: concatenate multi-chunk nvim_echo({err}) for exception message #38131
- 3d5ef97a98 message: no wait return for delayed exception error #35881
- 2de284e50b message: set replace_last for completion "scanning" messages #37967
- 3b85046ed5 messages: "list_cmd" kind for :command, :version (#34529)
- ac67098998 messages: "list_cmd" kind for mark commands #33874
- dc3a30cfbb messages: 'exrc' / secure messages
- 96e1acfa42 messages: add "list_cmd" kind to :colorscheme #37561
- 29f2cb89f0 messages: add append parameter to history entries (#34467)
- 8bdfd286e5 messages: adjust msg_show "empty" kind logic (#37427)
- 83037cf218 messages: allocate message history kind string #38292
- c85313bac7 messages: always assign msg_id to msg_show events #37671
- bf1d4e9793 messages: capture execute("messages") with ext_messages (#34342)
- 276860b538 messages: clear 'showmode' message after insert_expand #33607
- 1b2b715389 messages: disallow user-defined integer message-id #38359
- 81828e66b9 messages: emit empty msg_show event for :echo #38467
- 53aad276b6 messages: exclude "search hit BOTTOM" msg from history #36961
- 73157c994d messages: heap-buffer-overflow with shell command (#37855)
- 7a490d65c5 messages: increment message ID without ext_messages #37714
- 912388f517 messages: list_cmd kind for buffer line messages (#33855)
- d86d4bacc1 messages: make swapfile attention message part of prompt (#34414)
- 49c19a1fe3 messages: message not flushed at end of command #37904
- 7c43f8e433 messages: messages added to history missing from ext_messages "g<" #33907
- a81b059a45 messages: non-fast and append for "shell_*" kinds #38188
- 10a03e83e3 messages: only msg_clear for UPD_CLEAR #34688
- e876a739ee messages: recognize cmdline one_key/number prompt State (#34206)
- 96957d80c6 messages: reinstate 'showmode' message delay #37992
- e63346dfe9 messages: reset redirection message column at message start #38068
- a5f236291c messages: single event for multi-expr :echo (#34393)
- f1dcde6cba messages: single msg_show event for :global command #37728
- 986b92eb07 messages: single msg_show event for multiple :set options #33555
- 3898f34c5a messages: spurious newline with --headless + cmdheight=0 #38494
- 41336a3590 messages: swedish translation #37395
- 39c4e0f336 messages: unwanted ext_messages newlines for confirm() #38045
- 4260f73e13 messages: unwanted newlines with ext_messages #37733
- 98f5aa2564 messages: verbose message emitted without kind #33305
- 18fa61049a mouse: crash with click on win-separator in statusline (#33091)
- 7432781e71 mouse: do not fetch clipboard twice when pasting with middle button #33494
- 2f8fb4f28a mouse: mouseclick after conceal_lines is miscalculated #33451
- 32325a66ca move: adjust for concealed lines above topline after scrolling up (#33211)
- 6ce2877327 move: consume skipcol before revealing filler lines (#34143)
- 2069be281c mpack: boundary values for negative integer encoding #37255
- b8ee354f12 msgpack: flush incomplete big UI event before packing RPC event
- 7f2d5d6883 msgpack: use fixstr encoding for strings of length 20-31 #36737
- 41068c77aa normal: assertion failure with "gk" in narrow window (#37444)
- 911337eb3c normal: crash using :norm from vim.ui_attach shell message event #38283
- 4485e715fb options: deprecate 'gdefault', 'magic'
- c2136e3590 options: increase t_Co buffer size (#35859)
- 9910445125 options: make 'cdhome' take effect on any platform
- f4f1149292 options: vim.opt fails for 'fillchars' #37141
- 1f2883e879 outline: use 2-space indent instead of 1-space
- 3d37aa3116 pack: account for Git's "insteadOf" in `:checkhealth` #38393
- bac4cde9cd pack: actually checkout proper version of submodules
- b02d1303b8 pack: add trailing newline to lockfile #38469
- 46648c3867 pack: close confirmation buffer's tabpage by ID #34971
- 0f73873d4f pack: close confirmation buffer, not tabpage #37756
- ee3239fcb6 pack: consistently use "revision" instead of "state"
- f00abc6a56 pack: ensure `data` spec is passed in events during lockfile sync #38139
- d3bea4ace9 pack: ensure consistent order of changelog during update
- ed73ed8283 pack: ensure explicit default `version` in events (where possible)
- 14003bd1c5 pack: ensure plugin directory is created during first usage attempt
- 539b8027a3 pack: explicitly close confirmation window #37861
- fa3920282d pack: handle Git environment variables #35626
- 3b860653ca pack: handle lockfile in case of install errors #36064
- 3f34f083db pack: ignore 'loadplugins' when sourcing 'after/plugin' scripts
- 28e2a5c151 pack: improve `vim.pack.add()` input validation
- 89a72f11e5 pack: make newer version suggestions more robust
- 2e62f3576f pack: open confirmation buffer in tabpage after the current one
- e4e6605943 pack: relax minimal Git version to be 2.0 #36573
- f492f62c3d pack: rename confirmation buffer to again use `nvim-pack://` scheme
- 0fa96585dc pack: set `source` in progress report #38511
- 474e9e9408 pack: show more informative error message if no `git` executable
- 5468e6a452 pack: skip :redraw! if headless #37782
- 8f0b8a2c27 pack: skip `git stash` during install
- b337c6e0fc pack: update `add()` to have default `load=false` during startup
- 1ee18b4061 pack: use 'coxpcall.lua' on non-LuaJIT
- 8200223ee7 pack: use `vim.pack:` as message/progress prefix
- f3f5095630 pack: use full hashes in lockfile and revision description
- eff01b7620 pack: use more correct URI for confirmation buffer name
- 267bbe64cb pack: validate installed plugins in `update()` and `del()`
- a5d6932686 paste: don't use :echo immediately before :redraw (#35773)
- 42aae632be plines: count 'showbreak' in EOL inline virt_text in line size (#35921)
- 6291256868 process: avoid buffering unnecessary UI event with PTY CWD (#37582)
- 19a3b67789 process: avoid unexpected behavior when PTY chdir failed (#37614)
- e051718908 process: don't limit PTY master remaining data size
- 97509aa2be process: handle poll() interrupted by a signal (#38024)
- 8a4719e117 process: use poll() to drain PTY master on Linux (#38005)
- 974bc1b044 process: wrong exit code for SIGHUP on Windows (#38242)
- e5ba875a95 progress: memory leak on progress-message with history=false
- 2415d8f424 progress: message-id not sent to ui with history set to false
- 7bf83cc2a6 progress: require "source" for progress-message #38514
- 0af01948f3 progress: show progress-status only in curwin #38458
- bc6737250d progress: simplify ui-event, introduce default presentation #35527
- 25000be845 prompt: "%" prefix repeated on newlines with formatoptions+=r #34584
- ed4c549ea2 prompt: also store column info in ': mark #36194
- a5eb023a53 prompt: clear undo when changing/appending prompt
- 807a65b2da prompt: cursor on prompt line, disallow ":edit" #34736
- 689a149b08 prompt: don't implicitly set 'modified' #38118
- dbb3986f33 prompt: ensure prompt-mark col gets reseted properly #37669
- 1349233cd1 prompt: heap-buffer-overflow in prompt_setprompt
- 4afbc25432 prompt: heap-buffer-overflows with invalid ': col
- bf9d3e4bf8 prompt: lnum update via nvim_buf_set_lines if buf != curbuf #34833
- b3096b5860 prompt: ml_get error with invalid ': lnum
- ed7ff848a0 prompt: prompt mark not placed after text edits correctly #34671
- 602cbbe1d9 prompt: prompt_setprompt cursor col adjustment
- 3a10405214 prompt: prompt_setprompt does not adjust extmarks, no on_bytes
- 2a5d687cc9 prompt: prompt_setprompt sets cursor col unnecessarily
- 16bf7652b7 prompt: prompt_setprompt with unloaded buffer, ': with lnum 0
- 51dc752e6c prompt: wrong changed lnum in init_prompt
- 7641177c5f prompt: wrong cursor col after prompt_setprompt, no on_lines
- 466b2ac192 prompt: wrong cursor position with cursor keys (#36196)
- acb99b8a65 prompt_buffer: plugins can't set `':` mark #35624
- b4906577c9 provider: misleading :checkhealth if user sets g:loaded_python3_provider=1 #32696
- 51aa64488d provider: support python3.14 #38419
- 7be4e4dd65 pty: prevent orphan conhost.exe on Windows 10 #38244
- ef0386fe9a pum: adjust info window column offset when scrollbar is present (#37069)
- 76fdd9b882 pum: crash when resizing grid with pumborder set (#36404)
- 2681e1fce3 pum: fix heap-buffer-overflow with 'rightleft' (#33146)
- 7d569abb20 pum: handle RightDrag on parent grid properly (#33626)
- 922816877f pum: hide info floating window when insufficient space (#37107)
- d87972f920 pum: keep info window aligned with pum when above #38251
- 445cb751e6 pum: pumborder=shadow not blending properly (#37328)
- 0712a9c87b pum: separate scrollbar from shadow border (#37448)
- 686e7aca40 pum: simplify 'pummaxwidth' truncation and avoid crash
- 5a65321684 pum: text overflows into border on truncation (#37438)
- 106cacc93b pumblend: do not apply special highlight attrs from bg layer #36186
- c80bb5b63e pumborder: wrong layout with pumborder=none #36208
- 6256adde2f quickfix: always split from current window #33807
- 69c379dc44 quickfix: use correct lnume when appending (#34611)
- 7ed8e96994 redraw: update curswant for Visual selection (#34241)
- a141fd2c4d remote: remote-ui connect timeout on slow networks #36800
- 39d8aa0a1a rpc: don't overwrite already received results on error (#37339)
- abd0c882b3 rpc: handle more cases when identifying loopback #36100
- e142e01d57 rpc: include write failure reason in log (#37959)
- db2b774a16 runtime: 'includeexpr' with non-Nvim-style Lua modules #33867
- 9076fdc123 runtime: add "Added", "Changed", "Removed" to "vim" colorscheme (#35704)
- f048298e9a runtime: conceal paths in help, man ToC loclist #33764
- 09f9d72c24 runtime: coverity STRING_NULL #569464 (#34795)
- 923efaea28 runtime: cpoptions is reset in Lua file #33671
- 76f6868e0a runtime: no conceal in qf on :lopen #34854
- 59c45b22d9 runtime: remove erroneously added syntax tests
- 39bb5d7ca2 runtime: stop treesitter highlight in b:undo_ftplugin #38459
- c4c2112b5d runtimepath: crash in :packadd splice optimization #38129
- d995142dbd scripts: collect_typos.lua: show commit message on failure
- 9f90992934 scripts: gen_terminfo clears Windows terminfo definitions #36736
- 130ef73e39 scripts: release.sh
- d04cbb65b9 scripts: use right syntax for choosing ref in "zig fetch"
- 7a71235399 server: serverlist({peer=true}) does not find peer servers #35506
- fc21433167 session: spacebar heater not warm enough #38434
- 2d3dc070ce session: window sizes not stored with float windows (#37344)
- 0dcdd65dcc shada: check return value is 0
- 36dbd2686f shada: don't add '0' mark if f0 in 'shada'
- 1f503ac7c0 shada: don't store empty replacement string
- a6591950f6 shada: don't store search and sub patterns if /0 in 'shada'
- 198c9e9bca shada: preserve marks after delete across sessions (#35795)
- b98eefd803 shada: prevent 'nobuflisted' buffers in v:oldfiles #34373
- 6bee2f686f shada: prevent use-after-free when mapping file marks (#34446)
- 5581a53437 shell: ceci n'est pas une pipe
- 6f904cfef1 snippet: adjacent tabstops without placeholders (#35167)
- ecded994c1 snippet: early return for final tabstop #35115
- 628d569a59 snippet: jumping backwards to choice node (#35062)
- dff78f580d snippet: setting end_right_gravity (#35061)
- 1968029003 snippet: sync tabstop text also if pmenu is visible (#35250)
- 019b2050e1 snippet: use <cmd>call cursor() for visual range
- d077a24f5c socket: avoid stack-use-after-return after timeout (#36405)
- bfe9fa0f8e socket: remove stale socket files (#37378)
- 44f1dbee0d spell: save spell files to stdpath('data')/site/spell #33528
- 9436e7c978 spell: wrong VimEnter autocommands (#36339)
- 0f64f0f5b6 startup: crash in read_stdin #35699
- 30dae87de4 startup: file buf is lost if stdin is empty and "-" is last #35402
- c8c78b531b startup: make startup windows if there are only floating windows (#34349)
- 5c51b45a82 startup: respect $NVIM_APPNAME in $XDG_CONFIG_DIRS paths
- c785d5cdf0 startup: source init.lua from XDG_CONFIG_DIRS
- 5cbb9d613b startup: wait for bg detection before user config #37075
- 32d3dd0650 statusline: broken statusline on error #38000
- c3a4d12529 statusline: check buf valid before redraw #35123
- 8305af9bd2 statusline: clear ruler when it is no longer drawn #33765
- ad330e99d1 statusline: diagnostics spacing #36897
- 1af5ec5b51 statusline: don't require'vim.diagnostic' unless already used
- 0ca9849387 statusline: missing info/hint diagnostics #38307
- af0f7b59b1 statusline: redraw if Visual selection other end changes (#36281)
- e9b6474ae7 statusline: scope truncation bookkeeping
- 63ece2b151 swapfile: don't use uninitialized memory (#35813)
- cbfa7f0d7b swapfile: handle newlines in swapfile list message #35802
- 8b9500c886 system: don't treat NUL at start as no input (#34167)
- 6e2b514813 system: handle SIGINT in --headless mode #36557
- d6d1bfd20d term: terminal attr index may exceed TERM_ATTRS_MAX #34318
- 3e6db5b2ec termdebug: use mark `:` to get prompt line in prompt buffer #37336
- 295fb3fdb2 terminal: :edit should respect 'bufhidden' with exited job (#37301)
- 196df35cca terminal: <Ignore> should be no-op (#37494)
- ad1dfc92a0 terminal: add various missing redraws
- 520568f40f terminal: adjust marks when deleting scrollback lines (#36294)
- 379e307148 terminal: also don't propagate $COLORTERM on Windows (#37699)
- 1519a34e43 terminal: autocmds leave terminal open to wiped buffer
- 61217e3618 terminal: avoid events messing up topline of focused terminal
- 366251a5d2 terminal: avoid multiple terminals writing to same buffer (#37219)
- 5e521c3b5a terminal: avoid tailed cursor in focused terminal in events
- 16da47f474 terminal: changing height may lead to wrong scrollback (#37824)
- 747da13f44 terminal: check `buf` before deleting extmark #38314
- d07cbb2f42 terminal: check size when creating new tabpage
- e56292071a terminal: check size when switching buffers
- f3feae0bbf terminal: crash after deleting buffer lines (#37921)
- 7297e9d339 terminal: crash when TermClose deletes other buffers
- ad85871ca1 terminal: crash when TermClose switches back to terminal buffer
- b67ac8cc6b terminal: crash with race between buffer close and OSC 2 (#37225)
- 459cffc55f terminal: deleting from wrong buffer (#36289)
- b4039ec0b0 terminal: don't allow b:term_title watcher to delete buffer
- 3cd07709ba terminal: don't always leave if enter autocmds delete buffer #38324
- 6a71239cd5 terminal: don't disable scrolloff for non-terminal buffers (#34451)
- 7d6b6b2d14 terminal: don't poll for output during scrollback refresh (#38365)
- 875958c9a1 terminal: don't refresh for sync flush when exiting (#38363)
- 6a409e0507 terminal: don't trigger TextChangedT for unrelated redraws
- ee143aaf65 terminal: emit Termrequest for all OSC sequences #33181
- b5aef05b8f terminal: fix OSC 8 parsing (#34424)
- a2f01953b8 terminal: free the "[Process exited]" msg extmark #38246
- e254688016 terminal: handle ED 3 (clear scrollback) properly (#21412)
- 40bf38fefc terminal: handle OSC 8 split into multiple fragments
- f6ca9262b8 terminal: handle closing terminal with pending TermRequest (#37227)
- e6fae64454 terminal: handle opening terminal on unloaded buffer (#37894)
- 814f2629cb terminal: handle split composing chars at right edge (#37694)
- 1c57e4cb4f terminal: heap UAF from autocmds when entering #38316
- b40880f88f terminal: heap UAF if buffer deleted during TermRequest (#37612)
- 3621af9b97 terminal: inconsistent mode change when switching buffer (#37215)
- 4ef7aa83c4 terminal: keep last cursor if it's on the last row
- df21ac729c terminal: losing output if BufFile* poll for events (#37580)
- b6befc7b03 terminal: losing scrollback when TermOpen polls for events (#37573)
- 9cbc430cfb terminal: missing refresh with partial mappings (#37839)
- c845f1923d terminal: patch various autocommand-related holes
- 9540e7470b terminal: possible heap-use-after-free during Nvim exit
- 72ac9ac9a1 terminal: possible memory leak on exit (#37532)
- 238d4fa71a terminal: possible missing refresh with buffer updates (#38388)
- e6ba78919c terminal: possibly wrong wrow/wcol in active terminal
- 99e754ae02 terminal: remove condition that buf is curbuf (#33721)
- ba6440c106 terminal: reset `w_leftcol` after resizing terminal
- 25ce44845d terminal: restore options properly when switching buffer (#37485)
- 1a1a60bd05 terminal: resuming doesn't work with command in fish (#37857)
- cc7022c544 terminal: scrollback may still be wrong on height increase (#37835)
- 1b627f6c59 terminal: set b_locked when setting &buftype (#37787)
- b28bbee539 terminal: skip setting `string_initial` to false on no-op (#34176)
- 4f6b3e5c15 terminal: spurious buffer update with empty buf (#37920)
- 756751afa3 terminal: stack overflow when too many csi args (#34012)
- 5c156fdc64 terminal: update size after closing window
- b7124ae768 terminal: update winopts and focus when switching terminals
- b88b7f9591 terminal: wrong colors with nvim_open_term() in non-curbuf (#37579)
- 67832710a5 terminal: wrong row in TermRequest with full scrollback (#36298)
- 97d9b85bf9 terminal: wrong scrollback with BufFile* autocommand (#37601)
- 54468c1c3c terminal: wrong scrollback with nvim_open_term() on buffer (#37791)
- 8707ec2644 termkey: out-of-bounds write in array #33868
- 272e041780 tests: don't surpress stderr output
- e702f97518 tests: ignore vector math types
- 2d4b028d02 tests: use correct include path for unittest
- d84e786112 tests: use correct signature for unpacker_teardown()
- c81af9428c tests: use uv.spawn instead of io.popen for unittest helpers
- 61f166ec40 textformat: don't swallow "space" with auto-formatting enabled (#38181)
- e5c2ce5905 treesitter: ":EditQuery [lang]" with injected languages #34914
- 08f4811061 treesitter: :InspectTree wrong title for non-relative path #37965
- 16aab4cb48 treesitter: InspectTree only show the largest injection #37906
- 60af1a1db2 treesitter: clear parse options state #33437
- 5a2edc483d treesitter: close `:InspectTree` with `q`
- b4016f4525 treesitter: don't add final newline if not present #35970
- 28eaec5e15 treesitter: don't memoize modified headings (#33186)
- 8d75910ef9 treesitter: eliminate flicker for single windows #33842
- 5fe582448c treesitter: enable a gc for wasmtime
- 168bf0024e treesitter: ensure TSLuaTree is always immutable
- 99e6294819 treesitter: ensure TSNode's tree is immutable
- 58d85cd03d treesitter: ensure window is valid in async parsing #34385
- d8e03d5d5a treesitter: escape hyphen in lua pattern
- 284b0e4fa2 treesitter: fix `:InspectTree` incorrect injections
- 86c939ba91 treesitter: fix spell navigation on first line (#37361)
- d0822bbd15 treesitter: highlight group for EditQuery captures #36265
- ea878f456a treesitter: ignore stale fold refresh callbacks
- 18e0301e1f treesitter: inconsistent highlight of multiline combined injection #32619
- 0977f70f4d treesitter: injected lang ranges may cross capture boundaries #32549
- 2aa7948266 treesitter: invalidate conceal_lines cache earlier #33875
- 9274532615 treesitter: invalidate conceal_lines marks #33828
- 4e2ed1d03c treesitter: missing `nowait` for :InspectTree keymaps #36804
- 63737e6e73 treesitter: no injection highlighting on last line #36951
- 01817eb6f3 treesitter: normalize language aliases
- cf59631f65 treesitter: not refreshing virtualtext contents #33361
- f82219c490 treesitter: parser metadata annotations
- de45b8e275 treesitter: proper tree `contains()` logic with combined injections
- baabc35987 treesitter: properly clip nested injections
- f2bfde9140 treesitter: reset next_col when performing intermediate highlights
- 3ec63cdab8 treesitter: run FileType autocmds in the context of `<abuf>`
- faae1e72a2 treesitter: scope highlight state per window #34347
- 3eab5bd38a treesitter: set local values of window options
- 29c5559ce1 treesitter: show capture-level priorities in :Inspect #35443
- 8b41df185c treesitter: support multiple `@injection.content` captures
- f8ac713448 treesitter: use metadata in :EditQuery captures #37116
- 5119c03be7 treesitter: use subpriorities for tree ordering
- 756e1eb017 treesitter.foldexpr: duplicate callbacks #37048
- b15b22fc73 trust: :trust command on Windows #36509
- 272dba7f07 trust: support for trusting directories #33617
- 03eb331abf tui: CSI is not ESC (sync mode)
- fb5a51e775 tui: avoid memory leak and compiler warning on Windows (#34225)
- 1949452bd3 tui: avoid using uv_pipe_t as uv_tty_t (#37479)
- 5048d9aa2a tui: call tcdrain() on stdout and stderr on exit (#38154)
- e65c0a0810 tui: check for title support correctly (#34866)
- 17e13ce3b6 tui: clear primary device callback before invoking it (#34032)
- 218ff601c4 tui: do not emit resize screen sequence after host terminal is resized (#35335)
- b1679f0ab6 tui: do not remove SIGWINCH handler when resize events are enabled (#35221)
- 69bddc089f tui: don't call tinput_init() twice (#36386)
- 331de6afa6 tui: don't crash when nvim__screenshot() is called with bad path (#34594)
- c35dde03c8 tui: don't process UI events when suspending or stopping (#33710)
- df23952ce9 tui: don't treat remote TUI as GUI (#36319)
- adbd33027f tui: don't try to add unsupported modifiers (#33799)
- 4a69847df4 tui: don't wait for DA1 response when stdin is closed (#35745)
- d62bbe24cb tui: enable vtpcon strikethrough feature #36762
- 82f08f33c1 tui: ensure all pending escape sequences are processed before exiting #32151
- 142f914089 tui: feature detect vsplit scrolling in xterm-like terminals
- 4b5364b423 tui: forward C0 control codes literally (#33759)
- f64475a226 tui: handle sequence larger than entire buffer
- 50a38d9698 tui: heap-use-after-free when resuming (#36387)
- 1f0dbfea2f tui: log chdir failure properly #37591
- bb6f5c3b31 tui: reset cursor style on exit (#36261)
- 5b5b7eb8d4 tui: reset cursor to default style when guicursor is disabled #38219
- 16680e57ba tui: use 0x7f as Backspace on Windows with VT input (#37679)
- 460738e02d tui: use the correct offset for invisible cursor after sync
- 2dba5abcb2 tui: wait for embedded server's exit code
- b80d390765 tui: wrong default input key encoding (#36440)
- bff7d3fd9f tutor: cannot find tutors in pack/*/start/* #34689
- 4143bcbd37 tutor: escape tutor filename #36539
- e5665754d1 tutor: l:lang is undefined
- f2691199fa tutor: use invalidate field in nvim_buf_set_extmark() #34989
- db1542af3d tutor: use legacy syntax for lesson 3.1 #34996
- 9988d7142d types: add missing @return annotations
- ef48104c31 types: nvim_get_win_config return type #35639
- 1427b94200 typval: allocated dynamic size must be at least the static size
- 072f126453 ui: 'pumborder' parsing, shadow #36127
- 027b7d6bbb ui: :intro not displayed with ui2 #37472
- 531442ddd8 ui: apply 'pumborder' to mouse menu, fix overflow #36193
- 5f9f706462 ui: check for cmdline mode properly (#35202)
- 8aec33e322 ui: clear msg_ruler event with 'rulerformat' #37675
- a8a0bba2f8 ui: close outdated cmdline pum on redraw (#36815)
- a33e5fb1bb ui: cmdline_block events for exmode #37751
- 8d6963a6a0 ui: cmdline_show is not fired after clearing the screen (#36451)
- f02484118c ui: correct condition for "wrap" flag in a floating grid
- 7ca3a56258 ui: don't crash if maximum UI count reached (#37636)
- ad438b6b14 ui: exclude hidden windows from tabline window count #36779
- d01b2611a6 ui: exclude unfocusable windows from 'complete' "w" completion
- c1648cf820 ui: forward 'rulerformat' to msg_ruler event #35707
- d909de2dc2 ui: ignore textlock for vim.ui_attach() callbacks #36278
- 1a3d3b77bb ui: no empty message for substitution match with ext_messages #37600
- d30d91f3a4 ui: only internal messages are unsafe #37462
- 3277dc3b4e ui: postpone UI callbacks during textlock #36803
- 7b8deacc3f ui: preview float doesn't respond to mouse scroll #38270
- 61b6553ee9 ui: proper event ordering for nested cmdline_block events (#35344)
- 506dd7252a ui: remember cursor shape when obscured #37704
- 6657cc3671 ui: repaint separator connectors after all window updates #37852
- 424d30fe97 ui: send multigrid message position and size when the UI is refreshed
- 1d57374c41 ui: textlock still causes issues for UI callbacks #37513
- 703f4037c4 ui: wincmd _ should not increase 'cmdheight' above 0 (#33056)
- c87d92c3b4 ui.open: use "start" instead of deprecated "rundll32" #36731
- ae2829ee35 ui2: ENTER may focus pager in insert/terminal mode #38497
- e198037148 ui2: always route to dialog when cmdline is open #37730
- 8c7bbfba3d ui2: callbacks reference stale message-window handles #37673
- 9655bd560f ui2: don't adjust dialog pos for pum wildmenu (#37695)
- 29a46a11aa ui2: don't change configured message target implicitly #37924
- d8cea8d45d ui2: don't scroll beyond eob in dialog window #36116
- b9451dfd4c ui2: emit FileType event after setting default pager options #36315
- b6c020eb59 ui2: ensure expanded cmdline is closed after :<Esc> (#38187)
- ba6fc90b6f ui2: hide search highlights in msg window #36626
- 6275f533d1 ui2: immediately open target windows on new tabpage (#38170)
- 179e7fccd7 ui2: incomplete :echon message in g< pager #37819
- 4ef217e272 ui2: leftover empty lines in msg window #38059
- dff3028fe7 ui2: move windows to current tabpage
- 844caca881 ui2: multiline/color replaced message, expanded cmdline, error messages #38044
- d80d7a3eb4 ui2: no paging in dialog below expanded cmdline #38489
- 72a557c61b ui2: only copy highlight marks when expanding cmdline #37709
- 301c7065ca ui2: only highlight Ex command lines in the cmdline #38182
- c4ac36bfd9 ui2: only redraw when necessary #36457
- 16495e6863 ui2: only set dialog on_key callback once #37905
- b2adfe775d ui2: show messages in dialog window when entering expanded cmdline #38465
- c94b7b93c0 ui2: start treesitter after deleting cmdline buffer (#36274)
- ea70d2ad85 ui2: unset Search highlighting (#36633)
- 52dd62aa6e ui2: use pager to list consecutively typed commands #38272
- 3038f0191e ui2: wildmenu hidden behind dialog window #37684
- e58a842749 ui2: wrong condition used to detect active pager
- ce9dbd398b undo: u_savecommon uses wrong buffer
- 382963891c undotree: check foldmethod before invoking fold (#36192)
- f40672be99 undotree: clear autocmd correctly #36124
- 645206e87f undotree: error on `undotree.open()` with title as string #36085
- 26bd9bfab8 undotree: highlight extmarks like normal text #36087
- 4598305e0b undotree: mark title field annotation as optional (#36102)
- 9c89212de1 undotree: sync scroll pos with undo #36117
- af5ac7c7ea unittests: use -1ULL to mean UNSIGNED MATH.MAX
- c82f83abb0 ux: drop "Sorry" from messages #38318
- d93e150888 vim-patch: add N/A files and re-sort (#37544)
- d2517acdc5 vim-patch.sh: 'vim-patch:<hash>' token for 'non-patch' commits #36534
- 8bce9342d1 vim-patch.sh: don't treat 1-file runtime-only patch as N/A (#36525)
- 533cc0ab35 vim.diagnostic: improve typing
- 1f9d9cb2e5 vim.fs: abspath(".") returns "/…/." #36583
- 825e182139 vim.fs: avoid fn.fnamemodify in fs.root #37162
- dc5d313d66 vim.fs: joinpath() should ignore empty items #38077
- 14c708634e vim.fs: make `rm()` work with symlink to a directory
- f11f8546e7 vim.fs: root() should always return absolute path #36466
- 28e8190185 vim.hl: nvim_buf_del_extmark on invalid buffer #33331
- da650de277 vim.json: fix truncation of decoded numbers outside lua_Integer's range #35702
- 7a69fefdb9 vim.json: loss of precision on integers >14 digits #34876
- 78bbe53f76 vim.loader: randomized AppImage path pollutes luac cache #35636
- 1363ef7d50 vim.loader: randomized AppImage path pollutes luac cache #36944
- 1fb0126a08 vim.lsp.enable: don't eagerly enable LSP configs during startup #33762
- 49756ebc70 vim.lsp.inlay_hint: requesting inlay_hints even when disabled #32999
- 10ca09a2cb vim.net: always pass response body to on_response #38460
- 69b286c3bf vim.net: filetype detection, mark unmodified #36297
- 12689c73d8 vim.pack: add() stops unexpectedly on package load error #34787
- 89d26d61d2 vim.pack: increase default timeout #36992
- 8e740db70c vim.pack: skip checkout on bad `version` #36038
- 731e616a79 vim.system: clear_env=true gives an invalid env to uv.spawn #33955
- 4eebc46930 vim.system: env=nil passes env=nil to uv.spawn
- 532610388b vim.system: improve error message when cwd does not exist
- 223ac7782e vim.system: unclear non-executable message #33455
- 649ff924d9 vim.version: improve construction of '<=a.b.c' and '>a.b.c' ranges
- 092962b07c vim.version: vim.VersionRange:has(<prerelease>) (#33324)
- e40c5cb06d vterm: handle split UTF-8 after ASCII properly (#37721)
- d9d8c660fd watch: invalid joined path #37973
- bc814cfb2c winblend: treat braille blank (\u2800) as whitespace #32741
- de950f8272 window: avoid referencing cmdline_win after it is closed#35617
- c14de47f1a window: crash closing only non-float if autocmds :tabonly (#37218)
- df62cb3e69 window: crash closing split if autocmds close other splits (#37233)
- 0e7479bb76 window: crash on negative window height with 'winbar' #33250
- 4fadc21e38 window: disallow closing autocmd window in other tabpage
- bf5f7c1591 window: don't add a hsep when out of room if global stl is off
- 0d658660c2 window: don't enter unfocusable or hidden prevwin (#34486)
- b4e3461e3f window: don't leak fold memory with style=minimal #38287
- c7fd0c17b1 window: don't make hidden/unfocusable previous window current #36142
- 7f5b5d34cf window: don't store invalid height in window config (#34885)
- 3a36df9b13 window: handle closing the only non-float in other tabpage
- 9813c00dd3 window: restore b_nwindows if win_close_othertab keeps window
- 403fcacfc1 window: skip unfocusable and hidden floats with "{count}<C-W>w" #33810
- 84d84e9b5b window: style=minimal window loses local options when switching buffers #38138
- da8de99d0b window: use real last buffer of closed window
- d1189ea508 window: win_move_after UAF from naughty autocmds (#37065)
- 52991d8728 windows: don't set window icon on SIGHUP #34260
- 2c04ae9fcc windows: wrong RT_MANIFEST ID in nvim.rc #36406
- 3325536150 winfloat: last_status when changing split to floatwin
PERFORMANCE
--------------------------------------------------------------------------------
- 5edbabdbec add on_range in treesitter highlighting
- f9ce939bf5 scheduler priority clamping on macOS #35488
- 14e94f4617 api: reduce redundant `win_find_tabpage` calls (#35643)
- 4adfc4b7bc events: skip Progress prep if there are no subscribers #35871
- bfe42c84de extui: delay creating windows, buffers and parser (#34665)
- babdab2f70 filetype: vim.filetype.get_option cache miss when option value is false #37593
- f9d2115a35 highlight: allow decoration providers to skip ranges without data
- 1629493f72 lsp: avoid textDocument/definition requests during tag completion (#37260)
- f486f1742e lsp: include `previousResultId` in `DocumentDiagnosticParams` #32887
- 42657e70b8 lsp: optimize content length extraction from rpc headers
- f517fcd148 lsp: use string.buffer for rpc loop
- 92e7d5eaf2 pack: reduce number of 'opt/' directory computations
- 3aa04f7ee4 runtime: hardware accelerated "packadd opt_package"
- 5e64d92411 runtime: vim.trim for long only whitespace strings
- d3e495ce03 snippet: use "[count]|" to move cursor #33571
- 098da1fc2c treesitter: parse multiple ranges in languagetree, eliminate flickering #36503
- e656d7be2e tui: faster implementation of terminfo
BUILD
--------------------------------------------------------------------------------
- 4f97239661 USE_BUNDLED_UNIBILIUM=0 fails #36623
- fb2d736481 add script to collect typo PRs (#35824)
- 813457d5a6 adjust parallel functionaltest target names (#38144)
- 8e922c657c allow comments in deps.txt #35765
- 3f416ef524 bump lua-bitop to 1.0.3 #35063
- 374e869504 distclean: remove zig-related dirs #38013
- d589ce28b0 drop BUNDLED_CMAKE_FLAG, BUNDLED_LUA_CMAKE_FLAG
- 0ddba68607 ensure toolchain is passed to bundled deps #37587
- 10c11c4644 haiku os support #36639
- 8a7c9c971f ignore out-of-source build folder #33191
- 8c5bd841ed lint decorations_spec etc. with lintlua (#34182)
- 6b936002cc make build.zig generate helptags without running "nvim" binary
- 1d70c96e5b move shared.lua to _core/
- f51c54ace6 noisy readability-implicit-bool-conversion warning #38282
- a053186aa7 redundant variable in cmake/Deps.cmake #35924
- 6063ecb649 remove reference to runtime/indent/Makefile (#35935)
- 20e77c5d88 ship "_core/*" as bytecode (built-into Nvim binary)
- 1bf9a07b3e slience new clang-tidy warnings #34539
- 845cb5a527 slience some unwanted clang-tidy warnings
- c567340171 support Cygwin + bundled luajit #36417
- e91224bfaa support static build #34728
- 20225fc330 suppress -Wfree-nonheap-object false positives in lua_cjson #37250
- 092e49d020 unset $TMUX when running tests (#34178)
- 3dbba90ba7 update-alternatives during deb install #37980
- 19ba589946 contrib: add bash completion for nvim #35843
- 4b2cbc2154 desktop: declare "Development" category #37794
- d73f2d9657 emmyrc.json: use StyLua formatter in .emmyrc.json #35196
- 0980617c0d msvc: suppress msvc build warning for different enum types (#34591)
- ceb7eb5230 windows: restore tee.exe on Windows #36363
- 5bb8734fb6 windows: vendor xxd.c #36746
VIM PATCHES
--------------------------------------------------------------------------------
- e27e4052c8 2566a9f: check.vim: Improve po message checks
- 5e6f0e58ed 32a5faa: check.vim complains about overlong comment lines
- cae4fbf973 3456303: check.vim: Use silent command modifier
- 5f86b4b70d 4105ef1: Drop superfluous execute permissions for readable files
- 282a794feb 41adebe: check.vim: detect trailing whitespace
- fc4188ded8 6f585da: Overlong translation files may cause repo to become "dirty"
- c2e0fd1c35 7.4.1886 (#36945)
- 8a4977e286 7a734b7: tests: fix typo in comment (after v9.1.1511)
- 5299967551 8.0.0287: debug mode: cannot access function arguments (#36772)
- c6f0a19206 8.1.0425: ml_get error and crash with appendbufline()
- 5a14a2679d 8.1.0579: cannot attach properties to text
- 36fc266e86 8.1.0636: line2byte() gives wrong values with text properties
- b5e20d7dff 8.1.0654: when deleting a line text property flags are not adjusted
- 76729a2044 8.1.0655: when appending a line text property flags are not added
- ef522420f2 8.1.0753: printf format not checked for semsg() (#37248)
- 441d222c0d 8.1.0857: indent functionality is not separated
- 1e81b54075 8.1.0977: blob not tested with Ruby
- 0c0ef489f9 8.1.1136: decoding of mouse click escape sequence is not tested (#35551)
- b3d29f396d 8.1.1259: crash when exiting early (#35552)
- 00c2e7d89c 8.1.1526: no numerical value for the patchlevel
- 4765d4e059 8.1.1584: the evalfunc.c file is getting too big
- 83f38800e7 8.1.1681: insert stray "{" when listener gets buffer line
- c9b35360ac 8.1.1700: listener callback called for the wrong buffer
- 750c350be8 8.1.1711: listener callback called at the wrong moment
- b79ed66e4a 8.1.1736: viminfo support is spread out
- 89e2f346a8 8.1.1751: when redrawing popups plines_win() may be called often
- 582e0714b5 8.1.1752: resizing hashtable is inefficient (#35563)
- 85bd0b6a03 8.1.1891: functions used in one file are global
- f7c86742e7 8.1.1920: cannot always close a popup when filter consumes all events
- b38ce04283 8.1.1939: code for handling v: variables in generic eval file (#36312)
- 681ec17b50 8.1.1940: script tests fail
- 4aac5908ed 8.1.1957: more code can be moved to evalvars.c
- f89e1eb036 8.1.1964: crash when using nested map() and filter() (#35715)
- ed0f46af62 8.1.1978: the eval.c file is too big
- 183f8cc59d 8.1.1979: code for handling file names is spread out (#36176)
- 3051e8bbb1 8.1.1981: the evalfunc.c file is too big
- d06fdecb97 8.1.2008: error for invalid range when using listener and undo
- 860a7e4d21 8.1.2021: some global functions can be local to the file
- 406f9e3c8c 8.1.2077: the ops.c file is too big
- fadbc0e717 8.1.2127: the indent.c file is a bit big
- 5f3d00a5a6 8.1.2371: FEAT_TEXT_PROP is a confusing name (#35466)
- c81f7aeee2 8.2.0098: exe stack length can be wrong without being detected (#37136)
- 7048c36ba8 8.2.0115: byte2line() does not work correctly with text properties
- 0c24ddb4d8 8.2.0200: Vim9 script commands not sufficiently tested
- 3fc3f5f194 8.2.0223: some instructions not yet tested
- d632ffa243 8.2.0307: Python 3 vim.eval not well tested
- 992eaac082 8.2.0370: the typebuf_was_filled flag is sometimes not reset (#37404)
- f3cfe9a94b 8.2.0371: crash with combination of terminal popup and autocmd (#37433)
- f2df98e849 8.2.0443: clipboard code is spread out #35949
- 758e6db06c 8.2.0512: Vim9: no optional arguments in func type
- ed012b817d 8.2.0844: text properties crossing lines not handled correctly
- 088ba835ed 8.2.0845: text properties crossing lines not handled correctly (#35483)
- dc2d4b07a8 8.2.0853: ml_delete() often called with FALSE argument
- 474c477134 8.2.1123: Python 3 test is old style
- b95413f601 8.2.1555: not all tests are executed on Github Actions
- d65f5a06fe 8.2.1618: Vim9: cannot pass "true" to setloclist()
- ffb4526376 8.2.1667: local function name cannot shadow a global function name
- 865a28155e 8.2.1672: v_lock is used when it is not initialized (#35416)
- 8d3742ae8d 8.2.1679: ":*" is not recognized as a range (#37052)
- b95848a8f1 8.2.1756: Vim9: :let will soon be disallowed (#37063)
- 7ae8860674 8.2.1912: with Python 3.9 some tests fail
- d6607dae41 8.2.1939: invalid memory access in Ex mode with global command
- 1b1a8895bd 8.2.1941: Ex mode test fails on MS-Windows with GUI
- 3694fcec28 8.2.1983: ml_get error when using <Cmd> to open a terminal (#34759)
- ff8edbaa6c 8.2.2198: ml_get error when resizing window and using text property
- b3490536b9 8.2.2403: Vim9: profiling if/elseif/endif not correct
- 1ae7c11392 8.2.2404: Vim9: profiling try/catch not correct
- ffdee3a2e1 8.2.2409: Vim9: profiling only works for one function
- 8b79c32735 8.2.2411: profile test fails on MS-Windows
- b764a1ba93 8.2.2423: missing error message
- 7995e7a89b 8.2.2456: Coverity warning for strcpy() into fixed size array
- dccc35e6e9 8.2.2571: test may leave file behind
- d7cf1b31d5 8.2.2834: Vim9: :cexpr does not work with local variables
- 9a5b3a39f3 8.2.2905: no error when defaults.vim cannot be loaded
- 525c348c29 8.2.2992: Vim9: completion for :disassemble is incomplete
- b480b0cd5d 8.2.3159: cursor displayed in wrong position after deleting line
- e77d15cc5d 8.2.3348: line2byte() returns wrong value after adding textprop
- cd25ca5e0c 8.2.3377: Vim9: :disass completion does not understand "s:"
- 4f71d9ce35 8.2.3383: Vim9: completion for :disassemble adds parenthesis
- e0dcdef181 8.2.3431: completion for :disas sorts local functions first
- cba2f65ee4 8.2.3602: Python3 test fails with Python 3.10 on MS-Windows
- 398cf6d8d3 8.2.3657: Vim9: debug text misses one line of return statement
- a331d187ba 8.2.3662: illegal memory access if malloc() fails (#36939)
- 9f84e01dfb 8.2.3673: crash when allocating signal stack fails
- f15c28ed7a 8.2.3766: converting a funcref to a string leaves out "g:"
- a274bdf2d1 8.2.3767: crash when using NULL partial
- 15d3a83999 8.2.3795: too many #ifdefs
- 992543c361 8.2.3841: Vim9: outdated TODO items, disabled tests that work (#37900)
- f211af3ab7 8.2.3962: build fails for missing error message
- 24675ffa97 8.2.3968: build failure
- 09964b7ef0 8.2.4379: an empty change is reported to a listener
- 08eb133c3f 8.2.4474: memory allocation failures not tested in quickfix code
- ce05990823 8.2.4528: crash when using null_function for a partial
- 7ce17cd2a2 8.2.4529: Vim9: comparing partial with function fails
- 2ba44af7e0 8.2.4548: script-local function is deleted when used in a funcref
- 0c70fbf0d6 8.2.4633: Visual range does not work before command modifiers
- 78292dcc3d 8.2.4636: not using Visual range
- 0fa678c02f 8.2.4637: warning for using uninitialized variable
- cc95a7d8b8 8.2.4738: Esc on commandline executes command instead of abandoning it
- cd543d618d 8.2.4763: using invalid pointer with "V:" in Ex mode
- ffdb316491 8.2.4772: old Coverity warning for not checking ftell() return value
- e96c61d92d 8.2.4773: build failure without the +eval feature
- a979a6237e 8.2.4785: Visual mode not stopped if win_gotoid() goes to other buffer (#37073)
- 90b1202cfb 8.2.4851: compiler warning for uninitialized variable
- b6d0c391fc 8.2.4878: valgrind warning for using uninitialized variable
- eb67f3a6ba 8.2.5017: gcc 12.1 warns for uninitialized variable
- edd99f09c7 8.2.5092: using "'<,'>" in Ex mode may compare unrelated pointers
- f4a33929d9 8.2.5161: might still access invalid memory
- 26641c0c56 9.0.0010: returning 0 for has('patch-9.0.0') is inconsistent
- 2c560d8544 9.0.0025: accessing beyond allocated memory with the cmdline window
- 0d3ee26860 9.0.0057: has('patch-xxx') returns true
- 96a514ed46 9.0.0106: illegal byte regexp test doesn't fail when fix is reversed
- d4a8d169a2 9.0.0113: has() is not strict about parsing the patch version
- 899ec829be 9.0.0145: substitute that joins lines drops text properties (#37108)
- efacb10709 9.0.0154: text properties wrong after splitting a line
- 27eb0aba3c 9.0.0433: Coverity warns for not checking allocation failure
- 9b15d4c756 9.0.0688: debugger does not display the whole command
- 58ee249c2c 9.0.0729: the rightleft and arabic features are disabled
- f60051e00d 9.0.0874: using freed memory when executing unmenu at more prompt
- e51f5e17e1 9.0.0909: error message for layout change does not match action (#37436)
- 72d3506ce9 9.0.1033: tiny build fails because of conflicting typedef
- 3ac981e838 9.0.1066: test function name is wrong
- 69bed0431c 9.0.1427: warning for uninitialized variable
- 08e193633b 9.0.1480: using popup menu may leave text in the command line
- 827cfe4a76 9.0.1653: Amiga: default 'viewdir' may not work
- bd0555ecd4 9.0.1654: MS-Windows: test for default 'viewdir' fails
- b869cf8ddc 9.0.1689: python 3.12 produces warnings and fails test
- 53fd3657cc 9.0.1758: vim9 no class identifiers in stack dumps
- 1afdcb8f2b 9.0.1899: potential buffer overflow in PBYTE macro
- 7c38f428f4 9.0.2023: need more tests for :cq
- d6e5286d2c 9.1.0059: No event triggered before creating a window
- 3e655d3e42 9.1.0063: GTK code can be improved
- 4544cec168 9.1.0117: Stop split-moving from firing WinNew and WinNewPre autocommands
- 60a0e3d0a0 9.1.0151: ml_get_buf_len() does not consider text properties (#37094)
- 2a28149efc 9.1.0359: MS-Windows: relative import in a script sourced from a buffer doesn't work
- 453dfbf7d6 9.1.0535: newline escape wrong in ex mode
- 6ce964aed6 9.1.0539: Not enough tests for what v9.1.0535 fixed
- 17601e709f 9.1.0546: vim-tiny fails on CTRL-X/CTRL-A
- d5a6040967 9.1.0598: fuzzy completion does not work with default completion
- a9aedfbc58 9.1.0605: internal error with fuzzy completion
- 9757b11aaf 9.1.0631: wrong completion list displayed with non-existing dir + fuzzy completion
- d9f4c1db23 9.1.0634: Ctrl-P not working by default
- f4ddbaeb9e 9.1.0654: completion does not respect completeslash with fuzzy
- 786c5fbdec 9.1.0671: Problem: crash with WinNewPre autocommand
- 69a9a25fcc 9.1.0689: [security]: buffer-overflow in do_search() with 'rightleft'
- 71662bbb49 9.1.0695: tests: test_crash leaves Untitled file around
- 5042394241 9.1.0697: [security]: heap-buffer-overflow in ins_typebuf (#37372)
- 532cc88604 9.1.0698: tests: "Untitled" file not removed when running Test_crash1_3 alone
- 11b3699252 9.1.0700: crash with 2byte encoding and glob2regpat()
- 0de85e322a 9.1.0701: crash with NFA regex engine when searching for composing chars
- 8c31b3eeac 9.1.0702: Patch 9.1.0700 broke CI
- 094d3dd3d4 9.1.0703: crash with 2byte encoding and glob2regpat()
- 767a52ba30 9.1.0705: Sorting of fuzzy filename completion is not stable
- 0eb708aa8a 9.1.0721: tests: test_mksession does not consider XDG_CONFIG_HOME
- fbac254511 9.1.0733: keyword completion does not work with fuzzy
- 70bb7999f7 9.1.0748: :keep* commmands are sometimes misidentified as :k
- 62822d750d 9.1.0877: tests: missing test for termdebug + decimal signs
- 94f7302e66 9.1.0893: No test that undofile format does not regress (#37193)
- c5dbee7910 9.1.0918: tiny Vim crashes with fuzzy buffer completion
- 9cc93b6def 9.1.0974: typo in change of commit v9.1.0873
- 44f70b4be1 9.1.1006: PmenuMatch completion highlight can be combined
- c17caca9b7 9.1.1008: tests: test for patch 9.1.1006 doesn't fail without the patch
- 20a7e74444 9.1.1043: [security]: segfault in win_line()
- 3029357520 9.1.1131: potential out-of-memory issue in search.c
- 0af6d6ff5e 9.1.1147: preview-window does not scroll correctly
- 90d59e6c8a 9.1.1178: not possible to generate completion candidates using fuzzy matching
- 17db70f3af 9.1.1181: Unnecessary STRLEN() calls in insexpand.c
- 10fde593f1 9.1.1182: No cmdline completion for 'completefuzzycollect'
- cd95ea5d48 9.1.1185: endless loop with completefuzzycollect and no match found
- 28f6199474 9.1.1197: process_next_cpt_value() uses wrong condition
- e39cdafed9 9.1.1201: 'completefuzzycollect' does not handle dictionary correctly
- e3990f8643 9.1.1202: Missing TabClosedPre autocommand
- 0d3ed7904a 9.1.1211: TabClosedPre is triggered just before the tab is being freed
- dc00b37965 9.1.1212: filetype: logrotate'd pacmanlogs are not recognized (#33412)
- 162edf7b30 9.1.1214: matchfuzzy() can be improved for camel case matches
- f9280cde0a 9.1.1217: tests: typos in test_matchfuzzy.vim
- 797195e0ea 9.1.1219: Strange error with wrong type for matchfuzzy() "camelcase"
- 750e1836af 9.1.1224: cannot :put while keeping indent (#33076)
- 0af780e8df 9.1.1228: completion: current position column wrong after got a match
- 2331c52aff 9.1.1243: diff mode is lacking for changes within lines
- b20fc95c1a 9.1.1245: need some more tests for curly braces evaluation
- e2e0f92f17 9.1.1246: coverity complains about some changes in v9.1.1243
- ae98d0a560 9.1.1247: fragile setup to get (preferred) keys from key_name_entry (#33102)
- e4172bcbdf 9.1.1249: tests: no test that 'listchars' "eol" doesn't affect "gM"
- 62da4e2949 9.1.1250: cannot set the maximum popup menu width
- cb31663663 9.1.1252: typos in code and docs related to 'diffopt' "inline:" (#33143)
- 36d143e707 9.1.1253: abort when closing window with attached quickfix data
- 675ee057e0 9.1.1255: missing test condition for 'pummaxwidth' setting
- 52b19e0124 9.1.1257: Mixing vim_strsize() with mb_ptr2cells() in pum_redraw()
- 89bc945554 9.1.1258: regexp: max \U and \%U value is limited by INT_MAX (#33156)
- 431c037709 9.1.1260: Hang when filtering buffer with NUL bytes (#33192)
- e4f37481ff 9.1.1261: No test for 'pummaxwidth' non-truncated items (#33193)
- b64c2d763e 9.1.1262: heap-buffer-overflow with narrow 'pummaxwidth' value
- 76cbe9c8f8 9.1.1263: string length wrong in get_last_inserted_save() (#33194)
- 8a40213eb3 9.1.1265: tests: no tests for typing normal char during completion (#33239)
- e5ddf7ae7d 9.1.1266: MS-Windows: type conversion warnings (#33264)
- 5cdfa3324f 9.1.1268: filetype: dax files are not recognized
- 8cf413e450 9.1.1269: completion: compl_shown_match is updated when starting keyword completion
- 4983fa45fc 9.1.1271: filetype: Power Query files are not recognized
- b01921cb55 9.1.1272: completion: in keyword completion Ctrl_P cannot go back after Ctrl_N
- e8785c2e94 9.1.1276: inline word diff treats multibyte chars as word char (#33323)
- 00eff4b196 9.1.1283: quickfix stack is limited to 10 items
- 1c723b2e6f 9.1.1284: not possible to configure pum truncation char
- 8af9f8ab5e 9.1.1286: filetype: help files not detected when 'iskeyword' includes ":" (#33377)
- 454abde1aa 9.1.1287: quickfix code can be further improved
- c73a827564 9.1.1288: Using wrong window in ll_resize_stack() (#33397)
- 51a967d58a 9.1.1289: tests: no test for matchparen plugin with WinScrolled event (#33411)
- 7c15987444 9.1.1290: tests: missing cleanup in test_filetype.vim (#33420)
- aba33c72f0 9.1.1291: too many strlen() calls in buffer.c
- f3b38b46eb 9.1.1292: statusline not correctly evaluated
- 6e5671b00d 9.1.1296: completion: incorrect truncation logic
- aa47c8efa9 9.1.1297: Ctrl-D scrolling can get stuck #33453
- fd76646a95 9.1.1298: define_function() is too long (#33457)
- 287955cfb4 9.1.1299: filetype: mbsyncrc files are not recognized
- 9272dc9597 9.1.1300: wrong detection of -inf (#33474)
- 7651c43252 9.1.1301: completion: cannot configure completion functions with 'complete'
- c249389adb 9.1.1302: Coverity warns about using uninitialized value
- d2d1b5e944 9.1.1303: missing out-of-memory check in linematch.c (#33487)
- 7da1639a14 9.1.1304: filetype: some man files are not recognized
- b0f97177d4 9.1.1305: completion menu active after switching windows/tabs (#33488)
- 54d6055098 9.1.1306: completion menu rendering can be improved
- e3e8dfe99c 9.1.1307: make syntax does not reliably detect different flavors (#33498)
- 1de276bbcd 9.1.1308: completion: cannot order matches by distance to cursor (#33491)
- afca5b564e 9.1.1309: tests: no test for 'pummaxwidth' with non-truncated "kind"
- f9f6dc4262 9.1.1310: completion: redundant check for preinsert effect (#33505)
- b6acf6112b 9.1.1311: completion: not possible to limit number of matches
- 95a255a548 9.1.1312: tests: Test_backupskip() fails when HOME is defined (#33504)
- 857ff5cae9 9.1.1313: compile warning about uninitialized value
- ccdb37b075 9.1.1314: max allowed string width too small
- b4c759716a 9.1.1315: completion: issue with fuzzy completion and 'completefuzzycollect' (#33520)
- e2e6c159d3 9.1.1317: noisy error when restoring folds from session fails
- 0251a25541 9.1.1318: tests: test_format fails
- c67398d31b 9.1.1319: Various typos in the code, issue with test_inst_complete.vim (#33527)
- 255bf6e5b1 9.1.1320: filetype: alsoft config files are not recognized
- 1b0dedb81c 9.1.1321: filetype: MS ixx and mpp files are not recognized
- dca8b3fede 9.1.1322: small delete register cannot paste multi-line correctly (#33531)
- 328640aed0 9.1.1323: b:undo_ftplugin not executed when re-using buffer
- da20804a6a 9.1.1325: tests: not checking error numbers properly
- d3cded796c 9.1.1326: invalid cursor position after 'tagfunc' (#33556)
- 9fafdcb99c 9.1.1327: filetype: nroff detection can be improved
- 98ec3fdf74 9.1.1328: too many strlen() calls in indent.c (#33563)
- f3c4fec43f 9.1.1329: cannot get information about command line completion
- 07d60e8f19 9.1.1331: Leaking memory with cmdcomplete()
- 63689deb45 9.1.1337: Undo corrupted with 'completeopt' "preinsert" when switching buffer (#33600)
- 3d126ec89f 9.1.1338: Calling expand() interferes with cmdcomplete_info()
- ac8ae1596c 9.1.1340: cannot complete :filetype arguments (#33602)
- fcabbc2283 9.1.1341: cannot define completion triggers
- 41179a6bc1 9.1.1342: Shebang filetype detection can be improved
- 4ddd31de14 9.1.1343: filetype: IPython files are not recognized
- 31e31273bc 9.1.1344: double free in f_complete_match() (after v9.1.1341)
- 766cd01ff2 9.1.1346: missing out-of-memory check in textformat.c (#33639)
- d75410b091 9.1.1349: CmdlineLeavePre may trigger twice
- c64cada12e 9.1.1350: tests: typo in Test_CmdlineLeavePre_cabbr()
- afcc4e95d5 9.1.1351: Return value of getcmdline() inconsistent in CmdlineLeavePre
- d107375f0c 9.1.1353: missing change from v9.1.1350
- 65a4c8f3ca 9.1.1357: Vim incorrectly escapes tags with "[" in a help buffer
- 074a6abd55 9.1.1359: filetype: GNU Radio config files are not recognized
- da3eeb4b32 9.1.1360: filetype: GNU Radio companion files are not recognized
- 627c648252 9.1.1361: [security]: possible use-after-free when closing a buffer (#33820)
- 73f2286f08 9.1.1370: CI Tests favor GTK2 over GTK3
- 6b955af875 9.1.1373: 'completeopt' checking logic can be simplified
- 15d31fe7a6 9.1.1374: completion: 'smartcase' not respected when filtering matches
- 05dab80d8d 9.1.1375: [security]: possible heap UAF with quickfix dummy buffer
- d95b0a5396 9.1.1376: quickfix dummy buffer may remain as dummy buffer
- 8605f5655b 9.1.1378: sign without text overwrites number option (#33942)
- ef5c5dc99b 9.1.1380: 'eventignorewin' only checked for current buffer
- 4b3a9ac413 9.1.1381: completion: cannot return to original text (#33966)
- e4c4d672b5 9.1.1383: completion: 'isexpand' option does not handle space char correct (#33999)
- e01f196e44 9.1.1384: still some problem with the new tutors filetype plugin
- d539a952da 9.1.1385: inefficient loop for 'nosmoothscroll' scrolling (#33992)
- 6b9665a507 9.1.1387: memory leak when buflist_new() fails to reuse curbuf
- f87b6230f1 9.1.1388: Scrolling one line too far with 'nosmoothscroll' page scrolling (#34023)
- f2aec4bc05 9.1.1389: completion: still some issue when 'isexpand' contains a space (#34026)
- 2fda267faf 9.1.1393: missing test for switching buffers and reusing curbuf
- ec5f054dc9 9.1.1395: search_stat not reset when pattern differs in case (#34058)
- 99384fcd9c 9.1.1396: 'grepformat' is a global option (#34060)
- dc6885dc24 9.1.1398: completion: trunc does not follow Pmenu highlighting attributes (#34084)
- 153a910897 9.1.1402: multi-byte mappings not properly stored in session file (#34131)
- f791ae82e5 9.1.1404: wrong link to Chapter 2 in new-tutor
- 071dcab68f 9.1.1405: tests: no test for mapping with special keys in session file (#34146)
- bd01bd6564 9.1.1407: Can't use getpos('v') in OptionSet when using setbufvar() (#34177)
- f2373a89d7 9.1.1408: not easily possible to complete from register content (#34198)
- eeff6ca8ff 9.1.1409: using f-flag in 'complete' conflicts with Neovim
- 2411f924a3 9.1.1410: out-of-bounds access with 'completefunc'
- c4e52d604c 9.1.1413: spurious CursorHold triggered in GUI on startup (#34195)
- bec1449cc5 9.1.1416: completion limits not respected for fuzzy completions
- 6c4ddf607f 9.1.1417: missing info about register completion in complete_info() (#34219)
- 2763d06100 9.1.1419: It is difficult to ignore all but some events (#34245)
- 0471cc7595 9.1.1420: tests: could need some more tests for shebang lines
- f1f106be3d 9.1.1421: tests: need a test for the new-style tutor.tutor (#34267)
- 9bfd0162dc 9.1.1422: scheduling of complete function can be improved
- 525c02a89f 9.1.1424: PMenu selection broken with multi-line selection and limits
- eb10852804 9.1.1426: completion: register contents not completed
- 97ca92f9dd 9.1.1428: completion: register completion needs cleanup
- f89381e05c 9.1.1431: Hit-Enter Prompt when loading session files
- 1c417b565e 9.1.1432: GTK GUI: Buffer menu does not handle unicode correctly (#34313)
- 6171ab7f4e 9.1.1433: Unnecessary :if when writing session
- 552983515f 9.1.1435: completion: various flaws in fuzzy completion (#34335)
- 2b79d9ba1a 9.1.1437: MS-Windows: internal compile error in uc_list() (#34379)
- d2dad30898 9.1.1439: Last diff folds not merged (#34380)
- bcfc22853a 9.1.1441: completion: code can be improved
- 78e2f62516 9.1.1442: tests: Test_diff_fold_redraw() is insufficient (#34407)
- 7a58cf4b96 9.1.1443: potential buffer underflow in insertchar() (#34408)
- 72f4bb9ae8 9.1.1444: Unused assignment in set_fuzzy_score()
- bcba067dc2 9.1.1445: negative matchfuzzy scores although there is a match (#34409)
- 2c80b05cbd 9.1.1446: filetype: cuda-gdb config files are not recognized
- ac772706cc 9.1.1447: completion: crash when backspacing with fuzzy completion
- 5075043823 9.1.1449: typo in pum_display()
- 612f8e7c9e 9.1.1450: Session has wrong arglist with :tcd and :arglocal (#34430)
- 1abcd9fe28 9.1.1452: completion: redundant check for completion flags (#34434)
- 3a2ac2300b 9.1.1454: tests: no test for pum at line break position (#34462)
- 3e984cf02b 9.1.1463: Integer overflow in getmarklist() after linewise operation (#34532)
- ae0981070e 9.1.1464: gv does not work in operator-pending mode (#34534)
- 5cf135f9a0 9.1.1466: filetype: not all lex files are recognized
- fb8dba413f 9.1.1467: too many strlen() calls (#34572)
- 487112d674 9.1.1468: filetype: bright(er)script files are not recognized
- 8ed6f00ab0 9.1.1471: completion: inconsistent ordering with CTRL-P (#34571)
- ee2fc31b36 9.1.1473: inconsistent range arg for :diffget/diffput (#34588)
- 534ec8d447 9.1.1475: completion: regression when "nearest" in 'completeopt' (#34607)
- 7f3249fa0d 9.1.1476: missing out-of-memory checks in cmdexpand.c (#34624)
- 7138cdaef8 9.1.1477: no easy way to deduplicate text
- 11f8e8eb63 9.1.1478: Unused assignment in ex_uniq()
- a0f3fdba58 9.1.1479: regression when displaying localized percentage position
- 3bf27b2c74 9.1.1481: gcc complains about uninitialized variable
- 0b91e9f83b 9.1.1482: scrolling with 'splitkeep' and line() (#34670)
- a565774bfc 9.1.1483: not possible to translation position in buffer (#37099)
- 504327020d 9.1.1484: tests: Turkish locale tests fails on Mac
- dd707246fd 9.1.1490: 'wildchar' does not work in search contexts
- ee717447dd 9.1.1491: missing out-of-memory checks in cmdexpand.c
- 9a44bbd574 9.1.1493: manually comparing positions on buffer
- 66f02ee1fe 9.1.1498: completion: 'complete' funcs behave different to 'omnifunc' (#34718)
- da42f99eb4 9.1.1501: filetype: flix files are not recognized
- 18cfbf8fb2 9.1.1502: filetype: quickbms files are not recognized
- 0a14ac3261 9.1.1503: filetype: haxe files are not recognized
- fc1be07d28 9.1.1504: filetype: numbat files are not recognized
- 6ebcb4a4d6 9.1.1505: not possible to return completion type for :ex command
- eef62e815d 9.1.1506: tests: missing cleanup in Test_search_cmdline_incsearch_highlight() (#34748)
- bb75610d99 9.1.1507: symlinks are resolved on :cd commands (#34758)
- c48dea20f5 9.1.1508: string manipulation can be improved in cmdexpand.c (#34755)
- 9c04eb02ad 9.1.1509: patch 9.1.1505 was not good
- 46727a7feb 9.1.1510: Search completion may use invalid memory
- 11e967d5af 9.1.1511: tests: two edit tests change v:testing from 1 to 0
- 85e6feedb0 9.1.1512: completion: can only complete from keyword characters (#34798)
- cf5506f0fd 9.1.1516: tests: no test that 'incsearch' is updated after search completion (#34808)
- 3177841bdf 9.1.1517: filetype: autopkgtest files are not recognized
- 6fd2a3040f 9.1.1518: getcompletiontype() may crash (#34819)
- 842ca1fd5c 9.1.1519: tests: Test_termdebug_decimal_breakpoints() may fail
- 27daeb0d68 9.1.1520: completion: search completion doesn't handle 'smartcase' well (#34840)
- c3c8d25293 9.1.1521: completion: pum does not reset scroll pos on reopen with 'noselect' (#34836)
- ef0ec7edac 9.1.1526: completion: search completion match may differ in case
- 5fe310c5e6 9.1.1528: completion: crash with getcompletion()
- db7c2acbc6 9.1.1532: termdebug: not enough ways to configure breakpoints (#34851)
- 00f8f94d5b 9.1.1535: the maximum search count uses hard-coded value 99 (#34873)
- d4074b812d 9.1.1538: tests: string options in gen_opt_test.vim not fully sorted (#34891)
- f487ae90cf 9.1.1539: completion: messages don't respect 'shm' setting (#34923)
- 7631302ad6 9.1.1544: :retab cannot be limited to indentation only (#34939)
- 4195b82ec9 9.1.1548: filetype: OpenFGA files are not recognized
- 8bccd07972 9.1.1549: filetype: pkl files are not recognized
- 8964ad45da 9.1.1550: defaults: 'showcmd' is not enabled in non-compatible mode on Unix
- 5cfdd4d8b9 9.1.1551: [security]: path traversal issue in zip.vim (#34951)
- 77c6cae25b 9.1.1552: [security]: path traversal issue in tar.vim
- 436ae1d23e 9.1.1554: crash when omni-completion opens command-line window
- fcec1610e7 9.1.1555: completion: repeated insertion of leader (#34962)
- e6ce067f02 9.1.1556: string handling in cmdexpand.c can be improved (#34966)
- 4f0ab9877b 9.1.1557: not possible to anchor specific lines in diff mode (#34967)
- be35864318 9.1.1559: tests: Test_popup_complete_info_01() fails when run alone
- 9d1333a385 9.1.1563: completion: ruler may disappear (#34977)
- b91613f42c 9.1.1567: crash when using inline diff mode (#35005)
- 0f9b5dd0b4 9.1.1570: Copilot suggested some improvements in cmdexpand.c (#35006)
- bbc368dfce 9.1.1571: CmdlineChanged triggered to often
- b6b793634a 9.1.1572: expanding $var does not escape whitespace for 'path' (#35010)
- 22d1fb8c01 9.1.1573: Memory leak when pressing Ctrl-D in cmdline mode
- 9377db2545 9.1.1576: cannot easily trigger wildcard expansion (#35022)
- f7af0cff35 9.1.1590: cannot perform autocompletion (#35141)
- e40199c6c6 9.1.1594: completion: search completion throws errors (#35198)
- 5aaee7d2af 9.1.1596: tests: Test_search_wildmenu_iminsert() depends on help file (#35210)
- 1f7ab25915 9.1.1598: filetype: waybar config file is not recognized
- 53ac2ad20a 9.1.1599: :bnext doesn't go to unlisted help buffers (#35216)
- 52c2519095 9.1.1600: using diff anchors with hidden buffers fails silently (#35218)
- 7230296bdb 9.1.1601: Patch v8.1.0425 was wrong
- 62f2b10db3 9.1.1602: filetype: requirements-*.txt files are not recognized
- b1e35cbd7b 9.1.1603: completion: cannot use autoloaded funcs in 'complete' F{func}
- 36361d6e4a 9.1.1604: completion: incsearch highlight might be lost (#35236)
- 798cb0f19a 9.1.1605: cannot specify scope for chdir() (#35239)
- e3913c0fc2 9.1.1606: filetype: a few more files are not recognized (#35268)
- e7dfbf1343 9.1.1607: :apple command detected as :append (#35237)
- fe42c81f2e 9.1.1608: No command-line completion for :unsilent {command}
- 5f23aaba00 9.1.1609: complete: Heap-buffer overflow with complete function
- 1969f685af 9.1.1610: completion: hang or E684 when 'tagfunc' calls complete() (#35243)
- 77500c5ad5 9.1.1611: possible undefined behaviour in mb_decompose() (#35275)
- 1eca030fb2 9.1.1612: Ctrl-G/Ctrl-T do not ignore the end search delimiter
- 9e8d551b1e 9.1.1613: tests: test_search leaves a few swapfiles behind
- f79430e2ce 9.1.1615: diff format erroneously detected (#35276)
- f0d8341984 9.1.1618: completion: incorrect selected index returned from complete_info() (#35284)
- dae79f2b67 9.1.1619: Incorrect E535 error message (#35285)
- 47e3aecb78 9.1.1620: filetype: composer.lock and symfony.lock files not recognized (#35291)
- dd306bd48a 9.1.1621: flicker in popup menu during cmdline autocompletion
- 9d85f086d9 9.1.1622: Patch v9.1.1432 causes performance regressions (#35288)
- 013af17ed9 9.1.1623: Buffer menu does not handle unicode names correctly (#35353)
- 50ceac4054 9.1.1625: Autocompletion slow with include- and tag-completion (#35318)
- 35be59cc7b 9.1.1626: cindent: does not handle compound literals (#35319)
- 869000e7ce 9.1.1627: fuzzy matching can be improved
- 2619a749a5 9.1.1628: fuzzy.c has a few issues
- e38e65b86c 9.1.1630: tests: fuzzy bufname completion test doesn't match successfully
- 7afcfb6c9a 9.1.1632: memory leak in fuzzy.c
- 8d154e5927 9.1.1633: Search pattern shown incorrectly with negative offset (#35337)
- 4019d3050d 9.1.1638: completion: not possible to delay the autcompletion
- 577f9fa1be 9.1.1640: Unicode has deprecated some code-points (#35358)
- 37119ad0d2 9.1.1645: fuzzy.c can be further improved (#35371)
- 43bf045005 9.1.1646: MS-Windows: completion cannot handle implicit drive letters
- ba25f3e4d4 9.1.1647: filetype: Cangjie files are not recognized
- 3e57c5216f 9.1.1648: MS-Windows: some style issues with patch v9.1.1646
- 25bc41847e 9.1.1649: attrs allocation and fuzzy growarray could leak (#35383)
- 6ef996a082 9.1.1657: Autocompletion adds delay
- b9699d5701 9.1.1665: Outdated comment in eval.c (#35436)
- 639f9f4cda 9.1.1667: Another outdated comment in eval.c (#35438)
- 963ead29d9 9.1.1670: completion: autocomplete breaks second completion
- 810a234978 9.1.1672: completion: cannot add timeouts for 'cpt' sources (#35447)
- 3b5337ab6c 9.1.1676: completion: long line shown twice
- 29f30ad91c 9.1.1679: unclear what key causes CmdlineLeave autocommand (#35677)
- 523371b044 9.1.1681: tests: no test for actually moving cursor with 'acl' (#35452)
- 821bfc02fb 9.1.1685: Missing changes from PR 18068 (#35482)
- dab31a3637 9.1.1687: filetype: autoconf filetype not always correct
- 4263ec21c2 9.1.1688: potential buffer overrun in bufwrite.c (#35497)
- c741927883 9.1.1689: CmdlineChanged not triggered by <Del> (#35496)
- b116ed7b12 9.1.1690: Missing recursion guard in dos/unix_expandpath() (#35499)
- 8a1afac653 9.1.1693: tests: test_filetype fails in shadow dir
- 117b129378 9.1.1694: filetype: Buck eXtension Lang files are not recognized (#35504)
- 3586e047e6 9.1.1695: Need more Vim script specific tests (#35500)
- 61712cbc3a 9.1.1697: tests: no test for aclocal.m4
- 2ac00f1350 9.1.1698: Some error numbers are not documented (#35522)
- 24020ef2dd 9.1.1700: Multiline ignorecase specific pattern does not match with 'ignorecase' (#35520)
- c961361406 9.1.1701: tests: failure on CI with GUI and ASAN in test_edit.res
- a3b1159949 9.1.1702: tests: test_edit still fails on CI
- c333d64663 9.1.1709: filetype: kyaml files are not recognized
- 68a2e0ef78 9.1.1713: filetype: fvwm2m4 files are no longer detected
- 1359578abb 9.1.1714: completion: wildmode=longest:full selects wrong item
- 8fc1db043a 9.1.1717: filetype: AWS cli alias file is not recognized #35581
- 06df337617 9.1.1718: filetype: kubectl config file is not recognized #35583
- c4c69c5012 9.1.1724: Compiler warning about ununitialized variable in ex_docmd. (#35595)
- 17da1ad8f4 9.1.1730: filetype: vivado journal/log files are not recognized (#35613)
- 0bf4b7898c 9.1.1731: Not using const qualifier for opchars (#35634)
- 0bafbe872b 9.1.1732: filetype: .inc file detection can be improved (#35635)
- 51af2797c2 9.1.1734: Memory leak when allocating match fails (#35646)
- f2bda1effc 9.1.1737: Patch v9.1.1714 introduce a regression for wildmenu
- b51eba9273 9.1.1738: cmdline-autocompletion breaks history navigation
- d784ed7013 9.1.1739: Matches may be listed twice with wildmode=longest,list
- 18f24b85c3 9.1.1740: Memory leak with wildmode=longest,full and wildoptions=pum
- eb19206e03 9.1.1742: complete: preinsert does not work well with 'autocomplete' (#35692)
- 223f9622df 9.1.1744: tests: Test_skip_wildtrigger_hist_navigation() may fail
- f6ed46c2a7 9.1.1747: completion: redo (.) broken with preinsert and autocompletion (#35698)
- 5a7586a109 9.1.1750: completion: preinserted text highlighed using ComplMatchIns
- e084a99040 9.1.1751: potential buffer-overflow in find_pattern_in_path() (#35705)
- aa33ea86e1 9.1.1752: tests: need another test for v9.1.1750 behaviour
- cf9b7a37cc 9.1.1753: defaults: 'diffopt' option value can be improved (#35727)
- ae588c183f 9.1.1754: :helptags doesn't skip examples with syntax
- 7b8b9d270f 9.1.1758: Diff mode crashes when adding text property in autocommand (#35760)
- 61d7d983d6 9.1.1761: 'ruler' is set in defaults.vim
- 051b8b88c8 9.1.1762: completion: selected item not cleared on <BS> with 'ac'
- 114336ac1d 9.1.1763: filetype: kitty config files are not recognized
- e7ff132708 9.1.1764: filetype: CODEOWNERS file not recognized (#35789)
- 95267b664c 9.1.1769: completion: "preinsert" insert wrong word with 'smartcase' and 'autocomplete' (#35834)
- 0763a85f43 9.1.1771: complete: some redraw issues with 'autocomplete'
- e2166661d4 9.1.1772: completion: inconsistent selection of first item with 'autocomplete' (#35835)
- c9f6267402 9.1.1773: Crash in BufLeave after BufUnload closes other windows (#35830)
- 39a21d749d 9.1.1774: cannot calculate sha256 of a Blob
- e3f15d5424 9.1.1775: filetype: Mamba configuration files are not recognized #35829
- f91d416403 9.1.1776: completion: "adding" expansion doesn't work with cfc=keyword (#35850)
- d3bd1fba6a 9.1.1777: Mouse click to open fold doesn't work with utf-8 "foldclose" chars (#35851)
- a5955e5cc5 9.1.1778: sha256() treats empty blob and null blob differently
- a70997442e 9.1.1779: completion: 'autocomplete' cannot be enabled per buffer (#35853)
- e887602eb5 9.1.1780: mbyte contains overlapping list of utf_classes table (#35869)
- 0f01cc85bd 9.1.1781: some functions could be defined static
- 7cdf3bb68a 9.1.1783: ins_compl_leader() too far away from ins_compl_leader_len()
- 0c23b863f4 9.1.1787: filetype: not all Sway config files are recognized
- d9fa495608 9.1.1790: completion: Enter does not insert match with "noinsert" (#35917)
- 7b9c063d11 9.1.1797: completion: autocompletion can be improved
- 2aab242a01 9.1.1798: Wrong display with 'sms' and long wrapped virt text at EOL (#35930)
- 35fc4fda99 9.1.1799: completion: crash with autcompletion (#35963)
- f30a33858f 9.1.1800: completion: strange behaviour with 'ac' completeopt=longest,preinsert
- 0fa0717d4e 9.1.1802: 'nowrap' in a modeline may hide malicious code (#35946)
- ff564237d2 9.1.1807: :set doesn't clear local insecure flag like :setlocal does
- 42f1864b62 9.1.1808: Option insecure flags not copied when splitting window
- 756e55dc49 9.1.1810: completion: "longest" doesn't work for manual completion with 'ac'
- c881bc537e 9.1.1817: popup: there are some position logic bugs (#36075)
- df0b9e7a5d 9.1.1818: possible crash when calculating topline in diff.c
- b6b80824cc 9.1.1819: Cannot configure the inner foldlevel indicator (#36010)
- 8151fc59cf 9.1.1820: completion: some issues with 'acl' (#36007)
- 2c76a50e20 9.1.1821: filetype: Not all PKL files are recognized (#36008)
- 0fca343d64 9.1.1823: diff: w_topline may be invalidated (#36018)
- 94bd212dbc 9.1.1824: tests: no test for displaying 'foldcolumn' with Unicode "foldinner" (#36019)
- f8b50bf3b0 9.1.1825: completion: flicker when LSP server is slow (#36020)
- fbaf48cb23 9.1.1827: completion: v9.1.1797 broke Ctrl-Y behaviour (#36040)
- a4a8838178 9.1.1829: filetype: KerML and SysML files are not recognized (#36042)
- 7923e847ca 9.1.1831: stray vseps in right-most 'winfixwidth' window
- d9153d620a 9.1.1833: completion: fuzzy candidates are not sorted (#36062)
- e47529ab56 9.1.1834: MS-Windows: not possible to highlight the title bar
- ba47cb7eda 9.1.1836: 'culopt' "screenline" not redrawn with line("w0") and :retab
- 28355050a8 9.1.1839: Window may have wrong height if resized from another tabpage (#36093)
- b1c41a332d 9.1.1843: tests: Test_search_stat_option() may fail on slow systems (#36110)
- 92b834fc7a 9.1.1849: CTRL-F and CTRL-B don't work in more prompt
- 83c7193c11 9.1.1850: completion: not triggered after i_Ctrl-W/i_Ctrl-U (#36156)
- 93d1473732 9.1.1853: Ctrl-F and Ctrl-B at more prompt not working with key protocol
- d78215f6a2 9.1.1854: unnecessary code in optionstr.c (#36170)
- aeeadddac4 9.1.1858: v:register not reset after Visual mode command (#36215)
- a08aa77e40 9.1.1859: completion: whitespace not cleared with 'ai' (#36218)
- 68a54bfda6 9.1.1868: v:register is wrong in v_: command (#36238)
- 737dd83d1f 9.1.1869: tests: test failures with Python 3.14 and test_python3 (#36310)
- fb6fd17f26 9.1.1870: :Tutor may not work as expected (#36343)
- 5db3544991 9.1.1871: Wrong 'showcmd' in the cmdwin (#36320)
- 2407833ba1 9.1.1872: Cmdline history not updated when mapping <Up> and <CR> (#36334)
- 070f4d3da0 9.1.1875: username parsing bug in netrw plugin (#36348)
- 155efabb15 9.1.1876: pre-inserted text not exposed in complete_info() (#36342)
- f0cf488698 9.1.1877: cindent: wrong indentation after an array declaration (#36340)
- 35d04394aa 9.1.1878: filetype: Soy files are not recognized (#36346)
- 21ea0537e0 9.1.1880: Allocation error with complete_info() (#36360)
- c2781d3db3 9.1.1883: Wrong display with 'smoothscroll' with -diff (#36372)
- 3fb56ff8af 9.1.1885: Wrong restored cursor pos when re-entering buffer after changes
- 3c14646896 9.1.1886: filetype: Android aconfig files are not recognized (#36374)
- c75f547839 9.1.1888: Wrong display with cpo+=$, matchparen and wrapped line (#36385)
- 1fddd74da7 9.1.1889: filetype: not all AppleScript files are recognized (#36411)
- d4106bade7 9.1.1890: %P in 'statusline' doesn't behave as documented
- b92b95e2c2 9.1.1891: g<End> does not move to last non-blank in visual mode (#36354)
- 003b429a86 9.1.1892: Not possible to know once Vim is done with sourcing vimrc (#36429)
- d847548a1c 9.1.1893: ICCF charity will dissolve (#36427)
- 97cb0d5571 9.1.1906: filetype: not all Ruby files are recognized (#36526)
- 02760a30ce 9.1.1908: tests: test_crash.vim times out in CI ASAN builds
- 756043760b 9.1.1909: filetype: .mom files recognized as nroff files (#36543)
- 16e9c21d8d 9.1.1913: Error message with :unlet! and non-existing dictionary item (#36549)
- dc682bcbcf 9.1.1915: :breaklist accepts unprocessed arguments. (#36561)
- 8d72d1ceb4 9.1.1916: WinEnter autocommand confuses Vim when closing tabpage (#36567)
- ef0c522077 9.1.1918: completion: crash with fuzzy completion (#36578)
- a8b9660ca3 9.1.1920: tests: not enough testing for wildtrigger() pum redrawing (#36642)
- 1eec08d1a2 9.1.1922: Wrong virtcol('$') with virtual text at EOL (#36643)
- 30a09bdd7e 9.1.1923: wrong error when assigning to read-only register (#36644)
- 4dc337cda8 9.1.1924: 'commentstring' requires +folding feature (#36645)
- a212fc7745 9.1.1929: completion: spell completion wrong with fuzzy (#36709)
- 812186e2dc 9.1.1930: completion: 'completefuzzycollect' is too obscure
- 19d5b28977 9.1.1931: completion: wrong item selected with fuzzy and noinsert (#36725)
- 2c6469aca4 9.1.1933: completion: complete_match() is not useful (#36726)
- da6edcb91b 9.1.1934: filetype: not all starlark files are recognized (#36743)
- 8310f20526 9.1.1935: filetype: not all Erlang files are recognized
- 3f8e51cee7 9.1.1936: filetype: Erlang lexical files are not recognized
- 3c60598239 9.1.1937: tests: Test_matchfuzzy_initialized() fails
- c9f63d13b6 9.1.1938: tests: excessive wait in Test_matchfuzzy_initialized
- d13e8f1a34 9.1.1939: tests: test_matchfuzzy() leaves swapfiles behind
- 7452a8a568 9.1.1941: tests: Test_execute_register() leaves swapfile behind
- b64e36cef0 9.1.1943: Memory leak with :breakadd expr
- e8fdc7ef9a 9.1.1944: getwininfo() does not return if statusline is visible (#36828)
- c3c8a18af7 9.1.1945: tests: Test_getbufwintabinfo() leaves swapfiles behind
- ac3e2ca675 9.1.1947: [security]: Windows: Vim may execute commands from current directory
- bfe007a187 9.1.1948: Windows: Vim adds current directory to search path
- 69f4fd84aa 9.1.1949: :stag does not use 'swichtbuf' option
- 132567c71f 9.1.1950: tests: Test_tagjump.vim leaves swapfiles behind
- c758423cf2 9.1.1951: tests: Test_windows_external_cmd_in_cwd() only run in huge builds
- ffdc632ea1 9.1.1952: tests: need better tests for tf files
- 4450a45466 9.1.1954: Setting a byte in a blob, accepts values outside 0-255
- d6be2b3312 9.1.1957: filetype: bpftrace files are not recognized (#36838)
- 647f11e6ae 9.1.1958: Wrong display with sign_unplace() and setline() in CursorMoved (#36851)
- ff90032aa5 9.1.1961: :0tab behaves like :tab for :stag when 'swb' contains "newtab"
- 2f9f77cd72 9.1.1962: filetype: Erlang application resource files are not recognized (#36868)
- 3bc9a5b5d2 9.1.1963: diff: missing diff size limit for xdiff (#36877)
- 5235f3663f 9.1.1964: Wrong display when using setline() at hit-enter prompt (#36878)
- 747cf30c37 9.1.1965: q can accidentally start recording at more prompt (#36879)
- 08d7744e13 9.1.1967: if_python: 64bit numbers truncated (#37245)
- 18642a63be 9.1.1969: Wrong cursor position after formatting with long 'formatprg' (#36918)
- 2b02dfa020 9.1.1970: visual end column returns wrong value after block edit (#36923)
- e9da68effe 9.1.1971: Crash when buffer gets deleted inside charconvert during save
- 384a039db7 9.1.1974: tests: missing cleanup in Test_bwipe_during_save()
- f494ce77f1 9.1.1978: tests: Test_smoothscroll_number() may fail (#36965)
- 3985257496 9.1.1979: :helpclose allows range and counts (#36966)
- f5e39560ff 9.1.1980: filetype: N-Quads files are not recognized (#36967)
- 7a866e6b20 9.1.1981: tests: test suite may stop on error in gen_opt_test.vim (#36988)
- 6061169183 9.1.1983: Vim9: class_name definition can be improved
- 4cce77e547 9.1.1984: terminal OSC52 support can be improved (#37543)
- 544bde3acc 9.1.1987: assert_equal() prepends unnecessary ':' when typed
- 3264dfee75 9.1.1989: Vim intro screen shows register message
- c172fd9f46 9.1.1991: :setlocal changes effective global 'omnifunc' (#37013)
- 2860d1e018 9.1.1998: tests: not enough tests for :setlocal omnifunc (#37023)
- f89558848b 9.1.2001: cursor may end up in wrong window after :botright copen (#37056)
- 92910a8ab8 9.1.2007: filetype: bpftrace hashbang lines are not recognized
- 471be48d56 9.1.2008: filetype: hylo files are not recognized
- 49b1a6540f 9.1.2009: tests: "Xm4" test directory may not be deleted
- 2a2c366a3e 9.1.2016: cindent wrong indentation after do-while loop (#37087)
- d7b882697b 9.1.2017: getregionpos() depends on 'linebreak' setting (#37088)
- e53accf8ec 9.1.2019: inconsistent cursor encoding past EOL with ve=all
- 7b5276b382 9.1.2020: tests: test_virtualedit.vim leaves swapfiles behind (#37115)
- c11153b320 9.1.2021: filetype: fluent files are not recognized (#37117)
- 6fa2ebec6b 9.1.2023: [security]: Use-after-free in alist_add() with nasty autocmd
- 1e44a001ec 9.1.2024: 'fsync' option cannot be set per buffer (#37129)
- f4eabcca4f 9.1.2026: tests: patch 9.1.2019 not tested properly
- 7f1d7271d5 9.1.2027: filetype: bicep filetype used for 2 bicep file types (#37130)
- 444e1ffe3e 9.1.2028: [security]: Buffer-overflow with incomplete multi-byte chars (#37133)
- e916f03277 9.1.2030: inefficient use of ga_concat() (#37151)
- 8e80e54478 9.1.2034: filetype: Fennel fnml files are not recognized (#37176)
- bd10f781b8 9.1.2035: filetype: filetype: Fennel fnlm files are not recognized (#37178)
- acc3554439 9.1.2037: undo: cursor position not correctly restored (#37195)
- 01177619bc 9.1.2038: tests: test_marks.vim leaves swapfiles behind
- 6deb1c1bf3 9.1.2040: :tlunmenu incorrectly accepts a range (#37206)
- b7efbbec51 9.1.2041: tests: test_menu.vim leaves swapfiles behind
- ca731d2e55 9.1.2042: filetype: systemd quadlet files are not recognized (#37208)
- 067b5743f5 9.1.2043: filetype: kos files are not reconized
- 6c3502d85a 9.1.2050: tests: Test_cd_completion may fail
- 0dfac68928 9.1.2051: tests: fix Test_cd_completion fails in Appveyor (#37266)
- 97bfc0c99b 9.1.2055: Division by zero in :file after failing to wipe buffer (#37268)
- 661455cc47 9.1.2056: tests: inconsistent indent and line breaking in Test_maparg() (#37269)
- 5f871007d7 9.1.2058: b_locked_split is not checked for :sbuffer
- b075656279 9.1.2059: filetype: Nickel files are not recognized
- a6df0db11f 9.1.2060: filetype: Rasi include files are not recognized
- 0bbbe236aa 9.1.2061: filetype: Koka files are not recognized
- a84bf386d2 9.1.2062: filetype: djot files are not recognized
- 885426f1bf 9.1.2064: completion: segfault during file name completion (#37316)
- 681d006549 9.1.2066: :wqall! doesn't close a terminal like :qall! does (#37314)
- e002e4d7fc 9.1.2068: :bd/bw may try to switch to a closing buffer
- aa959f7b85 9.1.2069: Search wrap indicator not shown w/out 'shm-S' (#37332)
- 930817f100 9.1.2070: completion: autocomplete breaks with large dict (#37331)
- 562bc0b371 9.1.2071: tests: test_ins_complete.vim leaves swapfiles behind
- 2ae56fbb39 9.1.2075: tests: wrong change to test_ins_complete.vim
- e790c87cd8 9.1.2078: A few more typos in various files (#37368)
- aed1f8c377 9.1.2079: use-after-free with 'qftf' wiping buffer (#37364)
- 40fb2818b6 9.1.2085: Use-after-free in winframe_remove()
- ba1d50fdc3 9.1.2086: Memory leak when skipping invalid literal dict
- eb5a7cc0dd 9.1.2087: Crash when using :tabonly in BufUnload
- 03494ad048 9.1.2088: Redundant NULL checks in find_pattern_in_path() (#37432)
- 960cba7b3b 9.1.2090: Last buffer not freed with EXITFREE
- 30bcb25341 9.1.2093: heap-use-after-free when wiping buffer in TabClosedPre
- c52f6eb49a 9.1.2094: filetype: tiger files are not recognized
- b4e602dde5 9.1.2095: :wqall! doesn't quit when using :quit in BufWritePost
- 7470e63260 9.1.2097: TabClosedPre may be triggered twice for the same tab page
- 64057d266c 9.1.2098: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A (#37466)
- 87276db7f9 9.1.2100: filetype: tiltfiles are not recognized (#37477)
- b3242af187 9.1.2102: foldtext not reversed and cut off in 'rightleft' mode
- cd624f24f6 9.1.2103: tests: test_fold.vim leaves swapfiles behind
- e0b724de09 9.1.2105: tests: not enough tests for using plain_vgetc() (#37521)
- f10a1dcf4d 9.1.2107: :normal may change cmdline history (#37523)
- 5a354db7fa 9.1.2108: tests: Test_foldtextresult_rightleft() does not restore 'columns'
- 798ee64287 9.1.2109: filetype: NetLinx fires are not recognized
- d982c00846 9.1.2110: filetype: skhd files are not recognized
- a8a097d178 9.1.2112: long statusline may crash if using singlebyte encoding (#37605)
- ebfbe4db49 9.1.2116: crash when using 'tagfunc' (#37627)
- 47ce93ad6d 9.1.2118: 'cursorline' missing after :diffput to empty buf (#37628)
- 5e1a3df5ae 9.1.2119: tests: Test_language_cmd fails on OpenBSD (#37503)
- 270c7b46af 9.1.2123: using NOT with a float returns a float in legacy script (#37639)
- fede568692 9.1.2128: Heap use after free in buf_check_timestamp()
- bdd886622d 9.1.2130: Page scrolling in Insert mode beeps (#37710)
- db133879b2 9.1.2132: [security]: buffer-overflow in 'helpfile' option handling (#37735)
- 15061d322d 9.1.2133: Another case of buffer overflow with 'helpfile' (#37746)
- 6dd0a7d60a 9.1.2135: tests: tar plugin does not consider 'nowrapscan' (#37752)
- e704529909 9.1.2136: :tab sbuffer may close old tabpage (#37765)
- ed8fbd2e29 9.1.2138: win_execute() and 'autochdir' can corrupt buffer name (#37767)
- 39d8a9c353 9.1.2146: filetype: cel files are not recognized (#37834)
- ff142a7a74 9.1.2147: Compile warning in strings.c (#37842)
- 8605b0b7a9 9.1.{1755,1759} (#35787)
- 7d8653575f 9.2.0004: Changing hidden prompt buffer cancels :startinsert/:stopinsert (#37881)
- b59eba3ada 9.2.0007: cindent: recognizing labels within commented lines
- 77d396caf4 9.2.0009: tests: test_cindent are not ordered
- ac84a3f3b6 9.2.0020: Wrong shortened buffer after :cd with duplicate slashes (#37955)
- 134782b99e 9.2.0023: fix integer overflow in ml_append_int() for long lines
- fadf5fc8db 9.2.0024: Reading files with very long lines crashes with a segfault
- e98a6979ee 9.2.0025: filetype: cshtml incorrectly recognized (#37957)
- c78e276881 9.2.0027: filetype: yara files are not recognized
- 785ac9f228 9.2.0028: matchadd() conceal may use unrelated syntax cchar (#37974)
- 08b8fe5ab3 9.2.0030: completion: non-prefix matches shown when leader is NULL
- b3a3028fd9 9.2.0031: Inefficient use of ga_concat()
- 6e8a1a8988 9.2.0032: completion: hang with line completion and fuzzy
- 93a8acb1b8 9.2.0033: filetype: sh filetype used for env files
- 30d9970cd7 9.2.0036: completion: thesaurus completion incorrect with "longest/fuzzy" (#37996)
- 3f4ef487da 9.2.0040: completion: preinsert wrong with register completion (#38003)
- b775c722dd 9.2.0041: Not always using GA_CONCAT_LITERAL
- 327dcb8970 9.2.0046: filetype: neon files are not recoginzed (#38049)
- a89b9750ee 9.2.0050: WM_SETFOCUS not handled immediately
- 1fe1b2525f 9.2.0054: eval_addblob() is inefficient (#38067)
- 9288357d59 9.2.0055: memory leak in ExpandFromContext() (#38066)
- 7852993f49 9.2.0061: Not possible to know when a session will be loaded (#38071)
- cd4c7850d0 9.2.0070: tests: various tests leave swapfiles around
- 95ddabdb2b 9.2.0074: [security]: Crash with overlong emacs tag file
- e85fc92a6b 9.2.0075: [security]: Buffer underflow with emacs tag file
- 7e8bdd348c 9.2.0077: [security]: Crash when recovering a corrupted swap file (#38104)
- a416494e64 9.2.0078: [security]: stack-buffer-overflow in build_stl_str_hl() (#38102)
- 563f9ef799 9.2.0081: Failed "z=" does not reset 'nospell' setting (#38109)
- 3e81072293 9.2.0088: cannot display tabs for indentation
- 518aa46158 9.2.0090: "leadtab" behavior inconsistent on line with only TABs
- 0cfeedb088 9.2.0091: missing out-of-memory checks in quickfix.c
- 0676503ab5 9.2.0097: Memory leak in qf_push_dir()
- 6ddcc84a6c 9.2.0102: 'listchars' "leadtab" not used in :list (#38142)
- a22c699ecb 9.2.0106: memory leak in expand_findfunc()
- 843bc1aa8d 9.2.0108: byteidx_common() and f_utf16idx() call ptr2len() twice (#38159)
- f1e65bde02 9.2.0120: tests: test_normal fails
- 9a9b9c581c 9.2.0121: patch memory leak in list_extend_func() in list.c (#38205)
- f21c56da84 9.2.0125: tests: test_textformat.vim leaves swapfiles behind
- 9734a6ce47 9.2.0130: missing range flags for the :tab command (#38216)
- c1dcb8dac2 9.2.0131: potential buffer overflow in regdump() (#38217)
- 3a7ade847f 9.2.0132: tests: Test_recover_corrupted_swap_file1 fails on be systems (#38238)
- e5667b9c15 9.2.0137: [security]: crash with composing char in collection range (#38261)
- f847aa6208 9.2.0140: file reading performance can be improved (#38266)
- 6dd634b025 9.2.0143: termdebug: no support for thread and condition in :Break
- 878c9739e1 9.2.0147: blob: concatenation can be improved (#38276)
- d3bca3b7fa 9.2.0152: concatenating strings is slow (#38286)
- f58d24040a 9.2.0155: filetype: ObjectScript are not recognized (#38288)
- 80684a418b 9.2.0159: Crash when reading quickfix line
- 1aaa8e8e3a 9.2.0162: tests: unnecessary CheckRunVimInTerminal in test_quickfix
- 0082cd3134 9.2.0165: tests: perleval fails in the sandbox
- 9ab6c607cc 9.2.0180: possible crash with winminheight=0 (#38335)
- 33b357d01f 9.2.0182: autocmds may leave windows with w_locked set #38332
- e2c3106b85 9.2.0201: filetype: Wireguard config files not recognized
- f577e05522 9.2.0202: [security]: command injection via newline in glob() (#38385)
- a18d51a958 9.2.0204: filetype: cps files are not recognized
- d36e7787c1 9.2.0209: freeze during wildmenu completion (#38386)
- 0655a359ae 9.2.0217: filetype: cto files are not recognized (#38400)
- a969e92249 9.2.0219: call stack can be corrupted (#38406)
- 11b9ec38d2 9.2.0222: "zb" scrolls incorrectly with cursor on fold (#38423)
- e51f217be7 9.2.0223: Option handling for key:value suboptions is limited (#38426)
- fae782557c 9.2.0226: No 'incsearch' highlighting support for :uniq (#38425)
- 416e542992 9.2.0233: Compiler warning in strings.c (#38450)
- 1de1c08210 9.2.0235: filetype: wks files are not recognized (#38451)
- 6dfcb2b784 9.2.0237: filetype: ObjectScript routines are not recognized (#38479)
- f806c77391 9.2.0239: signcolumn may cause flicker (#38477)
- 5a7df03b42 9.2.0265: unnecessary restrictions for defining dictionary function names (#38524)
- ba89354a45 9.2.0270: test: trailing spaces used in tests
- 965f54cf50 96dab9c: check.vim: Further improve po message checks
- 5a83f23430 98a0cbf: patch 9.1.1971: crash with invalid positional argument 0 in printf() (#36919)
- 95b6215f0a c858382: Problem: Commit 6f585d breaks CI
- 1244fe157f ecf90b9: CI: make dependabot monitor `.github/actions` directory (#38383)
- 96e9041a78 partial:8.1.1939: code for handling v: variables in generic eval file (#35968)
- 2a267d1cbf partial:8.2.1328: no space allowed before comma in list
- e31cfc5eac partial:8.2.2400: Vim9: compiled functions are not profiled
- df65f87fd7 partial:8.2.3149: some plugins have a problem with the error check
- 00bec1fd90 partial:8f7256a (#34368)
- 50efe61c3c partial:9.0.0323: using common name in tests leads to flaky tests
- 5671b61327 partial:9.0.0877: using freed memory with :comclear while listing commands
- 92596a37e7 partial:9.0.0907: restoring window after WinScrolled may fail
- 62de643b89 partial:9.0.1570: some tests are slow
- dff515205c partial:9.1.0613: tests: termdebug test may fail and leave file around
- 3f62fe4bd8 partial:9.1.0973: too many strlen() calls in fileio.c
- 42640c62d1 partial:9.1.1004: tests: a few termdebug tests are flaky
- dfd3ac6f48 partial:9.1.1110: Vim tests are slow and flaky
- 5c4d9261a4 partial:9.1.1110: Vim tests are slow and flaky
- ab5c15610f partial:9.1.1371: style: indentation and brace issues in insexpand.c
- a16064ff29 partial:9.1.1639: completion: popup may be misplaced
- cbec4603a0 partial:9.1.1668: items() does not work for Blobs
- 4edeaaa6e2 partial:9.1.1708: tests: various tests can be improved (#35548)
- 7468db5187 partial:9.1.1847: No cmdline completion for :echoconsole and :echowindow (#36157)
- c70e8ef9b7 partial:9.1.1887: string handling in strings.c can be improved
- 5370b7a2e0 partial:9.1.1955: sort() does not handle large numbers correctly (#36840)
- 147190d8e7 partial:9.1.2044: Inefficient use of ga_concat() (#37209)
- 72eb9fe87c partial:9.1.2137: test: Update tests for OpenBSD (#37766)
- 18c5f06c9f partial:9.2.0068: Inefficient use of list_append_string() (#38083)
- b23d00ce99 partial:9.2.0096: has() function is slow due to linear feature scan (#38135)
- 29fa072b34 partial:9.2.0126: String handling can be improved (#38214)
- 4c48f19e51 partial:9.2.0193: using copy_option_part() can be improved (#38369)
Problem:
Using nested `vim.Pos` objects to represent each `vim.Range` object
requires 3 tables for each `vim.Range`, which may be undesirable in
performance critical code. Using key-value tables performs worse than
using array-like tables (lists).
Solution:
Use array-like indices for the internal fields of both `vim.Pos` and
`vim.Range` objects. Use a metatable to allow users to access them like
if they were key-value tables.
---
Problem:
The `vim.Pos` conversion interface for `extmark` indexing does not take
into account the difference in how a position on top of a newline is
represented in `vim.Pos` and `extmark`.
- `vim.Pos`: for a newline at the end of row `n`, `row` takes the value
`n + 1` and `col` takes the value `0`.
- `extmark`: for a newline at the end of for `n`, `row` takes the value
`n` and `col` takes the value `#row_text`.
Solution:
Handle this in the `extmark` interface.
---
Problem:
Not all `to_xxx` interfaces have wrapping objects like `to_lsp`.
Solution:
Return unwrapped values in `to_xxx` interfaces where it makes sense.
Accept unwrapped values in "from" interfaces where it makes sense.
---
Problem:
`start` and `end` positions have different semantics, so they can't be
compared. `vim.Range` relies on comparing the `end` and `start` of two
ranges to decide which one is greater, which doesn't work as expected
because this of the different semantics.
For example, for the ranges:
local a = {
start = { row = 0, col = 22, },
end_ = { row = 0, col = 24, },
}
local b = {
start = { row = 0, col = 17, },
end_ = { row = 0, col = 22, },
}
in this code:
local foo, bar = "foo", "bar"
-- |---||-|
-- b a
The range `b` is smaller than the range `a`, but the current
implementation compares `b._end` (`col = 22`) and `a.start` (`col = 22`)
and concludes that, since `b.col` is not smaller than `a.col`, `b`
should be greater than `a`.
Solution:
- Use a `to_inclusive_pos` to normalize end positions inside of
`vim.Range` whenever a comparison between a start and an end position
is necessary.
Problem:
failures in s390x CI.
Solution:
- runtime/lua/man.lua: parse_path() can return nil but 3 callers didn't handle it.
- skip some tests on s390x.
TODO:
- TODO: why "build/bin/xxd is not executable" on s390x?
- TODO: other failures, not addressed (see below).
OTHER FAILURES:
FAILED test/functional/treesitter/fold_spec.lua @ 87: treesitter foldexpr recomputes fold levels after lines are added/removed
test/functional/treesitter/fold_spec.lua:95: Expected objects to be the same.
Passed in:
(table: 0x4013c18940) {
[1] = '0'
[2] = '0'
[3] = '0'
*[4] = '0'
[5] = '0'
...
Expected:
(table: 0x4005acf900) {
[1] = '0'
[2] = '0'
[3] = '>1'
*[4] = '1'
[5] = '1'
...
stack traceback:
(tail call): ?
test/functional/treesitter/fold_spec.lua:95: in function <test/functional/treesitter/fold_spec.lua:87>
FAILED test/functional/treesitter/select_spec.lua @ 52: treesitter incremental-selection works
test/functional/treesitter/select_spec.lua:63: Expected objects to be the same.
Passed in:
(string) 'bar(2)'
Expected:
(string) 'foo(1)'
stack traceback:
(tail call): ?
test/functional/treesitter/select_spec.lua:63: in function <test/functional/treesitter/select_spec.lua:52>
FAILED test/functional/treesitter/select_spec.lua @ 69: treesitter incremental-selection repeat
test/functional/treesitter/select_spec.lua:82: Expected objects to be the same.
Passed in:
(string) '2'
Expected:
(string) '4'
stack traceback:
(tail call): ?
test/functional/treesitter/select_spec.lua:82: in function <test/functional/treesitter/select_spec.lua:69>
FAILED test/functional/treesitter/select_spec.lua @ 98: treesitter incremental-selection history
test/functional/treesitter/select_spec.lua:111: Expected objects to be the same.
Passed in:
(string) 'bar(2)'
Expected:
(string) 'foo(1)'
stack traceback:
(tail call): ?
test/functional/treesitter/select_spec.lua:111: in function <test/functional/treesitter/select_spec.lua:98>
FAILED test/functional/treesitter/select_spec.lua @ 186: treesitter incremental-selection with injections works
test/functional/treesitter/select_spec.lua:201: Expected objects to be the same.
Passed in:
(string) 'lua'
Expected:
(string) 'foo'
stack traceback:
(tail call): ?
test/functional/treesitter/select_spec.lua:201: in function <test/functional/treesitter/select_spec.lua:186>
FAILED test/functional/treesitter/select_spec.lua @ 216: treesitter incremental-selection with injections ignores overlapping nodes
test/functional/treesitter/select_spec.lua:231: Expected objects to be the same.
Passed in:
(string) ' )'
Expected:
(string) ' foo('
stack traceback:
(tail call): ?
test/functional/treesitter/select_spec.lua:231: in function <test/functional/treesitter/select_spec.lua:216>
FAILED test/functional/treesitter/select_spec.lua @ 307: treesitter incremental-selection with injections handles disjointed trees
test/functional/treesitter/select_spec.lua:337: Expected objects to be the same.
Passed in:
(string) 'int'
Expected:
(string) '1}'
stack traceback:
(tail call): ?
test/functional/treesitter/select_spec.lua:337: in function <test/functional/treesitter/select_spec.lua:307>
ERROR test/functional/treesitter/parser_spec.lua @ 562: treesitter parser API can run async parses with string parsers
test/functional/treesitter/parser_spec.lua:565: attempt to index a nil value
stack traceback:
test/functional/testnvim/exec_lua.lua:124: in function <test/functional/testnvim/exec_lua.lua:105>
(tail call): ?
(tail call): ?
test/functional/treesitter/parser_spec.lua:563: in function <test/functional/treesitter/parser_spec.lua:562>
FAILED test/functional/core/job_spec.lua @ 1157: jobs jobstop() kills entire process tree #6530
test/functional/core/job_spec.lua:1244: retry() attempts: 94
test/functional/core/job_spec.lua:1246: Expected objects to be the same.
Passed in:
(table: 0x401dd74b30) {
[name] = 'sleep <defunct>'
[pid] = 33579
[ppid] = 1 }
Expected:
(userdata) 'vim.NIL'
stack traceback:
test/testutil.lua:89: in function 'retry'
test/functional/core/job_spec.lua:1244: in function <test/functional/core/job_spec.lua:1157>
Problem:
The "restart" event has some problems:
- all UI clients must implement a somewhat complex set of setups
- UI must be on the same machine as the server
- only works for the "current" UI
- race/edge case: If the user config has errors / waiting for input, are
all UIs able to attach while Nvim is waiting for input?
Solution:
- Perform the restart on the server, not the client.
- Pass listen address (instead of CLI args) in the UI event.
- Simplifies UI logic: they only need to attach to new address.
- Opens the door for more enhancements in the future, such as allowing
all UIs to reattach instead of only the "current" UI.
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
Problem:
- Progress-events are filtered by "source". But "source" is not required by nvim_echo.
- Without "++nested" (force=false), nvim_echo in an event-handler does not trigger Progress events.
- vim.health does not declare a "source".
Solution:
- Make source mandatory for progress-messages
- Enable ++nested (force=true) by default when firing Progress event.
- Set "source" in vim.health module.
Problem:
When following this example from our docs the Copilot LSP won't attach.
Solution:
Add `init_options` as done by [`nvim-lspconfig`](1a6d692067/lsp/copilot.lua (L112-L121)).
Problem:
Currently, we recommend always inserting text above prompt-line in
prompt-buffer. This can be done using the `:` mark. However, although
we recommend it this way it can sometimes get confusing how to do it
best.
Solution:
Provide an api to append text to prompt buffer. This is a common
use-case for things using prompt-buffer.
Problem: Progress reports via `nvim_echo()` gained an ability to set
`source` and `vim.pack` doesn't currently set one.
Solution: Set `source` to 'vim.pack'. Ideally, the title then can be
something else more informative (like "update", "download", etc.), but
it is used when showing progress messages. So it has to be "vim.pack"
in this case.
Problem:
Currently, there's no way to distinguish progress messages coming from
different sources. Nor can Progress event be easily filtered based on
source.
Solution:
- Add "source" field to nvim_echo-opts.
- The Progress event pattern is now defined by the "source" field.
- Include the "title" as ev.data.
- Unrelated change: set force=false to disable nesting.
fix(ui2): prevent <CR> from focusing pager in insert/terminal mode
Problem: <CR> in insert/terminal mode can focus pager unexpectedly.
Solution: Don't enter the pager when <CR> is pressed during expanded
cmdline in insert/terminal mode.
Problem: When entering the cmdline below expanded messages, those
messages are moved to the dialog window. The dialog window
supports paging but that is unexpected in this situation where
it just serves to keep (some of, exactly those that were
visible before the cmdline was entered) the messages visible.
Wrong highlight group for dialog "more" message.
Solution: Don't create the `vim.on_key()` dialog pager callback after
entering the cmdline below expanded messages.
Use the MsgMore highlight group for the paging hint title.
Problem:
Currently we are using
if 1 item then
{title}: {percent}%
else
Progress: {AVG}%({N})
dropping {title} and Progress text saves up space in statusline plus makes the format consistent, less jumping around.
Solution:
Use `{AVG}%({N})` for all cases.
Problem:
The fold refresh path for foldminlines/foldnestmax creates a new
FoldInfo and starts an async parse. If FileType or BufUnload re-enters
before that callback returns, foldinfos[bufnr] can be cleared or
replaced. The callback then indexes a stale slot and raises an "attempt
to index a nil value" error.
Solution:
Capture the FoldInfo created for the refresh and carry that object
through the async callback. Before calling foldupdate(), verify that the
buffer still points at the same FoldInfo generation; otherwise ignore
the stale callback.
AI-assisted: Codex
Fixes#38461
Problem: nvim_set_hl always replaces all attributes.
Solution: Add update field. When true, merge with existing
attributes instead of replacing. Unspecified attributes are preserved.
If highlight group doesn't exist, falls back to reset mode.
- Highlight keywords "function" and "namespace" with
the "Keyword" group ("shFunctionKey").
- Highlight function body delimiters "{" and "}" with the
"Delimiter" group ("shFunctionExprRegion").
- Highlight function body delimiters "(" and ")" with the
"Operator" group ("shFunctionSubShRegion").
- Also, follow one style in folding all supported variants
of function bodies for grouping commands too by enclosing
a delimited function body, e.g. "{" and "}", in a fold and
leaving its function header, e.g. "function f()", out of
it when the header is written on a separate line.
To restore previous colouring, add to "after/syntax/sh.vim":
------------------------------------------------------------
hi link shFunctionKey Function
hi link shFunctionExprRegion Function
hi link shFunctionSubShRegion Function
------------------------------------------------------------
fixes: https://github.com/vim/vim/pull/19638#issuecomment-4052635546closes: vim/vim#19638955c02dff7
Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
Problem: JSON files should end with a trailing newline so that Unix
tools work as expected, Git doesn't report "No newline at end of file"
and to avoid noise in diffs from editors and other tools adding the
missing newline.
Solution: Add trailing newline.
Problem: - With expanded messages exceeding cfg.msg.cmd.height, entering
the cmdline scrolls to the bottom and expands to the full "cmd"
buffer text height.
- Cursor in the pager is not always at the last message and at
the bottom of the window when appending to the pager.
- unreliable test: messages2_spec: "closed msg window timer removes
empty lines".
Solution: - Achieve separation of the cmdline and message text by moving
messages to the dialog window when entering the cmdline below
expanded messages.
- Set cursor to start of the first message only when first
entering the pager. Use `norm! zb` to position last message
at the bottom of the window (which shouldn't crash anymore
since 911337eb).
- Increase cfg.msg.msg.timeout used in the test file.
Problem:
Currently same progress stat get's displayed on statusline of all
windows. This is repeatitive and noisy.
Solultion:
Only display progress-status on the focused window
Problem:
Currently, when multiple progress are on going we show it as Progress:
{N} items {percent}% format. It can be simplified sinnce items doesn't
really add enough value for the valuable space it takes in statusline
Solution:
Change format to Progress: {percent}%({N})
Problem:
on_response(err, response) handler doesn't receive a response when an
output buffer or path is supplied to vim.net.request. User might want to
both output output to a file/buffer and also do something with it on
response.
Solution:
If an on_response handler was given, then pass the response to it.
Problem:
Non-trivial to write output of vim.net.request to buffer. Requires extra
code in plugin/net.lua which can't be reused by other plugin authors.
```
vim.net.request('https://neovim.io', {}, function(err, res)
if not err then
local buf = vim.api.nvim_create_buf(true, false)
if res then
local lines = vim.split(res.body, '\n', { plain = true })
vim.api.nvim_buf_set_lines(buf, 0, -1, true, lines)
end
end
end)
```
Solution:
Accept an optional `outbuf` argument to indicate the buffer to write output
to, similar to `outpath`.
vim.net.request('https://neovim.io', { outbuf = buf })
Other fixes / followups:
- Make plugin/net.lua smaller
- Return objection with close() method
- vim.net.request.Opts class
- vim.validate single calls
- Use (''):format(...) instead of `..`
Problem:
Flow layout looks better on neovim.io. Nvim-owned help files should
switch to the new layout. Also lua-bit.txt doesn't use the same format
for function documentation as the other docs (such as api.txt).
Solution:
Switch to new layout. Tweak the function documentation to be in line
with the other docs style.
Problem: clangd prepends a space/bullet indicator to label. With
labelDetailsSupport enabled, the signature moves to labelDetails,
making label shorter. This flips the length comparison in
get_completion_word, causing it to use item.label directly and
insert the indicator into the buffer.
Solution: only prefer filterText over label when label starts with non-keyword
character in get_completion_word fallback branch.
Problem:
`vim.keymap.*.Opts.buf` allows `boolean` aliases for more widely
used `integer?` values, `true` -> `0` and `false` -> `nil`. This
conversion is unnecessary and can be handled at call sites.
Solution:
As a follow-up to deprecating the `buffer` option, drop support for
boolean values for the new `buf` option. The deprecated `buffer`
continues to support booleans for backward compatibility.
Problem: Generating snippet preview in get_doc() populated the
documentation field before resolve, so the resolve request was
never sent.
Solution: Move snippet preview logic into on_completechanged and
the resolve callback so it no longer blocks the resolve request.
Problem: `vim.lsp.enable()` skips all buffers with non-empty `buftype`,
including `help` buffers. LSPs targeting `filetype='help'` never
auto-attach despite help buffers being real files.
Solution: Expand the `buftype` guard in `lsp_enable_callback` to allow
`help` alongside `""`.
Problem:
The "tohtml" plugin is loaded by default.
Solution:
- Move it to `pack/dist/opt/nvim.tohtml/`, it is an "opt-in" plugin now.
- Document guidelines.
- Also revert the `plugin/` locations of `spellfile.lua` and `net.lua`.
That idea was not worth the trouble, it will be too much re-education
for too little gain.
Problem: Option handling for key:value suboptions is limited
Solution: Improve :set+=, :set-= and :set^= for options that use
"key:value" pairs (Hirohito Higashi)
For comma-separated options with P_COLON (e.g., diffopt, listchars,
fillchars), :set += -= ^= now processes each comma-separated item
individually instead of treating the whole value as a single string.
For :set += and :set ^=:
- A "key:value" item where the key already exists with a different value:
the old item is replaced.
- An exact duplicate item is left unchanged.
- A new item is appended (+=) or prepended (^=).
For :set -=:
- A "key:value" or "key:" item removes by key match regardless of value.
- A non-colon item removes by exact match.
This also handles multiple non-colon items (e.g., :set
diffopt-=filler,internal) by processing each item individually, making
the behavior order-independent.
Previously, :set += simply appended the value, causing duplicate keys to
accumulate.
fixes: vim/vim#18495closes: vim/vim#19783e2f4e18437
Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Problem: runtime(compiler): No compiler plugin for just
Solution: Add a compiler plugin for the just command runner, add a test
(Aditya Malik)
Sets makeprg and a custom errorformat to parse just's multi-line
error output into quickfix entries with file, line, column, and
message. Includes a test.
Reference:
- https://github.com/casey/justcloses: vim/vim#19773e147b635fc
Co-authored-by: Aditya Malik <adityamalik2833@gmail.com>