Skip to content

Conversation

Xuyuanp
Copy link
Contributor

@Xuyuanp Xuyuanp commented Jan 13, 2025

For a long time, I’ve been quite annoyed because the floating window for hover and signature help always cuts off a few lines, forcing me to jump into the floating window to see the full documentation. Recently, I finally had the time to investigate the issue and found out that the _make_floating_popup_size function counts empty lines as having zero height.

before:
image
after:
image

Related: #25612

@github-actions github-actions bot added the lsp label Jan 13, 2025
This commit fixes an issue in the LSP utility function `_make_floating_popup_size` where the height calculation for floating popups could result in a height of 0 for empty lines.
The height is now ensured to be at least 1.
@Xuyuanp Xuyuanp force-pushed the fix/lsp-floating-window-height branch from 5656664 to 1ff243a Compare January 13, 2025 10:35
@Xuyuanp Xuyuanp marked this pull request as ready for review January 13, 2025 11:21
@github-actions github-actions bot requested a review from MariaSolOs January 13, 2025 11:22
@@ -1432,7 +1432,7 @@ function M._make_floating_popup_size(contents, opts)
if vim.tbl_isempty(line_widths) then
for _, line in ipairs(contents) do
local line_width = vim.fn.strdisplaywidth(line:gsub('%z', '\n'))
height = height + math.ceil(line_width / wrap_at)
height = height + math.max(1, math.ceil(line_width / wrap_at))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: A comment mentioning that the max is needed to handle this special case would be nice.

@justinmk justinmk merged commit a4f575a into neovim:master Jan 13, 2025
35 checks passed
@zeertzjq
Copy link
Member

backport?

@Xuyuanp Xuyuanp deleted the fix/lsp-floating-window-height branch January 14, 2025 02:06
github-actions bot pushed a commit that referenced this pull request Jan 14, 2025
Problem:
The floating window for hover and signature help always cuts off a few lines,
because the `_make_floating_popup_size` function counts empty lines as having
zero height.

Solution:
Ensure the height is at least 1.

(cherry picked from commit a4f575a)
@neovim-backports
Copy link

Successfully created backport PR for release-0.10:

github-actions bot pushed a commit that referenced this pull request Jan 14, 2025
Problem:
The floating window for hover and signature help always cuts off a few lines,
because the `_make_floating_popup_size` function counts empty lines as having
zero height.

Solution:
Ensure the height is at least 1.

(cherry picked from commit a4f575a)
msaher added a commit to msaher/neovim that referenced this pull request Jan 27, 2025
commit b288fa8d62c3f129d333d3ea6abc3234039cad37
Author: dundargoc <gocdundar@gmail.com>
Date:   Fri Jan 24 15:38:10 2025 +0100

    build(bump_deps): abort if archive doesn't exist

    Also use git tag archive over commit sha if possible.

commit 21aed725d2ac9ef5c6eb2ab631a6e1c3ad9b25fb
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 26 18:35:19 2025 +0100

    vim-patch:db23436: runtime(asm): add byte directives to syntax script

    closes: vim/vim#16523

    https://github.com/vim/vim/commit/db23436b92a1b08e91146ef462482f2c1a79dfe8

    Co-authored-by: Nir Lichtman <nir@lichtman.org>

commit c7d4a77ff9040c8b242f9d12a98472fe6217328c
Author: glepnir <glephunter@gmail.com>
Date:   Mon Jan 27 08:02:33 2025 +0800

    refactor(api): add missing cast #31960

commit 1759b7844a2d468310b6d0ceca899fec6f2d4b84
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Sun Jan 26 15:33:03 2025 -0800

    feat(diagnostic): virtual_lines #31959

commit d84a95da7e11555376a0ce60a0d4b5fbe15892d3
Author: glepnir <glephunter@gmail.com>
Date:   Mon Jan 27 07:28:33 2025 +0800

    feat(api): nvim_get_autocmds filter by id#31549

    Problem:
    nvim_get_autocmds cannot filter by id.

    Solution:
    Support it.

commit b8e947ed4ed04f9aeef471f579451bbf2bb2993d
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 25 16:26:13 2025 +0100

    vim-patch:fb49e3c: runtime(filetype): commit 99181205c5f8284a3 breaks V lang detection

    so make the regex more strict and have it check for a parenthesis.

    See:
    https://github.com/vlang/v/blob/master/examples/submodule/mymodules/submodule/sub_functions.v

    related: vim/vim#16513

    https://github.com/vim/vim/commit/fb49e3cde79de4ce558c86d21a56eb9d60aeabd5

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 974a3f7a438bb772bd681987b25214784c52c7da
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 25 15:41:29 2025 +0100

    vim-patch:9918120: runtime(filetype): Improve Verilog detection by checking for modules definition

    While at it, also increase the maximum number of lines to check to 500.

    fixes: vim/vim#16513

    https://github.com/vim/vim/commit/99181205c5f8284a30f839107a12932924168f17

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit e3e1c1e76581e63ea588a553f9b91f36a61d9d51
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 25 15:40:47 2025 +0100

    vim-patch:509a8d5: runtime(just): fix typo in syntax file

    closes: vim/vim#16515

    https://github.com/vim/vim/commit/509a8d58f9a8ce00744114c1f21f0d951a559ecd

    Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>

commit d4a65dad23b910ad0e5f44cc1720e8bd82bd749b
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 25 23:03:43 2025 +0800

    vim-patch:9.1.1052: tests: off-by-one error in CheckCWD in test_debugger.vim (#32202)

    Problem:  tests: off-by-one error in CheckCWD in test_debugger.vim
    Solution: Fix off-by-one in CheckCWD leading to local tests failure
              (Yee Cheng Chin)

    Vim's test_debugger's Test_debug_backtrace_level test will fail if you
    happen to run it in a Vim repository with full path of directory being
    exactly 29 characters (e.g. `/Users/bob/developing/src/vim`). The test
    does term dump comparison and the printout will overflow if the CWD is
    too long. It does have a function to skip to test if it detects that but
    it's off by one leading to this one situation where it will fail.

    The reason why the logic didn't account for this is that Vim's message
    printing will overflow the text if it prints a message at exactly the
    width of the terminal. This could be considered a bug / quirk but that
    will be another issue.

    closes: vim/vim#16517

    https://github.com/vim/vim/commit/3acfbb4b548f4b1659ff1368a1b626cdd263acbe

    Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>

commit fb1740521aad48ba7ebd797042d869e3d649b91a
Merge: 851137f679 689c23b2ac
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 25 22:57:59 2025 +0800

    Merge pull request #32204 from zeertzjq/vim-9.1.1049

    vim-patch:9.1.{1049,1053}: 'completeopt' "nosort"

commit 689c23b2ac5c8cb5953e45f9f0cf6c369e8d88df
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 25 22:34:54 2025 +0800

    vim-patch:9.1.1053: "nosort" enables fuzzy filtering even if "fuzzy" isn't in 'completeopt'

    Problem:  "nosort" enables fuzzy filtering even if "fuzzy" isn't in
              'completeopt' (after v9.1.1049)
    Solution: Only enable fuzzy filtering when "fuzzy" is in 'completeopt'.
              (zeertzjq)

    closes: vim/vim#16510

    https://github.com/vim/vim/commit/d65aa1bbdb808ef8fecde6df240c48cc39a52a8e

commit 63aa167f944b147b9d4b8c417a37f4beb212d984
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 24 06:44:23 2025 +0800

    vim-patch:9.1.1049: insert-completed items are always sorted

    Problem:  insert-completed items are always sorted, although the LSP
              spec[1] standard defines sortText in the returned
              completionitem list. This means that the server has sorted the
              results. When fuzzy is enabled, this will break the server's
              sorting results.
    Solution: disable sorting of candidates when "nosort" is set in
              'completeopt'

    [1]
    https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItem

    closes: vim/vim#16501

    https://github.com/vim/vim/commit/f400a0cc41113eb75516bdd7f38aeaa15208ba2c

    Co-authored-by: glepnir <glephunter@gmail.com>

commit 851137f67905f6038e51b5b7d1490fbedea4faaa
Author: phanium <91544758+phanen@users.noreply.github.com>
Date:   Sat Jan 25 12:05:47 2025 +0800

    fix(log): log unset $TMPDIR at "debug" level #32137

commit 931ee5591fa764a769946318e05062098baf7c21
Author: georgev93 <39860568+georgev93@users.noreply.github.com>
Date:   Fri Jan 24 22:57:45 2025 -0500

    feat(extmarks): virtual text can be right-aligned, truncated #31921

    Problem: Right aligned virtual text can cover up buffer text if virtual
    text is too long

    Solution: An additional option for `virt_text_pos` called
    `eol_right_align` has been added to truncate virtual text if it would
    have otherwise covered up buffer text. This ensures the virtual text
    extends no further left than EOL.

commit c6d2cbf8f51abfa0c9d244ef384a15b0b69e16c6
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 23 12:42:38 2025 +0100

    fix(lua): pop retval for fast context LuaRef

    Problem:  nlua_call_ref_ctx() does not pop the return value in fast
              context that did not error.
    Solution: Fall through to end; calling nlua_call_pop_retval().

commit d98827b634af29d74079d1848dd5e8c5d2be1233
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Wed Jan 22 23:13:40 2025 +0100

    fix(messages): avoid empty msg_showmode with 'noshowmode'

commit 0fd4ef5da7448fa3449643b23d6aa3af1640efe8
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 17:36:35 2025 +0100

    ci(tests): remove build-types jobs

    Problem: Some CI jobs are redundant: `RelWithDebInfo` is already tested
    on Linux-Arm64; `MinSizeRel` and Ninja Multi Config are not sufficiently
    relevant in practice to spend CI cycles on.

    Solution: Remove `build-types` job.

commit 3702bcb139275beacb9d3d37f833b16d899f5013
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Thu Jan 16 18:08:45 2025 +0100

    ci(tests): add arm64 runner

    Problem: Linux `aarch64`/`arm64` builds are not tested.

    Solution: Add `ubuntu-arm` runners to test matrix (using
    `RelWithDebInfo` build).

commit 2470db02c5136525b8abce1ee0889d94f8d81d98
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 24 08:52:55 2025 +0800

    vim-patch:partial:9.1.1050: too many strlen() calls in os_unix.c (#32188)

    Problem:  too many strlen() calls in os_unix.c
    Solution: refactor os_unix.c and remove calls to strlen()
              (John Marriott)

    closes: vim/vim#16496

    https://github.com/vim/vim/commit/efc41a5958bf25b352e0916af5f57dafbbb44f17

    Omit os_expand_wildcards() change: Nvim's code is more complicated and
    harder to refactor.

    Co-authored-by: John Marriott <basilisk@internode.on.net>

commit 8bc28978b632362ae658f8d4a6327e07a8b371b2
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Fri Jan 24 00:42:24 2025 +0100

    fix(column): apply custom highlight to last 'statuscolumn' segment (#32182)

commit 2cd72258f6be0ea20f0341be9bc0d306c4533535
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Tue Jan 21 11:15:31 2025 +0100

    fix(mouse): 'statuscolumn' fold and popopmenu handling

    Problem:  A right-click on the 'statuscolumn' does not open the
              popupmenu, even if a cell without a clickdef is clicked.
              Clicking the %C fold item does not open/close the fold.
    Solution: Open the popupmenu when there is no clickdef like right-clicking
              the sign/numbercolumn does. Fill "linebuf_vcol" when drawing the
              'statuscolumn' to handle foldcolumn item clicks.

commit a450fda4ededdd93e3dc571d82a6737f6b9d50d9
Author: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Date:   Thu Jan 23 10:42:00 2025 +0200

    fix(lsp): prefer `on_list` over `loclist` in default handler

    Problem: setting `loclist = true` makes `on_list` being ignored. This
      was not a problem before, but with `vim.lsp.buf.document_symbol` using
      `loclist = true` as default it is needed to explicitly pass `loclist =
      false` in order to use custom `on_list`.

    Solution: prefer `on_list` over `loclist` and document the latter as
      taking effect only in the default handler.

commit 34d808b73cbcb0a43636d826282193ab1ca8c148
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 18:10:22 2025 +0100

    feat(api): combined highlights in nvim_eval_statusline()

    Problem:  Combined highlighting was not applied to nvim_eval_statusline(),
              and 'statuscolumn' sign segment/numhl highlights.
    Solution: Add an additional `groups` element to the return value of
              `nvim_eval_statusline()->highlights`. This is an array of stacked
              highlight groups (highest priority last). Also resolve combined
              highlights for the 'statuscolumn' sign segment/numhl highlights.
              Expose/synchronize some drawline.c logic that is now mimicked in
              three different places.

commit 8634bd46b26f28fa26950128b0cc585560bd6a9a
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Mon Jan 20 22:45:47 2025 +0100

    vim-patch:9.1.1042: filetype: just files are not recognized

    Problem:  filetype: just files are not recognized
    Solution: adjust filetype detection pattern, detect just shebang line,
              include just ftplugin, indent and syntax plugin
              (Peter Benjamin)

    closes: vim/vim#16466

    https://github.com/vim/vim/commit/72755b3c8e91ec90447969b736f080e0de36003d

    Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>

commit 28998e1f8a9cdca27ada7030757b7a47e99ce5b6
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 23 16:33:41 2025 +0800

    vim-patch:9.1.1045: filetype: N-Tripels and TriG files are not recognized (#32170)

    Problem:  filetype: N-Tripels and TriG files are not recognized
    Solution: detect '*.nt' files as ntriples filetype and '*.trig' files
              as trig filetype (Gordian Dziwis)

    closes: vim/vim#16493

    https://github.com/vim/vim/commit/c04334c33f543a6b84a4442cf235d84f5eaef6bb

    Co-authored-by: Gordian Dziwis <gordian@dziw.is>

commit 4c9f3689a1c0646c8d743a2958af286b05c04ac5
Author: phanium <91544758+phanen@users.noreply.github.com>
Date:   Thu Jan 23 10:39:26 2025 +0800

    fix(checkhealth): failed if 'lua' in plugin name

commit a9c12d4c298813ed3aee36b2b4d5d0912c7201ea
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 23 08:12:10 2025 +0800

    vim-patch:9.1.1048: crash after scrolling and pasting in silent Ex mode (#32168)

    Problem:  Crash after scrolling and pasting in silent Ex mode.
              (fizz-is-on-the-way)
    Solution: Don't move cursor to line 0 when scrolling.
              (zeertzjq)

    closes: vim/vim#16506

    https://github.com/vim/vim/commit/df098fedbc2c481e91ea7e6207dab90359a92cc3

commit fd55c7df6f7eb61c65e93c6dd8beffaeed93d2ed
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 23 08:11:53 2025 +0800

    test(lua/hl_spec): set timeout for transient state (#32169)

commit af0ef2ac9dd19b7c4005a3197334d3e7d554646c
Author: Siddhant Agarwal <68201519+siddhantdev@users.noreply.github.com>
Date:   Wed Jan 22 21:16:24 2025 +0530

    feat(lua): vim.hl.range() "timeout" #32012

    Problem:
    `vim.hl.on_yank()` has a "timeout" behavior but this is not available for
    `vim.hl.range()`.

    Solution:
    Add `timeout` arg to `vim.hl.range()`.

commit 34344b939c060d36db719f17088639744ca61c94
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed Jan 22 16:36:57 2025 +0100

    fix(editor): avoid scrolling :substitute confirm message #32149

    Regression from 48e2a73.

commit 22fd52325bf60cadaf24bca328a602764f53d6a9
Author: jdrouhard <john@drouhard.dev>
Date:   Wed Jan 22 07:02:30 2025 -0600

    fix(inspector): update semantic token namespace (#32157)

    This updates the extmark namespace to search for when filtering out
    semantic tokens to match the new namespace style recently introduced.

commit d46ebd2a74036a349606213fcd2a8b3530adebcf
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 22 17:10:29 2025 +0800

    fix(startup): avoid crash with completion from -l script (#32160)

    Related #27764

commit a66f6add29fd8b2ee352c6089ceca6ab4f522385
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 22 10:55:41 2025 +0800

    vim-patch:9.1.1046: fuzzymatching doesn't prefer matching camelcase (#32155)

    Problem:  fuzzymatching doesn't prefer matching camelcase
              (Tomasz N)
    Solution: Add extra score when case matches (glepnir)

    fixes: vim/vim#16434
    closes: vim/vim#16439

    https://github.com/vim/vim/commit/9dfc7e5e6169594f6f4607ef1ba9dd347a9194d2

    Co-authored-by: glepnir <glephunter@gmail.com>

commit a8b6fa07c4d9143f3bd279ce8fd87e8121da16e1
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 22 09:28:27 2025 +0800

    fix(search): avoid quadratic time complexity when computing fuzzy score (#32153)

commit 3a25995f304039517b99b8c7d79654adf65c7562
Merge: d7aba51d39 06a1f82f1c
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 22:50:39 2025 +0800

    Merge pull request #32144 from zeertzjq/termkey-x1-x2

    feat(tui/terminal): support X1 and X2 mouse events

commit 06a1f82f1cc37225b6acc46e63bd2eb36e034b1a
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 21:00:56 2025 +0800

    feat(terminal): forward X1 and X2 mouse events

    Ref:
    https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Other-buttons

commit 44dbfcfba4b09bb0e38f4a3f1960fa256a7bed71
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 20:50:33 2025 +0800

    feat(tui): recognize X1 and X2 mouse events

    Ref:
    https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Other-buttons

commit d7aba51d39c7409ef388ed7cffe3e31d9fcec163
Merge: 05435bf105 4cced601c8
Author: bfredl <bjorn.linse@gmail.com>
Date:   Tue Jan 21 12:32:20 2025 +0100

    Merge pull request #32098 from bfredl/multihl_group

    feat(extmark): stack multiple highlight groups in `hl_group`

commit 4cced601c8cdfd6253266b035667dd0383a07ebe
Author: bfredl <bjorn.linse@gmail.com>
Date:   Fri Jan 17 13:44:07 2025 +0100

    feat(extmark): stack multiple highlight groups in `hl_group`

    This has been possible in the "backend" for a while but
    API was missing.

    Followup: we will need a `details2=true` mode for `nvim_get_hl_id_by_name`
    to return information in a way forward compatible with even further
    enhancements.

commit 05435bf10585e7f850ff44acd63446fbcc56bfe5
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 08:10:14 2025 +0800

    vim-patch:c273f1a: runtime(vim): Update base-syntax, match ternary and falsy operators (#32132)

    fixes: vim/vim#14423
    fixes: vim/vim#16227
    closes: vim/vim#16484

    https://github.com/vim/vim/commit/c273f1ac770e86767206c8193bab659b25d3b41b

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit 855a2a75e6f7d08376c221a46e0179e5c76176ec
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Mon Jan 20 22:44:56 2025 +0100

    vim-patch:4335fcf: runtime(kconfig): updated ftplugin and syntax script

    https://github.com/vim/vim/commit/4335fcfed1b0a29c07b10f97d1f309dd8f964de6

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit f50f86b9ff5dd2aab7838801d3c1cad898ea0c77
Author: Konrad Malik <konrad.malik@gmail.com>
Date:   Mon Jan 20 17:17:46 2025 +0100

    fix(treesitter): compute folds on_changedtree only if not nil

commit 0bc75ac78eba28c22d0facd3743fbe2dc573ee90
Author: dundargoc <gocdundar@gmail.com>
Date:   Mon Jan 20 17:34:53 2025 +0100

    ci(news): treat deprecated.txt as part of news.txt

    This is because we reference to deprecated.txt from news.txt, so
    deprecation news updates are made only in deprecated.txt.

commit 20e16c1c49ea946203f13a7e77c9b20ff9749659
Merge: 5b1136a99c 19b25f3fea
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon Jan 20 15:42:56 2025 +0100

    Merge pull request #32099 from bfredl/no_bufhl

    feat(api): deprecate nvim_buf_add_highlight()

commit 5b1136a99c7fc6db4cfe6865b72c069a4697c1a5
Author: Donatas <contactdonatas@gmail.com>
Date:   Mon Jan 20 16:40:26 2025 +0200

    feat(inccommand): preview 'nomodifiable' buffers #32034

    Problem:
    Incremental preview is not allowed on 'nomodifiable' buffers.

    Solution:
    - Allow preview on 'nomodifiable' buffers.
    - Restore the 'modifiable' option in case the preview function changes it.

commit 92556be33d04668c58a37794de5562af6297b3ac
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 16:03:06 2025 +0100

    fix(messages): compute msg_col after last newline in ext_messages

    Problem:  We want to keep track of the current message column, which is
              done very rudimentary for ext_messages; only checking if the
              message ends in a newline to reset the column, while computing
              the entire cellwidth of the message, which may contain
              (multiple) newlines not necessarily at the end (since 21718c6).
              This introduced a noticeable delay for large messages (e.g. :=vim).
    Solution: Calculate the cellwidth of the message after the last newline.
              Use it to keep track of the current message column. This might
              not be a functional change currently, since it only affects
              messages with (multiple) newlines not at the end of a message,
              which I don't think we emit internally, and msg_col is reset for
              a new kind. It does fix the performance problem.

commit ded15ca8c210965442d39ab214d4838b80a3fdc6
Author: Konrad Malik <konrad.malik@gmail.com>
Date:   Mon Jan 20 15:10:00 2025 +0100

    fix: completion.enable(false,...) deletes invalid augroup #32121

    Problem:

        vim.lsp.completion.enable(true, client.id, bufnr)
        vim.lsp.completion.enable(false, client.id, bufnr)

        Error detected while processing LspDetach Autocommands for "*":
        Error executing lua callback: …/lsp/completion.lua:701: Vim:E367: No such group: "vim/lsp/completion-22"
        stack traceback:
                [C]: in function 'nvim_del_augroup_by_name'
                …/lsp/completion.lua:701: in function 'disable_completions'
                …/lsp/completion.lua:724: in function 'enable'

    Solution:
    Delete the correct augroup.

commit 8a236c242a76825a6a9266feda45794c7328c807
Author: Guilherme Soares <48023091+guilhas07@users.noreply.github.com>
Date:   Mon Jan 20 13:00:13 2025 +0000

    fix(lsp): set floating window filetype after setup #32112

    Problem:
    The filetype for the floating window buffer is being set before its context is fully initialized.
    This results in `FileType` events not receiving the correct context.

    Solution:
    Set the filetype after the floating preview window and its buffer variables are
    fully configured to ensure proper context is provided.

commit 19b25f3feacfedc18a57eb2a1368a1ed07ac5faa
Author: bfredl <bjorn.linse@gmail.com>
Date:   Sun Jan 19 13:30:11 2025 +0100

    feat(api): deprecate nvim_buf_add_highlight()

    This was kept for a while as it was a useful short hand and initially
    matched what highlights what actually properly implemented. But now
    |vim.hl.range()| is a better high-level shorthand with full support for
    native multi-line ranges.

commit 27c88069538bf64dace1ed39512d914e88615ac1
Author: Jaehwang Jung <tomtomjhj@gmail.com>
Date:   Mon Jan 20 21:17:36 2025 +0900

    docs(treesitter): expose LanguageTree:parent() #32108

    Plugins may want to climb up the LanguageTree.

    Also add missing type annotations for other methods.

commit 71922cd1dc3bb6e040d7ab1ecd4d457f979a98fa
Merge: 5b025b499e 59da82abd9
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon Jan 20 11:02:58 2025 +0100

    Merge pull request #31597 from bfredl/deletionism

    fix(wininfo): when freeing windows, free the lowest priority wininfo

commit 5b025b499ec430f1733409f0fb5ba3f88ce25a88
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 18 10:42:11 2025 +0100

    vim-patch:9.1.1030: filetype: setting bash filetype is backwards incompatible

    Problem:  filetype: setting bash filetype is backwards incompatible
    Solution: revert patch v9.1.0965, detect bash scripts again as sh
              filetype

    This reverts commit b9b762c21f2b61e0e7d8fee43d4d3dc8ecffd721.

    related: vim/vim#16309

    https://github.com/vim/vim/commit/727c567a0934643e2d6e1dd92d4e636b17d9067f

    Co-authored-by: Christian Brabandt <cb@256bit.org>

    vim-patch:9.1.1033: tests: shaderslang was removed from test_filetype erroneously

    Problem:  tests: shaderslang was removed from test_filetype erroneously
              (Christian Clason, after v9.1.1030)
    Solution: restore the test

    https://github.com/vim/vim/commit/1d2867df0c5dfa3d2444229f9e4b23d6ff935956

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit b172dd57faac8de98291b644c0b0e1ee6d4691e0
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 16:50:38 2025 +0100

    vim-patch:2cb8246: runtime(tex): add texEmphStyle to texMatchGroup in syntax script

    fixes: vim/vim#16228

    https://github.com/vim/vim/commit/2cb8246eb969594a6969b03dcf8ea89aa7deda6e

    Co-authored-by: Christian Brabandt <cb@256bit.org>
    Co-authored-by: Github User JordL

commit 4dc2e016dacfbbeaa6671a23f7ce8a4bb06c853f
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 16:51:11 2025 +0100

    vim-patch:d402ba8: runtime(netrw): upstream snapshot of v175

    Relevant commits:
    - release: netrw v175
    - fix: prevent netrw to load into the built-in terminal
    - fix: restore correctly cpo settings
    - fix(docs): mispelled original authors name
    - chore: move viml files to new formatting standard

    fixes: vim/vim#16463
    closes: vim/vim#16465

    https://github.com/vim/vim/commit/d402ba81e256b21e73a98ec809bd4a9482613553

    Co-authored-by: Luca Saccarola <github.e41mv@aleeas.com>

commit de83cc5842c94d84ef5b876b7cfb06372c7e7b9c
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 17:05:32 2025 +0100

    fix(netrw): re-add missing comment marker in syntax file

commit 5f527f24f0ea89e9071e065530cbed449507df5c
Author: Mathias Fussenegger <f.mathias@zignar.net>
Date:   Sun Jan 19 21:49:02 2025 +0100

    fix(lsp): don't use completion filterText if prefix is empty

    Follow up to https://github.com/neovim/neovim/pull/32072

    If there is no prefix (e.g. at the start of word boundary or a line), it
    always used the `filterText` because the `match` function always
    returned false.

commit d56ba71af11c9048c9085e4f66a47947770bdb29
Author: Yochem van Rosmalen <git@yochem.nl>
Date:   Sun Jan 19 22:08:10 2025 +0100

    fix(lsp): document_symbol uses loclist by default #32070

    Problem: Not able to open document symbols for different buffers

    Solution: Use the location list as default.

    To switch back to previous behavior (qflist):

      vim.lsp.buf.document_symbol({ loclist = false })

    Fixes: #31832

commit a6f219b06bebf5878b970bebf53db7b942fe8731
Author: deepsghimire <70006817+deepsghimire@users.noreply.github.com>
Date:   Mon Jan 20 01:22:04 2025 +0545

    fix(log): unintuitive message for undefined $TMPDIR

commit 6696ea7f103814d3d5700107546280bf50a4004a
Author: Jaehwang Jung <tomtomjhj@gmail.com>
Date:   Sun Jan 19 00:07:47 2025 +0900

    fix(treesitter): clean up parsing queue

commit ee54069d1d279b351e5569cb205b1ee111ec0dc5
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 19 22:14:52 2025 +0800

    vim-patch:8dec6c2: runtime(vim): Update base-syntax, fix is/isnot operator matching (#32100)

    - Match is? and isnot? operators.
    - Limit other comparison operators to one match modifier rather than
      two.

    closes: vim/vim#16482

    https://github.com/vim/vim/commit/8dec6c2e6c2b5157334398e2e6ab7daa91999d80

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit 71507281fb86deaaa7f47460e8c7a503b46663f6
Author: Devon Gardner <devon@goosur.com>
Date:   Sat Jan 18 19:49:53 2025 -0500

    fix(coverity/530826): validate_opt_idx unchecked negative idx (#32081)

    Problem:
    opt_idx possible negative value used as index

    Solution:
    check opt_idx not less than zero (kOptInvalid)

commit a5b1b83a2693ffa7a5a0a22b3693d36ea60051be
Author: 林玮 (Jade Lin) <linw1995@icloud.com>
Date:   Sat Jan 18 16:40:40 2025 +0800

    fix(lua): prevent SIGSEGV when lua error is NULL in libuv_worker

    Problem:
    Calling `xstrdup` with a NULL pointer causes a SIGSEGV if `lua_tostring` returns
    NULL in `nlua_luv_thread_common_cfpcall`.

    Crash stack trace:
    - `_platform_strlen` → `xstrdup` (memory.c:469)
    - `nlua_luv_thread_common_cfpcall` (executor.c:281)

    Solution:
    Check if `lua_tostring` returns NULL and pass NULL to `event_create` to avoid the crash.

commit 51ccd12b3dbc50300e83f503426abbcb605efcea
Author: Gregory Anders <greg@gpanders.com>
Date:   Sat Jan 18 07:43:21 2025 -0600

    fix(diagnostic)!: make virtual text handler opt-in (#32079)

    Making this opt-out (on by default) was the wrong choice from the
    beginning. It is too visually noisy to be enabled by default.

    BREAKING CHANGE: Users must opt-in to the diagnostic virtual text
    handler by adding

      vim.diagnostic.config({ virtual_text = true })

    to their config.

commit 954d4969c991be1a758c121be6f7d811b5e5cea1
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 18 10:58:14 2025 +0100

    vim-patch:e064051: runtime(c): add new constexpr keyword to syntax file (C23)

    closes: vim/vim#16471

    https://github.com/vim/vim/commit/e06405181a6189aa56e917c1a7e5090a33b07a8a

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit 7d04ebd43c29a5f0663e6a2a9c5b54f064247d01
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 18 10:46:33 2025 +0100

    vim-patch:54cb514: runtime(sh): update syntax script

    - remove duplicated keywords
    - add bash coproc and COPROC_PID keywords

    https://github.com/vim/vim/commit/54cb514c9a8320d77650a63f0f7405aa8cc5b0d7

    Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>

commit 27da6f77578c10090ad33a94ce26006a79784ee3
Author: dundargoc <gocdundar@gmail.com>
Date:   Sun Jan 12 13:10:48 2025 +0100

    refactor: simplify bump_deps.lua

    Simplify usage and remove redundant flags and code.

commit e962167245755e900a7bd154075106026dbb4eff
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 13:48:47 2025 +0100

    vim-patch:9cfdabb: runtime(netrw): change netrw maintainer

    Dr. Chip retired some time ago and is no longer maintaining the netrw
    plugin. However as a runtime plugin distributed by Vim, it important to
    maintain the netrw plugin in the future and fix bugs as they are
    reported.

    So, split out the netrw plugin as an additional package, however include
    some stubs to make sure the plugin is still loaded by default and the
    documentation is accessible as well.

    closes: vim/vim#16368

    https://github.com/vim/vim/commit/9cfdabb074feefc9848e9f7a4538f201e28c7f06

    Co-authored-by: Luca Saccarola <github.e41mv@aleeas.com>

commit 136cb642a0022fd005481e729dcc917552103322
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 18:42:07 2025 +0100

    vim-patch:c2a967a: runtime(c): Update syntax and ftplugin files

    - highlight more C keywords, including some from C23

    Conditionally highlight C23 features:
    - #embed, #elifdef and #elifndef preprocessor directives
    - predefined macros
    - UTF-8 character constants
    - binary integer constants, _BitInt literals, and digit separators
    - nullptr_t type and associated constant
    - decimal real floating-point, bit precise and char types
    - typeof operators

    Matchit:
    - update for new preprocessor directives

    fixes: vim/vim#13667
    fixes: vim/vim#13679
    closes: vim/vim#12984

    https://github.com/vim/vim/commit/c2a967a1b9adca6c929e3dc5c218dfada00059b6

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>
    Co-authored-by: Albin Ahlbäck <albin.ahlback@gmail.com>

commit c9000a6b13fd6695f6e28a890b82b490a123f25e
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 18 10:03:13 2025 +0800

    vim-patch:9.1.1028: too many strlen() calls in screen.c (#32083)

    Problem:  too many strlen() calls in screen.c
    Solution: refactor screen.c and remove calls to strlen(),
              verify that leadmultispace != NULL (John Marriott)

    closes: vim/vim#16460

    https://github.com/vim/vim/commit/c15de972e8131def2f506bb9eb6b306ca089629c

    Co-authored-by: John Marriott <basilisk@internode.on.net>

commit c6cc937512f59af12fd1b15ca4f7a11288f28ca0
Author: Yochem van Rosmalen <git@yochem.nl>
Date:   Fri Jan 17 23:56:30 2025 +0100

    docs: change augroup names to new convention #32061

    Ref: 09e01437c968be4c6e9f6bb3ac8811108c58008c

commit b9e6fa7ec81c463d77cc919392b52f6df2d8d304
Author: Mathias Fussenegger <f.mathias@zignar.net>
Date:   Fri Jan 17 15:27:50 2025 +0100

    fix(lsp): use filterText as word if textEdit/label doesn't match

    Problem:

    With language servers like lemminx, completing xml tags like `<mo` first
    shows the right candidates (`modules`) but after typing `d` the
    candidates disappear.

    This is because the server returns:

        [...]
        filterText = "<module",
        label = "module",
        textEdit = {
          newText = "<module>$1</module>$0",

    Which resulted in `module` being used as `word`, and `module` doesn't
    match the prefix `<mo`. Typing `d` causes the `complete()` filtering
    mechanism to kick in and remove the entry.

    Solution:

    Use `<module` from the `filterText` as `word` if the textEdit/label
    heuristic doesn't match.

commit 3530182ba491ba8663b40bdff0c044d74e89bb82
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 13:46:58 2025 +0100

    vim-patch:9.1.1026: filetype: swc configuration files are not recognized

    Problem:  filetype: swc configuration files are not recognized
    Solution: detect .swcrc files as json filetype (Marces Engel)

    References:
    https://swc.rs/docs/configuration/swcrc

    closes: vim/vim#16462

    https://github.com/vim/vim/commit/3a738fccaaf6737c91641856ea00579dbe68bd4e

    Co-authored-by: Marces Engel <marces@facemurphy.com>

commit 97d58553515552afbac2999409e9bbf9a338dfb0
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 10:48:37 2025 +0100

    docs(gh): use new issue types

commit 5dd60e01ace2621f2307eebeb92e9e7351210d3a
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 01:11:07 2025 +0100

    refactor(cmdline): more idiomatic way to avoid cmdline_show

    Problem:  Fix applied in #32033 can be more idiomatic.
    Solution: Unset redraw_state instead of cmdbuff.

commit 7ce27381fb49ac7d6ef1e115c3952f998e979b15
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 08:47:29 2025 +0100

    fix(messages): lsp window/showMessage is not an error

    Ref https://github.com/neovim/neovim/discussions/32015

commit ac3859a4410e50794a083f23796e4f8ae2a24b04
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 17 09:09:47 2025 +0800

    vim-patch:a234a46: runtime(doc): fix typo in usr_02.txt (#32063)

    fixes: vim/vim#16455

    https://github.com/vim/vim/commit/a234a46651ef174549792bd64d4bef64a32072bb

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit cd92924896ab6edeb4d3219befc59ac52a60bcf2
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 17 08:53:10 2025 +0800

    vim-patch:9.1.1021: string might be used without a trailing NUL (#32062)

    Problem:  string might be used without a trailing NUL (after v9.1.0997)
    Solution: Make sure that the buffer is NUL terminated

    closes: vim/vim#16457

    https://github.com/vim/vim/commit/70dfc374ec72634a0a61aea8344178779675d516

    Co-authored-by: John Marriott <basilisk@internode.on.net>

commit 0d3a8e8c1a7778c6c79658f26ba492a5f4a17d18
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 17 08:38:58 2025 +0800

    vim-patch:9.1.1020: no way to get current selected item in a async context (#32056)

    Problem:  no way to get current selected item in a async context
    Solution: add completed flag to show the entries of currently selected
              index item (glepnir)

    closes: vim/vim#16451

    https://github.com/vim/vim/commit/037b028a2219d09bc97be04b300b2c0490c4268d

    Co-authored-by: glepnir <glephunter@gmail.com>

commit bf098c12e3078df49fd7dee5ba7c2100a211d4c8
Merge: fb564ddff0 819337a13f
Author: Gregory Anders <greg@gpanders.com>
Date:   Thu Jan 16 18:33:22 2025 -0600

    Merge pull request #32038 from gpanders/push-nsrttwwnsqvm

    feat(terminal): add support for kitty keyboard protocol

commit 819337a13f73bb9dcd82fd51f81f062bd69ab6db
Author: Gregory Anders <greg@gpanders.com>
Date:   Wed Jan 15 13:08:18 2025 -0600

    test: use esc sequences in vterm unit tests

commit 6f0bde11ccd82d257fcda25ecad26227eba3335e
Author: Gregory Anders <greg@gpanders.com>
Date:   Wed Jan 15 11:07:51 2025 -0600

    feat(terminal): add support for kitty keyboard protocol

    This commit adds basic support for the kitty keyboard protocol to
    Neovim's builtin terminal. For now only the first mode ("Disambiguate
    escape codes") is supported.

commit fb564ddff0b4ec9dad5afa7548777af1c3044273
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Thu Jan 16 20:53:17 2025 +0000

    refactor(options): generic expand and did_set callbacks (#32011)

    * refactor(options): generic expand and did_set callbacks

    Problem:

    Many options have similar callbacks to check the values are valid.

    Solution:

    Generalize these callbacks into a single function that reads the option
    table.

    * refactor: gen_options.lua

    refactor: gen_options.lua - inline get_cond

    * refactor(options): use a simpler format for the common default

commit 92d3bf101d07d52cfbd4c22e6e06251897adda34
Merge: 718e165360 47a4e42392
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 12:20:33 2025 +0800

    Merge pull request #32051 from zeertzjq/vim-9.1.1013

    vim-patch:9.1.{1013,1017}

commit 47a4e4239203fe96d404874bdc1ea6910f72b695
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 09:35:52 2025 +0800

    vim-patch:9.1.1017: Vim9: Patch 9.1.1013 causes a few problems

    Problem:  Vim9: Patch 9.1.1013 causes a few problems
    Solution: Translate the function name only when it is a string
              (Yegappan Lakshmanan)

    fixes: vim/vim#16453
    closes: vim/vim#16450

    https://github.com/vim/vim/commit/9904cbca4132f7376246a1a31305eb53e9530023

    Cherry-pick call() change from patch 9.0.0345.

    Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>

commit f8680d009741d01e137aeb2232aa7e033cd70d7b
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 09:27:08 2025 +0800

    vim-patch:9.1.1013: Vim9: Regression caused by patch v9.1.0646

    Problem:  Vim9: Regression caused by patch v9.1.0646
    Solution: Translate the function name before invoking it in call()
              (Yegappan Lakshmanan)

    fixes: vim/vim#16430
    closes: vim/vim#16445

    https://github.com/vim/vim/commit/6289f9159102e0855bedc566636b5e7ca6ced72c

    N/A patch:
    vim-patch:8.2.4176: Vim9: cannot use imported function with call()

    Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>

commit 718e16536052c0e75de61a32ef237a9e87fc03f2
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 09:16:25 2025 +0800

    vim-patch:9.1.1018: v9.1.0743 causes regression with diff mode (#32047)

    Problem:  v9.1.0743 causes regression with diff mode
    Solution: Fix the regression with overlapping regions

    closes: vim/vim#16454

    https://github.com/vim/vim/commit/01f6509fb2de1627cc4ec2c109cd0aa2e3346d50

    Co-authored-by: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com>

commit 524be56042335db589b9fe62dfdae39be3f69a15
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Thu Jan 16 00:34:25 2025 +0100

    vim-patch:9.1.1019: filetype: fd ignore files are not recognized (#32042)

    Problem:  filetype: fd ignore files are not recognized
    Solution: detect .fdignore files as gitignore filetype

    closes: vim/vim#16444

    https://github.com/vim/vim/commit/3058087f6f04be788118e94e942e0f0c9fca25f0

    Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>

commit f0fdc1de6c950a015ada9550473aedde43b946ce
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Wed Jan 15 19:24:48 2025 +0100

    build(deps): bump libuv to v1.50.0

commit 7c652242579b6f734b57de106afbe1d5c32ed2fd
Author: dundargoc <gocdundar@gmail.com>
Date:   Wed Jan 15 18:18:04 2025 +0100

    build: fix lint error on macos

commit bbf36ef8ef86534e317e4e0153730a40ae4c936e
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed Jan 15 15:55:21 2025 +0100

    fix(cmdline): prevent cmdline_show events after exiting cmdline #32033

    Problem:  If a (vim.ui_attach) cmdline_hide callback triggers a redraw,
              it may cause cmdline_show events for an already exited cmdline.
    Solution: Avoid emitting cmdline_show event when ccline.cmdbuff is
              already NULL. Unset ccline.cmdbuff before emitting cmdline_hide.

commit 5cc93ef4729c65d6a539c8d0a8a2bf767cf17ced
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed Jan 15 11:38:45 2025 +0100

    fix(marks): revise metadata for start mark of revalidated pair #32017

    Problem:  Metadata may be revised for end mark of a revalidated pair.
    Solution: Revise metadata for start mark of a revalidated pair.

commit 09bcb310681e3b87d5b8c5eb547b182554cff7b4
Author: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Date:   Wed Jan 15 12:36:00 2025 +0200

    fix(docs): replace `yxx` mappings with `g==` #31947

    Problem:
    `yx` uses "y" prefix, which shadows a builtin operator.

    Solution:
    Use `g=` (in the form of `g==` currently), drawing from precedent of
    CTRL-= and 'tpope/vim-scriptease'.

commit 9552fe7ef907c5c8164abb50699e97d03de1285a
Merge: 3ee63edc1b d55b17e2b4
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Wed Jan 15 02:23:44 2025 -0800

    Merge #32013 from luukvbaal/shellkind

commit 3ee63edc1b0ca6fe664c9d5368aba05ae9a22e9d
Merge: 0a7e4e9e5f 575f4bc7d5
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Wed Jan 15 02:01:44 2025 -0800

    Merge #32001 from MariaSolOs/consistent-namespaces

commit 0a7e4e9e5f28f3b6b3c83040430d0a36fcd71fad
Author: Andrew Braxton <42975660+andrewbraxton@users.noreply.github.com>
Date:   Wed Jan 15 04:58:36 2025 -0500

    fix(lsp): vim.lsp.enable(...,false) does not disable  #32002

    Problem:
    Per the documentation, passing `false` as the `enable` parameter of
    `vim.lsp.enable()` should disable the given LSP(s), but it does not work
    due to a logic error.

    Specifically, `enable == false and nil or {}` will always evaluate to
    `{}` because `nil` is falsy.

    Solution:
    Correct the conditional statement.

commit d55b17e2b4e061fd8b330f928785a217c99c9d11
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Tue Jan 14 17:23:11 2025 +0100

    fix(messages): verbose kind for nvim_echo()

    Problem:  No "verbose" kind for nvim_echo() opts->verbose.
    Solution: Pass NULL "kind" to indicate no new kind.

commit 5bae80899d9d29d80c129ca92cde75a1583b5efe
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Tue Jan 14 12:05:23 2025 +0100

    feat(messages): add :!cmd shell message kinds

    Also print stderr error messages with ErrorMsg highlight group.

commit bc69f2723737cfe8916c117483ce32f48ff83544
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Tue Jan 14 17:18:48 2025 +0100

    vim-patch:045564d: runtime(colors): Update colorschemes, include new unokai colorscheme

    - new unokai colorscheme (similar/inspired by monokai)
    - the rest: add explicit PopupSelected link to PmenuSel

    closes: vim/vim#16443

    https://github.com/vim/vim/commit/045564d0a73218594691953c0c8bf2035e1e176e

    Co-authored-by: Maxim Kim <habamax@gmail.com>

commit 575f4bc7d5069792188520d1f0e5ed12cc035002
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Mon Jan 13 19:51:09 2025 -0800

    docs: document namespace/augroup convention

commit 09e01437c968be4c6e9f6bb3ac8811108c58008c
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Mon Jan 13 19:45:11 2025 -0800

    refactor: use nvim.foo.bar format for autocommand groups

commit a78eddd54112033eea0212865efd2f75cc59fc93
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 15 12:05:00 2025 +0800

    vim-patch:9.1.1015: Coverity complains about dereferencing NULL value (#32020)

    Problem:  Coverity complains about dereferencing NULL value
    Solution: Check that cms2 is not null

    closes: vim/vim#16438

    https://github.com/vim/vim/commit/1ac53b84ada3a992f320566737e66fa00d48611f

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 850084b519e18122820478a71bb4bfa4c15e528a
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Mon Jan 13 19:39:03 2025 -0800

    refactor: use nvim.foo.bar format for namespaces

commit 611ef354919f1c6564efd2ff8074545941458ccc
Author: Mike <4576770+mike325@users.noreply.github.com>
Date:   Wed Jan 15 01:39:17 2025 +0100

    feat(vim.fs): find(), dir() can "follow" symlinks #31551

    Problem:
    vim.fs.dir(), vim.fs.find() do not follow symlinks.

    Solution:
    - Add "follow" flag.
    - Enable it by default.

commit e8a6c1b02122852da83dc52184e78369598d8240
Author: Gregory Anders <greg@gpanders.com>
Date:   Tue Jan 14 08:19:54 2025 -0600

    fix(lsp): schedule call to vim.lsp.start for async root_dir (#31998)

    When `root_dir` is a function it can (and often will) call the provided
    callback function in a fast API context (e.g. in the `on_exit` handler
    of `vim.system`). When the callback function is executed we should
    ensure that it runs vim.lsp.start on the main event loop.

commit f1c45fc7a4a595e460cd245172a5767bddeb09e9
Author: Gregory Anders <greg@gpanders.com>
Date:   Tue Jan 14 08:18:59 2025 -0600

    feat(terminal): support theme update notifications (DEC mode 2031) (#31999)

commit 59da82abd91e3be7eb5403c14de012cd149a1c84
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon Dec 16 13:31:59 2024 +0100

    fix(wininfo): when freeing windows, free the lowest priority wininfo

    On master (and also before #31539) closing a window could cause the
    used wininfo for a buffer to change. This is due to always removing the
    previous NULL wininfo when deleting a window, even if that wininfo had
    higher priority than the the deleted window's own wininfo.

    Instead delete the wininfo with lowest priority. This retains the memory
    saving efect while not affecting the effective value of window options
    and so on.

commit 7eabc8899af8b2fed1472165b74f43965282974f
Merge: 25d8c3a5ad 913e81c35f
Author: bfredl <bjorn.linse@gmail.com>
Date:   Tue Jan 14 14:46:34 2025 +0100

    Merge pull request #31932 from bfredl/termtab

    fix(getchar): do not simplify keycodes in terminal mode

commit 25d8c3a5ad7e9c5668841e66540ebe34ceda73a7
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Tue Jan 14 14:02:46 2025 +0100

    feat(api): nvim_open_win() relative to tabline and laststatus #32006

    Problem:  Anchoring a floating window to the tabline and laststatus is
              cumbersome; requiring autocommands and looping over all
              windows/tabpages.
    Solution: Add new "tabline" and "laststatus" options to the `relative`
              field of nvim_open_win() to place a window relative to.

commit e8ddb7a46938f8843abc1c321cfd83cee2ba0020
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Tue Jan 14 08:32:36 2025 +0100

    vim-patch:30377e0: runtime(lyrics): support milliseconds in syntax script

    The following tool creates LRC files using three fractional digits after
    the seconds (i.e. milliseconds).

    References:
    https://github.com/magic-akari/lrc-maker
    https://lrc-maker.github.io/

    closes: vim/vim#16436

    https://github.com/vim/vim/commit/30377e0fe084496911e108cbb33c84cf075e6e33

    Co-authored-by: Denilson Sá Maia <denilsonsa@gmail.com>

commit 69ad6b12ec473a54f09a11596da724178185eb7a
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 14 18:55:06 2025 +0800

    vim-patch:9.1.1010: filetype: VisualCode setting file not recognized (#32003)

    Problem:  filetype: VisualCode setting file not recognized
    Solution: detect json files in VSCode config directory as jsonc filetype
              (Konfekt)

    closes: vim/vim#16400

    https://github.com/vim/vim/commit/c200f53cbb03fa11e489a27791d5b9dfc34a6564

    Co-authored-by: Konfekt <Konfekt@users.noreply.github.com>

commit c5f93d7ab04f93db1470d58ca1f70e947e716c2b
Author: Famiu Haque <famiuhaque@proton.me>
Date:   Sat Dec 28 14:55:22 2024 +0600

    refactor(options): remove code for multitype options

    Problem: It was decided on Matrix chat that multitype options won't be necessary for Neovim options, and that options should only have a single canonical type. Therefore the code for supporting multitype options is unnecessary.

    Solution: Remove the additional code that's used to provide multitype option support.

commit b192d58284a791c55f5ae000250fc948e9098d47
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Mon Jan 13 09:42:39 2025 -0800

    perf(treesitter): calculate folds asynchronously

    **Problem:** The treesitter `foldexpr` runs synchronous parses to
    calculate fold levels, which eliminates async parsing performance in the
    highlighter.

    **Solution:** Migrate the `foldexpr` to also calculate and apply fold
    levels asynchronously.

commit 5a54681025ec28129c21c875943a3f9c37959f75
Author: Horror Proton <107091537+horror-proton@users.noreply.github.com>
Date:   Tue Jan 14 00:43:33 2025 +0800

    fix(treesitter): uv_dlclose after uv_dlerror

commit 0dfa4de9933b548d050feeff5676d580c7103787
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Tue Jan 14 08:33:11 2025 +0100

    build(deps): bump luajit to HEAD - a4f56a459

commit a4f575abd85e734340ee303daace1a63e5ca9782
Author: Xuyuan Pang <xuyuanp@gmail.com>
Date:   Tue Jan 14 07:17:23 2025 +0800

    fix(lsp): minimum height for floating popup #31990

    Problem:
    The floating window for hover and signature help always cuts off a few lines,
    because the `_make_floating_popup_size` function counts empty lines as having
    zero height.

    Solution:
    Ensure the height is at least 1.

commit 34e2185022ab698827b72751d77e218a1b6b6afe
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Fri Jan 10 10:20:43 2025 +0000

    fix(options): better handling of empty values

    Problem:

    Whether an option is allowed to be empty isn't well defined and
    isn't properly checked.

    Solution:

    - For non-list string options, explicitly check the option value
      if it is empty.
    - Annotate non-list string options that can accept an empty value.
      - Adjust command completion to ignore the empty value.
    - Render values in Lua meta files

commit cb7b4e296238b46025de05203c886d67da401728
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Mon Jan 13 13:59:34 2025 +0100

    feat(messages): "verbose" message kind #31991

commit 47866cd8d20c62afa8a3c3929d3aada2db9162f5
Author: dundargoc <gocdundar@gmail.com>
Date:   Thu Jan 9 17:28:27 2025 +0100

    refactor: delete duplicate utf8-functionality

    Also remove British National Replacement Character Set.

    We keep the DEC Special Graphics and ASCII despite it not being unicode
    as some old software such as calcurse still rely on this functionality.

    References:
    - https://github.com/neovim/neovim/pull/31934#discussion_r1911046426
    - https://en.wikipedia.org/wiki/DEC_Special_Graphics
    - https://vt100.net/docs/vt220-rm/chapter2.html#S2.4.3

commit 0631492f9c8044a378dc2a17ea257badfbda6d15
Author: dundargoc <gocdundar@gmail.com>
Date:   Mon Dec 30 16:01:00 2024 +0100

    feat: add vim.fs.relpath

    This is needed to replace the nvim-lspconfig function is_descendant that
    some lspconfg configurations still use.

commit 913e81c35f162c1e2647565397608f63f38d7043
Author: bfredl <bjorn.linse@gmail.com>
Date:   Thu Jan 9 14:05:40 2025 +0100

    fix(getchar): do not simplify keycodes in terminal mode

    The code represents a useful pattern in normal mode where remapping
    `<tab>` will implicitly also remap `<c-i>` unless you remap that
    explicitly. This relies on the _unmapped_ behavior being identical which
    is not true in terminal mode, as vterm can distinguish these keys.

    Vim seems to entangle this with kitty keyboard mode detection which
    is irrelevant for us. Conditional fallbacks depending on
    keyboard mode could be done completely inside `vterm/` without getchar.c
    getting involved, I would think.

commit a3ef29d570dd892a1bcbfa80bb242d4aac89a06e
Author: Guilherme Soares <48023091+guilhas07@users.noreply.github.com>
Date:   Mon Jan 13 09:41:49 2025 +0000

    test: use temp file #31907

commit 2c16c849986794682a4776ff4ec100d00eeba5ca
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon Jan 13 15:18:47 2025 +0800

    vim-patch:9.1.1011: popupmenu internal error with some abbr in completion item (#31988)

    Problem:  Popup menu internal error with some abbr in completion item.
    Solution: Don't compute attributes when there is no corresponding text.
              Reduce indent in pum_redraw() while at it (zeertzjq).

    fixes: vim/vim#16427
    closes: vim/vim#16435

    https://github.com/vim/vim/commit/3a0cc36c69744a7727ce34311d39d2d9d8ddc6f9

commit 99c4bd2f698345fd5706e0ff5d6221b8d3848cfb
Merge: f4cff3077b bd4ca22d03
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Mon Jan 13 06:58:33 2025 +0000

    Merge pull request #31631 from ribru17/async_parse_attempt_2

    feat(treesitter): async parsing

commit f4cff3077b21ba110bc498f3e9331c16d3121cb1
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 12 19:32:36 2025 +0100

    build(deps): bump tree-sitter to v0.24.7

commit bd4ca22d0334a3323313dfd6975a80218ec65e36
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Fri Dec 20 16:23:52 2024 -0800

    feat(treesitter)!: don't parse tree in get_parser() or start()

    **Problem:** `vim.treesitter.get_parser()` and `vim.treesitter.start()`
    both parse the tree before returning it. This is problematic because if
    this is a sync parse, it will stall the editor on large files. If it is
    an async parse, the functions return stale trees.

    **Solution:** Remove this parsing side effect and leave it to the user
    to parse the returned trees, either synchronously or asynchronously.

commit 45e606b1fddbfeee8fe28385b5371ca6f2fba71b
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Wed Dec 18 10:48:33 2024 -0800

    feat(treesitter): async parsing

    **Problem:** Parsing can be slow for large files, and it is a blocking
    operation which can be disruptive and annoying.

    **Solution:** Provide a function for asynchronous parsing, which accepts
    a callback to be run after parsing completes.

    Co-authored-by: Lewis Russell <lewis6991@gmail.com>
    Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
    Co-authored-by: VanaIgr <vanaigranov@gmail.com>

commit 3fdc4302415972eb5d98ba832372236be3d22572
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Sat Jan 11 15:44:07 2025 -0800

    perf(treesitter): cache queries strongly

    **Problem:** Query parsing uses a weak cache which is invalidated
    frequently

    **Solution:** Make the cache strong, and invalidate it manually when
    necessary (that is, when `rtp` is changed or `query.set()` is called)

    Co-authored-by: Christian Clason <c.clason@uni-graz.at>

commit 40bf23adaf98dc357a59f9524a16e06f990faeaa
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 12 12:31:13 2025 +0100

    build(deps): bump wasmtime to v25.0.3

commit bf58b757c4c2e1bf2a4afe4279150ca68a68691f
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 12 11:42:02 2025 +0100

    vim-patch:9.1.1007: filetype: various ignore are not recognized

    Problem:  filetype: various ignore are not recognized
    Solution: detect rg/docker/npm/vvsce ignore files as 'gitgnore' filetype
              (Wu, Zhenyu)

    Not only prettier, but many programs also support ignore files (like rg,
    docker, npm, vscode). So use the gitignore filetype for them due to same syntax

    closes: vim/vim#16428

    https://github.com/vim/vim/commit/8cbe2e0a0a78f57bb545a97695bfedd6a95e6992

    Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>

commit 1a8a48d7e5f8243aff0253a82f4214241eb877d6
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 12 08:25:57 2025 +0800

    vim-patch:9.1.1003: [security]: heap-buffer-overflow with visual mode (#31971)

    Problem:  [security]: heap-buffer-overflow with visual mode when
              using :all, causing Vim trying to access beyond end-of-line
              (gandalf)
    Solution: Reset visual mode on :all, validate position in gchar_pos()
              and charwise_block_prep()

    This fixes CVE-2025-22134

    Github Advisory:
    https://github.com/vim/vim/security/advisories/GHSA-5rgf-26wj-48v8

    https://github.com/vim/vim/commit/c9a1e257f1630a0866447e53a564f7ff96a80ead

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 37316fbac641ecafde29fd750a08ece490d209c1
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 12 08:04:25 2025 +0800

    vim-patch:9.1.1005: completion text is highlighted even with no pattern found (#31973)

    Problem:  completion text is highlighted even with no pattern found
    Solution: use ins_compl_leader_len() instead of checking
              compl_leader.length (glepnir)

    closes: vim/vim#16422

    https://github.com/vim/vim/commit/9fddb8ae770be3e16545dd4c2f4cfaad8f62cb40

    Co-authored-by: glepnir <glephunter@gmail.com>

commit 88dca6a83593a0cf33866addf36cad2e847a2899
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 12 07:43:58 2025 +0800

    vim-patch:partial:9598a63: runtime(doc): add package-<name> helptags for included packages (#31972)

    Improve how to find the justify package

    closes: vim/vim#16420

    https://github.com/vim/vim/commit/9598a6369bce32d3da831e8968caf4625985ac3c

    Co-authored-by: Christian Brabandt <cb@256bit.org>
    Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>

commit a119aae4d3deebea453ccd7c2dea814aed2c9f21
Author: Gregory Anders <greg@gpanders.com>
Date:   Sat Jan 11 12:54:43 2025 -0600

    feat(diagnostic)!: filter diagnostics by severity before passing to handlers (#30070)

    BREAKING CHANGE: This changes the list of diagnostics that are passed to
    a diagnostic handler. If a handler is already filtering by severity
    itself then this won't break anything, since the handler's filtering
    will become a no-op. But handlers which depend on receiving the full
    list of diagnostics may break.

    Note that diagnostics are only filtered if the handler's configuration
    has the `severity` option set. If `severity` is not set, the handler
    still receives the full list of diagnostics.

commit 9e0d40f7e45f483e54d38be1266f63240808b4b0
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 11 10:58:10 2025 +0100

    vim-patch:668e9f2: runtime(filetype): don't detect string interpolation as angular

    fixes: vim/vim#16375

    https://github.com/vim/vim/commit/668e9f24037fc7c362ffdf5fc1d5c5b1a8b0e855

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 6a425e7045cca609d95612c0f2cd08d0265238a9
Author: dundargoc <gocdundar@gmail.com>
Date:   Sun Nov 24 11:29:39 2024 +0100

    docs: misc

    Co-authored-by: Axel <axelhjq@gmail.com>
    Co-authored-by: Colin Kennedy <colinvfx@gmail.com>
    Co-authored-by: Daiki Noda <sys9kdr@users.noreply.github.com>
    Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
    Co-authored-by: Jean-Jacq du Plessis <1030058+jj-du-plessis@users.noreply.github.com>
    Co-authored-by: Juan Giordana <juangiordana@gmail.com>
    Co-authored-by: Lincoln Wallace <locnnil0@gmail.com>
    Co-authored-by: Matti Hellström <hellstrom@scm.com>
    Co-authored-by: Steven Locorotondo <steven.locorotondo@justeattakeaway.com>
    Co-authored-by: Yochem van Rosmalen <git@yochem.nl>
    Co-authored-by: glepnir <glephunter@gmail.com>
    Co-authored-by: ifish <fishioon@live.com>

commit c060a6ea640eb433197ec554ff7cf6469ee1c0e7
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 11 09:08:01 2025 +0800

    vim-patch:9.1.1001: ComplMatchIns highlight hard to read on light background (#31958)

    Problem:  ComplMatchIns highlight hard to read on light background
              (after v9.1.0996)
    Solution: define the highlighting group cleared, it should be configured in
              colorschemes separately (glepnir)

    closes: vim/vim#16414

    https://github.com/vim/vim/commit/ad409876d9cf7e565f99c5e21b9e2e400a83a4d4

    Co-authored-by: glepnir <glephunter@gmail.com>

commit df45b336f5c097609909dbc9f1e37e88961886d9
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 11 08:27:50 2025 +0800

    vim-patch:695522d: runtime(vim): Update base-syntax, highlight literal string quote escape (#31957)

    Match the '' escape sequence in literal strings.  These were previously
    ending the current string and starting another concatenated literal
    string.

    closes: vim/vim#16415

    https://github.com/vim/vim/commit/695522dea3703cf1b4cd4a894ca9a745a0d2756f

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit fbe546e25d21f3184814d696c329d23d146bd615
Author: glepnir <glephunter@gmail.com>
Date:   Sat Jan 11 07:58:45 2025 +0800

    vim-patch:9.1.0996: ComplMatchIns may highlight wrong text (#31931)

    Problem:  ComplMatchIns may highlight wrong text
    Solution: don't highlight in case of fuzzy match,
              skip-highlight when not inserting anything
              (glepnir)

    closes: vim/vim#16404

    https://github.com/vim/vim/commit/e890887b8052561ac5f8dce218e578ed28599cc6

commit dcaf9a60e9c0b3b4f8439897b344b4e632802beb
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 10 20:03:35 2025 +0100

    vim-patch:51754c8: runtime(editorconfig): set omnifunc to syntaxcomplete func

    closes: vim/vim#16419

    https://github.com/vim/vim/commit/51754c8a498c39592250a077f56db89dd261995d

    Co-authored-by: Yochem van Rosmalen <git@yochem.nl>

commit aa2b44fbb07f3ab4dd00ea4a3ae7c5d31bc20a9d
Author: Guilherme Soares <48023091+guilhas07@users.noreply.github.com>
Date:   Fri Jan 10 22:46:19 2025 +0000

    fix(treesitter): don't return error message on success #31955

    Problem:
    The `vim.treesitter.language.add` function returns
    a error message even when it succeeds.

    Solution:
    Don't return error message on success.

commit 37c77ab46baaeadb7c3cc5f3b77bd8ca1d7cd0da
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Fri Jan 10 23:43:45 2025 +0100

    fix(messages): attaching/detaching ext_messages causes asserts #31952

    Problem:  Assert hit related to message kind, which is reset after a
              ext_messages UI is forcibly detached, so the assertion is
              expectedly false. Assert hit related to message grid variables
              after an ext_messages UI attaches while message grid is scrolled.
    Solution: Don't check message kind assertion if no ext_messages UI is
              attached. Flush message grid when first/last ext_messages UI
              attaches/detaches.

commit cb02c20569b56545a1657d4f7f8f29171f1037d7
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Fri Jan 10 12:25:46 2025 -0800

    refactor(treesitter.foldexpr): remove unused parse_injections parameter

commit 0717dfbfaf36887dab277527eb0a93bf2182297c
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Fri Jan 10 11:42:04 2025 -0800

    refactor(api): deprecate nvim_notify #31938

    Problem:
    The `nvim_notify` API (note: unrelated to `vim.notify()` Lua API) was
    not given any real motivation in https://github.com/neovim/neovim/pull/13843

    There are, and were, idiomatic and ergonomic alternatives already.

    Solution:
    Deprecate `nvim_notify`.

commit b06f42b5023b2eec576e5bf22cdacd4c1ee4a939
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 10 17:17:34 2025 +0800

    vim-patch:df4a7d7: runtime(tiasm): use correct syntax name tiasm in syntax script (#31942)

    vim-patch:df4a7d7: runtime(tiasm):  use correct syntax name tiasm in syntax script

    closes: vim/vim#16416

    https://github.com/vim/vim/commit/df4a7d761740d59a4f911c9e13ac620a459cdea6

    Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>

commit 87610d82db912cda8877198c25dabbf2bb08f0aa
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 9 17:58:37 2025 +0100

    fix(decor): set invalid flag for end of invalidated paired marks

commit a37784ad831fdf31e7eeafdd41f7d3cb81b1a07f
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 10 08:04:02 2025 +0800

    vim-patch:9.1.1000: tests: ruby tests fail with Ruby 3.4 (#31940)

    Problem:  tests: ruby tests fail with Ruby 3.4
    Solution: adjust expected output for Ruby 3.4
              (Yee Cheng Chin)

    Vim's Ruby tests relied on explicit matching of output texts which are
    fragile in design. Ruby 3.4 has changed the output slightly (using
    'name' instead of `name', and also using more spaces in dictionary
    printouts). Modify the Vim tests to be less fragile to such changes.

    closes: vim/vim#16411

    https://github.com/vim/vim/commit/ebea31e454b9a1731cde845226f2c28ca5c097b1

    Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>

commit 846a2019c0e3b3a91477c12ec2c4ac85861b4d67
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 10 08:03:44 2025 +0800

    vim-patch:9.1.0999: Vim9: leaking finished exception (#31939)

    Problem:  leaking finished exception
              (after v9.1.0984)
    Solution: use finish_exception to clean up caught exceptions
              (Yee Cheng Chin)

    In Vimscript, v:exception/throwpoint/stacktrace are supposed to reflect
    the currently caught exception, and be popped after the exception is
    finished (via endtry, finally, or a thrown exception inside catch).
    Vim9script does not handle this properly, and leaks them instead. This
    is clearly visible when launching GVim with menu enabled.  A caught
    exception inside the s:BMShow() in menu.vim would show up when querying
    `v:stacktrace` even though the exception was already caught and handled.

    To fix this, just use the same functionality as Vimscript by calling
    `finish_exception` to properly restore the states. Note that this
    assumes `current_exception` is always the same as `caught_stack` which
    believe should be the case.

    Added tests for this. Also fix up test_stacktrace to properly test the
    stack restore behavior where we have nested exceptions in catch blocks
    and to also test the vim9script functionality properly.

    - Also, remove its dependency on explicitly checking a line number in
      runtest.vim which is a very fragile way to write tests as any minor
      change in runtest.vim (shared among all tests) would require changing
      test_stacktrace.vim. We don't actually need such granularity in the
      test.

    closes: vim/vim#16413

    https://github.com/vim/vim/commit/2051af1642843426714efc2572c3e270fe0948be

    Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>

commit 7c00e0efbb18e8627ac59eaadf564a9f1b2bafcd
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Thu Jan 9 09:26:45 2025 -0800

    docs: misc #31867

commit 0c296ab22484b4c009d119908d1614a6c6d96b2c
Author:…
msaher added a commit to msaher/neovim that referenced this pull request Jan 27, 2025
commit b288fa8d62c3f129d333d3ea6abc3234039cad37
Author: dundargoc <gocdundar@gmail.com>
Date:   Fri Jan 24 15:38:10 2025 +0100

    build(bump_deps): abort if archive doesn't exist

    Also use git tag archive over commit sha if possible.

commit 21aed725d2ac9ef5c6eb2ab631a6e1c3ad9b25fb
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 26 18:35:19 2025 +0100

    vim-patch:db23436: runtime(asm): add byte directives to syntax script

    closes: vim/vim#16523

    https://github.com/vim/vim/commit/db23436b92a1b08e91146ef462482f2c1a79dfe8

    Co-authored-by: Nir Lichtman <nir@lichtman.org>

commit c7d4a77ff9040c8b242f9d12a98472fe6217328c
Author: glepnir <glephunter@gmail.com>
Date:   Mon Jan 27 08:02:33 2025 +0800

    refactor(api): add missing cast #31960

commit 1759b7844a2d468310b6d0ceca899fec6f2d4b84
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Sun Jan 26 15:33:03 2025 -0800

    feat(diagnostic): virtual_lines #31959

commit d84a95da7e11555376a0ce60a0d4b5fbe15892d3
Author: glepnir <glephunter@gmail.com>
Date:   Mon Jan 27 07:28:33 2025 +0800

    feat(api): nvim_get_autocmds filter by id#31549

    Problem:
    nvim_get_autocmds cannot filter by id.

    Solution:
    Support it.

commit b8e947ed4ed04f9aeef471f579451bbf2bb2993d
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 25 16:26:13 2025 +0100

    vim-patch:fb49e3c: runtime(filetype): commit 99181205c5f8284a3 breaks V lang detection

    so make the regex more strict and have it check for a parenthesis.

    See:
    https://github.com/vlang/v/blob/master/examples/submodule/mymodules/submodule/sub_functions.v

    related: vim/vim#16513

    https://github.com/vim/vim/commit/fb49e3cde79de4ce558c86d21a56eb9d60aeabd5

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 974a3f7a438bb772bd681987b25214784c52c7da
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 25 15:41:29 2025 +0100

    vim-patch:9918120: runtime(filetype): Improve Verilog detection by checking for modules definition

    While at it, also increase the maximum number of lines to check to 500.

    fixes: vim/vim#16513

    https://github.com/vim/vim/commit/99181205c5f8284a30f839107a12932924168f17

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit e3e1c1e76581e63ea588a553f9b91f36a61d9d51
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 25 15:40:47 2025 +0100

    vim-patch:509a8d5: runtime(just): fix typo in syntax file

    closes: vim/vim#16515

    https://github.com/vim/vim/commit/509a8d58f9a8ce00744114c1f21f0d951a559ecd

    Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>

commit d4a65dad23b910ad0e5f44cc1720e8bd82bd749b
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 25 23:03:43 2025 +0800

    vim-patch:9.1.1052: tests: off-by-one error in CheckCWD in test_debugger.vim (#32202)

    Problem:  tests: off-by-one error in CheckCWD in test_debugger.vim
    Solution: Fix off-by-one in CheckCWD leading to local tests failure
              (Yee Cheng Chin)

    Vim's test_debugger's Test_debug_backtrace_level test will fail if you
    happen to run it in a Vim repository with full path of directory being
    exactly 29 characters (e.g. `/Users/bob/developing/src/vim`). The test
    does term dump comparison and the printout will overflow if the CWD is
    too long. It does have a function to skip to test if it detects that but
    it's off by one leading to this one situation where it will fail.

    The reason why the logic didn't account for this is that Vim's message
    printing will overflow the text if it prints a message at exactly the
    width of the terminal. This could be considered a bug / quirk but that
    will be another issue.

    closes: vim/vim#16517

    https://github.com/vim/vim/commit/3acfbb4b548f4b1659ff1368a1b626cdd263acbe

    Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>

commit fb1740521aad48ba7ebd797042d869e3d649b91a
Merge: 851137f679 689c23b2ac
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 25 22:57:59 2025 +0800

    Merge pull request #32204 from zeertzjq/vim-9.1.1049

    vim-patch:9.1.{1049,1053}: 'completeopt' "nosort"

commit 689c23b2ac5c8cb5953e45f9f0cf6c369e8d88df
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 25 22:34:54 2025 +0800

    vim-patch:9.1.1053: "nosort" enables fuzzy filtering even if "fuzzy" isn't in 'completeopt'

    Problem:  "nosort" enables fuzzy filtering even if "fuzzy" isn't in
              'completeopt' (after v9.1.1049)
    Solution: Only enable fuzzy filtering when "fuzzy" is in 'completeopt'.
              (zeertzjq)

    closes: vim/vim#16510

    https://github.com/vim/vim/commit/d65aa1bbdb808ef8fecde6df240c48cc39a52a8e

commit 63aa167f944b147b9d4b8c417a37f4beb212d984
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 24 06:44:23 2025 +0800

    vim-patch:9.1.1049: insert-completed items are always sorted

    Problem:  insert-completed items are always sorted, although the LSP
              spec[1] standard defines sortText in the returned
              completionitem list. This means that the server has sorted the
              results. When fuzzy is enabled, this will break the server's
              sorting results.
    Solution: disable sorting of candidates when "nosort" is set in
              'completeopt'

    [1]
    https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItem

    closes: vim/vim#16501

    https://github.com/vim/vim/commit/f400a0cc41113eb75516bdd7f38aeaa15208ba2c

    Co-authored-by: glepnir <glephunter@gmail.com>

commit 851137f67905f6038e51b5b7d1490fbedea4faaa
Author: phanium <91544758+phanen@users.noreply.github.com>
Date:   Sat Jan 25 12:05:47 2025 +0800

    fix(log): log unset $TMPDIR at "debug" level #32137

commit 931ee5591fa764a769946318e05062098baf7c21
Author: georgev93 <39860568+georgev93@users.noreply.github.com>
Date:   Fri Jan 24 22:57:45 2025 -0500

    feat(extmarks): virtual text can be right-aligned, truncated #31921

    Problem: Right aligned virtual text can cover up buffer text if virtual
    text is too long

    Solution: An additional option for `virt_text_pos` called
    `eol_right_align` has been added to truncate virtual text if it would
    have otherwise covered up buffer text. This ensures the virtual text
    extends no further left than EOL.

commit c6d2cbf8f51abfa0c9d244ef384a15b0b69e16c6
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 23 12:42:38 2025 +0100

    fix(lua): pop retval for fast context LuaRef

    Problem:  nlua_call_ref_ctx() does not pop the return value in fast
              context that did not error.
    Solution: Fall through to end; calling nlua_call_pop_retval().

commit d98827b634af29d74079d1848dd5e8c5d2be1233
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Wed Jan 22 23:13:40 2025 +0100

    fix(messages): avoid empty msg_showmode with 'noshowmode'

commit 0fd4ef5da7448fa3449643b23d6aa3af1640efe8
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 17:36:35 2025 +0100

    ci(tests): remove build-types jobs

    Problem: Some CI jobs are redundant: `RelWithDebInfo` is already tested
    on Linux-Arm64; `MinSizeRel` and Ninja Multi Config are not sufficiently
    relevant in practice to spend CI cycles on.

    Solution: Remove `build-types` job.

commit 3702bcb139275beacb9d3d37f833b16d899f5013
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Thu Jan 16 18:08:45 2025 +0100

    ci(tests): add arm64 runner

    Problem: Linux `aarch64`/`arm64` builds are not tested.

    Solution: Add `ubuntu-arm` runners to test matrix (using
    `RelWithDebInfo` build).

commit 2470db02c5136525b8abce1ee0889d94f8d81d98
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 24 08:52:55 2025 +0800

    vim-patch:partial:9.1.1050: too many strlen() calls in os_unix.c (#32188)

    Problem:  too many strlen() calls in os_unix.c
    Solution: refactor os_unix.c and remove calls to strlen()
              (John Marriott)

    closes: vim/vim#16496

    https://github.com/vim/vim/commit/efc41a5958bf25b352e0916af5f57dafbbb44f17

    Omit os_expand_wildcards() change: Nvim's code is more complicated and
    harder to refactor.

    Co-authored-by: John Marriott <basilisk@internode.on.net>

commit 8bc28978b632362ae658f8d4a6327e07a8b371b2
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Fri Jan 24 00:42:24 2025 +0100

    fix(column): apply custom highlight to last 'statuscolumn' segment (#32182)

commit 2cd72258f6be0ea20f0341be9bc0d306c4533535
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Tue Jan 21 11:15:31 2025 +0100

    fix(mouse): 'statuscolumn' fold and popopmenu handling

    Problem:  A right-click on the 'statuscolumn' does not open the
              popupmenu, even if a cell without a clickdef is clicked.
              Clicking the %C fold item does not open/close the fold.
    Solution: Open the popupmenu when there is no clickdef like right-clicking
              the sign/numbercolumn does. Fill "linebuf_vcol" when drawing the
              'statuscolumn' to handle foldcolumn item clicks.

commit a450fda4ededdd93e3dc571d82a6737f6b9d50d9
Author: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Date:   Thu Jan 23 10:42:00 2025 +0200

    fix(lsp): prefer `on_list` over `loclist` in default handler

    Problem: setting `loclist = true` makes `on_list` being ignored. This
      was not a problem before, but with `vim.lsp.buf.document_symbol` using
      `loclist = true` as default it is needed to explicitly pass `loclist =
      false` in order to use custom `on_list`.

    Solution: prefer `on_list` over `loclist` and document the latter as
      taking effect only in the default handler.

commit 34d808b73cbcb0a43636d826282193ab1ca8c148
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 18:10:22 2025 +0100

    feat(api): combined highlights in nvim_eval_statusline()

    Problem:  Combined highlighting was not applied to nvim_eval_statusline(),
              and 'statuscolumn' sign segment/numhl highlights.
    Solution: Add an additional `groups` element to the return value of
              `nvim_eval_statusline()->highlights`. This is an array of stacked
              highlight groups (highest priority last). Also resolve combined
              highlights for the 'statuscolumn' sign segment/numhl highlights.
              Expose/synchronize some drawline.c logic that is now mimicked in
              three different places.

commit 8634bd46b26f28fa26950128b0cc585560bd6a9a
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Mon Jan 20 22:45:47 2025 +0100

    vim-patch:9.1.1042: filetype: just files are not recognized

    Problem:  filetype: just files are not recognized
    Solution: adjust filetype detection pattern, detect just shebang line,
              include just ftplugin, indent and syntax plugin
              (Peter Benjamin)

    closes: vim/vim#16466

    https://github.com/vim/vim/commit/72755b3c8e91ec90447969b736f080e0de36003d

    Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>

commit 28998e1f8a9cdca27ada7030757b7a47e99ce5b6
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 23 16:33:41 2025 +0800

    vim-patch:9.1.1045: filetype: N-Tripels and TriG files are not recognized (#32170)

    Problem:  filetype: N-Tripels and TriG files are not recognized
    Solution: detect '*.nt' files as ntriples filetype and '*.trig' files
              as trig filetype (Gordian Dziwis)

    closes: vim/vim#16493

    https://github.com/vim/vim/commit/c04334c33f543a6b84a4442cf235d84f5eaef6bb

    Co-authored-by: Gordian Dziwis <gordian@dziw.is>

commit 4c9f3689a1c0646c8d743a2958af286b05c04ac5
Author: phanium <91544758+phanen@users.noreply.github.com>
Date:   Thu Jan 23 10:39:26 2025 +0800

    fix(checkhealth): failed if 'lua' in plugin name

commit a9c12d4c298813ed3aee36b2b4d5d0912c7201ea
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 23 08:12:10 2025 +0800

    vim-patch:9.1.1048: crash after scrolling and pasting in silent Ex mode (#32168)

    Problem:  Crash after scrolling and pasting in silent Ex mode.
              (fizz-is-on-the-way)
    Solution: Don't move cursor to line 0 when scrolling.
              (zeertzjq)

    closes: vim/vim#16506

    https://github.com/vim/vim/commit/df098fedbc2c481e91ea7e6207dab90359a92cc3

commit fd55c7df6f7eb61c65e93c6dd8beffaeed93d2ed
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 23 08:11:53 2025 +0800

    test(lua/hl_spec): set timeout for transient state (#32169)

commit af0ef2ac9dd19b7c4005a3197334d3e7d554646c
Author: Siddhant Agarwal <68201519+siddhantdev@users.noreply.github.com>
Date:   Wed Jan 22 21:16:24 2025 +0530

    feat(lua): vim.hl.range() "timeout" #32012

    Problem:
    `vim.hl.on_yank()` has a "timeout" behavior but this is not available for
    `vim.hl.range()`.

    Solution:
    Add `timeout` arg to `vim.hl.range()`.

commit 34344b939c060d36db719f17088639744ca61c94
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed Jan 22 16:36:57 2025 +0100

    fix(editor): avoid scrolling :substitute confirm message #32149

    Regression from 48e2a73.

commit 22fd52325bf60cadaf24bca328a602764f53d6a9
Author: jdrouhard <john@drouhard.dev>
Date:   Wed Jan 22 07:02:30 2025 -0600

    fix(inspector): update semantic token namespace (#32157)

    This updates the extmark namespace to search for when filtering out
    semantic tokens to match the new namespace style recently introduced.

commit d46ebd2a74036a349606213fcd2a8b3530adebcf
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 22 17:10:29 2025 +0800

    fix(startup): avoid crash with completion from -l script (#32160)

    Related #27764

commit a66f6add29fd8b2ee352c6089ceca6ab4f522385
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 22 10:55:41 2025 +0800

    vim-patch:9.1.1046: fuzzymatching doesn't prefer matching camelcase (#32155)

    Problem:  fuzzymatching doesn't prefer matching camelcase
              (Tomasz N)
    Solution: Add extra score when case matches (glepnir)

    fixes: vim/vim#16434
    closes: vim/vim#16439

    https://github.com/vim/vim/commit/9dfc7e5e6169594f6f4607ef1ba9dd347a9194d2

    Co-authored-by: glepnir <glephunter@gmail.com>

commit a8b6fa07c4d9143f3bd279ce8fd87e8121da16e1
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 22 09:28:27 2025 +0800

    fix(search): avoid quadratic time complexity when computing fuzzy score (#32153)

commit 3a25995f304039517b99b8c7d79654adf65c7562
Merge: d7aba51d39 06a1f82f1c
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 22:50:39 2025 +0800

    Merge pull request #32144 from zeertzjq/termkey-x1-x2

    feat(tui/terminal): support X1 and X2 mouse events

commit 06a1f82f1cc37225b6acc46e63bd2eb36e034b1a
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 21:00:56 2025 +0800

    feat(terminal): forward X1 and X2 mouse events

    Ref:
    https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Other-buttons

commit 44dbfcfba4b09bb0e38f4a3f1960fa256a7bed71
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 20:50:33 2025 +0800

    feat(tui): recognize X1 and X2 mouse events

    Ref:
    https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Other-buttons

commit d7aba51d39c7409ef388ed7cffe3e31d9fcec163
Merge: 05435bf105 4cced601c8
Author: bfredl <bjorn.linse@gmail.com>
Date:   Tue Jan 21 12:32:20 2025 +0100

    Merge pull request #32098 from bfredl/multihl_group

    feat(extmark): stack multiple highlight groups in `hl_group`

commit 4cced601c8cdfd6253266b035667dd0383a07ebe
Author: bfredl <bjorn.linse@gmail.com>
Date:   Fri Jan 17 13:44:07 2025 +0100

    feat(extmark): stack multiple highlight groups in `hl_group`

    This has been possible in the "backend" for a while but
    API was missing.

    Followup: we will need a `details2=true` mode for `nvim_get_hl_id_by_name`
    to return information in a way forward compatible with even further
    enhancements.

commit 05435bf10585e7f850ff44acd63446fbcc56bfe5
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 21 08:10:14 2025 +0800

    vim-patch:c273f1a: runtime(vim): Update base-syntax, match ternary and falsy operators (#32132)

    fixes: vim/vim#14423
    fixes: vim/vim#16227
    closes: vim/vim#16484

    https://github.com/vim/vim/commit/c273f1ac770e86767206c8193bab659b25d3b41b

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit 855a2a75e6f7d08376c221a46e0179e5c76176ec
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Mon Jan 20 22:44:56 2025 +0100

    vim-patch:4335fcf: runtime(kconfig): updated ftplugin and syntax script

    https://github.com/vim/vim/commit/4335fcfed1b0a29c07b10f97d1f309dd8f964de6

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit f50f86b9ff5dd2aab7838801d3c1cad898ea0c77
Author: Konrad Malik <konrad.malik@gmail.com>
Date:   Mon Jan 20 17:17:46 2025 +0100

    fix(treesitter): compute folds on_changedtree only if not nil

commit 0bc75ac78eba28c22d0facd3743fbe2dc573ee90
Author: dundargoc <gocdundar@gmail.com>
Date:   Mon Jan 20 17:34:53 2025 +0100

    ci(news): treat deprecated.txt as part of news.txt

    This is because we reference to deprecated.txt from news.txt, so
    deprecation news updates are made only in deprecated.txt.

commit 20e16c1c49ea946203f13a7e77c9b20ff9749659
Merge: 5b1136a99c 19b25f3fea
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon Jan 20 15:42:56 2025 +0100

    Merge pull request #32099 from bfredl/no_bufhl

    feat(api): deprecate nvim_buf_add_highlight()

commit 5b1136a99c7fc6db4cfe6865b72c069a4697c1a5
Author: Donatas <contactdonatas@gmail.com>
Date:   Mon Jan 20 16:40:26 2025 +0200

    feat(inccommand): preview 'nomodifiable' buffers #32034

    Problem:
    Incremental preview is not allowed on 'nomodifiable' buffers.

    Solution:
    - Allow preview on 'nomodifiable' buffers.
    - Restore the 'modifiable' option in case the preview function changes it.

commit 92556be33d04668c58a37794de5562af6297b3ac
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 16:03:06 2025 +0100

    fix(messages): compute msg_col after last newline in ext_messages

    Problem:  We want to keep track of the current message column, which is
              done very rudimentary for ext_messages; only checking if the
              message ends in a newline to reset the column, while computing
              the entire cellwidth of the message, which may contain
              (multiple) newlines not necessarily at the end (since 21718c6).
              This introduced a noticeable delay for large messages (e.g. :=vim).
    Solution: Calculate the cellwidth of the message after the last newline.
              Use it to keep track of the current message column. This might
              not be a functional change currently, since it only affects
              messages with (multiple) newlines not at the end of a message,
              which I don't think we emit internally, and msg_col is reset for
              a new kind. It does fix the performance problem.

commit ded15ca8c210965442d39ab214d4838b80a3fdc6
Author: Konrad Malik <konrad.malik@gmail.com>
Date:   Mon Jan 20 15:10:00 2025 +0100

    fix: completion.enable(false,...) deletes invalid augroup #32121

    Problem:

        vim.lsp.completion.enable(true, client.id, bufnr)
        vim.lsp.completion.enable(false, client.id, bufnr)

        Error detected while processing LspDetach Autocommands for "*":
        Error executing lua callback: …/lsp/completion.lua:701: Vim:E367: No such group: "vim/lsp/completion-22"
        stack traceback:
                [C]: in function 'nvim_del_augroup_by_name'
                …/lsp/completion.lua:701: in function 'disable_completions'
                …/lsp/completion.lua:724: in function 'enable'

    Solution:
    Delete the correct augroup.

commit 8a236c242a76825a6a9266feda45794c7328c807
Author: Guilherme Soares <48023091+guilhas07@users.noreply.github.com>
Date:   Mon Jan 20 13:00:13 2025 +0000

    fix(lsp): set floating window filetype after setup #32112

    Problem:
    The filetype for the floating window buffer is being set before its context is fully initialized.
    This results in `FileType` events not receiving the correct context.

    Solution:
    Set the filetype after the floating preview window and its buffer variables are
    fully configured to ensure proper context is provided.

commit 19b25f3feacfedc18a57eb2a1368a1ed07ac5faa
Author: bfredl <bjorn.linse@gmail.com>
Date:   Sun Jan 19 13:30:11 2025 +0100

    feat(api): deprecate nvim_buf_add_highlight()

    This was kept for a while as it was a useful short hand and initially
    matched what highlights what actually properly implemented. But now
    |vim.hl.range()| is a better high-level shorthand with full support for
    native multi-line ranges.

commit 27c88069538bf64dace1ed39512d914e88615ac1
Author: Jaehwang Jung <tomtomjhj@gmail.com>
Date:   Mon Jan 20 21:17:36 2025 +0900

    docs(treesitter): expose LanguageTree:parent() #32108

    Plugins may want to climb up the LanguageTree.

    Also add missing type annotations for other methods.

commit 71922cd1dc3bb6e040d7ab1ecd4d457f979a98fa
Merge: 5b025b499e 59da82abd9
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon Jan 20 11:02:58 2025 +0100

    Merge pull request #31597 from bfredl/deletionism

    fix(wininfo): when freeing windows, free the lowest priority wininfo

commit 5b025b499ec430f1733409f0fb5ba3f88ce25a88
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 18 10:42:11 2025 +0100

    vim-patch:9.1.1030: filetype: setting bash filetype is backwards incompatible

    Problem:  filetype: setting bash filetype is backwards incompatible
    Solution: revert patch v9.1.0965, detect bash scripts again as sh
              filetype

    This reverts commit b9b762c21f2b61e0e7d8fee43d4d3dc8ecffd721.

    related: vim/vim#16309

    https://github.com/vim/vim/commit/727c567a0934643e2d6e1dd92d4e636b17d9067f

    Co-authored-by: Christian Brabandt <cb@256bit.org>

    vim-patch:9.1.1033: tests: shaderslang was removed from test_filetype erroneously

    Problem:  tests: shaderslang was removed from test_filetype erroneously
              (Christian Clason, after v9.1.1030)
    Solution: restore the test

    https://github.com/vim/vim/commit/1d2867df0c5dfa3d2444229f9e4b23d6ff935956

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit b172dd57faac8de98291b644c0b0e1ee6d4691e0
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 16:50:38 2025 +0100

    vim-patch:2cb8246: runtime(tex): add texEmphStyle to texMatchGroup in syntax script

    fixes: vim/vim#16228

    https://github.com/vim/vim/commit/2cb8246eb969594a6969b03dcf8ea89aa7deda6e

    Co-authored-by: Christian Brabandt <cb@256bit.org>
    Co-authored-by: Github User JordL

commit 4dc2e016dacfbbeaa6671a23f7ce8a4bb06c853f
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 16:51:11 2025 +0100

    vim-patch:d402ba8: runtime(netrw): upstream snapshot of v175

    Relevant commits:
    - release: netrw v175
    - fix: prevent netrw to load into the built-in terminal
    - fix: restore correctly cpo settings
    - fix(docs): mispelled original authors name
    - chore: move viml files to new formatting standard

    fixes: vim/vim#16463
    closes: vim/vim#16465

    https://github.com/vim/vim/commit/d402ba81e256b21e73a98ec809bd4a9482613553

    Co-authored-by: Luca Saccarola <github.e41mv@aleeas.com>

commit de83cc5842c94d84ef5b876b7cfb06372c7e7b9c
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 19 17:05:32 2025 +0100

    fix(netrw): re-add missing comment marker in syntax file

commit 5f527f24f0ea89e9071e065530cbed449507df5c
Author: Mathias Fussenegger <f.mathias@zignar.net>
Date:   Sun Jan 19 21:49:02 2025 +0100

    fix(lsp): don't use completion filterText if prefix is empty

    Follow up to https://github.com/neovim/neovim/pull/32072

    If there is no prefix (e.g. at the start of word boundary or a line), it
    always used the `filterText` because the `match` function always
    returned false.

commit d56ba71af11c9048c9085e4f66a47947770bdb29
Author: Yochem van Rosmalen <git@yochem.nl>
Date:   Sun Jan 19 22:08:10 2025 +0100

    fix(lsp): document_symbol uses loclist by default #32070

    Problem: Not able to open document symbols for different buffers

    Solution: Use the location list as default.

    To switch back to previous behavior (qflist):

      vim.lsp.buf.document_symbol({ loclist = false })

    Fixes: #31832

commit a6f219b06bebf5878b970bebf53db7b942fe8731
Author: deepsghimire <70006817+deepsghimire@users.noreply.github.com>
Date:   Mon Jan 20 01:22:04 2025 +0545

    fix(log): unintuitive message for undefined $TMPDIR

commit 6696ea7f103814d3d5700107546280bf50a4004a
Author: Jaehwang Jung <tomtomjhj@gmail.com>
Date:   Sun Jan 19 00:07:47 2025 +0900

    fix(treesitter): clean up parsing queue

commit ee54069d1d279b351e5569cb205b1ee111ec0dc5
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 19 22:14:52 2025 +0800

    vim-patch:8dec6c2: runtime(vim): Update base-syntax, fix is/isnot operator matching (#32100)

    - Match is? and isnot? operators.
    - Limit other comparison operators to one match modifier rather than
      two.

    closes: vim/vim#16482

    https://github.com/vim/vim/commit/8dec6c2e6c2b5157334398e2e6ab7daa91999d80

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit 71507281fb86deaaa7f47460e8c7a503b46663f6
Author: Devon Gardner <devon@goosur.com>
Date:   Sat Jan 18 19:49:53 2025 -0500

    fix(coverity/530826): validate_opt_idx unchecked negative idx (#32081)

    Problem:
    opt_idx possible negative value used as index

    Solution:
    check opt_idx not less than zero (kOptInvalid)

commit a5b1b83a2693ffa7a5a0a22b3693d36ea60051be
Author: 林玮 (Jade Lin) <linw1995@icloud.com>
Date:   Sat Jan 18 16:40:40 2025 +0800

    fix(lua): prevent SIGSEGV when lua error is NULL in libuv_worker

    Problem:
    Calling `xstrdup` with a NULL pointer causes a SIGSEGV if `lua_tostring` returns
    NULL in `nlua_luv_thread_common_cfpcall`.

    Crash stack trace:
    - `_platform_strlen` → `xstrdup` (memory.c:469)
    - `nlua_luv_thread_common_cfpcall` (executor.c:281)

    Solution:
    Check if `lua_tostring` returns NULL and pass NULL to `event_create` to avoid the crash.

commit 51ccd12b3dbc50300e83f503426abbcb605efcea
Author: Gregory Anders <greg@gpanders.com>
Date:   Sat Jan 18 07:43:21 2025 -0600

    fix(diagnostic)!: make virtual text handler opt-in (#32079)

    Making this opt-out (on by default) was the wrong choice from the
    beginning. It is too visually noisy to be enabled by default.

    BREAKING CHANGE: Users must opt-in to the diagnostic virtual text
    handler by adding

      vim.diagnostic.config({ virtual_text = true })

    to their config.

commit 954d4969c991be1a758c121be6f7d811b5e5cea1
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 18 10:58:14 2025 +0100

    vim-patch:e064051: runtime(c): add new constexpr keyword to syntax file (C23)

    closes: vim/vim#16471

    https://github.com/vim/vim/commit/e06405181a6189aa56e917c1a7e5090a33b07a8a

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit 7d04ebd43c29a5f0663e6a2a9c5b54f064247d01
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 18 10:46:33 2025 +0100

    vim-patch:54cb514: runtime(sh): update syntax script

    - remove duplicated keywords
    - add bash coproc and COPROC_PID keywords

    https://github.com/vim/vim/commit/54cb514c9a8320d77650a63f0f7405aa8cc5b0d7

    Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>

commit 27da6f77578c10090ad33a94ce26006a79784ee3
Author: dundargoc <gocdundar@gmail.com>
Date:   Sun Jan 12 13:10:48 2025 +0100

    refactor: simplify bump_deps.lua

    Simplify usage and remove redundant flags and code.

commit e962167245755e900a7bd154075106026dbb4eff
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 13:48:47 2025 +0100

    vim-patch:9cfdabb: runtime(netrw): change netrw maintainer

    Dr. Chip retired some time ago and is no longer maintaining the netrw
    plugin. However as a runtime plugin distributed by Vim, it important to
    maintain the netrw plugin in the future and fix bugs as they are
    reported.

    So, split out the netrw plugin as an additional package, however include
    some stubs to make sure the plugin is still loaded by default and the
    documentation is accessible as well.

    closes: vim/vim#16368

    https://github.com/vim/vim/commit/9cfdabb074feefc9848e9f7a4538f201e28c7f06

    Co-authored-by: Luca Saccarola <github.e41mv@aleeas.com>

commit 136cb642a0022fd005481e729dcc917552103322
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 18:42:07 2025 +0100

    vim-patch:c2a967a: runtime(c): Update syntax and ftplugin files

    - highlight more C keywords, including some from C23

    Conditionally highlight C23 features:
    - #embed, #elifdef and #elifndef preprocessor directives
    - predefined macros
    - UTF-8 character constants
    - binary integer constants, _BitInt literals, and digit separators
    - nullptr_t type and associated constant
    - decimal real floating-point, bit precise and char types
    - typeof operators

    Matchit:
    - update for new preprocessor directives

    fixes: vim/vim#13667
    fixes: vim/vim#13679
    closes: vim/vim#12984

    https://github.com/vim/vim/commit/c2a967a1b9adca6c929e3dc5c218dfada00059b6

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>
    Co-authored-by: Albin Ahlbäck <albin.ahlback@gmail.com>

commit c9000a6b13fd6695f6e28a890b82b490a123f25e
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 18 10:03:13 2025 +0800

    vim-patch:9.1.1028: too many strlen() calls in screen.c (#32083)

    Problem:  too many strlen() calls in screen.c
    Solution: refactor screen.c and remove calls to strlen(),
              verify that leadmultispace != NULL (John Marriott)

    closes: vim/vim#16460

    https://github.com/vim/vim/commit/c15de972e8131def2f506bb9eb6b306ca089629c

    Co-authored-by: John Marriott <basilisk@internode.on.net>

commit c6cc937512f59af12fd1b15ca4f7a11288f28ca0
Author: Yochem van Rosmalen <git@yochem.nl>
Date:   Fri Jan 17 23:56:30 2025 +0100

    docs: change augroup names to new convention #32061

    Ref: 09e01437c968be4c6e9f6bb3ac8811108c58008c

commit b9e6fa7ec81c463d77cc919392b52f6df2d8d304
Author: Mathias Fussenegger <f.mathias@zignar.net>
Date:   Fri Jan 17 15:27:50 2025 +0100

    fix(lsp): use filterText as word if textEdit/label doesn't match

    Problem:

    With language servers like lemminx, completing xml tags like `<mo` first
    shows the right candidates (`modules`) but after typing `d` the
    candidates disappear.

    This is because the server returns:

        [...]
        filterText = "<module",
        label = "module",
        textEdit = {
          newText = "<module>$1</module>$0",

    Which resulted in `module` being used as `word`, and `module` doesn't
    match the prefix `<mo`. Typing `d` causes the `complete()` filtering
    mechanism to kick in and remove the entry.

    Solution:

    Use `<module` from the `filterText` as `word` if the textEdit/label
    heuristic doesn't match.

commit 3530182ba491ba8663b40bdff0c044d74e89bb82
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 13:46:58 2025 +0100

    vim-patch:9.1.1026: filetype: swc configuration files are not recognized

    Problem:  filetype: swc configuration files are not recognized
    Solution: detect .swcrc files as json filetype (Marces Engel)

    References:
    https://swc.rs/docs/configuration/swcrc

    closes: vim/vim#16462

    https://github.com/vim/vim/commit/3a738fccaaf6737c91641856ea00579dbe68bd4e

    Co-authored-by: Marces Engel <marces@facemurphy.com>

commit 97d58553515552afbac2999409e9bbf9a338dfb0
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 17 10:48:37 2025 +0100

    docs(gh): use new issue types

commit 5dd60e01ace2621f2307eebeb92e9e7351210d3a
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 01:11:07 2025 +0100

    refactor(cmdline): more idiomatic way to avoid cmdline_show

    Problem:  Fix applied in #32033 can be more idiomatic.
    Solution: Unset redraw_state instead of cmdbuff.

commit 7ce27381fb49ac7d6ef1e115c3952f998e979b15
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 16 08:47:29 2025 +0100

    fix(messages): lsp window/showMessage is not an error

    Ref https://github.com/neovim/neovim/discussions/32015

commit ac3859a4410e50794a083f23796e4f8ae2a24b04
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 17 09:09:47 2025 +0800

    vim-patch:a234a46: runtime(doc): fix typo in usr_02.txt (#32063)

    fixes: vim/vim#16455

    https://github.com/vim/vim/commit/a234a46651ef174549792bd64d4bef64a32072bb

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit cd92924896ab6edeb4d3219befc59ac52a60bcf2
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 17 08:53:10 2025 +0800

    vim-patch:9.1.1021: string might be used without a trailing NUL (#32062)

    Problem:  string might be used without a trailing NUL (after v9.1.0997)
    Solution: Make sure that the buffer is NUL terminated

    closes: vim/vim#16457

    https://github.com/vim/vim/commit/70dfc374ec72634a0a61aea8344178779675d516

    Co-authored-by: John Marriott <basilisk@internode.on.net>

commit 0d3a8e8c1a7778c6c79658f26ba492a5f4a17d18
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 17 08:38:58 2025 +0800

    vim-patch:9.1.1020: no way to get current selected item in a async context (#32056)

    Problem:  no way to get current selected item in a async context
    Solution: add completed flag to show the entries of currently selected
              index item (glepnir)

    closes: vim/vim#16451

    https://github.com/vim/vim/commit/037b028a2219d09bc97be04b300b2c0490c4268d

    Co-authored-by: glepnir <glephunter@gmail.com>

commit bf098c12e3078df49fd7dee5ba7c2100a211d4c8
Merge: fb564ddff0 819337a13f
Author: Gregory Anders <greg@gpanders.com>
Date:   Thu Jan 16 18:33:22 2025 -0600

    Merge pull request #32038 from gpanders/push-nsrttwwnsqvm

    feat(terminal): add support for kitty keyboard protocol

commit 819337a13f73bb9dcd82fd51f81f062bd69ab6db
Author: Gregory Anders <greg@gpanders.com>
Date:   Wed Jan 15 13:08:18 2025 -0600

    test: use esc sequences in vterm unit tests

commit 6f0bde11ccd82d257fcda25ecad26227eba3335e
Author: Gregory Anders <greg@gpanders.com>
Date:   Wed Jan 15 11:07:51 2025 -0600

    feat(terminal): add support for kitty keyboard protocol

    This commit adds basic support for the kitty keyboard protocol to
    Neovim's builtin terminal. For now only the first mode ("Disambiguate
    escape codes") is supported.

commit fb564ddff0b4ec9dad5afa7548777af1c3044273
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Thu Jan 16 20:53:17 2025 +0000

    refactor(options): generic expand and did_set callbacks (#32011)

    * refactor(options): generic expand and did_set callbacks

    Problem:

    Many options have similar callbacks to check the values are valid.

    Solution:

    Generalize these callbacks into a single function that reads the option
    table.

    * refactor: gen_options.lua

    refactor: gen_options.lua - inline get_cond

    * refactor(options): use a simpler format for the common default

commit 92d3bf101d07d52cfbd4c22e6e06251897adda34
Merge: 718e165360 47a4e42392
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 12:20:33 2025 +0800

    Merge pull request #32051 from zeertzjq/vim-9.1.1013

    vim-patch:9.1.{1013,1017}

commit 47a4e4239203fe96d404874bdc1ea6910f72b695
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 09:35:52 2025 +0800

    vim-patch:9.1.1017: Vim9: Patch 9.1.1013 causes a few problems

    Problem:  Vim9: Patch 9.1.1013 causes a few problems
    Solution: Translate the function name only when it is a string
              (Yegappan Lakshmanan)

    fixes: vim/vim#16453
    closes: vim/vim#16450

    https://github.com/vim/vim/commit/9904cbca4132f7376246a1a31305eb53e9530023

    Cherry-pick call() change from patch 9.0.0345.

    Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>

commit f8680d009741d01e137aeb2232aa7e033cd70d7b
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 09:27:08 2025 +0800

    vim-patch:9.1.1013: Vim9: Regression caused by patch v9.1.0646

    Problem:  Vim9: Regression caused by patch v9.1.0646
    Solution: Translate the function name before invoking it in call()
              (Yegappan Lakshmanan)

    fixes: vim/vim#16430
    closes: vim/vim#16445

    https://github.com/vim/vim/commit/6289f9159102e0855bedc566636b5e7ca6ced72c

    N/A patch:
    vim-patch:8.2.4176: Vim9: cannot use imported function with call()

    Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>

commit 718e16536052c0e75de61a32ef237a9e87fc03f2
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu Jan 16 09:16:25 2025 +0800

    vim-patch:9.1.1018: v9.1.0743 causes regression with diff mode (#32047)

    Problem:  v9.1.0743 causes regression with diff mode
    Solution: Fix the regression with overlapping regions

    closes: vim/vim#16454

    https://github.com/vim/vim/commit/01f6509fb2de1627cc4ec2c109cd0aa2e3346d50

    Co-authored-by: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com>

commit 524be56042335db589b9fe62dfdae39be3f69a15
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Thu Jan 16 00:34:25 2025 +0100

    vim-patch:9.1.1019: filetype: fd ignore files are not recognized (#32042)

    Problem:  filetype: fd ignore files are not recognized
    Solution: detect .fdignore files as gitignore filetype

    closes: vim/vim#16444

    https://github.com/vim/vim/commit/3058087f6f04be788118e94e942e0f0c9fca25f0

    Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>

commit f0fdc1de6c950a015ada9550473aedde43b946ce
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Wed Jan 15 19:24:48 2025 +0100

    build(deps): bump libuv to v1.50.0

commit 7c652242579b6f734b57de106afbe1d5c32ed2fd
Author: dundargoc <gocdundar@gmail.com>
Date:   Wed Jan 15 18:18:04 2025 +0100

    build: fix lint error on macos

commit bbf36ef8ef86534e317e4e0153730a40ae4c936e
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed Jan 15 15:55:21 2025 +0100

    fix(cmdline): prevent cmdline_show events after exiting cmdline #32033

    Problem:  If a (vim.ui_attach) cmdline_hide callback triggers a redraw,
              it may cause cmdline_show events for an already exited cmdline.
    Solution: Avoid emitting cmdline_show event when ccline.cmdbuff is
              already NULL. Unset ccline.cmdbuff before emitting cmdline_hide.

commit 5cc93ef4729c65d6a539c8d0a8a2bf767cf17ced
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed Jan 15 11:38:45 2025 +0100

    fix(marks): revise metadata for start mark of revalidated pair #32017

    Problem:  Metadata may be revised for end mark of a revalidated pair.
    Solution: Revise metadata for start mark of a revalidated pair.

commit 09bcb310681e3b87d5b8c5eb547b182554cff7b4
Author: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Date:   Wed Jan 15 12:36:00 2025 +0200

    fix(docs): replace `yxx` mappings with `g==` #31947

    Problem:
    `yx` uses "y" prefix, which shadows a builtin operator.

    Solution:
    Use `g=` (in the form of `g==` currently), drawing from precedent of
    CTRL-= and 'tpope/vim-scriptease'.

commit 9552fe7ef907c5c8164abb50699e97d03de1285a
Merge: 3ee63edc1b d55b17e2b4
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Wed Jan 15 02:23:44 2025 -0800

    Merge #32013 from luukvbaal/shellkind

commit 3ee63edc1b0ca6fe664c9d5368aba05ae9a22e9d
Merge: 0a7e4e9e5f 575f4bc7d5
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Wed Jan 15 02:01:44 2025 -0800

    Merge #32001 from MariaSolOs/consistent-namespaces

commit 0a7e4e9e5f28f3b6b3c83040430d0a36fcd71fad
Author: Andrew Braxton <42975660+andrewbraxton@users.noreply.github.com>
Date:   Wed Jan 15 04:58:36 2025 -0500

    fix(lsp): vim.lsp.enable(...,false) does not disable  #32002

    Problem:
    Per the documentation, passing `false` as the `enable` parameter of
    `vim.lsp.enable()` should disable the given LSP(s), but it does not work
    due to a logic error.

    Specifically, `enable == false and nil or {}` will always evaluate to
    `{}` because `nil` is falsy.

    Solution:
    Correct the conditional statement.

commit d55b17e2b4e061fd8b330f928785a217c99c9d11
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Tue Jan 14 17:23:11 2025 +0100

    fix(messages): verbose kind for nvim_echo()

    Problem:  No "verbose" kind for nvim_echo() opts->verbose.
    Solution: Pass NULL "kind" to indicate no new kind.

commit 5bae80899d9d29d80c129ca92cde75a1583b5efe
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Tue Jan 14 12:05:23 2025 +0100

    feat(messages): add :!cmd shell message kinds

    Also print stderr error messages with ErrorMsg highlight group.

commit bc69f2723737cfe8916c117483ce32f48ff83544
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Tue Jan 14 17:18:48 2025 +0100

    vim-patch:045564d: runtime(colors): Update colorschemes, include new unokai colorscheme

    - new unokai colorscheme (similar/inspired by monokai)
    - the rest: add explicit PopupSelected link to PmenuSel

    closes: vim/vim#16443

    https://github.com/vim/vim/commit/045564d0a73218594691953c0c8bf2035e1e176e

    Co-authored-by: Maxim Kim <habamax@gmail.com>

commit 575f4bc7d5069792188520d1f0e5ed12cc035002
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Mon Jan 13 19:51:09 2025 -0800

    docs: document namespace/augroup convention

commit 09e01437c968be4c6e9f6bb3ac8811108c58008c
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Mon Jan 13 19:45:11 2025 -0800

    refactor: use nvim.foo.bar format for autocommand groups

commit a78eddd54112033eea0212865efd2f75cc59fc93
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Wed Jan 15 12:05:00 2025 +0800

    vim-patch:9.1.1015: Coverity complains about dereferencing NULL value (#32020)

    Problem:  Coverity complains about dereferencing NULL value
    Solution: Check that cms2 is not null

    closes: vim/vim#16438

    https://github.com/vim/vim/commit/1ac53b84ada3a992f320566737e66fa00d48611f

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 850084b519e18122820478a71bb4bfa4c15e528a
Author: Maria José Solano <majosolano99@gmail.com>
Date:   Mon Jan 13 19:39:03 2025 -0800

    refactor: use nvim.foo.bar format for namespaces

commit 611ef354919f1c6564efd2ff8074545941458ccc
Author: Mike <4576770+mike325@users.noreply.github.com>
Date:   Wed Jan 15 01:39:17 2025 +0100

    feat(vim.fs): find(), dir() can "follow" symlinks #31551

    Problem:
    vim.fs.dir(), vim.fs.find() do not follow symlinks.

    Solution:
    - Add "follow" flag.
    - Enable it by default.

commit e8a6c1b02122852da83dc52184e78369598d8240
Author: Gregory Anders <greg@gpanders.com>
Date:   Tue Jan 14 08:19:54 2025 -0600

    fix(lsp): schedule call to vim.lsp.start for async root_dir (#31998)

    When `root_dir` is a function it can (and often will) call the provided
    callback function in a fast API context (e.g. in the `on_exit` handler
    of `vim.system`). When the callback function is executed we should
    ensure that it runs vim.lsp.start on the main event loop.

commit f1c45fc7a4a595e460cd245172a5767bddeb09e9
Author: Gregory Anders <greg@gpanders.com>
Date:   Tue Jan 14 08:18:59 2025 -0600

    feat(terminal): support theme update notifications (DEC mode 2031) (#31999)

commit 59da82abd91e3be7eb5403c14de012cd149a1c84
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon Dec 16 13:31:59 2024 +0100

    fix(wininfo): when freeing windows, free the lowest priority wininfo

    On master (and also before #31539) closing a window could cause the
    used wininfo for a buffer to change. This is due to always removing the
    previous NULL wininfo when deleting a window, even if that wininfo had
    higher priority than the the deleted window's own wininfo.

    Instead delete the wininfo with lowest priority. This retains the memory
    saving efect while not affecting the effective value of window options
    and so on.

commit 7eabc8899af8b2fed1472165b74f43965282974f
Merge: 25d8c3a5ad 913e81c35f
Author: bfredl <bjorn.linse@gmail.com>
Date:   Tue Jan 14 14:46:34 2025 +0100

    Merge pull request #31932 from bfredl/termtab

    fix(getchar): do not simplify keycodes in terminal mode

commit 25d8c3a5ad7e9c5668841e66540ebe34ceda73a7
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Tue Jan 14 14:02:46 2025 +0100

    feat(api): nvim_open_win() relative to tabline and laststatus #32006

    Problem:  Anchoring a floating window to the tabline and laststatus is
              cumbersome; requiring autocommands and looping over all
              windows/tabpages.
    Solution: Add new "tabline" and "laststatus" options to the `relative`
              field of nvim_open_win() to place a window relative to.

commit e8ddb7a46938f8843abc1c321cfd83cee2ba0020
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Tue Jan 14 08:32:36 2025 +0100

    vim-patch:30377e0: runtime(lyrics): support milliseconds in syntax script

    The following tool creates LRC files using three fractional digits after
    the seconds (i.e. milliseconds).

    References:
    https://github.com/magic-akari/lrc-maker
    https://lrc-maker.github.io/

    closes: vim/vim#16436

    https://github.com/vim/vim/commit/30377e0fe084496911e108cbb33c84cf075e6e33

    Co-authored-by: Denilson Sá Maia <denilsonsa@gmail.com>

commit 69ad6b12ec473a54f09a11596da724178185eb7a
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue Jan 14 18:55:06 2025 +0800

    vim-patch:9.1.1010: filetype: VisualCode setting file not recognized (#32003)

    Problem:  filetype: VisualCode setting file not recognized
    Solution: detect json files in VSCode config directory as jsonc filetype
              (Konfekt)

    closes: vim/vim#16400

    https://github.com/vim/vim/commit/c200f53cbb03fa11e489a27791d5b9dfc34a6564

    Co-authored-by: Konfekt <Konfekt@users.noreply.github.com>

commit c5f93d7ab04f93db1470d58ca1f70e947e716c2b
Author: Famiu Haque <famiuhaque@proton.me>
Date:   Sat Dec 28 14:55:22 2024 +0600

    refactor(options): remove code for multitype options

    Problem: It was decided on Matrix chat that multitype options won't be necessary for Neovim options, and that options should only have a single canonical type. Therefore the code for supporting multitype options is unnecessary.

    Solution: Remove the additional code that's used to provide multitype option support.

commit b192d58284a791c55f5ae000250fc948e9098d47
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Mon Jan 13 09:42:39 2025 -0800

    perf(treesitter): calculate folds asynchronously

    **Problem:** The treesitter `foldexpr` runs synchronous parses to
    calculate fold levels, which eliminates async parsing performance in the
    highlighter.

    **Solution:** Migrate the `foldexpr` to also calculate and apply fold
    levels asynchronously.

commit 5a54681025ec28129c21c875943a3f9c37959f75
Author: Horror Proton <107091537+horror-proton@users.noreply.github.com>
Date:   Tue Jan 14 00:43:33 2025 +0800

    fix(treesitter): uv_dlclose after uv_dlerror

commit 0dfa4de9933b548d050feeff5676d580c7103787
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Tue Jan 14 08:33:11 2025 +0100

    build(deps): bump luajit to HEAD - a4f56a459

commit a4f575abd85e734340ee303daace1a63e5ca9782
Author: Xuyuan Pang <xuyuanp@gmail.com>
Date:   Tue Jan 14 07:17:23 2025 +0800

    fix(lsp): minimum height for floating popup #31990

    Problem:
    The floating window for hover and signature help always cuts off a few lines,
    because the `_make_floating_popup_size` function counts empty lines as having
    zero height.

    Solution:
    Ensure the height is at least 1.

commit 34e2185022ab698827b72751d77e218a1b6b6afe
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Fri Jan 10 10:20:43 2025 +0000

    fix(options): better handling of empty values

    Problem:

    Whether an option is allowed to be empty isn't well defined and
    isn't properly checked.

    Solution:

    - For non-list string options, explicitly check the option value
      if it is empty.
    - Annotate non-list string options that can accept an empty value.
      - Adjust command completion to ignore the empty value.
    - Render values in Lua meta files

commit cb7b4e296238b46025de05203c886d67da401728
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Mon Jan 13 13:59:34 2025 +0100

    feat(messages): "verbose" message kind #31991

commit 47866cd8d20c62afa8a3c3929d3aada2db9162f5
Author: dundargoc <gocdundar@gmail.com>
Date:   Thu Jan 9 17:28:27 2025 +0100

    refactor: delete duplicate utf8-functionality

    Also remove British National Replacement Character Set.

    We keep the DEC Special Graphics and ASCII despite it not being unicode
    as some old software such as calcurse still rely on this functionality.

    References:
    - https://github.com/neovim/neovim/pull/31934#discussion_r1911046426
    - https://en.wikipedia.org/wiki/DEC_Special_Graphics
    - https://vt100.net/docs/vt220-rm/chapter2.html#S2.4.3

commit 0631492f9c8044a378dc2a17ea257badfbda6d15
Author: dundargoc <gocdundar@gmail.com>
Date:   Mon Dec 30 16:01:00 2024 +0100

    feat: add vim.fs.relpath

    This is needed to replace the nvim-lspconfig function is_descendant that
    some lspconfg configurations still use.

commit 913e81c35f162c1e2647565397608f63f38d7043
Author: bfredl <bjorn.linse@gmail.com>
Date:   Thu Jan 9 14:05:40 2025 +0100

    fix(getchar): do not simplify keycodes in terminal mode

    The code represents a useful pattern in normal mode where remapping
    `<tab>` will implicitly also remap `<c-i>` unless you remap that
    explicitly. This relies on the _unmapped_ behavior being identical which
    is not true in terminal mode, as vterm can distinguish these keys.

    Vim seems to entangle this with kitty keyboard mode detection which
    is irrelevant for us. Conditional fallbacks depending on
    keyboard mode could be done completely inside `vterm/` without getchar.c
    getting involved, I would think.

commit a3ef29d570dd892a1bcbfa80bb242d4aac89a06e
Author: Guilherme Soares <48023091+guilhas07@users.noreply.github.com>
Date:   Mon Jan 13 09:41:49 2025 +0000

    test: use temp file #31907

commit 2c16c849986794682a4776ff4ec100d00eeba5ca
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon Jan 13 15:18:47 2025 +0800

    vim-patch:9.1.1011: popupmenu internal error with some abbr in completion item (#31988)

    Problem:  Popup menu internal error with some abbr in completion item.
    Solution: Don't compute attributes when there is no corresponding text.
              Reduce indent in pum_redraw() while at it (zeertzjq).

    fixes: vim/vim#16427
    closes: vim/vim#16435

    https://github.com/vim/vim/commit/3a0cc36c69744a7727ce34311d39d2d9d8ddc6f9

commit 99c4bd2f698345fd5706e0ff5d6221b8d3848cfb
Merge: f4cff3077b bd4ca22d03
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Mon Jan 13 06:58:33 2025 +0000

    Merge pull request #31631 from ribru17/async_parse_attempt_2

    feat(treesitter): async parsing

commit f4cff3077b21ba110bc498f3e9331c16d3121cb1
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 12 19:32:36 2025 +0100

    build(deps): bump tree-sitter to v0.24.7

commit bd4ca22d0334a3323313dfd6975a80218ec65e36
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Fri Dec 20 16:23:52 2024 -0800

    feat(treesitter)!: don't parse tree in get_parser() or start()

    **Problem:** `vim.treesitter.get_parser()` and `vim.treesitter.start()`
    both parse the tree before returning it. This is problematic because if
    this is a sync parse, it will stall the editor on large files. If it is
    an async parse, the functions return stale trees.

    **Solution:** Remove this parsing side effect and leave it to the user
    to parse the returned trees, either synchronously or asynchronously.

commit 45e606b1fddbfeee8fe28385b5371ca6f2fba71b
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Wed Dec 18 10:48:33 2024 -0800

    feat(treesitter): async parsing

    **Problem:** Parsing can be slow for large files, and it is a blocking
    operation which can be disruptive and annoying.

    **Solution:** Provide a function for asynchronous parsing, which accepts
    a callback to be run after parsing completes.

    Co-authored-by: Lewis Russell <lewis6991@gmail.com>
    Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
    Co-authored-by: VanaIgr <vanaigranov@gmail.com>

commit 3fdc4302415972eb5d98ba832372236be3d22572
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Sat Jan 11 15:44:07 2025 -0800

    perf(treesitter): cache queries strongly

    **Problem:** Query parsing uses a weak cache which is invalidated
    frequently

    **Solution:** Make the cache strong, and invalidate it manually when
    necessary (that is, when `rtp` is changed or `query.set()` is called)

    Co-authored-by: Christian Clason <c.clason@uni-graz.at>

commit 40bf23adaf98dc357a59f9524a16e06f990faeaa
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 12 12:31:13 2025 +0100

    build(deps): bump wasmtime to v25.0.3

commit bf58b757c4c2e1bf2a4afe4279150ca68a68691f
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sun Jan 12 11:42:02 2025 +0100

    vim-patch:9.1.1007: filetype: various ignore are not recognized

    Problem:  filetype: various ignore are not recognized
    Solution: detect rg/docker/npm/vvsce ignore files as 'gitgnore' filetype
              (Wu, Zhenyu)

    Not only prettier, but many programs also support ignore files (like rg,
    docker, npm, vscode). So use the gitignore filetype for them due to same syntax

    closes: vim/vim#16428

    https://github.com/vim/vim/commit/8cbe2e0a0a78f57bb545a97695bfedd6a95e6992

    Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>

commit 1a8a48d7e5f8243aff0253a82f4214241eb877d6
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 12 08:25:57 2025 +0800

    vim-patch:9.1.1003: [security]: heap-buffer-overflow with visual mode (#31971)

    Problem:  [security]: heap-buffer-overflow with visual mode when
              using :all, causing Vim trying to access beyond end-of-line
              (gandalf)
    Solution: Reset visual mode on :all, validate position in gchar_pos()
              and charwise_block_prep()

    This fixes CVE-2025-22134

    Github Advisory:
    https://github.com/vim/vim/security/advisories/GHSA-5rgf-26wj-48v8

    https://github.com/vim/vim/commit/c9a1e257f1630a0866447e53a564f7ff96a80ead

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 37316fbac641ecafde29fd750a08ece490d209c1
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 12 08:04:25 2025 +0800

    vim-patch:9.1.1005: completion text is highlighted even with no pattern found (#31973)

    Problem:  completion text is highlighted even with no pattern found
    Solution: use ins_compl_leader_len() instead of checking
              compl_leader.length (glepnir)

    closes: vim/vim#16422

    https://github.com/vim/vim/commit/9fddb8ae770be3e16545dd4c2f4cfaad8f62cb40

    Co-authored-by: glepnir <glephunter@gmail.com>

commit 88dca6a83593a0cf33866addf36cad2e847a2899
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun Jan 12 07:43:58 2025 +0800

    vim-patch:partial:9598a63: runtime(doc): add package-<name> helptags for included packages (#31972)

    Improve how to find the justify package

    closes: vim/vim#16420

    https://github.com/vim/vim/commit/9598a6369bce32d3da831e8968caf4625985ac3c

    Co-authored-by: Christian Brabandt <cb@256bit.org>
    Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>

commit a119aae4d3deebea453ccd7c2dea814aed2c9f21
Author: Gregory Anders <greg@gpanders.com>
Date:   Sat Jan 11 12:54:43 2025 -0600

    feat(diagnostic)!: filter diagnostics by severity before passing to handlers (#30070)

    BREAKING CHANGE: This changes the list of diagnostics that are passed to
    a diagnostic handler. If a handler is already filtering by severity
    itself then this won't break anything, since the handler's filtering
    will become a no-op. But handlers which depend on receiving the full
    list of diagnostics may break.

    Note that diagnostics are only filtered if the handler's configuration
    has the `severity` option set. If `severity` is not set, the handler
    still receives the full list of diagnostics.

commit 9e0d40f7e45f483e54d38be1266f63240808b4b0
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Sat Jan 11 10:58:10 2025 +0100

    vim-patch:668e9f2: runtime(filetype): don't detect string interpolation as angular

    fixes: vim/vim#16375

    https://github.com/vim/vim/commit/668e9f24037fc7c362ffdf5fc1d5c5b1a8b0e855

    Co-authored-by: Christian Brabandt <cb@256bit.org>

commit 6a425e7045cca609d95612c0f2cd08d0265238a9
Author: dundargoc <gocdundar@gmail.com>
Date:   Sun Nov 24 11:29:39 2024 +0100

    docs: misc

    Co-authored-by: Axel <axelhjq@gmail.com>
    Co-authored-by: Colin Kennedy <colinvfx@gmail.com>
    Co-authored-by: Daiki Noda <sys9kdr@users.noreply.github.com>
    Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
    Co-authored-by: Jean-Jacq du Plessis <1030058+jj-du-plessis@users.noreply.github.com>
    Co-authored-by: Juan Giordana <juangiordana@gmail.com>
    Co-authored-by: Lincoln Wallace <locnnil0@gmail.com>
    Co-authored-by: Matti Hellström <hellstrom@scm.com>
    Co-authored-by: Steven Locorotondo <steven.locorotondo@justeattakeaway.com>
    Co-authored-by: Yochem van Rosmalen <git@yochem.nl>
    Co-authored-by: glepnir <glephunter@gmail.com>
    Co-authored-by: ifish <fishioon@live.com>

commit c060a6ea640eb433197ec554ff7cf6469ee1c0e7
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 11 09:08:01 2025 +0800

    vim-patch:9.1.1001: ComplMatchIns highlight hard to read on light background (#31958)

    Problem:  ComplMatchIns highlight hard to read on light background
              (after v9.1.0996)
    Solution: define the highlighting group cleared, it should be configured in
              colorschemes separately (glepnir)

    closes: vim/vim#16414

    https://github.com/vim/vim/commit/ad409876d9cf7e565f99c5e21b9e2e400a83a4d4

    Co-authored-by: glepnir <glephunter@gmail.com>

commit df45b336f5c097609909dbc9f1e37e88961886d9
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat Jan 11 08:27:50 2025 +0800

    vim-patch:695522d: runtime(vim): Update base-syntax, highlight literal string quote escape (#31957)

    Match the '' escape sequence in literal strings.  These were previously
    ending the current string and starting another concatenated literal
    string.

    closes: vim/vim#16415

    https://github.com/vim/vim/commit/695522dea3703cf1b4cd4a894ca9a745a0d2756f

    Co-authored-by: Doug Kearns <dougkearns@gmail.com>

commit fbe546e25d21f3184814d696c329d23d146bd615
Author: glepnir <glephunter@gmail.com>
Date:   Sat Jan 11 07:58:45 2025 +0800

    vim-patch:9.1.0996: ComplMatchIns may highlight wrong text (#31931)

    Problem:  ComplMatchIns may highlight wrong text
    Solution: don't highlight in case of fuzzy match,
              skip-highlight when not inserting anything
              (glepnir)

    closes: vim/vim#16404

    https://github.com/vim/vim/commit/e890887b8052561ac5f8dce218e578ed28599cc6

commit dcaf9a60e9c0b3b4f8439897b344b4e632802beb
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Fri Jan 10 20:03:35 2025 +0100

    vim-patch:51754c8: runtime(editorconfig): set omnifunc to syntaxcomplete func

    closes: vim/vim#16419

    https://github.com/vim/vim/commit/51754c8a498c39592250a077f56db89dd261995d

    Co-authored-by: Yochem van Rosmalen <git@yochem.nl>

commit aa2b44fbb07f3ab4dd00ea4a3ae7c5d31bc20a9d
Author: Guilherme Soares <48023091+guilhas07@users.noreply.github.com>
Date:   Fri Jan 10 22:46:19 2025 +0000

    fix(treesitter): don't return error message on success #31955

    Problem:
    The `vim.treesitter.language.add` function returns
    a error message even when it succeeds.

    Solution:
    Don't return error message on success.

commit 37c77ab46baaeadb7c3cc5f3b77bd8ca1d7cd0da
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Fri Jan 10 23:43:45 2025 +0100

    fix(messages): attaching/detaching ext_messages causes asserts #31952

    Problem:  Assert hit related to message kind, which is reset after a
              ext_messages UI is forcibly detached, so the assertion is
              expectedly false. Assert hit related to message grid variables
              after an ext_messages UI attaches while message grid is scrolled.
    Solution: Don't check message kind assertion if no ext_messages UI is
              attached. Flush message grid when first/last ext_messages UI
              attaches/detaches.

commit cb02c20569b56545a1657d4f7f8f29171f1037d7
Author: Riley Bruins <ribru17@hotmail.com>
Date:   Fri Jan 10 12:25:46 2025 -0800

    refactor(treesitter.foldexpr): remove unused parse_injections parameter

commit 0717dfbfaf36887dab277527eb0a93bf2182297c
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Fri Jan 10 11:42:04 2025 -0800

    refactor(api): deprecate nvim_notify #31938

    Problem:
    The `nvim_notify` API (note: unrelated to `vim.notify()` Lua API) was
    not given any real motivation in https://github.com/neovim/neovim/pull/13843

    There are, and were, idiomatic and ergonomic alternatives already.

    Solution:
    Deprecate `nvim_notify`.

commit b06f42b5023b2eec576e5bf22cdacd4c1ee4a939
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 10 17:17:34 2025 +0800

    vim-patch:df4a7d7: runtime(tiasm): use correct syntax name tiasm in syntax script (#31942)

    vim-patch:df4a7d7: runtime(tiasm):  use correct syntax name tiasm in syntax script

    closes: vim/vim#16416

    https://github.com/vim/vim/commit/df4a7d761740d59a4f911c9e13ac620a459cdea6

    Co-authored-by: Wu, Zhenyu <wuzhenyu@ustc.edu>

commit 87610d82db912cda8877198c25dabbf2bb08f0aa
Author: Luuk van Baal <luukvbaal@gmail.com>
Date:   Thu Jan 9 17:58:37 2025 +0100

    fix(decor): set invalid flag for end of invalidated paired marks

commit a37784ad831fdf31e7eeafdd41f7d3cb81b1a07f
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 10 08:04:02 2025 +0800

    vim-patch:9.1.1000: tests: ruby tests fail with Ruby 3.4 (#31940)

    Problem:  tests: ruby tests fail with Ruby 3.4
    Solution: adjust expected output for Ruby 3.4
              (Yee Cheng Chin)

    Vim's Ruby tests relied on explicit matching of output texts which are
    fragile in design. Ruby 3.4 has changed the output slightly (using
    'name' instead of `name', and also using more spaces in dictionary
    printouts). Modify the Vim tests to be less fragile to such changes.

    closes: vim/vim#16411

    https://github.com/vim/vim/commit/ebea31e454b9a1731cde845226f2c28ca5c097b1

    Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>

commit 846a2019c0e3b3a91477c12ec2c4ac85861b4d67
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri Jan 10 08:03:44 2025 +0800

    vim-patch:9.1.0999: Vim9: leaking finished exception (#31939)

    Problem:  leaking finished exception
              (after v9.1.0984)
    Solution: use finish_exception to clean up caught exceptions
              (Yee Cheng Chin)

    In Vimscript, v:exception/throwpoint/stacktrace are supposed to reflect
    the currently caught exception, and be popped after the exception is
    finished (via endtry, finally, or a thrown exception inside catch).
    Vim9script does not handle this properly, and leaks them instead. This
    is clearly visible when launching GVim with menu enabled.  A caught
    exception inside the s:BMShow() in menu.vim would show up when querying
    `v:stacktrace` even though the exception was already caught and handled.

    To fix this, just use the same functionality as Vimscript by calling
    `finish_exception` to properly restore the states. Note that this
    assumes `current_exception` is always the same as `caught_stack` which
    believe should be the case.

    Added tests for this. Also fix up test_stacktrace to properly test the
    stack restore behavior where we have nested exceptions in catch blocks
    and to also test the vim9script functionality properly.

    - Also, remove its dependency on explicitly checking a line number in
      runtest.vim which is a very fragile way to write tests as any minor
      change in runtest.vim (shared among all tests) would require changing
      test_stacktrace.vim. We don't actually need such granularity in the
      test.

    closes: vim/vim#16413

    https://github.com/vim/vim/commit/2051af1642843426714efc2572c3e270fe0948be

    Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>

commit 7c00e0efbb18e8627ac59eaadf564a9f1b2bafcd
Author: Justin M. Keyes <justinkz@gmail.com>
Date:   Thu Jan 9 09:26:45 2025 -0800

    docs: misc #31867

commit 0c296ab22484b4c009d119908d1614a6c6d96b2c
Author:…
bfredl added a commit that referenced this pull request Jan 29, 2025
This is maintenance release, focusing on bug fixes. It also contains changes
to the available binary releases.

A Linux AArch64 binary has been added as part of the binary releases.
In addition, the previous "linux64" binary has been renamed to "linux-x86_64".
This is a BREAKING changes for scripts which consumes our binary releases.

FIXES
--------------------------------------------------------------------------------
- a8eddf1 checkhealth: failed if 'lua' in plugin name
- 2bc5e1b decor: set invalid flag for end of invalidated paired marks
- d8149e5 inspect: use correct default highlight
- 357ee88 jobs: do not block UI when jobwait() doesn't block (#31803)
- b0b383b lsp: minimum height for floating popup #31990
- 4b25fe0 lua: prevent SIGSEGV when lua error is NULL in libuv_worker (#32091)
- e477ac7 marks: revise metadata for start mark of revalidated pair #32017
- 22a327a mpack: remove invalid bool definition
- 87440e7 runtime: let matchit and matchparen skips fallback on treesitter captures
- f132efa search: avoid quadratic time complexity when computing fuzzy score (#32153)
- ca10442 treesitter: don't open fold when o/O adds a line below #28709
- 323c43e treesitter: uv_dlclose after uv_dlerror
- a3cc513 treesitter.foldexpr: only refresh valid buffers
- a986048 treesitter.foldexpr: refresh in the buffers affected by OptionSet
- d7ee061 treesitter.foldexpr: robustness against ctrl-c
- 79030bf ui: ensure screen update before waiting for input #30576
- 3a50639 9.1.0699: "dvgo" is not always an inclusive motion (#30173)
- 6a6c6b2 9.1.0708: Recursive window update does not account for reset skipcol (#30217)
- 938a600 9.1.1048: crash after scrolling and pasting in silent Ex mode (#32168)

BUILD
--------------------------------------------------------------------------------
- fdcdf56 release: add linux-arm64 appimage and tarball
- a7392c0 tests: add arm64 runner
mrowegawd pushed a commit to mrowegawd/neovim that referenced this pull request Jan 30, 2025
Problem:
The floating window for hover and signature help always cuts off a few lines,
because the `_make_floating_popup_size` function counts empty lines as having
zero height.

Solution:
Ensure the height is at least 1.
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 26, 2025
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim).

Following is a list of fixes/features commits.

BREAKING
--------------------------------------------------------------------------------
- 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth
- 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418)
- 35c5e2310783 store artifact shasums in a single shasum.txt file
- 188ec19894e4 turn off translations by default
- 328ea02eb7de use utf8proc full casefolding
- 737f58e23230 api: rename Dictionary => Dict
- a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730)
- ad70c9892d5b column: rework 'statuscolumn' %r/l items
- eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200)
- a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070)
- 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079)
- a9e725b26e08 diagnostics: sort underline severity_sort (#30898)
- e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding`
- 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover()
- debabaf884fc lsp: pass buffer number to root_dir function
- 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers
- 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911)
- 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877)
- dff684fdb3d2 lsp: support multiple clients in lsp.buf.references
- 970a27927eb3 lua: do not use typed table for empty dict
- de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe
- a27419f3fc54 options: disallow setting hidden options #28400
- b922b7d6d788 options: use OptVal for option defaults #26691
- 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022
- 318676ad1348 release: remove backwards compatible releases
- ad191be65e2b signs: place higher-priority signs from the left #27781
- 0dd933265ff2 terminal: cursor shape and blink (#31562)
- 35e5307af257 terminal: include cursor position in TermRequest event data (#31609)
- 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859)
- 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups
- 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193)
- bd4ca22d0334 treesitter: don't parse tree in get_parser() or start()
- a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser
- 99e0facf3a00 treesitter: use return values in `language.add()`
- bda63d5b97df typval: remove distinction of binary and nonbinary strings
- 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525
- ca5fca29121a windows: drop cat and tee executables from windows
- be89d520d7e9 windows: only support UCRT, even for mingw

FEATURES
--------------------------------------------------------------------------------
- efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067)
- 0631492f9c80 add vim.fs.relpath
- f864b68c5b0f allow gx to function for markdown links
- f3632e14e3a7 get/set namespace properties #28728
- a66424617156 remove deprecated features
- ead5683ff999 api: add err field to nvim_echo() opts
- aec4938a21a0 api: broadcast events to ALL channels #28487
- 34d808b73cbc api: combined highlights in nvim_eval_statusline()
- 19b25f3feacf api: deprecate nvim_buf_add_highlight()
- 5c92b40b4b17 api: deprecate nvim_out/err_write(ln)
- d84a95da7e11 api: nvim_get_autocmds filter by id#31549
- 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006
- e00d67ef310c checkhealth: group parsers by name and path in output
- 563051a53ef9 clipboard: support g:clipboard="osc52" #33021
- 60ea0467411d clipboard: try cygutils, clip on Windows #30215
- 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400)
- 65c7033cbe75 comment: allow commentstring to be determined from node metadata
- 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600
- a616272f568a complete: specify reason for CompleteDone
- f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223)
- ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122
- 2c6b6358722b defaults: add LSP default mappings (again) (#28650)
- bb7604eddafb defaults: add default unimpaired style mappings (#28525)
- 4662ad5643b2 defaults: completeopt=popup #32909
- e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480)
- cc6992f1ca44 defaults: dot-repeat [<Space> #31186
- 6db830e40e92 defaults: enable diffopt "linematch" #32346
- b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736
- 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781
- 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764)
- 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261
- 09d76afe84dd defaults: pretty :help headings #30544
- 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984
- 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066)
- c9c17fda80d8 deprecations: vim._defer_deprecated_module()
- 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler
- 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745)
- 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302
- 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273)
- 21961967ffef diagnostic: update quickfix list by title #31486
- 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868
- 1759b7844a2d diagnostic: virtual_lines #31959
- fd65422b99c7 diff: do not try external when out of memory
- 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904
- 6628741ada73 docs: improve `@see` meta docstrings #30693
- 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement
- cb6c0fda718e editorconfig: add support for spelling_language (#28638)
- 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493)
- 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks
- 4cced601c8cd extmark: stack multiple highlight groups in `hl_group`
- 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921
- 62d9fab9af21 float: add winborder option (#31074)
- 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844)
- 511b991e6689 fs.lua: add vim.fs.rm()
- 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085)
- f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491
- b61051ccb4c2 func: allow manual cache invalidation for _memoize
- 548f19ccc301 health: close checkhealth buffers with q #31870
- f2fa4ca97ea3 health: highlight headings #30525
- b12b91c27439 health: show :checkhealth in floating window #31086
- 6592873f773b help: use treesitter for table of contents
- 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups
- 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold
- 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034
- 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101
- 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343
- e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347)
- 8d55cc218cfe keysets: teach Union and LuaRefOf
- 5931f780e028 log: use "ui" as default name for TUI client #30345
- e4c6e732fd04 lsp: add select kind in showMessageRequest #32387
- f20335a54ce7 lsp: add support for completionItem.command resolving
- 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable
- 6072153796d1 lsp: announce codeLens resolveSupport (#29956)
- 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060)
- ff097f2091e7 lsp: completion side effects
- 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd
- 454ae672aad1 lsp: deprecate non-method client functions
- 54249d051c3e lsp: deprecate vim.lsp.buf.completion
- e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341
- 55e4301036bb lsp: drop fswatch, use inotifywait (#29374)
- dad55f5e763f lsp: export diagnostic conversion functions (#30064)
- 44229bb85b6c lsp: highlight hover target/range #31110
- 27f3750817b1 lsp: improve LSP doc hover rendering #30695
- 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items`
- 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164
- 4e90bc30237a lsp: lsp.completion support set deprecated (#29882)
- 6e68fed37441 lsp: multi-client support for signature_help
- 629483e24eed lsp: require `offset_encoding` param #31249
- e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name]
- 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663)
- ce678043e346 lsp: show server name in code actions #30830
- 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611
- a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311)
- 3b0fe2659e74 lsp: support completion context #32793
- 41b07b128ccb lsp: support for resolving code action command (#32704)
- 35247b00a44e lsp: support function for client root_dir (#31630)
- 45e76acaa053 lsp: support hostname in rpc.connect #30238
- b2bad0ac91dd lsp: support postfix snippets in completion
- d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings
- 5d26934c7cda lsp: update LSP healthcheck format (#28980)
- ae2fd91b411d lsp: update LSP types
- 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match
- e4c1f6667b14 lsp: use the meta model to generate server capability map
- 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323
- 92e4e3fb76c2 lsp.util: fix type errors
- ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs
- cbc82011ce19 lsp.util: improve offset_encoding type annotations
- a18fa2f11c3a lsp.util: minor codestyle
- 1944c0d610ce lsp.util: refactor get_border_size()
- f0973d42272e lsp.util: refactor symbols_to_items()
- 0e8568d72c88 lsp.util: remove lsp spec extract
- 0621718e3b5f lsp.util: remove metatable in locations_to_items
- 3f87e222f79b lsp.util: remove some aliases
- e954a16063e6 lsp.util: remove some variables
- 5bec7288a5b5 lsp.util: remove uneeded do-end
- 8ad000ef7cf0 lsp.util: remove unneeded table
- d44d36b8ff6c lsp.util: simplify some bounds checking
- 0066dd0f653e lsp.util: use faster version of vim.validate
- 1edfe5c09ebc lsp.util: use vim.api alias
- 97119a236937 lsp.util: use vim.w/b
- cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()`
- 9afa1fd35510 lua: add `vim._with`
- 518070731003 lua: add `vim.fs.abspath`
- b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939)
- d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472
- 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690
- 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts
- af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012
- be1fbe38b31b lua: vim.text.indent()
- fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515)
- ea5b748f2438 man.vim: "q" always closes window #30819
- f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark()
- 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497)
- cfdf68a7acde mbyte: support extended grapheme clusters including more emoji
- 124c655f56bc messages: "g<" mapping for ext_messages
- cb7b4e296238 messages: "verbose" message kind #31991
- 5bae80899d9d messages: add :!cmd shell message kinds
- e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521
- 21151144c6ee meta: add type for quickfix entries
- 82a215cb2dc2 options: add 'eventignorewin' (#32152)
- d831392b1560 paste: unify cancel and error behavior (#30476)
- 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719
- f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697
- e6cfcaed184d snippet: add default keymaps during snippet session
- 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887)
- 96128a5076b7 startup: validate --listen address
- 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735
- 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561
- 8df6736ca14d term: enable reflow by default (#21124)
- 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050)
- 93480f7fbaa5 term: trigger TermRequest for APC (#32407)
- 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117)
- 6f0bde11ccd8 terminal: add support for kitty keyboard protocol
- 06a1f82f1cc3 terminal: forward X1 and X2 mouse events
- e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji
- f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999)
- 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443)
- 34cd94812d42 test: support and document lua test case debugging
- b8c75a31e6f4 treesitter: #trim! can trim all whitespace
- ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657)
- bd3b6ec8360e treesitter: add node_for_range function
- 688b961d13bd treesitter: add support for wasm parsers
- 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range
- 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts`
- 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790)
- 1af55bfcf21b treesitter: allow get_node to return anonymous nodes
- a94a2927d00a treesitter: allow passing lang to InspectTree
- 45e606b1fddb treesitter: async parsing
- 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559
- 267c7525f738 treesitter: introduce child_with_descendant()
- 09f9f0a94625 treesitter: show which nodes are missing in InspectTree
- b9b408a56c7e treesitter: start moving get_parser to return nil #30313
- da0ae9534900 treesitter: support modelines in `query.set()` (#30257)
- 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282)
- 8ba047e33fe3 treesitter: vertical conceal support for highlighter
- ff85e54939b0 tui: builtin UI (TUI) sets client info #30397
- 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727)
- f93ecd2760f5 tui: parse CSI subparams in termkey (#29805)
- 44dbfcfba4b0 tui: recognize X1 and X2 mouse events
- e41368f3bc1d tui: support in-band resize events (#29791)
- d460928263d0 tui: update 'background' on theme change events (#31350)
- 45e319ade639 tutor: give hints to satisfy the line checker #30952
- 4b0e2605eaf9 ui: UI :detach command
- 394f69a25dc3 ui: additional arguments for cmdline_show/hide events
- a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980
- f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984
- 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192)
- 43d552c56648 ui: more intuitive :substitute confirm prompt #31787
- 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575
- a10636fbe7bb ui: specify whether msg_show event is added to history
- e049c6e4c08a ui: statusline text inherits highlights #29976
- 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551
- 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool
- f4b620c4e643 vim.ui.open: support lemonade #30845
- 3572319b4cb1 vim.validate: improve fast form and deprecate spec form
- cb84cd5d9fba win32: embed executable icon

FIXES
--------------------------------------------------------------------------------
- 200e7ad15786 apply the change on more files
- 6720bd440f19 assert failure in VimL expression parser
- d123202ae6ef change deprecation presentation
- ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121
- 7737f892063a deps build for ARM64 MSVC
- 50749f8df89d extend the life of vim.tbl_flatten to 0.13
- 25abcd243e41 fix broken wasmtime build
- b6ab29483842 fix incorrect search code
- 46b69aaf14a7 include nvim/ascii_defs.h
- 01b4da65c229 merge all provider healthchecks into a single health.lua
- 5c245ec3e955 remove vim.lsp._with_extend
- 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348)
- 6aa42e8f92bd resolve all remaining LuaLS diagnostics
- e71713ba2b5c show swapfile warning as a warning (#28971)
- 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756)
- 0829e7575d63 warn when :InspectTree on buffer with no parser #32783
- 47f2769b462e Man: completion on Mac
- 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw
- 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value`
- 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710)
- 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908)
- 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456
- 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919
- 095c0876c201 api: don't override Vimscript SID (#32610)
- bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302)
- 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984)
- cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078)
- 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981)
- f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543)
- 022449b52236 api: generic error messages, not using TRY_WRAP #31596
- 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390)
- ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390
- 167a2383b996 api: not using TRY_WRAP, generic error messages #31595
- bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177
- d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740
- 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243)
- e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219
- 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912
- 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576
- 40347f6e27f1 api: only flush nvim__redraw when necessary #31250
- 36f44b3121fc api: remove invalid assertions
- 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042
- 9c718bc2bce5 api: validation, documentation of hl_group #31195
- 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544
- ffaab09e9986 build: <termios.h> is system-dependent #31705
- 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME
- 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode
- 34a2bfdcc5ce build: vimdoc tags are not validated #32801
- 807098824762 channel: handle writing to file instead of pipe (#30519)
- c49162be5958 channel: log after (not before) channel-close
- 965dc81f818e checkhealth: disable 'listchars' #31245
- 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name
- f5dd30948e67 checkhealth: handle nested lua/ directory #32918
- c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988
- 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268
- 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866
- af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007
- a70ad5cdb6de cmdline: ext_cmdline block events for conditionals
- bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033
- 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment
- 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256
- 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810
- 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182)
- 3cb1e825e679 column: check if signcolumn changed in all windows #31439
- 1dcda865591b column: clamp line number for legacy signs
- f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003)
- f9a49fab0c90 column: modifying a sign should update placed signs (#29750)
- d5f6f61879ba column: set signcolumn width after splitting window (#30556)
- 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944)
- 0a2218f965ac comment: fall back to using trimmed comment markers (#28938)
- e788d1a3a903 completion: avoid deleting text when completion leader changes #31448
- bfa365a87267 completion: don't include <Lua function> in -complete= (#30209)
- 55dc482e757e completion: fix inconsistent Enter behavior (#30196)
- 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395
- e1c2179dd93e coverity: INTEGER_OVERFLOW #31657
- f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618
- 069451bb214b coverity: size_t overflow #30497
- ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665
- c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773)
- 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341
- 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687)
- a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686)
- 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081)
- 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858)
- a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096)
- 34ded4d97b78 decor: exclude invalid marks from meta total
- 87610d82db91 decor: set invalid flag for end of invalidated paired marks
- 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree
- 0e299ebf7559 decorator: noisy errors from decoration provider #31418
- f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375
- 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343)
- 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460)
- f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884
- 59a171fd99a7 defaults: improve visual search mappings #32378
- 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943
- c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347)
- ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983)
- 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632)
- 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642)
- 573fcb8b6641 deps: revert accidental test commits (#30864)
- de794f2d2409 diagnostic: broken variable reference #31557
- c78728a3844c diagnostic: clear autocmd only for valid buf (#32861)
- f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979
- 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506)
- 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464
- d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593)
- f69937fdbd16 diagnostic: fix float scope filtering (#29134)
- 5bc948c050ce diagnostic: improve current_line refresh logic #32275
- 4b3be56a0369 diagnostic: make docs agree with code (#29561)
- fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466
- 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option
- 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553
- 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings
- 4cbeb6fa3cc7 diagnostic: silence :chistory #31701
- 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585
- 17c25a66fcea diagnostic: virtual lines should scroll horizontally
- fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703)
- e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321
- c65646c2474d diff: use mmfile_t in linematch
- 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708)
- f25dd7a8d548 display: correctly store winline info for concealed lines (#32656)
- a901fb875f69 docs: add missing properties to hl_info #30032
- cc26cf040028 docs: do not treat indexes as `short_link`
- 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680
- 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673
- 09bcb310681e docs: replace `yxx` mappings with `g==` #31947
- efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList`
- b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks`
- 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706)
- 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035)
- b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406)
- 34344b939c06 editor: avoid scrolling :substitute confirm message #32149
- 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342)
- b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634)
- 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953)
- 4317d366691b event-loop: process input before events in getchar() (#32322)
- f05a6666cfcb events: always allow some events to be nested (#32706)
- e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473)
- 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813)
- 8c2d45be7729 exit: close memfiles after processing events (#30872)
- c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387
- 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage
- 43a2019f09e8 extmarks: issues with revalidating marks #28961
- 84ad95fdc9d4 fileio: copy to correct buffer position when reading
- 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991)
- aa9f21ee953d filetype: fix typos in filetype detection
- 032e024f8ab9 filetype: handle .in files with no filename (#30487)
- 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470)
- 21cbd9000748 filetype: normalize full path before matching #32227
- 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445)
- cff5fa49fc5a float: "Not enough room" error for 1-line float #25192
- 07c5f41da3ad float: can set title/footer without setting border #32594
- be01b361d8ff float: cannot set title/footer independently #31993
- ff1791c9e59b float: close preview float window when no selected #29745
- d2cca606a1b6 float: ensure floating window width can fit title
- 8ddcf9d93900 float: handle error in win_float_create() (#29742)
- 8b2b1fba2abf float: missing default highlight for title
- df915f3afccb float: properly find last window of tabpage (#30571)
- 17383870dd3b float: re-sort layers when grid zindex changed #30259
- 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964)
- 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto)
- 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720
- ceea6898a8bd gen_help_html: handle delimiter, heading #29415
- 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields
- 913e81c35f16 getchar: do not simplify keycodes in terminal mode
- b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520)
- 4bd86120d41e glob: handle overlapping `{}` condition elements #29236
- b47b0b3f757d grid: double grid_line_start() with ext_messages #31292
- fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug'
- a9c89bcbf69a gx: allow `@` in url
- 570a8da01b55 health: "q" should not close last window #31876
- 2e3f1069f499 health: better layout of vim.treesitter health check
- 10f917351906 health: broken ruby detect #28804
- 84e85aeb10ae health: check more "old" files #30421
- 5b778a64ec2e health: fix fetching url with python in provider health (#29594)
- b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue
- 237d2aef4d70 health: return correct name from 'path2name()'
- 5e9040648739 health: set nomodifiable in checkhealth buffers
- 91773710145e help: remove runnable code virtual text
- ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288)
- 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313)
- 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids
- 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns
- 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905
- b67fcd048874 highlight: make `TablineSel` more noticeable #31896
- 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183
- 59e130b6cacd inccommand: ensure cursor is where it belongs
- 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677)
- b52ffd0a59df inspect: always show priority
- 9c278af7cc96 inspect: show priority for treesitter highlights
- 22fd52325bf6 inspector: update semantic token namespace (#32157)
- efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803)
- 574ea6a1911b keycodes: recognize <Find>, <Select> #28431
- 67bb0cfa79bc loader: follow the style of the error message for built-in loaders
- 44740e561fc9 log: RPC log format #32337
- 851137f67905 log: log unset $TMPDIR at "debug" level #32137
- c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005
- a6f219b06beb log: unintuitive message for undefined $TMPDIR
- 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170)
- fac96b72a59e lsp: add foldingrange method support check #31463
- 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838)
- a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared
- b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266)
- 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002)
- fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478)
- 39d79efa1e1e lsp: better multi-client support for callHierarchy
- bdfba8598b41 lsp: cancel pending requests before refreshing
- f9bf64d74641 lsp: check buffer is loaded and valid #30330
- c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients
- 81b372fecd74 lsp: check for nil response from server (#29196)
- a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response
- 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162)
- af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914)
- 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap
- 025c87441502 lsp: clear lsp client diagnostics (#29050)
- c374f264305f lsp: clear word when expand multi-lines word (#32393)
- adf7c98d607b lsp: compare URI instead of workspace folder name (#30962)
- b4599acbf8e3 lsp: correct hover result handling (#30995)
- f8d5811c717b lsp: correctly check for "codeAction/resolve" support
- 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close
- 2a1f604c77a1 lsp: delete bufvar inside WinClosed event
- 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875)
- 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029)
- 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242)
- d56ba71af11c lsp: document_symbol uses loclist by default #32070
- 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501)
- 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690)
- 5f527f24f0ea lsp: don't use completion filterText if prefix is empty
- 305012ea0732 lsp: enable `additionalPropertiesSupport`
- 9d9ee3476e64 lsp: ensure watcher cancel
- aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522)
- 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945)
- b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659)
- 4b001f297ae2 lsp: fix infinite loop
- 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130)
- 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212)
- 8654a9700690 lsp: handle empty call hierarchy items #30349
- f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc
- 882a450a2982 lsp: handle locations exceeding line length #30253
- 008782208d82 lsp: handle mixed encoding in tagfunc params
- e0a5c3bb5817 lsp: handle multiline signature help labels #30460
- 8512f669f0e0 lsp: handle nil bytes in strings
- f03b1622ad1b lsp: handle nil root_dir in health check (#29007)
- ed071672613b lsp: handle non-existent configs in lsp.config/enable
- 003b8a251dc1 lsp: handle out-of-bounds character positions #30288
- 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016)
- d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807)
- f54266dbed6f lsp: hover border type can be string (#31013)
- 9a681ad09e2a lsp: hover keymap (#31208)
- a14fca432b96 lsp: improve LSP floating preview window cleanup #31353
- e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707)
- 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966
- 0e394f136fcb lsp: log when receiving markup messages (#30065)
- 203e7a43d1f2 lsp: mention function name in warning #31301
- a4f575abd85e lsp: minimum height for floating popup #31990
- 4fd2694f20d6 lsp: missing method parameter when canceling requests
- be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509
- 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716)
- 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886
- 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491)
- a450fda4eded lsp: prefer `on_list` over `loclist` in default handler
- 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904)
- eb629cce9171 lsp: redundant spaces in lsp log (#29970)
- 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174)
- d76f7fef13e5 lsp: reset active request when reporting an error
- 6bc79790449f lsp: reset the applied hints on `refresh` request #32446
- 47aaddfa0dda lsp: resize hover window for concealed lines
- 081beb3659bd lsp: restore get_language_id behaviour
- 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345)
- d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145)
- 9c2034229739 lsp: reuse client if configs match and no root dir
- 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217)
- bdff50dee56e lsp: revert text edit application order change (#29877)
- e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998)
- a108852b008b lsp: semantic token functions allow "0" bufnr #28849
- c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748
- 8a236c242a76 lsp: set floating window filetype after setup #32112
- 3c51058d7611 lsp: set tagstack on jump via goto methods
- 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382
- 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747
- 629a5b71b55e lsp: support multiple clients in typehierarchy
- e48179f31e65 lsp: suppress completion request if completion is active (#30028)
- 50f006b61774 lsp: tagfunc fails in unusual buffer #30700
- 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795)
- 19be3d26830c lsp: trim trailing whitespace from completion words (#29122)
- aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331)
- 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235
- 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText
- fe5ae88b20f5 lsp: update request name to capability map #30098
- 5aa9906676f3 lsp: use client.id instead of pairs index (#29143)
- c8d7d65679f8 lsp: use correct method for prepareTypehierarchy
- b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match
- 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails
- 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable  #32002
- 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608
- 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044)
- 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837
- 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests
- 3275ae830da9 lsp.protocal: improve typing of constants
- acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding
- 564173e5568c lsp.util: wrong arguments to 'validate' function
- 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595
- b28373638848 lua: `@private` => `@nodoc` #32587
- b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend
- c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715)
- 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753)
- fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505)
- 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583)
- 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203)
- bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587)
- e2aca58bcc4f lua: don't override script ID from :source (#32626)
- d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks
- 948f2beed4ea lua: find length of completion prefix earlier (#29384)
- ebb963a4a082 lua: format errors from luv callbacks using __tostring
- 65a703e06063 lua: ignore stdout and stderr for xdg-open
- 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044)
- c6d2cbf8f51a lua: pop retval for fast context LuaRef
- a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker
- 3d707e6f14b7 lua: remove vim.loader.disable() #31344
- 3a8811324604 lua: revert vim.tbl_extend behavior change and document it
- 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021)
- 40a149e7f992 lua: types for vim.api.keyset.win_config #32700
- 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536)
- 960fdc775a88 lua: vim.deprecate does not support major>0
- d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850)
- cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218
- 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659)
- 9eb042600269 luacats: allow all types inside tuples
- ee5aaba21560 man: avoid setting v:errmsg (#30052)
- 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180)
- da6f68ee6966 man: filter OSC 8 hyperlink markup #29171
- 7940ec69136f man.lua: `:Man <tab>` does not complete #31569
- e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262
- d6653e1cc957 marks: ensure decor is removed with proper range (#32973)
- 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477)
- 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476)
- 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662)
- 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862)
- 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766)
- 012db2b0f509 marks: revalidate marks whose position did not change
- 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017
- c4f76299f039 marks: skip right_gravity marks when deleting text
- cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560)
- 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747)
- a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531)
- 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char
- 15bc930fca94 memline: don't check line count for closed memline #32403
- aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328)
- 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952
- d98827b634af messages: avoid empty msg_showmode with 'noshowmode'
- 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627
- 21718c67dd96 messages: better formatting for ext_messages #31839
- 92556be33d04 messages: compute msg_col after last newline in ext_messages
- ad853d1df093 messages: improve deadly signal messages #32364
- 51853b82bc95 messages: incorrect error message splitting and kind #32990
- 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531
- 7ce27381fb49 messages: lsp window/showMessage is not an error
- 1b6442034f6a messages: more ext_messages kinds #31279
- 9c6a3703bb15 messages: no message kind for :undo messages #31590
- ca760e645ba4 messages: no message kind for :write messages #31519
- 909b18d05a8d messages: no message kind for completion menu messages #31646
- f111c32ff9dc messages: no message kind for search pattern #31272
- 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages
- 9fa3a0964e9b messages: pass previous highlight id to ext chunks
- e025f5a5b30a messages: proper multiline Lua print() messages #31205
- d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669
- d55b17e2b4e0 messages: verbose kind for nvim_echo()
- c8e47f648052 meta: do not use hyphens in param names
- 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling
- 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565)
- 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394)
- 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655)
- f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642)
- 5947f249f838 move: half-page scrolling with resized grid at eob (#28821)
- ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276)
- af0a2157ad29 move: wrong cursor row on concealed line (#32629)
- 83479b95abae mpack: remove invalid bool definition
- d32780de4daf mswin: UI may hang on exit
- fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode
- de83cc5842c9 netrw: re-add missing comment marker in syntax file
- d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555
- 34e2185022ab options: better handling of empty values
- 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978)
- 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896)
- 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894)
- 395f420fc65c options: fix some 'belloff' flags not working properly (#30856)
- 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919)
- e697c1b43dfb paste: improve repeating of pasted text (#30438)
- 052875b9dc3d paste: only record a paste when it's from RPC (#30491)
- 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025
- 42aa69b076cb path: avoid chdir() when resolving path (#28799)
- 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992)
- 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863)
- afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819
- ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636
- d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246
- d24fb72c335b pum: don't select item when clicking to the left/right (#30967)
- 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609)
- 3bcd5624beec regexp: fix typo in E888 error message (#30161)
- cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209
- 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf`
- b6c1ce8a9545 runtime: add commentstring for glsl ftplugin
- 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252)
- e641155b023c runtime: avoid E31 in ftplugin (#32578)
- 82b02ae2f2af runtime: clean up one-off scripts
- 9788b81d7e53 runtime: fully port emoji_list to Lua
- 74fcc9452cd9 runtime: gO always says "Help TOC" #32971
- 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures
- 8369590eb215 runtime: remove obsolete ftplugin/calender.lua
- 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin
- 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053)
- 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533)
- 862338255da6 runtime: sync bundled treesitter queries
- 9e80738f3073 runtime: sync bundled treesitter queries
- 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473)
- 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529)
- a5bd6665b00a scripts: update bundled dependencies in bump_deps
- 573a71469d37 scrollbind: properly take filler/virtual lines into account
- a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153)
- 648d6426c863 server: CID 509282: DEADCODE #30316
- f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538
- cd48b72b60af shada: restore search pattern length properly (#28929)
- 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031)
- 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998)
- 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670)
- 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970
- d46ebd2a7403 startup: avoid crash with completion from -l script (#32160)
- 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285
- 17e00d0cc63c startup: report --startuptime error to stderr (#31131)
- 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310
- 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912
- 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265
- 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602)
- a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458)
- f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509)
- 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755)
- 69a19295f8fe terminal: delay when finishing terminal process #32846
- f8c8a245aa5b terminal: don't crash on unprintable chars
- 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090)
- fa46441264b2 terminal: improve cursor refresh handling (#32596)
- 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056)
- 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620)
- c51bf5a6b249 terminal: set cursor cell percentage (#31703)
- 5def8714ad70 terminal: set local values of window options (#29326)
- e9c077d197a8 termkey: fix null pointer dereference (#31792)
- c8e3618e0e68 test: "tempdir not a directory" in CI logs
- f7e32fb6e626 test: better management of tmpfiles
- db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524)
- e61228a214eb tests: needing two calls to setup a screen is cringe
- 639734bed4ef tests: remove the __extension__ keyword  in filter_complex_blocks (#32483)
- 59baa5e8a1f9 tohtml: apply sp color if present #30110
- 67c39f5ecae0 tohtml: disable modeline #32822
- e37404f7fecc tohtml: enclose font-family names in quotation marks
- 25db0a138537 tohtml: extmark text may be out of bounds
- 8cd9feb50166 tohtml: ignore lsp inlay hints
- eb37241d38ad tohtml: properly handle multiple hl groups #29012
- 2ed6423c7e9d tohtml: replace ipairs with pairs
- 88c7997503e1 tohtml: show how many warnings are hidden
- 118ae7e5ed6c tohtml: support ranges again
- c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488
- b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536
- 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field
- 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree
- bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer
- a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233
- 6696ea7f1038 treesitter: clean up parsing queue
- 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036)
- f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil
- 7a20f93a929a treesitter: correct condition in `__has_ancestor`
- 9b25c68db21c treesitter: correctly parse queries with combined injections
- 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()`
- 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree
- da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav
- 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709
- aa2b44fbb07f treesitter: don't return error message on success #31955
- b0bbe25c4808 treesitter: don't spam query errors in the highlighter
- b88874d33c15 treesitter: empty queries can disable injections (#31748)
- d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542)
- f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results
- c4eb0b64bd49 treesitter: find buffer in multiple windows #28922
- 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree
- 5331f87f6145 treesitter: indent size for inspect_tree #28727
- 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198
- 052e048db676 treesitter: lint top-level anonymous nodes
- 4b9095285160 treesitter: mark supertype nodes as named
- 096ae3bfd707 treesitter: nil access when running string parser async
- c3337e357a83 treesitter: nil check query for has_conceal_line
- 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240
- 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter
- d3193afc2559 treesitter: remove duplicate symbol names in language.inspect()
- cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041
- 1827ab7a1f9a treesitter: separately track the number of valid regions
- 36990f324de2 treesitter: show proper node name error messages
- 4349bdbd0bd0 treesitter: specify success status in edit_query return value
- e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid
- 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error
- ae917dbd06cb treesitter: sync queries from upstream
- c4e9ff30a6b6 treesitter: sync queries with upstream
- d8eec8156098 treesitter: update lua, markdown queries
- 6e44a6a289c5 treesitter: update queries
- 5a54681025ec treesitter: uv_dlclose after uv_dlerror
- e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers
- 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet
- 8474f529780b treesitter.foldexpr: robustness against ctrl-c
- f81131cca2b4 tui: also reset cursor color if it was invisible (#31348)
- 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793)
- 720ec5cec2df tui: cursor color in suckless terminal #32310
- b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804)
- d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197)
- a811d4babd22 tui: only reset cursor color if it was changed (#31337)
- 0c0352783fca tui: remove DCS escaping in tmux (#32723)
- 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884)
- f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960)
- bc63ffcf39e8 tui: reset clear_region attributes during startup #28713
- b02c83941493 tui: set id parameter in OSC 8 sequences (#29840)
- 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096)
- 8b8096500d08 tutor: incorrect lines marked as correct #29833
- 31745b17e60d types: add narrower vim.validate types
- 44410d063ad2 types: add some vim.fn type annotations
- b813075b8a55 types: do not mark unstable API as private
- e947f226bebe types: use vararg return type annotation
- a1906c23ddab ui: Windows :detach is opt-in
- 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718)
- 216ec7397214 ui: avoid redundant ext_cmdline events (#32237)
- 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419)
- 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222
- 7eba016c8681 ui: ensure screen update before waiting for input #30576
- 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950
- 6e4df18b457e ui: no fast context for prompt message kinds #31224
- 6b8c56c7f6da ui: schedule UI detach (#32827)
- b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089
- d1fd674df3eb ui: update title in more cases (#31508)
- 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284
- d049752e45c3 version: fix vim.version().prerelease
- 8bdfc2ab2b25 version: return nil with empty string
- 6401b433f7c0 vim.fs: default to follow=false #32859
- 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480
- 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782
- 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths
- a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter
- 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781)
- 734dba04d13b vim.system: close pipe handles after process handle
- 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638
- ad3472e29169 vim.system: resolve executable paths on windows
- 33464189bc02 vim.text: handle very long strings (#30075)
- 4cff4185647c vim.text: remove assert from vim.text.hexdecode
- d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302
- 8bf79bd13c4d vim.wo: never allow non-zero bufnr
- 453f2c52d291 vim_snprintf: special-case handling of binary format
- 32e128f20992 watch: exclude .git when using inotifywait (#29914)
- 9e23b4e1852f watch: ignore nonexistent paths (ENOENT)
- a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099)
- 88f07d6ca4a6 win-msi: set installer scope to machine #29895
- 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551)
- 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507)
- 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo

PERFORMANCE
--------------------------------------------------------------------------------
- 48251134ee59 add fast path to vim.validate (#28977)
- 3abd7ed4a4cd consider only active decorations when drawing lines
- 8d2ee542a82a decor: join predicates and matches cache
- 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288
- b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777)
- 15f2da55a8de events: use hashy for event name lookup (#32802)
- abf4b65a51b2 filetype: cache (more) pattern data during "add" time
- f61efe3fe77c filetype: implement parent pattern pre-matching (#29660)
- ff575b388640 filetype: optimize internal data structures
- dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596)
- 12d4caa9d3e4 keycodes: use hashy for string lookup
- f8fc6cb15755 loader: reduce calls to Loader.cache_file
- 138a93a057da lsp: avoid repeated table lookup in completion.enable
- 7342e6b00d5e lsp: do not apply semantic tokens to folded lines
- c85d15e0d557 lsp: don't construct potentially expensive strings
- cc1f2d2ca6ca lsp: don't copy completion items in filter pass
- 3e855d533f44 lsp: use faster version of str_byteindex
- 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103)
- 3fdc43024159 treesitter: cache queries strongly
- b192d58284a7 treesitter: calculate folds asynchronously
- c6abc97006ee treesitter: do not use tree cursors with a small lifetime
- cbad2c662873 treesitter: don't block when finding injection ranges
- d9ee0d2984e5 treesitter: don't fetch parser for each fold line
- 562056c87573 treesitter: only search for injections within the parse range
- c57a85e0eda0 treesitter: remove unnecessary foldexpr loop
- 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()`
- 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512)
- 3f3e4837d5f7 validate: use lighter version
- 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080)

BUILD
--------------------------------------------------------------------------------
- 104800ce2ead "popcount" name conflict on NetBSD #28983
- 198a952c13a1 add luals check
- ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable
- 32e16cb0b6b0 add utf8proc as dependency
- b213f5169c33 allow comment after #include for required header (#29722)
- 382eb878bcbf bump lua dev dependencies
- 1d815acd78e5 bump minimum cmake version to 3.16
- 5284a2a79316 bump unibilium to v2.1.2
- ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802
- 7c652242579b fix lint error on macos
- 046e0956eeb3 fix or silence new clang-tidy warnings
- 5719f2b91a31 fix uncrustify install in nix devShell (#33020)
- 4a0ee22e77d1 make makefile work on msys
- 4ee65484b16d make makefile work on windows
- 1b90f4a9c472 mark CMake variables advanced #31412
- 0f24b0826a27 move all generator scripts to `src/gen/`
- e5ff3020330e remove -O2 from gen_cflags
- d74c74aae35e remove `lintcommit` from `lint` target
- 573bcb2aaf3e remove enforcement of cmake build type
- 0e9c92a90043 remove nix flakes (#28863)
- f09f5c45facc reuse code for deps.txt for both deps and main build
- e1dc824b7ef4 set luals checklevel to Hint #32392
- cac86e9b4c14 silence "po" noise #30469
- 07b14c8e2ed2 specify POST_BUILD when using add_custom_command
- e83ce331da91 use treesitter's CMakeLists.txt
- e268fcbdaa1e work around bug in make when PATH includes cmake as dir
- b288fa8d62c3 bump_deps: abort if archive doesn't exist
- 7ead328a4858 cjson: sync with upstream (#32114)
- 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281)
- 327110ff8c59 cmake: remove unnecessary policy code
- 535c2f8658c4 contrib: add zsh completion (#32617)
- 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries
- 9216bc927c00 deps: fix formatc target on MSVC
- b3641b80083d deps: remove libtermkey dependency
- 1247684ae14e deps: remove msgpack-c dependency
- fa79a8ad6dee deps: vendor libvterm at v0.3.3
- c614969570ac docs: update CSS #28896
- 0a087f207331 generator: add dependencies on hashy (#32796)
- e178331488a0 lpeg: search for lpeg.so on MacOS
- 7e099cf3eb1f macos: disable deduplication in link step
- f4d9a2983a49 release.sh: fix hang when generating docs (#33026)
- b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425)
- 7aaa4a51b76f vim-patch.sh: include commit subject #28767
- 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 26, 2025
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim).

Following is a list of fixes/features commits.

BREAKING
--------------------------------------------------------------------------------
- 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth
- 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418)
- 35c5e2310783 store artifact shasums in a single shasum.txt file
- 188ec19894e4 turn off translations by default
- 328ea02eb7de use utf8proc full casefolding
- 737f58e23230 api: rename Dictionary => Dict
- a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730)
- ad70c9892d5b column: rework 'statuscolumn' %r/l items
- eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200)
- a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070)
- 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079)
- a9e725b26e08 diagnostics: sort underline severity_sort (#30898)
- e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding`
- 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover()
- debabaf884fc lsp: pass buffer number to root_dir function
- 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers
- 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911)
- 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877)
- dff684fdb3d2 lsp: support multiple clients in lsp.buf.references
- 970a27927eb3 lua: do not use typed table for empty dict
- de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe
- a27419f3fc54 options: disallow setting hidden options #28400
- b922b7d6d788 options: use OptVal for option defaults #26691
- 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022
- 318676ad1348 release: remove backwards compatible releases
- ad191be65e2b signs: place higher-priority signs from the left #27781
- 0dd933265ff2 terminal: cursor shape and blink (#31562)
- 35e5307af257 terminal: include cursor position in TermRequest event data (#31609)
- 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859)
- 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups
- 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193)
- bd4ca22d0334 treesitter: don't parse tree in get_parser() or start()
- a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser
- 99e0facf3a00 treesitter: use return values in `language.add()`
- bda63d5b97df typval: remove distinction of binary and nonbinary strings
- 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525
- ca5fca29121a windows: drop cat and tee executables from windows
- be89d520d7e9 windows: only support UCRT, even for mingw

FEATURES
--------------------------------------------------------------------------------
- efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067)
- 0631492f9c80 add vim.fs.relpath
- f864b68c5b0f allow gx to function for markdown links
- f3632e14e3a7 get/set namespace properties #28728
- a66424617156 remove deprecated features
- ead5683ff999 api: add err field to nvim_echo() opts
- aec4938a21a0 api: broadcast events to ALL channels #28487
- 34d808b73cbc api: combined highlights in nvim_eval_statusline()
- 19b25f3feacf api: deprecate nvim_buf_add_highlight()
- 5c92b40b4b17 api: deprecate nvim_out/err_write(ln)
- d84a95da7e11 api: nvim_get_autocmds filter by id#31549
- 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006
- e00d67ef310c checkhealth: group parsers by name and path in output
- 563051a53ef9 clipboard: support g:clipboard="osc52" #33021
- 60ea0467411d clipboard: try cygutils, clip on Windows #30215
- 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400)
- 65c7033cbe75 comment: allow commentstring to be determined from node metadata
- 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600
- a616272f568a complete: specify reason for CompleteDone
- f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223)
- ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122
- 2c6b6358722b defaults: add LSP default mappings (again) (#28650)
- bb7604eddafb defaults: add default unimpaired style mappings (#28525)
- 4662ad5643b2 defaults: completeopt=popup #32909
- e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480)
- cc6992f1ca44 defaults: dot-repeat [<Space> #31186
- 6db830e40e92 defaults: enable diffopt "linematch" #32346
- b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736
- 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781
- 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764)
- 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261
- 09d76afe84dd defaults: pretty :help headings #30544
- 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984
- 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066)
- c9c17fda80d8 deprecations: vim._defer_deprecated_module()
- 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler
- 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745)
- 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302
- 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273)
- 21961967ffef diagnostic: update quickfix list by title #31486
- 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868
- 1759b7844a2d diagnostic: virtual_lines #31959
- fd65422b99c7 diff: do not try external when out of memory
- 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904
- 6628741ada73 docs: improve `@see` meta docstrings #30693
- 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement
- cb6c0fda718e editorconfig: add support for spelling_language (#28638)
- 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493)
- 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks
- 4cced601c8cd extmark: stack multiple highlight groups in `hl_group`
- 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921
- 62d9fab9af21 float: add winborder option (#31074)
- 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844)
- 511b991e6689 fs.lua: add vim.fs.rm()
- 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085)
- f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491
- b61051ccb4c2 func: allow manual cache invalidation for _memoize
- 548f19ccc301 health: close checkhealth buffers with q #31870
- f2fa4ca97ea3 health: highlight headings #30525
- b12b91c27439 health: show :checkhealth in floating window #31086
- 6592873f773b help: use treesitter for table of contents
- 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups
- 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold
- 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034
- 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101
- 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343
- e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347)
- 8d55cc218cfe keysets: teach Union and LuaRefOf
- 5931f780e028 log: use "ui" as default name for TUI client #30345
- e4c6e732fd04 lsp: add select kind in showMessageRequest #32387
- f20335a54ce7 lsp: add support for completionItem.command resolving
- 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable
- 6072153796d1 lsp: announce codeLens resolveSupport (#29956)
- 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060)
- ff097f2091e7 lsp: completion side effects
- 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd
- 454ae672aad1 lsp: deprecate non-method client functions
- 54249d051c3e lsp: deprecate vim.lsp.buf.completion
- e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341
- 55e4301036bb lsp: drop fswatch, use inotifywait (#29374)
- dad55f5e763f lsp: export diagnostic conversion functions (#30064)
- 44229bb85b6c lsp: highlight hover target/range #31110
- 27f3750817b1 lsp: improve LSP doc hover rendering #30695
- 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items`
- 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164
- 4e90bc30237a lsp: lsp.completion support set deprecated (#29882)
- 6e68fed37441 lsp: multi-client support for signature_help
- 629483e24eed lsp: require `offset_encoding` param #31249
- e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name]
- 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663)
- ce678043e346 lsp: show server name in code actions #30830
- 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611
- a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311)
- 3b0fe2659e74 lsp: support completion context #32793
- 41b07b128ccb lsp: support for resolving code action command (#32704)
- 35247b00a44e lsp: support function for client root_dir (#31630)
- 45e76acaa053 lsp: support hostname in rpc.connect #30238
- b2bad0ac91dd lsp: support postfix snippets in completion
- d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings
- 5d26934c7cda lsp: update LSP healthcheck format (#28980)
- ae2fd91b411d lsp: update LSP types
- 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match
- e4c1f6667b14 lsp: use the meta model to generate server capability map
- 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323
- 92e4e3fb76c2 lsp.util: fix type errors
- ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs
- cbc82011ce19 lsp.util: improve offset_encoding type annotations
- a18fa2f11c3a lsp.util: minor codestyle
- 1944c0d610ce lsp.util: refactor get_border_size()
- f0973d42272e lsp.util: refactor symbols_to_items()
- 0e8568d72c88 lsp.util: remove lsp spec extract
- 0621718e3b5f lsp.util: remove metatable in locations_to_items
- 3f87e222f79b lsp.util: remove some aliases
- e954a16063e6 lsp.util: remove some variables
- 5bec7288a5b5 lsp.util: remove uneeded do-end
- 8ad000ef7cf0 lsp.util: remove unneeded table
- d44d36b8ff6c lsp.util: simplify some bounds checking
- 0066dd0f653e lsp.util: use faster version of vim.validate
- 1edfe5c09ebc lsp.util: use vim.api alias
- 97119a236937 lsp.util: use vim.w/b
- cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()`
- 9afa1fd35510 lua: add `vim._with`
- 518070731003 lua: add `vim.fs.abspath`
- b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939)
- d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472
- 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690
- 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts
- af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012
- be1fbe38b31b lua: vim.text.indent()
- fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515)
- ea5b748f2438 man.vim: "q" always closes window #30819
- f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark()
- 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497)
- cfdf68a7acde mbyte: support extended grapheme clusters including more emoji
- 124c655f56bc messages: "g<" mapping for ext_messages
- cb7b4e296238 messages: "verbose" message kind #31991
- 5bae80899d9d messages: add :!cmd shell message kinds
- e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521
- 21151144c6ee meta: add type for quickfix entries
- 82a215cb2dc2 options: add 'eventignorewin' (#32152)
- d831392b1560 paste: unify cancel and error behavior (#30476)
- 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719
- f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697
- e6cfcaed184d snippet: add default keymaps during snippet session
- 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887)
- 96128a5076b7 startup: validate --listen address
- 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735
- 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561
- 8df6736ca14d term: enable reflow by default (#21124)
- 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050)
- 93480f7fbaa5 term: trigger TermRequest for APC (#32407)
- 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117)
- 6f0bde11ccd8 terminal: add support for kitty keyboard protocol
- 06a1f82f1cc3 terminal: forward X1 and X2 mouse events
- e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji
- f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999)
- 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443)
- 34cd94812d42 test: support and document lua test case debugging
- b8c75a31e6f4 treesitter: #trim! can trim all whitespace
- ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657)
- bd3b6ec8360e treesitter: add node_for_range function
- 688b961d13bd treesitter: add support for wasm parsers
- 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range
- 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts`
- 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790)
- 1af55bfcf21b treesitter: allow get_node to return anonymous nodes
- a94a2927d00a treesitter: allow passing lang to InspectTree
- 45e606b1fddb treesitter: async parsing
- 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559
- 267c7525f738 treesitter: introduce child_with_descendant()
- 09f9f0a94625 treesitter: show which nodes are missing in InspectTree
- b9b408a56c7e treesitter: start moving get_parser to return nil #30313
- da0ae9534900 treesitter: support modelines in `query.set()` (#30257)
- 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282)
- 8ba047e33fe3 treesitter: vertical conceal support for highlighter
- ff85e54939b0 tui: builtin UI (TUI) sets client info #30397
- 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727)
- f93ecd2760f5 tui: parse CSI subparams in termkey (#29805)
- 44dbfcfba4b0 tui: recognize X1 and X2 mouse events
- e41368f3bc1d tui: support in-band resize events (#29791)
- d460928263d0 tui: update 'background' on theme change events (#31350)
- 45e319ade639 tutor: give hints to satisfy the line checker #30952
- 4b0e2605eaf9 ui: UI :detach command
- 394f69a25dc3 ui: additional arguments for cmdline_show/hide events
- a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980
- f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984
- 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192)
- 43d552c56648 ui: more intuitive :substitute confirm prompt #31787
- 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575
- a10636fbe7bb ui: specify whether msg_show event is added to history
- e049c6e4c08a ui: statusline text inherits highlights #29976
- 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551
- 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool
- f4b620c4e643 vim.ui.open: support lemonade #30845
- 3572319b4cb1 vim.validate: improve fast form and deprecate spec form
- cb84cd5d9fba win32: embed executable icon

FIXES
--------------------------------------------------------------------------------
- 200e7ad15786 apply the change on more files
- 6720bd440f19 assert failure in VimL expression parser
- d123202ae6ef change deprecation presentation
- ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121
- 7737f892063a deps build for ARM64 MSVC
- 50749f8df89d extend the life of vim.tbl_flatten to 0.13
- 25abcd243e41 fix broken wasmtime build
- b6ab29483842 fix incorrect search code
- 46b69aaf14a7 include nvim/ascii_defs.h
- 01b4da65c229 merge all provider healthchecks into a single health.lua
- 5c245ec3e955 remove vim.lsp._with_extend
- 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348)
- 6aa42e8f92bd resolve all remaining LuaLS diagnostics
- e71713ba2b5c show swapfile warning as a warning (#28971)
- 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756)
- 0829e7575d63 warn when :InspectTree on buffer with no parser #32783
- 47f2769b462e Man: completion on Mac
- 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw
- 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value`
- 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710)
- 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908)
- 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456
- 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919
- 095c0876c201 api: don't override Vimscript SID (#32610)
- bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302)
- 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984)
- cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078)
- 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981)
- f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543)
- 022449b52236 api: generic error messages, not using TRY_WRAP #31596
- 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390)
- ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390
- 167a2383b996 api: not using TRY_WRAP, generic error messages #31595
- bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177
- d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740
- 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243)
- e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219
- 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912
- 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576
- 40347f6e27f1 api: only flush nvim__redraw when necessary #31250
- 36f44b3121fc api: remove invalid assertions
- 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042
- 9c718bc2bce5 api: validation, documentation of hl_group #31195
- 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544
- ffaab09e9986 build: <termios.h> is system-dependent #31705
- 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME
- 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode
- 34a2bfdcc5ce build: vimdoc tags are not validated #32801
- 807098824762 channel: handle writing to file instead of pipe (#30519)
- c49162be5958 channel: log after (not before) channel-close
- 965dc81f818e checkhealth: disable 'listchars' #31245
- 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name
- f5dd30948e67 checkhealth: handle nested lua/ directory #32918
- c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988
- 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268
- 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866
- af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007
- a70ad5cdb6de cmdline: ext_cmdline block events for conditionals
- bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033
- 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment
- 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256
- 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810
- 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182)
- 3cb1e825e679 column: check if signcolumn changed in all windows #31439
- 1dcda865591b column: clamp line number for legacy signs
- f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003)
- f9a49fab0c90 column: modifying a sign should update placed signs (#29750)
- d5f6f61879ba column: set signcolumn width after splitting window (#30556)
- 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944)
- 0a2218f965ac comment: fall back to using trimmed comment markers (#28938)
- e788d1a3a903 completion: avoid deleting text when completion leader changes #31448
- bfa365a87267 completion: don't include <Lua function> in -complete= (#30209)
- 55dc482e757e completion: fix inconsistent Enter behavior (#30196)
- 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395
- e1c2179dd93e coverity: INTEGER_OVERFLOW #31657
- f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618
- 069451bb214b coverity: size_t overflow #30497
- ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665
- c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773)
- 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341
- 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687)
- a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686)
- 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081)
- 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858)
- a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096)
- 34ded4d97b78 decor: exclude invalid marks from meta total
- 87610d82db91 decor: set invalid flag for end of invalidated paired marks
- 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree
- 0e299ebf7559 decorator: noisy errors from decoration provider #31418
- f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375
- 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343)
- 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460)
- f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884
- 59a171fd99a7 defaults: improve visual search mappings #32378
- 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943
- c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347)
- ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983)
- 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632)
- 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642)
- 573fcb8b6641 deps: revert accidental test commits (#30864)
- de794f2d2409 diagnostic: broken variable reference #31557
- c78728a3844c diagnostic: clear autocmd only for valid buf (#32861)
- f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979
- 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506)
- 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464
- d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593)
- f69937fdbd16 diagnostic: fix float scope filtering (#29134)
- 5bc948c050ce diagnostic: improve current_line refresh logic #32275
- 4b3be56a0369 diagnostic: make docs agree with code (#29561)
- fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466
- 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option
- 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553
- 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings
- 4cbeb6fa3cc7 diagnostic: silence :chistory #31701
- 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585
- 17c25a66fcea diagnostic: virtual lines should scroll horizontally
- fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703)
- e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321
- c65646c2474d diff: use mmfile_t in linematch
- 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708)
- f25dd7a8d548 display: correctly store winline info for concealed lines (#32656)
- a901fb875f69 docs: add missing properties to hl_info #30032
- cc26cf040028 docs: do not treat indexes as `short_link`
- 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680
- 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673
- 09bcb310681e docs: replace `yxx` mappings with `g==` #31947
- efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList`
- b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks`
- 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706)
- 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035)
- b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406)
- 34344b939c06 editor: avoid scrolling :substitute confirm message #32149
- 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342)
- b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634)
- 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953)
- 4317d366691b event-loop: process input before events in getchar() (#32322)
- f05a6666cfcb events: always allow some events to be nested (#32706)
- e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473)
- 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813)
- 8c2d45be7729 exit: close memfiles after processing events (#30872)
- c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387
- 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage
- 43a2019f09e8 extmarks: issues with revalidating marks #28961
- 84ad95fdc9d4 fileio: copy to correct buffer position when reading
- 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991)
- aa9f21ee953d filetype: fix typos in filetype detection
- 032e024f8ab9 filetype: handle .in files with no filename (#30487)
- 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470)
- 21cbd9000748 filetype: normalize full path before matching #32227
- 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445)
- cff5fa49fc5a float: "Not enough room" error for 1-line float #25192
- 07c5f41da3ad float: can set title/footer without setting border #32594
- be01b361d8ff float: cannot set title/footer independently #31993
- ff1791c9e59b float: close preview float window when no selected #29745
- d2cca606a1b6 float: ensure floating window width can fit title
- 8ddcf9d93900 float: handle error in win_float_create() (#29742)
- 8b2b1fba2abf float: missing default highlight for title
- df915f3afccb float: properly find last window of tabpage (#30571)
- 17383870dd3b float: re-sort layers when grid zindex changed #30259
- 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964)
- 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto)
- 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720
- ceea6898a8bd gen_help_html: handle delimiter, heading #29415
- 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields
- 913e81c35f16 getchar: do not simplify keycodes in terminal mode
- b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520)
- 4bd86120d41e glob: handle overlapping `{}` condition elements #29236
- b47b0b3f757d grid: double grid_line_start() with ext_messages #31292
- fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug'
- a9c89bcbf69a gx: allow `@` in url
- 570a8da01b55 health: "q" should not close last window #31876
- 2e3f1069f499 health: better layout of vim.treesitter health check
- 10f917351906 health: broken ruby detect #28804
- 84e85aeb10ae health: check more "old" files #30421
- 5b778a64ec2e health: fix fetching url with python in provider health (#29594)
- b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue
- 237d2aef4d70 health: return correct name from 'path2name()'
- 5e9040648739 health: set nomodifiable in checkhealth buffers
- 91773710145e help: remove runnable code virtual text
- ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288)
- 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313)
- 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids
- 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns
- 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905
- b67fcd048874 highlight: make `TablineSel` more noticeable #31896
- 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183
- 59e130b6cacd inccommand: ensure cursor is where it belongs
- 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677)
- b52ffd0a59df inspect: always show priority
- 9c278af7cc96 inspect: show priority for treesitter highlights
- 22fd52325bf6 inspector: update semantic token namespace (#32157)
- efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803)
- 574ea6a1911b keycodes: recognize <Find>, <Select> #28431
- 67bb0cfa79bc loader: follow the style of the error message for built-in loaders
- 44740e561fc9 log: RPC log format #32337
- 851137f67905 log: log unset $TMPDIR at "debug" level #32137
- c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005
- a6f219b06beb log: unintuitive message for undefined $TMPDIR
- 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170)
- fac96b72a59e lsp: add foldingrange method support check #31463
- 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838)
- a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared
- b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266)
- 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002)
- fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478)
- 39d79efa1e1e lsp: better multi-client support for callHierarchy
- bdfba8598b41 lsp: cancel pending requests before refreshing
- f9bf64d74641 lsp: check buffer is loaded and valid #30330
- c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients
- 81b372fecd74 lsp: check for nil response from server (#29196)
- a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response
- 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162)
- af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914)
- 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap
- 025c87441502 lsp: clear lsp client diagnostics (#29050)
- c374f264305f lsp: clear word when expand multi-lines word (#32393)
- adf7c98d607b lsp: compare URI instead of workspace folder name (#30962)
- b4599acbf8e3 lsp: correct hover result handling (#30995)
- f8d5811c717b lsp: correctly check for "codeAction/resolve" support
- 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close
- 2a1f604c77a1 lsp: delete bufvar inside WinClosed event
- 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875)
- 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029)
- 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242)
- d56ba71af11c lsp: document_symbol uses loclist by default #32070
- 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501)
- 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690)
- 5f527f24f0ea lsp: don't use completion filterText if prefix is empty
- 305012ea0732 lsp: enable `additionalPropertiesSupport`
- 9d9ee3476e64 lsp: ensure watcher cancel
- aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522)
- 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945)
- b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659)
- 4b001f297ae2 lsp: fix infinite loop
- 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130)
- 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212)
- 8654a9700690 lsp: handle empty call hierarchy items #30349
- f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc
- 882a450a2982 lsp: handle locations exceeding line length #30253
- 008782208d82 lsp: handle mixed encoding in tagfunc params
- e0a5c3bb5817 lsp: handle multiline signature help labels #30460
- 8512f669f0e0 lsp: handle nil bytes in strings
- f03b1622ad1b lsp: handle nil root_dir in health check (#29007)
- ed071672613b lsp: handle non-existent configs in lsp.config/enable
- 003b8a251dc1 lsp: handle out-of-bounds character positions #30288
- 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016)
- d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807)
- f54266dbed6f lsp: hover border type can be string (#31013)
- 9a681ad09e2a lsp: hover keymap (#31208)
- a14fca432b96 lsp: improve LSP floating preview window cleanup #31353
- e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707)
- 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966
- 0e394f136fcb lsp: log when receiving markup messages (#30065)
- 203e7a43d1f2 lsp: mention function name in warning #31301
- a4f575abd85e lsp: minimum height for floating popup #31990
- 4fd2694f20d6 lsp: missing method parameter when canceling requests
- be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509
- 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716)
- 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886
- 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491)
- a450fda4eded lsp: prefer `on_list` over `loclist` in default handler
- 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904)
- eb629cce9171 lsp: redundant spaces in lsp log (#29970)
- 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174)
- d76f7fef13e5 lsp: reset active request when reporting an error
- 6bc79790449f lsp: reset the applied hints on `refresh` request #32446
- 47aaddfa0dda lsp: resize hover window for concealed lines
- 081beb3659bd lsp: restore get_language_id behaviour
- 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345)
- d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145)
- 9c2034229739 lsp: reuse client if configs match and no root dir
- 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217)
- bdff50dee56e lsp: revert text edit application order change (#29877)
- e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998)
- a108852b008b lsp: semantic token functions allow "0" bufnr #28849
- c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748
- 8a236c242a76 lsp: set floating window filetype after setup #32112
- 3c51058d7611 lsp: set tagstack on jump via goto methods
- 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382
- 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747
- 629a5b71b55e lsp: support multiple clients in typehierarchy
- e48179f31e65 lsp: suppress completion request if completion is active (#30028)
- 50f006b61774 lsp: tagfunc fails in unusual buffer #30700
- 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795)
- 19be3d26830c lsp: trim trailing whitespace from completion words (#29122)
- aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331)
- 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235
- 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText
- fe5ae88b20f5 lsp: update request name to capability map #30098
- 5aa9906676f3 lsp: use client.id instead of pairs index (#29143)
- c8d7d65679f8 lsp: use correct method for prepareTypehierarchy
- b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match
- 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails
- 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable  #32002
- 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608
- 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044)
- 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837
- 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests
- 3275ae830da9 lsp.protocal: improve typing of constants
- acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding
- 564173e5568c lsp.util: wrong arguments to 'validate' function
- 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595
- b28373638848 lua: `@private` => `@nodoc` #32587
- b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend
- c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715)
- 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753)
- fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505)
- 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583)
- 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203)
- bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587)
- e2aca58bcc4f lua: don't override script ID from :source (#32626)
- d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks
- 948f2beed4ea lua: find length of completion prefix earlier (#29384)
- ebb963a4a082 lua: format errors from luv callbacks using __tostring
- 65a703e06063 lua: ignore stdout and stderr for xdg-open
- 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044)
- c6d2cbf8f51a lua: pop retval for fast context LuaRef
- a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker
- 3d707e6f14b7 lua: remove vim.loader.disable() #31344
- 3a8811324604 lua: revert vim.tbl_extend behavior change and document it
- 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021)
- 40a149e7f992 lua: types for vim.api.keyset.win_config #32700
- 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536)
- 960fdc775a88 lua: vim.deprecate does not support major>0
- d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850)
- cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218
- 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659)
- 9eb042600269 luacats: allow all types inside tuples
- ee5aaba21560 man: avoid setting v:errmsg (#30052)
- 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180)
- da6f68ee6966 man: filter OSC 8 hyperlink markup #29171
- 7940ec69136f man.lua: `:Man <tab>` does not complete #31569
- e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262
- d6653e1cc957 marks: ensure decor is removed with proper range (#32973)
- 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477)
- 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476)
- 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662)
- 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862)
- 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766)
- 012db2b0f509 marks: revalidate marks whose position did not change
- 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017
- c4f76299f039 marks: skip right_gravity marks when deleting text
- cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560)
- 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747)
- a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531)
- 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char
- 15bc930fca94 memline: don't check line count for closed memline #32403
- aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328)
- 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952
- d98827b634af messages: avoid empty msg_showmode with 'noshowmode'
- 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627
- 21718c67dd96 messages: better formatting for ext_messages #31839
- 92556be33d04 messages: compute msg_col after last newline in ext_messages
- ad853d1df093 messages: improve deadly signal messages #32364
- 51853b82bc95 messages: incorrect error message splitting and kind #32990
- 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531
- 7ce27381fb49 messages: lsp window/showMessage is not an error
- 1b6442034f6a messages: more ext_messages kinds #31279
- 9c6a3703bb15 messages: no message kind for :undo messages #31590
- ca760e645ba4 messages: no message kind for :write messages #31519
- 909b18d05a8d messages: no message kind for completion menu messages #31646
- f111c32ff9dc messages: no message kind for search pattern #31272
- 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages
- 9fa3a0964e9b messages: pass previous highlight id to ext chunks
- e025f5a5b30a messages: proper multiline Lua print() messages #31205
- d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669
- d55b17e2b4e0 messages: verbose kind for nvim_echo()
- c8e47f648052 meta: do not use hyphens in param names
- 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling
- 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565)
- 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394)
- 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655)
- f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642)
- 5947f249f838 move: half-page scrolling with resized grid at eob (#28821)
- ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276)
- af0a2157ad29 move: wrong cursor row on concealed line (#32629)
- 83479b95abae mpack: remove invalid bool definition
- d32780de4daf mswin: UI may hang on exit
- fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode
- de83cc5842c9 netrw: re-add missing comment marker in syntax file
- d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555
- 34e2185022ab options: better handling of empty values
- 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978)
- 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896)
- 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894)
- 395f420fc65c options: fix some 'belloff' flags not working properly (#30856)
- 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919)
- e697c1b43dfb paste: improve repeating of pasted text (#30438)
- 052875b9dc3d paste: only record a paste when it's from RPC (#30491)
- 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025
- 42aa69b076cb path: avoid chdir() when resolving path (#28799)
- 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992)
- 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863)
- afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819
- ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636
- d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246
- d24fb72c335b pum: don't select item when clicking to the left/right (#30967)
- 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609)
- 3bcd5624beec regexp: fix typo in E888 error message (#30161)
- cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209
- 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf`
- b6c1ce8a9545 runtime: add commentstring for glsl ftplugin
- 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252)
- e641155b023c runtime: avoid E31 in ftplugin (#32578)
- 82b02ae2f2af runtime: clean up one-off scripts
- 9788b81d7e53 runtime: fully port emoji_list to Lua
- 74fcc9452cd9 runtime: gO always says "Help TOC" #32971
- 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures
- 8369590eb215 runtime: remove obsolete ftplugin/calender.lua
- 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin
- 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053)
- 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533)
- 862338255da6 runtime: sync bundled treesitter queries
- 9e80738f3073 runtime: sync bundled treesitter queries
- 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473)
- 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529)
- a5bd6665b00a scripts: update bundled dependencies in bump_deps
- 573a71469d37 scrollbind: properly take filler/virtual lines into account
- a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153)
- 648d6426c863 server: CID 509282: DEADCODE #30316
- f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538
- cd48b72b60af shada: restore search pattern length properly (#28929)
- 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031)
- 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998)
- 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670)
- 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970
- d46ebd2a7403 startup: avoid crash with completion from -l script (#32160)
- 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285
- 17e00d0cc63c startup: report --startuptime error to stderr (#31131)
- 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310
- 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912
- 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265
- 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602)
- a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458)
- f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509)
- 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755)
- 69a19295f8fe terminal: delay when finishing terminal process #32846
- f8c8a245aa5b terminal: don't crash on unprintable chars
- 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090)
- fa46441264b2 terminal: improve cursor refresh handling (#32596)
- 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056)
- 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620)
- c51bf5a6b249 terminal: set cursor cell percentage (#31703)
- 5def8714ad70 terminal: set local values of window options (#29326)
- e9c077d197a8 termkey: fix null pointer dereference (#31792)
- c8e3618e0e68 test: "tempdir not a directory" in CI logs
- f7e32fb6e626 test: better management of tmpfiles
- db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524)
- e61228a214eb tests: needing two calls to setup a screen is cringe
- 639734bed4ef tests: remove the __extension__ keyword  in filter_complex_blocks (#32483)
- 59baa5e8a1f9 tohtml: apply sp color if present #30110
- 67c39f5ecae0 tohtml: disable modeline #32822
- e37404f7fecc tohtml: enclose font-family names in quotation marks
- 25db0a138537 tohtml: extmark text may be out of bounds
- 8cd9feb50166 tohtml: ignore lsp inlay hints
- eb37241d38ad tohtml: properly handle multiple hl groups #29012
- 2ed6423c7e9d tohtml: replace ipairs with pairs
- 88c7997503e1 tohtml: show how many warnings are hidden
- 118ae7e5ed6c tohtml: support ranges again
- c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488
- b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536
- 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field
- 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree
- bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer
- a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233
- 6696ea7f1038 treesitter: clean up parsing queue
- 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036)
- f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil
- 7a20f93a929a treesitter: correct condition in `__has_ancestor`
- 9b25c68db21c treesitter: correctly parse queries with combined injections
- 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()`
- 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree
- da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav
- 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709
- aa2b44fbb07f treesitter: don't return error message on success #31955
- b0bbe25c4808 treesitter: don't spam query errors in the highlighter
- b88874d33c15 treesitter: empty queries can disable injections (#31748)
- d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542)
- f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results
- c4eb0b64bd49 treesitter: find buffer in multiple windows #28922
- 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree
- 5331f87f6145 treesitter: indent size for inspect_tree #28727
- 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198
- 052e048db676 treesitter: lint top-level anonymous nodes
- 4b9095285160 treesitter: mark supertype nodes as named
- 096ae3bfd707 treesitter: nil access when running string parser async
- c3337e357a83 treesitter: nil check query for has_conceal_line
- 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240
- 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter
- d3193afc2559 treesitter: remove duplicate symbol names in language.inspect()
- cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041
- 1827ab7a1f9a treesitter: separately track the number of valid regions
- 36990f324de2 treesitter: show proper node name error messages
- 4349bdbd0bd0 treesitter: specify success status in edit_query return value
- e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid
- 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error
- ae917dbd06cb treesitter: sync queries from upstream
- c4e9ff30a6b6 treesitter: sync queries with upstream
- d8eec8156098 treesitter: update lua, markdown queries
- 6e44a6a289c5 treesitter: update queries
- 5a54681025ec treesitter: uv_dlclose after uv_dlerror
- e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers
- 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet
- 8474f529780b treesitter.foldexpr: robustness against ctrl-c
- f81131cca2b4 tui: also reset cursor color if it was invisible (#31348)
- 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793)
- 720ec5cec2df tui: cursor color in suckless terminal #32310
- b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804)
- d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197)
- a811d4babd22 tui: only reset cursor color if it was changed (#31337)
- 0c0352783fca tui: remove DCS escaping in tmux (#32723)
- 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884)
- f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960)
- bc63ffcf39e8 tui: reset clear_region attributes during startup #28713
- b02c83941493 tui: set id parameter in OSC 8 sequences (#29840)
- 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096)
- 8b8096500d08 tutor: incorrect lines marked as correct #29833
- 31745b17e60d types: add narrower vim.validate types
- 44410d063ad2 types: add some vim.fn type annotations
- b813075b8a55 types: do not mark unstable API as private
- e947f226bebe types: use vararg return type annotation
- a1906c23ddab ui: Windows :detach is opt-in
- 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718)
- 216ec7397214 ui: avoid redundant ext_cmdline events (#32237)
- 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419)
- 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222
- 7eba016c8681 ui: ensure screen update before waiting for input #30576
- 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950
- 6e4df18b457e ui: no fast context for prompt message kinds #31224
- 6b8c56c7f6da ui: schedule UI detach (#32827)
- b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089
- d1fd674df3eb ui: update title in more cases (#31508)
- 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284
- d049752e45c3 version: fix vim.version().prerelease
- 8bdfc2ab2b25 version: return nil with empty string
- 6401b433f7c0 vim.fs: default to follow=false #32859
- 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480
- 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782
- 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths
- a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter
- 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781)
- 734dba04d13b vim.system: close pipe handles after process handle
- 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638
- ad3472e29169 vim.system: resolve executable paths on windows
- 33464189bc02 vim.text: handle very long strings (#30075)
- 4cff4185647c vim.text: remove assert from vim.text.hexdecode
- d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302
- 8bf79bd13c4d vim.wo: never allow non-zero bufnr
- 453f2c52d291 vim_snprintf: special-case handling of binary format
- 32e128f20992 watch: exclude .git when using inotifywait (#29914)
- 9e23b4e1852f watch: ignore nonexistent paths (ENOENT)
- a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099)
- 88f07d6ca4a6 win-msi: set installer scope to machine #29895
- 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551)
- 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507)
- 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo

PERFORMANCE
--------------------------------------------------------------------------------
- 48251134ee59 add fast path to vim.validate (#28977)
- 3abd7ed4a4cd consider only active decorations when drawing lines
- 8d2ee542a82a decor: join predicates and matches cache
- 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288
- b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777)
- 15f2da55a8de events: use hashy for event name lookup (#32802)
- abf4b65a51b2 filetype: cache (more) pattern data during "add" time
- f61efe3fe77c filetype: implement parent pattern pre-matching (#29660)
- ff575b388640 filetype: optimize internal data structures
- dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596)
- 12d4caa9d3e4 keycodes: use hashy for string lookup
- f8fc6cb15755 loader: reduce calls to Loader.cache_file
- 138a93a057da lsp: avoid repeated table lookup in completion.enable
- 7342e6b00d5e lsp: do not apply semantic tokens to folded lines
- c85d15e0d557 lsp: don't construct potentially expensive strings
- cc1f2d2ca6ca lsp: don't copy completion items in filter pass
- 3e855d533f44 lsp: use faster version of str_byteindex
- 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103)
- 3fdc43024159 treesitter: cache queries strongly
- b192d58284a7 treesitter: calculate folds asynchronously
- c6abc97006ee treesitter: do not use tree cursors with a small lifetime
- cbad2c662873 treesitter: don't block when finding injection ranges
- d9ee0d2984e5 treesitter: don't fetch parser for each fold line
- 562056c87573 treesitter: only search for injections within the parse range
- c57a85e0eda0 treesitter: remove unnecessary foldexpr loop
- 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()`
- 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512)
- 3f3e4837d5f7 validate: use lighter version
- 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080)

BUILD
--------------------------------------------------------------------------------
- 104800ce2ead "popcount" name conflict on NetBSD #28983
- 198a952c13a1 add luals check
- ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable
- 32e16cb0b6b0 add utf8proc as dependency
- b213f5169c33 allow comment after #include for required header (#29722)
- 382eb878bcbf bump lua dev dependencies
- 1d815acd78e5 bump minimum cmake version to 3.16
- 5284a2a79316 bump unibilium to v2.1.2
- ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802
- 7c652242579b fix lint error on macos
- 046e0956eeb3 fix or silence new clang-tidy warnings
- 5719f2b91a31 fix uncrustify install in nix devShell (#33020)
- 4a0ee22e77d1 make makefile work on msys
- 4ee65484b16d make makefile work on windows
- 1b90f4a9c472 mark CMake variables advanced #31412
- 0f24b0826a27 move all generator scripts to `src/gen/`
- e5ff3020330e remove -O2 from gen_cflags
- d74c74aae35e remove `lintcommit` from `lint` target
- 573bcb2aaf3e remove enforcement of cmake build type
- 0e9c92a90043 remove nix flakes (#28863)
- f09f5c45facc reuse code for deps.txt for both deps and main build
- e1dc824b7ef4 set luals checklevel to Hint #32392
- cac86e9b4c14 silence "po" noise #30469
- 07b14c8e2ed2 specify POST_BUILD when using add_custom_command
- e83ce331da91 use treesitter's CMakeLists.txt
- e268fcbdaa1e work around bug in make when PATH includes cmake as dir
- b288fa8d62c3 bump_deps: abort if archive doesn't exist
- 7ead328a4858 cjson: sync with upstream (#32114)
- 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281)
- 327110ff8c59 cmake: remove unnecessary policy code
- 535c2f8658c4 contrib: add zsh completion (#32617)
- 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries
- 9216bc927c00 deps: fix formatc target on MSVC
- b3641b80083d deps: remove libtermkey dependency
- 1247684ae14e deps: remove msgpack-c dependency
- fa79a8ad6dee deps: vendor libvterm at v0.3.3
- c614969570ac docs: update CSS #28896
- 0a087f207331 generator: add dependencies on hashy (#32796)
- e178331488a0 lpeg: search for lpeg.so on MacOS
- 7e099cf3eb1f macos: disable deduplication in link step
- f4d9a2983a49 release.sh: fix hang when generating docs (#33026)
- b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425)
- 7aaa4a51b76f vim-patch.sh: include commit subject #28767
- 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 26, 2025
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim).

Following is a list of fixes/features commits.

BREAKING
--------------------------------------------------------------------------------
- 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth
- 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418)
- 35c5e2310783 store artifact shasums in a single shasum.txt file
- 188ec19894e4 turn off translations by default
- 328ea02eb7de use utf8proc full casefolding
- 737f58e23230 api: rename Dictionary => Dict
- a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730)
- ad70c9892d5b column: rework 'statuscolumn' %r/l items
- eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200)
- a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070)
- 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079)
- a9e725b26e08 diagnostics: sort underline severity_sort (#30898)
- e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding`
- 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover()
- debabaf884fc lsp: pass buffer number to root_dir function
- 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers
- 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911)
- 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877)
- dff684fdb3d2 lsp: support multiple clients in lsp.buf.references
- 970a27927eb3 lua: do not use typed table for empty dict
- de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe
- a27419f3fc54 options: disallow setting hidden options #28400
- b922b7d6d788 options: use OptVal for option defaults #26691
- 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022
- 318676ad1348 release: remove backwards compatible releases
- ad191be65e2b signs: place higher-priority signs from the left #27781
- 0dd933265ff2 terminal: cursor shape and blink (#31562)
- 35e5307af257 terminal: include cursor position in TermRequest event data (#31609)
- 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859)
- 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups
- 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193)
- bd4ca22d0334 treesitter: don't parse tree in get_parser() or start()
- a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser
- 99e0facf3a00 treesitter: use return values in `language.add()`
- bda63d5b97df typval: remove distinction of binary and nonbinary strings
- 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525
- ca5fca29121a windows: drop cat and tee executables from windows
- be89d520d7e9 windows: only support UCRT, even for mingw

FEATURES
--------------------------------------------------------------------------------
- efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067)
- 0631492f9c80 add vim.fs.relpath
- f864b68c5b0f allow gx to function for markdown links
- f3632e14e3a7 get/set namespace properties #28728
- a66424617156 remove deprecated features
- ead5683ff999 api: add err field to nvim_echo() opts
- aec4938a21a0 api: broadcast events to ALL channels #28487
- 34d808b73cbc api: combined highlights in nvim_eval_statusline()
- 19b25f3feacf api: deprecate nvim_buf_add_highlight()
- 5c92b40b4b17 api: deprecate nvim_out/err_write(ln)
- d84a95da7e11 api: nvim_get_autocmds filter by id#31549
- 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006
- e00d67ef310c checkhealth: group parsers by name and path in output
- 563051a53ef9 clipboard: support g:clipboard="osc52" #33021
- 60ea0467411d clipboard: try cygutils, clip on Windows #30215
- 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400)
- 65c7033cbe75 comment: allow commentstring to be determined from node metadata
- 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600
- a616272f568a complete: specify reason for CompleteDone
- f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223)
- ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122
- 2c6b6358722b defaults: add LSP default mappings (again) (#28650)
- bb7604eddafb defaults: add default unimpaired style mappings (#28525)
- 4662ad5643b2 defaults: completeopt=popup #32909
- e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480)
- cc6992f1ca44 defaults: dot-repeat [<Space> #31186
- 6db830e40e92 defaults: enable diffopt "linematch" #32346
- b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736
- 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781
- 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764)
- 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261
- 09d76afe84dd defaults: pretty :help headings #30544
- 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984
- 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066)
- c9c17fda80d8 deprecations: vim._defer_deprecated_module()
- 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler
- 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745)
- 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302
- 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273)
- 21961967ffef diagnostic: update quickfix list by title #31486
- 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868
- 1759b7844a2d diagnostic: virtual_lines #31959
- fd65422b99c7 diff: do not try external when out of memory
- 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904
- 6628741ada73 docs: improve `@see` meta docstrings #30693
- 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement
- cb6c0fda718e editorconfig: add support for spelling_language (#28638)
- 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493)
- 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks
- 4cced601c8cd extmark: stack multiple highlight groups in `hl_group`
- 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921
- 62d9fab9af21 float: add winborder option (#31074)
- 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844)
- 511b991e6689 fs.lua: add vim.fs.rm()
- 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085)
- f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491
- b61051ccb4c2 func: allow manual cache invalidation for _memoize
- 548f19ccc301 health: close checkhealth buffers with q #31870
- f2fa4ca97ea3 health: highlight headings #30525
- b12b91c27439 health: show :checkhealth in floating window #31086
- 6592873f773b help: use treesitter for table of contents
- 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups
- 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold
- 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034
- 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101
- 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343
- e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347)
- 8d55cc218cfe keysets: teach Union and LuaRefOf
- 5931f780e028 log: use "ui" as default name for TUI client #30345
- e4c6e732fd04 lsp: add select kind in showMessageRequest #32387
- f20335a54ce7 lsp: add support for completionItem.command resolving
- 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable
- 6072153796d1 lsp: announce codeLens resolveSupport (#29956)
- 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060)
- ff097f2091e7 lsp: completion side effects
- 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd
- 454ae672aad1 lsp: deprecate non-method client functions
- 54249d051c3e lsp: deprecate vim.lsp.buf.completion
- e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341
- 55e4301036bb lsp: drop fswatch, use inotifywait (#29374)
- dad55f5e763f lsp: export diagnostic conversion functions (#30064)
- 44229bb85b6c lsp: highlight hover target/range #31110
- 27f3750817b1 lsp: improve LSP doc hover rendering #30695
- 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items`
- 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164
- 4e90bc30237a lsp: lsp.completion support set deprecated (#29882)
- 6e68fed37441 lsp: multi-client support for signature_help
- 629483e24eed lsp: require `offset_encoding` param #31249
- e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name]
- 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663)
- ce678043e346 lsp: show server name in code actions #30830
- 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611
- a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311)
- 3b0fe2659e74 lsp: support completion context #32793
- 41b07b128ccb lsp: support for resolving code action command (#32704)
- 35247b00a44e lsp: support function for client root_dir (#31630)
- 45e76acaa053 lsp: support hostname in rpc.connect #30238
- b2bad0ac91dd lsp: support postfix snippets in completion
- d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings
- 5d26934c7cda lsp: update LSP healthcheck format (#28980)
- ae2fd91b411d lsp: update LSP types
- 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match
- e4c1f6667b14 lsp: use the meta model to generate server capability map
- 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323
- 92e4e3fb76c2 lsp.util: fix type errors
- ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs
- cbc82011ce19 lsp.util: improve offset_encoding type annotations
- a18fa2f11c3a lsp.util: minor codestyle
- 1944c0d610ce lsp.util: refactor get_border_size()
- f0973d42272e lsp.util: refactor symbols_to_items()
- 0e8568d72c88 lsp.util: remove lsp spec extract
- 0621718e3b5f lsp.util: remove metatable in locations_to_items
- 3f87e222f79b lsp.util: remove some aliases
- e954a16063e6 lsp.util: remove some variables
- 5bec7288a5b5 lsp.util: remove uneeded do-end
- 8ad000ef7cf0 lsp.util: remove unneeded table
- d44d36b8ff6c lsp.util: simplify some bounds checking
- 0066dd0f653e lsp.util: use faster version of vim.validate
- 1edfe5c09ebc lsp.util: use vim.api alias
- 97119a236937 lsp.util: use vim.w/b
- cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()`
- 9afa1fd35510 lua: add `vim._with`
- 518070731003 lua: add `vim.fs.abspath`
- b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939)
- d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472
- 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690
- 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts
- af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012
- be1fbe38b31b lua: vim.text.indent()
- fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515)
- ea5b748f2438 man.vim: "q" always closes window #30819
- f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark()
- 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497)
- cfdf68a7acde mbyte: support extended grapheme clusters including more emoji
- 124c655f56bc messages: "g<" mapping for ext_messages
- cb7b4e296238 messages: "verbose" message kind #31991
- 5bae80899d9d messages: add :!cmd shell message kinds
- e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521
- 21151144c6ee meta: add type for quickfix entries
- 82a215cb2dc2 options: add 'eventignorewin' (#32152)
- d831392b1560 paste: unify cancel and error behavior (#30476)
- 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719
- f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697
- e6cfcaed184d snippet: add default keymaps during snippet session
- 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887)
- 96128a5076b7 startup: validate --listen address
- 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735
- 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561
- 8df6736ca14d term: enable reflow by default (#21124)
- 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050)
- 93480f7fbaa5 term: trigger TermRequest for APC (#32407)
- 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117)
- 6f0bde11ccd8 terminal: add support for kitty keyboard protocol
- 06a1f82f1cc3 terminal: forward X1 and X2 mouse events
- e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji
- f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999)
- 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443)
- 34cd94812d42 test: support and document lua test case debugging
- b8c75a31e6f4 treesitter: #trim! can trim all whitespace
- ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657)
- bd3b6ec8360e treesitter: add node_for_range function
- 688b961d13bd treesitter: add support for wasm parsers
- 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range
- 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts`
- 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790)
- 1af55bfcf21b treesitter: allow get_node to return anonymous nodes
- a94a2927d00a treesitter: allow passing lang to InspectTree
- 45e606b1fddb treesitter: async parsing
- 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559
- 267c7525f738 treesitter: introduce child_with_descendant()
- 09f9f0a94625 treesitter: show which nodes are missing in InspectTree
- b9b408a56c7e treesitter: start moving get_parser to return nil #30313
- da0ae9534900 treesitter: support modelines in `query.set()` (#30257)
- 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282)
- 8ba047e33fe3 treesitter: vertical conceal support for highlighter
- ff85e54939b0 tui: builtin UI (TUI) sets client info #30397
- 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727)
- f93ecd2760f5 tui: parse CSI subparams in termkey (#29805)
- 44dbfcfba4b0 tui: recognize X1 and X2 mouse events
- e41368f3bc1d tui: support in-band resize events (#29791)
- d460928263d0 tui: update 'background' on theme change events (#31350)
- 45e319ade639 tutor: give hints to satisfy the line checker #30952
- 4b0e2605eaf9 ui: UI :detach command
- 394f69a25dc3 ui: additional arguments for cmdline_show/hide events
- a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980
- f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984
- 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192)
- 43d552c56648 ui: more intuitive :substitute confirm prompt #31787
- 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575
- a10636fbe7bb ui: specify whether msg_show event is added to history
- e049c6e4c08a ui: statusline text inherits highlights #29976
- 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551
- 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool
- f4b620c4e643 vim.ui.open: support lemonade #30845
- 3572319b4cb1 vim.validate: improve fast form and deprecate spec form
- cb84cd5d9fba win32: embed executable icon

FIXES
--------------------------------------------------------------------------------
- 200e7ad15786 apply the change on more files
- 6720bd440f19 assert failure in VimL expression parser
- d123202ae6ef change deprecation presentation
- ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121
- 7737f892063a deps build for ARM64 MSVC
- 50749f8df89d extend the life of vim.tbl_flatten to 0.13
- 25abcd243e41 fix broken wasmtime build
- b6ab29483842 fix incorrect search code
- 46b69aaf14a7 include nvim/ascii_defs.h
- 01b4da65c229 merge all provider healthchecks into a single health.lua
- 5c245ec3e955 remove vim.lsp._with_extend
- 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348)
- 6aa42e8f92bd resolve all remaining LuaLS diagnostics
- e71713ba2b5c show swapfile warning as a warning (#28971)
- 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756)
- 0829e7575d63 warn when :InspectTree on buffer with no parser #32783
- 47f2769b462e Man: completion on Mac
- 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw
- 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value`
- 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710)
- 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908)
- 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456
- 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919
- 095c0876c201 api: don't override Vimscript SID (#32610)
- bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302)
- 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984)
- cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078)
- 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981)
- f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543)
- 022449b52236 api: generic error messages, not using TRY_WRAP #31596
- 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390)
- ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390
- 167a2383b996 api: not using TRY_WRAP, generic error messages #31595
- bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177
- d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740
- 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243)
- e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219
- 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912
- 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576
- 40347f6e27f1 api: only flush nvim__redraw when necessary #31250
- 36f44b3121fc api: remove invalid assertions
- 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042
- 9c718bc2bce5 api: validation, documentation of hl_group #31195
- 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544
- ffaab09e9986 build: <termios.h> is system-dependent #31705
- 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME
- 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode
- 34a2bfdcc5ce build: vimdoc tags are not validated #32801
- 807098824762 channel: handle writing to file instead of pipe (#30519)
- c49162be5958 channel: log after (not before) channel-close
- 965dc81f818e checkhealth: disable 'listchars' #31245
- 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name
- f5dd30948e67 checkhealth: handle nested lua/ directory #32918
- c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988
- 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268
- 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866
- af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007
- a70ad5cdb6de cmdline: ext_cmdline block events for conditionals
- bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033
- 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment
- 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256
- 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810
- 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182)
- 3cb1e825e679 column: check if signcolumn changed in all windows #31439
- 1dcda865591b column: clamp line number for legacy signs
- f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003)
- f9a49fab0c90 column: modifying a sign should update placed signs (#29750)
- d5f6f61879ba column: set signcolumn width after splitting window (#30556)
- 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944)
- 0a2218f965ac comment: fall back to using trimmed comment markers (#28938)
- e788d1a3a903 completion: avoid deleting text when completion leader changes #31448
- bfa365a87267 completion: don't include <Lua function> in -complete= (#30209)
- 55dc482e757e completion: fix inconsistent Enter behavior (#30196)
- 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395
- e1c2179dd93e coverity: INTEGER_OVERFLOW #31657
- f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618
- 069451bb214b coverity: size_t overflow #30497
- ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665
- c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773)
- 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341
- 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687)
- a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686)
- 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081)
- 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858)
- a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096)
- 34ded4d97b78 decor: exclude invalid marks from meta total
- 87610d82db91 decor: set invalid flag for end of invalidated paired marks
- 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree
- 0e299ebf7559 decorator: noisy errors from decoration provider #31418
- f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375
- 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343)
- 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460)
- f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884
- 59a171fd99a7 defaults: improve visual search mappings #32378
- 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943
- c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347)
- ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983)
- 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632)
- 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642)
- 573fcb8b6641 deps: revert accidental test commits (#30864)
- de794f2d2409 diagnostic: broken variable reference #31557
- c78728a3844c diagnostic: clear autocmd only for valid buf (#32861)
- f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979
- 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506)
- 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464
- d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593)
- f69937fdbd16 diagnostic: fix float scope filtering (#29134)
- 5bc948c050ce diagnostic: improve current_line refresh logic #32275
- 4b3be56a0369 diagnostic: make docs agree with code (#29561)
- fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466
- 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option
- 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553
- 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings
- 4cbeb6fa3cc7 diagnostic: silence :chistory #31701
- 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585
- 17c25a66fcea diagnostic: virtual lines should scroll horizontally
- fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703)
- e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321
- c65646c2474d diff: use mmfile_t in linematch
- 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708)
- f25dd7a8d548 display: correctly store winline info for concealed lines (#32656)
- a901fb875f69 docs: add missing properties to hl_info #30032
- cc26cf040028 docs: do not treat indexes as `short_link`
- 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680
- 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673
- 09bcb310681e docs: replace `yxx` mappings with `g==` #31947
- efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList`
- b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks`
- 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706)
- 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035)
- b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406)
- 34344b939c06 editor: avoid scrolling :substitute confirm message #32149
- 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342)
- b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634)
- 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953)
- 4317d366691b event-loop: process input before events in getchar() (#32322)
- f05a6666cfcb events: always allow some events to be nested (#32706)
- e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473)
- 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813)
- 8c2d45be7729 exit: close memfiles after processing events (#30872)
- c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387
- 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage
- 43a2019f09e8 extmarks: issues with revalidating marks #28961
- 84ad95fdc9d4 fileio: copy to correct buffer position when reading
- 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991)
- aa9f21ee953d filetype: fix typos in filetype detection
- 032e024f8ab9 filetype: handle .in files with no filename (#30487)
- 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470)
- 21cbd9000748 filetype: normalize full path before matching #32227
- 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445)
- cff5fa49fc5a float: "Not enough room" error for 1-line float #25192
- 07c5f41da3ad float: can set title/footer without setting border #32594
- be01b361d8ff float: cannot set title/footer independently #31993
- ff1791c9e59b float: close preview float window when no selected #29745
- d2cca606a1b6 float: ensure floating window width can fit title
- 8ddcf9d93900 float: handle error in win_float_create() (#29742)
- 8b2b1fba2abf float: missing default highlight for title
- df915f3afccb float: properly find last window of tabpage (#30571)
- 17383870dd3b float: re-sort layers when grid zindex changed #30259
- 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964)
- 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto)
- 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720
- ceea6898a8bd gen_help_html: handle delimiter, heading #29415
- 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields
- 913e81c35f16 getchar: do not simplify keycodes in terminal mode
- b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520)
- 4bd86120d41e glob: handle overlapping `{}` condition elements #29236
- b47b0b3f757d grid: double grid_line_start() with ext_messages #31292
- fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug'
- a9c89bcbf69a gx: allow `@` in url
- 570a8da01b55 health: "q" should not close last window #31876
- 2e3f1069f499 health: better layout of vim.treesitter health check
- 10f917351906 health: broken ruby detect #28804
- 84e85aeb10ae health: check more "old" files #30421
- 5b778a64ec2e health: fix fetching url with python in provider health (#29594)
- b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue
- 237d2aef4d70 health: return correct name from 'path2name()'
- 5e9040648739 health: set nomodifiable in checkhealth buffers
- 91773710145e help: remove runnable code virtual text
- ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288)
- 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313)
- 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids
- 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns
- 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905
- b67fcd048874 highlight: make `TablineSel` more noticeable #31896
- 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183
- 59e130b6cacd inccommand: ensure cursor is where it belongs
- 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677)
- b52ffd0a59df inspect: always show priority
- 9c278af7cc96 inspect: show priority for treesitter highlights
- 22fd52325bf6 inspector: update semantic token namespace (#32157)
- efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803)
- 574ea6a1911b keycodes: recognize <Find>, <Select> #28431
- 67bb0cfa79bc loader: follow the style of the error message for built-in loaders
- 44740e561fc9 log: RPC log format #32337
- 851137f67905 log: log unset $TMPDIR at "debug" level #32137
- c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005
- a6f219b06beb log: unintuitive message for undefined $TMPDIR
- 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170)
- fac96b72a59e lsp: add foldingrange method support check #31463
- 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838)
- a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared
- b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266)
- 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002)
- fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478)
- 39d79efa1e1e lsp: better multi-client support for callHierarchy
- bdfba8598b41 lsp: cancel pending requests before refreshing
- f9bf64d74641 lsp: check buffer is loaded and valid #30330
- c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients
- 81b372fecd74 lsp: check for nil response from server (#29196)
- a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response
- 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162)
- af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914)
- 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap
- 025c87441502 lsp: clear lsp client diagnostics (#29050)
- c374f264305f lsp: clear word when expand multi-lines word (#32393)
- adf7c98d607b lsp: compare URI instead of workspace folder name (#30962)
- b4599acbf8e3 lsp: correct hover result handling (#30995)
- f8d5811c717b lsp: correctly check for "codeAction/resolve" support
- 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close
- 2a1f604c77a1 lsp: delete bufvar inside WinClosed event
- 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875)
- 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029)
- 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242)
- d56ba71af11c lsp: document_symbol uses loclist by default #32070
- 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501)
- 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690)
- 5f527f24f0ea lsp: don't use completion filterText if prefix is empty
- 305012ea0732 lsp: enable `additionalPropertiesSupport`
- 9d9ee3476e64 lsp: ensure watcher cancel
- aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522)
- 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945)
- b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659)
- 4b001f297ae2 lsp: fix infinite loop
- 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130)
- 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212)
- 8654a9700690 lsp: handle empty call hierarchy items #30349
- f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc
- 882a450a2982 lsp: handle locations exceeding line length #30253
- 008782208d82 lsp: handle mixed encoding in tagfunc params
- e0a5c3bb5817 lsp: handle multiline signature help labels #30460
- 8512f669f0e0 lsp: handle nil bytes in strings
- f03b1622ad1b lsp: handle nil root_dir in health check (#29007)
- ed071672613b lsp: handle non-existent configs in lsp.config/enable
- 003b8a251dc1 lsp: handle out-of-bounds character positions #30288
- 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016)
- d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807)
- f54266dbed6f lsp: hover border type can be string (#31013)
- 9a681ad09e2a lsp: hover keymap (#31208)
- a14fca432b96 lsp: improve LSP floating preview window cleanup #31353
- e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707)
- 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966
- 0e394f136fcb lsp: log when receiving markup messages (#30065)
- 203e7a43d1f2 lsp: mention function name in warning #31301
- a4f575abd85e lsp: minimum height for floating popup #31990
- 4fd2694f20d6 lsp: missing method parameter when canceling requests
- be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509
- 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716)
- 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886
- 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491)
- a450fda4eded lsp: prefer `on_list` over `loclist` in default handler
- 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904)
- eb629cce9171 lsp: redundant spaces in lsp log (#29970)
- 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174)
- d76f7fef13e5 lsp: reset active request when reporting an error
- 6bc79790449f lsp: reset the applied hints on `refresh` request #32446
- 47aaddfa0dda lsp: resize hover window for concealed lines
- 081beb3659bd lsp: restore get_language_id behaviour
- 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345)
- d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145)
- 9c2034229739 lsp: reuse client if configs match and no root dir
- 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217)
- bdff50dee56e lsp: revert text edit application order change (#29877)
- e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998)
- a108852b008b lsp: semantic token functions allow "0" bufnr #28849
- c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748
- 8a236c242a76 lsp: set floating window filetype after setup #32112
- 3c51058d7611 lsp: set tagstack on jump via goto methods
- 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382
- 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747
- 629a5b71b55e lsp: support multiple clients in typehierarchy
- e48179f31e65 lsp: suppress completion request if completion is active (#30028)
- 50f006b61774 lsp: tagfunc fails in unusual buffer #30700
- 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795)
- 19be3d26830c lsp: trim trailing whitespace from completion words (#29122)
- aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331)
- 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235
- 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText
- fe5ae88b20f5 lsp: update request name to capability map #30098
- 5aa9906676f3 lsp: use client.id instead of pairs index (#29143)
- c8d7d65679f8 lsp: use correct method for prepareTypehierarchy
- b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match
- 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails
- 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable  #32002
- 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608
- 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044)
- 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837
- 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests
- 3275ae830da9 lsp.protocal: improve typing of constants
- acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding
- 564173e5568c lsp.util: wrong arguments to 'validate' function
- 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595
- b28373638848 lua: `@private` => `@nodoc` #32587
- b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend
- c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715)
- 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753)
- fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505)
- 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583)
- 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203)
- bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587)
- e2aca58bcc4f lua: don't override script ID from :source (#32626)
- d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks
- 948f2beed4ea lua: find length of completion prefix earlier (#29384)
- ebb963a4a082 lua: format errors from luv callbacks using __tostring
- 65a703e06063 lua: ignore stdout and stderr for xdg-open
- 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044)
- c6d2cbf8f51a lua: pop retval for fast context LuaRef
- a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker
- 3d707e6f14b7 lua: remove vim.loader.disable() #31344
- 3a8811324604 lua: revert vim.tbl_extend behavior change and document it
- 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021)
- 40a149e7f992 lua: types for vim.api.keyset.win_config #32700
- 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536)
- 960fdc775a88 lua: vim.deprecate does not support major>0
- d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850)
- cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218
- 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659)
- 9eb042600269 luacats: allow all types inside tuples
- ee5aaba21560 man: avoid setting v:errmsg (#30052)
- 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180)
- da6f68ee6966 man: filter OSC 8 hyperlink markup #29171
- 7940ec69136f man.lua: `:Man <tab>` does not complete #31569
- e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262
- d6653e1cc957 marks: ensure decor is removed with proper range (#32973)
- 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477)
- 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476)
- 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662)
- 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862)
- 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766)
- 012db2b0f509 marks: revalidate marks whose position did not change
- 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017
- c4f76299f039 marks: skip right_gravity marks when deleting text
- cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560)
- 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747)
- a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531)
- 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char
- 15bc930fca94 memline: don't check line count for closed memline #32403
- aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328)
- 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952
- d98827b634af messages: avoid empty msg_showmode with 'noshowmode'
- 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627
- 21718c67dd96 messages: better formatting for ext_messages #31839
- 92556be33d04 messages: compute msg_col after last newline in ext_messages
- ad853d1df093 messages: improve deadly signal messages #32364
- 51853b82bc95 messages: incorrect error message splitting and kind #32990
- 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531
- 7ce27381fb49 messages: lsp window/showMessage is not an error
- 1b6442034f6a messages: more ext_messages kinds #31279
- 9c6a3703bb15 messages: no message kind for :undo messages #31590
- ca760e645ba4 messages: no message kind for :write messages #31519
- 909b18d05a8d messages: no message kind for completion menu messages #31646
- f111c32ff9dc messages: no message kind for search pattern #31272
- 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages
- 9fa3a0964e9b messages: pass previous highlight id to ext chunks
- e025f5a5b30a messages: proper multiline Lua print() messages #31205
- d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669
- d55b17e2b4e0 messages: verbose kind for nvim_echo()
- c8e47f648052 meta: do not use hyphens in param names
- 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling
- 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565)
- 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394)
- 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655)
- f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642)
- 5947f249f838 move: half-page scrolling with resized grid at eob (#28821)
- ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276)
- af0a2157ad29 move: wrong cursor row on concealed line (#32629)
- 83479b95abae mpack: remove invalid bool definition
- d32780de4daf mswin: UI may hang on exit
- fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode
- de83cc5842c9 netrw: re-add missing comment marker in syntax file
- d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555
- 34e2185022ab options: better handling of empty values
- 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978)
- 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896)
- 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894)
- 395f420fc65c options: fix some 'belloff' flags not working properly (#30856)
- 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919)
- e697c1b43dfb paste: improve repeating of pasted text (#30438)
- 052875b9dc3d paste: only record a paste when it's from RPC (#30491)
- 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025
- 42aa69b076cb path: avoid chdir() when resolving path (#28799)
- 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992)
- 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863)
- afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819
- ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636
- d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246
- d24fb72c335b pum: don't select item when clicking to the left/right (#30967)
- 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609)
- 3bcd5624beec regexp: fix typo in E888 error message (#30161)
- cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209
- 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf`
- b6c1ce8a9545 runtime: add commentstring for glsl ftplugin
- 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252)
- e641155b023c runtime: avoid E31 in ftplugin (#32578)
- 82b02ae2f2af runtime: clean up one-off scripts
- 9788b81d7e53 runtime: fully port emoji_list to Lua
- 74fcc9452cd9 runtime: gO always says "Help TOC" #32971
- 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures
- 8369590eb215 runtime: remove obsolete ftplugin/calender.lua
- 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin
- 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053)
- 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533)
- 862338255da6 runtime: sync bundled treesitter queries
- 9e80738f3073 runtime: sync bundled treesitter queries
- 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473)
- 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529)
- a5bd6665b00a scripts: update bundled dependencies in bump_deps
- 573a71469d37 scrollbind: properly take filler/virtual lines into account
- a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153)
- 648d6426c863 server: CID 509282: DEADCODE #30316
- f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538
- cd48b72b60af shada: restore search pattern length properly (#28929)
- 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031)
- 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998)
- 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670)
- 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970
- d46ebd2a7403 startup: avoid crash with completion from -l script (#32160)
- 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285
- 17e00d0cc63c startup: report --startuptime error to stderr (#31131)
- 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310
- 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912
- 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265
- 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602)
- a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458)
- f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509)
- 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755)
- 69a19295f8fe terminal: delay when finishing terminal process #32846
- f8c8a245aa5b terminal: don't crash on unprintable chars
- 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090)
- fa46441264b2 terminal: improve cursor refresh handling (#32596)
- 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056)
- 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620)
- c51bf5a6b249 terminal: set cursor cell percentage (#31703)
- 5def8714ad70 terminal: set local values of window options (#29326)
- e9c077d197a8 termkey: fix null pointer dereference (#31792)
- c8e3618e0e68 test: "tempdir not a directory" in CI logs
- f7e32fb6e626 test: better management of tmpfiles
- db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524)
- e61228a214eb tests: needing two calls to setup a screen is cringe
- 639734bed4ef tests: remove the __extension__ keyword  in filter_complex_blocks (#32483)
- 59baa5e8a1f9 tohtml: apply sp color if present #30110
- 67c39f5ecae0 tohtml: disable modeline #32822
- e37404f7fecc tohtml: enclose font-family names in quotation marks
- 25db0a138537 tohtml: extmark text may be out of bounds
- 8cd9feb50166 tohtml: ignore lsp inlay hints
- eb37241d38ad tohtml: properly handle multiple hl groups #29012
- 2ed6423c7e9d tohtml: replace ipairs with pairs
- 88c7997503e1 tohtml: show how many warnings are hidden
- 118ae7e5ed6c tohtml: support ranges again
- c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488
- b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536
- 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field
- 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree
- bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer
- a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233
- 6696ea7f1038 treesitter: clean up parsing queue
- 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036)
- f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil
- 7a20f93a929a treesitter: correct condition in `__has_ancestor`
- 9b25c68db21c treesitter: correctly parse queries with combined injections
- 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()`
- 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree
- da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav
- 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709
- aa2b44fbb07f treesitter: don't return error message on success #31955
- b0bbe25c4808 treesitter: don't spam query errors in the highlighter
- b88874d33c15 treesitter: empty queries can disable injections (#31748)
- d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542)
- f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results
- c4eb0b64bd49 treesitter: find buffer in multiple windows #28922
- 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree
- 5331f87f6145 treesitter: indent size for inspect_tree #28727
- 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198
- 052e048db676 treesitter: lint top-level anonymous nodes
- 4b9095285160 treesitter: mark supertype nodes as named
- 096ae3bfd707 treesitter: nil access when running string parser async
- c3337e357a83 treesitter: nil check query for has_conceal_line
- 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240
- 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter
- d3193afc2559 treesitter: remove duplicate symbol names in language.inspect()
- cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041
- 1827ab7a1f9a treesitter: separately track the number of valid regions
- 36990f324de2 treesitter: show proper node name error messages
- 4349bdbd0bd0 treesitter: specify success status in edit_query return value
- e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid
- 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error
- ae917dbd06cb treesitter: sync queries from upstream
- c4e9ff30a6b6 treesitter: sync queries with upstream
- d8eec8156098 treesitter: update lua, markdown queries
- 6e44a6a289c5 treesitter: update queries
- 5a54681025ec treesitter: uv_dlclose after uv_dlerror
- e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers
- 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet
- 8474f529780b treesitter.foldexpr: robustness against ctrl-c
- f81131cca2b4 tui: also reset cursor color if it was invisible (#31348)
- 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793)
- 720ec5cec2df tui: cursor color in suckless terminal #32310
- b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804)
- d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197)
- a811d4babd22 tui: only reset cursor color if it was changed (#31337)
- 0c0352783fca tui: remove DCS escaping in tmux (#32723)
- 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884)
- f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960)
- bc63ffcf39e8 tui: reset clear_region attributes during startup #28713
- b02c83941493 tui: set id parameter in OSC 8 sequences (#29840)
- 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096)
- 8b8096500d08 tutor: incorrect lines marked as correct #29833
- 31745b17e60d types: add narrower vim.validate types
- 44410d063ad2 types: add some vim.fn type annotations
- b813075b8a55 types: do not mark unstable API as private
- e947f226bebe types: use vararg return type annotation
- a1906c23ddab ui: Windows :detach is opt-in
- 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718)
- 216ec7397214 ui: avoid redundant ext_cmdline events (#32237)
- 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419)
- 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222
- 7eba016c8681 ui: ensure screen update before waiting for input #30576
- 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950
- 6e4df18b457e ui: no fast context for prompt message kinds #31224
- 6b8c56c7f6da ui: schedule UI detach (#32827)
- b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089
- d1fd674df3eb ui: update title in more cases (#31508)
- 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284
- d049752e45c3 version: fix vim.version().prerelease
- 8bdfc2ab2b25 version: return nil with empty string
- 6401b433f7c0 vim.fs: default to follow=false #32859
- 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480
- 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782
- 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths
- a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter
- 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781)
- 734dba04d13b vim.system: close pipe handles after process handle
- 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638
- ad3472e29169 vim.system: resolve executable paths on windows
- 33464189bc02 vim.text: handle very long strings (#30075)
- 4cff4185647c vim.text: remove assert from vim.text.hexdecode
- d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302
- 8bf79bd13c4d vim.wo: never allow non-zero bufnr
- 453f2c52d291 vim_snprintf: special-case handling of binary format
- 32e128f20992 watch: exclude .git when using inotifywait (#29914)
- 9e23b4e1852f watch: ignore nonexistent paths (ENOENT)
- a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099)
- 88f07d6ca4a6 win-msi: set installer scope to machine #29895
- 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551)
- 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507)
- 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo

PERFORMANCE
--------------------------------------------------------------------------------
- 48251134ee59 add fast path to vim.validate (#28977)
- 3abd7ed4a4cd consider only active decorations when drawing lines
- 8d2ee542a82a decor: join predicates and matches cache
- 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288
- b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777)
- 15f2da55a8de events: use hashy for event name lookup (#32802)
- abf4b65a51b2 filetype: cache (more) pattern data during "add" time
- f61efe3fe77c filetype: implement parent pattern pre-matching (#29660)
- ff575b388640 filetype: optimize internal data structures
- dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596)
- 12d4caa9d3e4 keycodes: use hashy for string lookup
- f8fc6cb15755 loader: reduce calls to Loader.cache_file
- 138a93a057da lsp: avoid repeated table lookup in completion.enable
- 7342e6b00d5e lsp: do not apply semantic tokens to folded lines
- c85d15e0d557 lsp: don't construct potentially expensive strings
- cc1f2d2ca6ca lsp: don't copy completion items in filter pass
- 3e855d533f44 lsp: use faster version of str_byteindex
- 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103)
- 3fdc43024159 treesitter: cache queries strongly
- b192d58284a7 treesitter: calculate folds asynchronously
- c6abc97006ee treesitter: do not use tree cursors with a small lifetime
- cbad2c662873 treesitter: don't block when finding injection ranges
- d9ee0d2984e5 treesitter: don't fetch parser for each fold line
- 562056c87573 treesitter: only search for injections within the parse range
- c57a85e0eda0 treesitter: remove unnecessary foldexpr loop
- 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()`
- 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512)
- 3f3e4837d5f7 validate: use lighter version
- 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080)

BUILD
--------------------------------------------------------------------------------
- 104800ce2ead "popcount" name conflict on NetBSD #28983
- 198a952c13a1 add luals check
- ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable
- 32e16cb0b6b0 add utf8proc as dependency
- b213f5169c33 allow comment after #include for required header (#29722)
- 382eb878bcbf bump lua dev dependencies
- 1d815acd78e5 bump minimum cmake version to 3.16
- 5284a2a79316 bump unibilium to v2.1.2
- ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802
- 7c652242579b fix lint error on macos
- 046e0956eeb3 fix or silence new clang-tidy warnings
- 5719f2b91a31 fix uncrustify install in nix devShell (#33020)
- 4a0ee22e77d1 make makefile work on msys
- 4ee65484b16d make makefile work on windows
- 1b90f4a9c472 mark CMake variables advanced #31412
- 0f24b0826a27 move all generator scripts to `src/gen/`
- e5ff3020330e remove -O2 from gen_cflags
- d74c74aae35e remove `lintcommit` from `lint` target
- 573bcb2aaf3e remove enforcement of cmake build type
- 0e9c92a90043 remove nix flakes (#28863)
- f09f5c45facc reuse code for deps.txt for both deps and main build
- e1dc824b7ef4 set luals checklevel to Hint #32392
- cac86e9b4c14 silence "po" noise #30469
- 07b14c8e2ed2 specify POST_BUILD when using add_custom_command
- e83ce331da91 use treesitter's CMakeLists.txt
- e268fcbdaa1e work around bug in make when PATH includes cmake as dir
- b288fa8d62c3 bump_deps: abort if archive doesn't exist
- 7ead328a4858 cjson: sync with upstream (#32114)
- 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281)
- 327110ff8c59 cmake: remove unnecessary policy code
- 535c2f8658c4 contrib: add zsh completion (#32617)
- 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries
- 9216bc927c00 deps: fix formatc target on MSVC
- b3641b80083d deps: remove libtermkey dependency
- 1247684ae14e deps: remove msgpack-c dependency
- fa79a8ad6dee deps: vendor libvterm at v0.3.3
- c614969570ac docs: update CSS #28896
- 0a087f207331 generator: add dependencies on hashy (#32796)
- e178331488a0 lpeg: search for lpeg.so on MacOS
- 7e099cf3eb1f macos: disable deduplication in link step
- f4d9a2983a49 release.sh: fix hang when generating docs (#33026)
- b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425)
- 7aaa4a51b76f vim-patch.sh: include commit subject #28767
- 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
clason pushed a commit to clason/neovim that referenced this pull request Mar 26, 2025
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim).

Following is a list of fixes/features commits.

BREAKING
--------------------------------------------------------------------------------
- 0f4f7d32ce5d remove `nvim` and `provider` module for checkhealth
- 7dbbaaec3fae rename 'jumpoptions' flag "unload" to "clean" (#30418)
- 35c5e2310783 store artifact shasums in a single shasum.txt file
- 188ec19894e4 turn off translations by default
- 328ea02eb7de use utf8proc full casefolding
- 737f58e23230 api: rename Dictionary => Dict
- a389dc2f950e clipboard: use OSC 52 as fallback clipboard provider (#31730)
- ad70c9892d5b column: rework 'statuscolumn' %r/l items
- eb60cd74fb5c deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200)
- a119aae4d3de diagnostic: filter diagnostics by severity before passing to handlers (#30070)
- 51ccd12b3dbc diagnostic: make virtual text handler opt-in (#32079)
- a9e725b26e08 diagnostics: sort underline severity_sort (#30898)
- e8b5dd1e89bf lsp: `symbol_to_item` requires `offset_encoding`
- 8260e4860b27 lsp: multiple client support for vim.lsp.buf.hover()
- debabaf884fc lsp: pass buffer number to root_dir function
- 9b357e30fdd0 lsp: remove client-server handlers from vim.lsp.handlers
- 3e3775961fd2 lsp: rename lsp.completion.trigger() to get() (#32911)
- 0083e03d6fa7 lsp: support multiple clients in goto methods (#30877)
- dff684fdb3d2 lsp: support multiple clients in lsp.buf.references
- 970a27927eb3 lua: do not use typed table for empty dict
- de48fbbd5f88 messages: vim.ui_attach message callbacks are unsafe
- a27419f3fc54 options: disallow setting hidden options #28400
- b922b7d6d788 options: use OptVal for option defaults #26691
- 4d9a1b9852ca provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022
- 318676ad1348 release: remove backwards compatible releases
- ad191be65e2b signs: place higher-priority signs from the left #27781
- 0dd933265ff2 terminal: cursor shape and blink (#31562)
- 35e5307af257 terminal: include cursor position in TermRequest event data (#31609)
- 3cf602486ce5 terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859)
- 041d98fe8d89 treesitter: add default fallback to `ft_to_lang` lookups
- 6913c5e1d975 treesitter: default to correct behavior for quantified captures (#30193)
- bd4ca22d0334 treesitter: don't parse tree in get_parser() or start()
- a0b52e7cb3d2 treesitter: enforce buffer is loaded when creating parser
- 99e0facf3a00 treesitter: use return values in `language.add()`
- bda63d5b97df typval: remove distinction of binary and nonbinary strings
- 48e2a73610ca ui: emit prompt "messages" as cmdline events #31525
- ca5fca29121a windows: drop cat and tee executables from windows
- be89d520d7e9 windows: only support UCRT, even for mingw

FEATURES
--------------------------------------------------------------------------------
- efa45832ea02 add "jump" options to vim.diagnostic.config() (#29067)
- 0631492f9c80 add vim.fs.relpath
- f864b68c5b0f allow gx to function for markdown links
- f3632e14e3a7 get/set namespace properties #28728
- a66424617156 remove deprecated features
- ead5683ff999 api: add err field to nvim_echo() opts
- aec4938a21a0 api: broadcast events to ALL channels #28487
- 34d808b73cbc api: combined highlights in nvim_eval_statusline()
- 19b25f3feacf api: deprecate nvim_buf_add_highlight()
- 5c92b40b4b17 api: deprecate nvim_out/err_write(ln)
- d84a95da7e11 api: nvim_get_autocmds filter by id#31549
- 25d8c3a5ad7e api: nvim_open_win() relative to tabline and laststatus #32006
- e00d67ef310c checkhealth: group parsers by name and path in output
- 563051a53ef9 clipboard: support g:clipboard="osc52" #33021
- 60ea0467411d clipboard: try cygutils, clip on Windows #30215
- 2c629ad13f19 column: apply appropriate numhl highlight to virt_lines (#32400)
- 65c7033cbe75 comment: allow commentstring to be determined from node metadata
- 268a3de0a773 complete: CompleteDone reason "cancel", "discard" #32600
- a616272f568a complete: specify reason for CompleteDone
- f1748b78e316 default: bind `vim.lsp.buf.signature_help` in select mode (#31223)
- ac207c3ac200 defaults: "Show Diagnostics" in mouse popupmenu #32122
- 2c6b6358722b defaults: add LSP default mappings (again) (#28650)
- bb7604eddafb defaults: add default unimpaired style mappings (#28525)
- 4662ad5643b2 defaults: completeopt=popup #32909
- e8e3b443f804 defaults: disable 'foldcolumn' in terminal buffers (#31480)
- cc6992f1ca44 defaults: dot-repeat [<Space> #31186
- 6db830e40e92 defaults: enable diffopt "linematch" #32346
- b31132f1c1fa defaults: jump between :terminal shell prompts with ]]/[[ #32736
- 0b7cc014fc0e defaults: map gO to LSP document_symbol #30781
- 26e765f905cb defaults: map gri to vim.lsp.buf.implementation() (#30764)
- 76aa3e52be7a defaults: popupmenu "Open in browser", "Go to definition" #30261
- 09d76afe84dd defaults: pretty :help headings #30544
- 079e5f4f9b67 defaults: unimpaired empty line below/above cursor #30984
- 1c6d9200521a defaults: use vim.diagnostic.jump() for default mappings (#29066)
- c9c17fda80d8 deprecations: vim._defer_deprecated_module()
- 38a52caec09e diagnostic: add `current_line` option for `virtual_text` handler
- 8ba73f0e4cc6 diagnostic: add vim.diagnostic.jump() (#26745)
- 445ecca39840 diagnostic: format() can filter diagnostics by returning nil #32302
- 99e7323aa386 diagnostic: inherit parent 'path' option in open_float (#31273)
- 21961967ffef diagnostic: update quickfix list by title #31486
- 7579af3c514c diagnostic: vim.diagnostic.setqflist improvements #30868
- 1759b7844a2d diagnostic: virtual_lines #31959
- fd65422b99c7 diff: do not try external when out of memory
- 0c296ab22484 docs: "yxx" runs Lua/Vimscript code examples #31904
- 6628741ada73 docs: improve `@see` meta docstrings #30693
- 23290e7676e6 editor: handle new multibyte sequences in normal mode replacement
- cb6c0fda718e editorconfig: add support for spelling_language (#28638)
- 4817547ec463 ex_cmds: :sleep! hides the cursor while sleeping (#31493)
- 4f9260d06a48 ext_messages: add hl_id to ext_messages chunks
- 4cced601c8cd extmark: stack multiple highlight groups in `hl_group`
- 931ee5591fa7 extmarks: virtual text can be right-aligned, truncated #31921
- 62d9fab9af21 float: add winborder option (#31074)
- 9b8907d90508 float: allow enabling mouse for non-focusable window (#30844)
- 511b991e6689 fs.lua: add vim.fs.rm()
- 054a287dbe6f ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085)
- f398e3a61abb ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491
- b61051ccb4c2 func: allow manual cache invalidation for _memoize
- 548f19ccc301 health: close checkhealth buffers with q #31870
- f2fa4ca97ea3 health: highlight headings #30525
- b12b91c27439 health: show :checkhealth in floating window #31086
- 6592873f773b help: use treesitter for table of contents
- 3e09fbdf82a1 highlight: add StatusLineTerm and StatusLineTermNC groups
- 295920845ebd highlight: make `PmenuMatch` and `PmenuMatchSel` bold
- 5b1136a99c7f inccommand: preview 'nomodifiable' buffers #32034
- 61025c9e7aa4 install: mention standard paths, XDG vars in Windows installer #29101
- 8ef41f590224 jobs: jobstart(…,{term=true}), deprecate termopen() #31343
- e7020306a19a jumplist: allow opting out of removing unloaded buffers (#29347)
- 8d55cc218cfe keysets: teach Union and LuaRefOf
- 5931f780e028 log: use "ui" as default name for TUI client #30345
- e4c6e732fd04 lsp: add select kind in showMessageRequest #32387
- f20335a54ce7 lsp: add support for completionItem.command resolving
- 3f1d09bc94d0 lsp: add vim.lsp.config and vim.lsp.enable
- 6072153796d1 lsp: announce codeLens resolveSupport (#29956)
- 1f5bcc7c4ed7 lsp: completion opts support custom item conversion (#30060)
- ff097f2091e7 lsp: completion side effects
- 7a7747f1e4d9 lsp: deprecate execute_command with client:exec_cmd
- 454ae672aad1 lsp: deprecate non-method client functions
- 54249d051c3e lsp: deprecate vim.lsp.buf.completion
- e56437cd48f7 lsp: deprecate vim.lsp.start_client #31341
- 55e4301036bb lsp: drop fswatch, use inotifywait (#29374)
- dad55f5e763f lsp: export diagnostic conversion functions (#30064)
- 44229bb85b6c lsp: highlight hover target/range #31110
- 27f3750817b1 lsp: improve LSP doc hover rendering #30695
- 67221497762a lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items`
- 20f22f75ee62 lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164
- 4e90bc30237a lsp: lsp.completion support set deprecated (#29882)
- 6e68fed37441 lsp: multi-client support for signature_help
- 629483e24eed lsp: require `offset_encoding` param #31249
- e00cd1ab4060 lsp: return resolved config for vim.lsp.config[name]
- 130b5fd85f07 lsp: return table from lsp/ files on runtimepath (#31663)
- ce678043e346 lsp: show server name in code actions #30830
- 07d5dc8938a7 lsp: show server version in `:checkhealth` #31611
- a1e313ded6e4 lsp: support `textDocument/foldingRange` (#31311)
- 3b0fe2659e74 lsp: support completion context #32793
- 41b07b128ccb lsp: support for resolving code action command (#32704)
- 35247b00a44e lsp: support function for client root_dir (#31630)
- 45e76acaa053 lsp: support hostname in rpc.connect #30238
- b2bad0ac91dd lsp: support postfix snippets in completion
- d3e4ffafff42 lsp: support utf-8 and utf-32 position encodings
- 5d26934c7cda lsp: update LSP healthcheck format (#28980)
- ae2fd91b411d lsp: update LSP types
- 0df2c6b5d09f lsp: use fuzzy match on filterText instead of prefix match
- e4c1f6667b14 lsp: use the meta model to generate server capability map
- 5581a95534e4 lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323
- 92e4e3fb76c2 lsp.util: fix type errors
- ff1d7d429959 lsp.util: get_bufs_with_prefix -> get_writeable_bufs
- cbc82011ce19 lsp.util: improve offset_encoding type annotations
- a18fa2f11c3a lsp.util: minor codestyle
- 1944c0d610ce lsp.util: refactor get_border_size()
- f0973d42272e lsp.util: refactor symbols_to_items()
- 0e8568d72c88 lsp.util: remove lsp spec extract
- 0621718e3b5f lsp.util: remove metatable in locations_to_items
- 3f87e222f79b lsp.util: remove some aliases
- e954a16063e6 lsp.util: remove some variables
- 5bec7288a5b5 lsp.util: remove uneeded do-end
- 8ad000ef7cf0 lsp.util: remove unneeded table
- d44d36b8ff6c lsp.util: simplify some bounds checking
- 0066dd0f653e lsp.util: use faster version of vim.validate
- 1edfe5c09ebc lsp.util: use vim.api alias
- 97119a236937 lsp.util: use vim.w/b
- cd53db2157f0 lua: add `context.env` (environment variables) to `vim._with()`
- 9afa1fd35510 lua: add `vim._with`
- 518070731003 lua: add `vim.fs.abspath`
- b34e137e43d3 lua: allow vim.on_key() callback to consume the key (#30939)
- d5ae5c84e94a lua: completion for vim.fn, vim.v, vim.o #30472
- 0a5a0efda64c lua: don't complete private (_) fields after dot (.) #32690
- 07cc559cdf11 lua: update `vim._with` to allow more granular option contexts
- af0ef2ac9dd1 lua: vim.hl.range() "timeout" #32012
- be1fbe38b31b lua: vim.text.indent()
- fdeb01cd7740 main: expand file ~\ or ~/ prefix on Windows (#28515)
- ea5b748f2438 man.vim: "q" always closes window #30819
- f58e7d5fac1c marks: add conceal_lines to nvim_buf_set_extmark()
- 51cf84daf961 marks: virtual lines support horizontal scrolling (#32497)
- cfdf68a7acde mbyte: support extended grapheme clusters including more emoji
- 124c655f56bc messages: "g<" mapping for ext_messages
- cb7b4e296238 messages: "verbose" message kind #31991
- 5bae80899d9d messages: add :!cmd shell message kinds
- e16bec41b650 messages: confirm kind for z=, :tselect, inputlist() #32521
- 21151144c6ee meta: add type for quickfix entries
- 82a215cb2dc2 options: add 'eventignorewin' (#32152)
- d831392b1560 paste: unify cancel and error behavior (#30476)
- 08c328b8b079 runtime: Lua ftplugin 'includeexpr' #32719
- f5714994bc4f runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697
- e6cfcaed184d snippet: add default keymaps during snippet session
- 123f8d229eef snippet: set snippet keymaps permanent instead of dynamic (#31887)
- 96128a5076b7 startup: validate --listen address
- 230b0c7f021a stdlib: overload vim.str_byteindex, vim.str_utfindex #30735
- 517ecb85f58e stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561
- 8df6736ca14d term: enable reflow by default (#21124)
- 4199671047b0 term: support OSC 8 hyperlinks in :terminal (#30050)
- 93480f7fbaa5 term: trigger TermRequest for APC (#32407)
- 3ad977f01d97 terminal: add support for copying with OSC 52 in embedded terminal (#29117)
- 6f0bde11ccd8 terminal: add support for kitty keyboard protocol
- 06a1f82f1cc3 terminal: forward X1 and X2 mouse events
- e3bfcf2fd4a4 terminal: support grapheme clusters, including emoji
- f1c45fc7a4a5 terminal: support theme update notifications (DEC mode 2031) (#31999)
- 56d11b494b54 terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443)
- 34cd94812d42 test: support and document lua test case debugging
- b8c75a31e6f4 treesitter: #trim! can trim all whitespace
- ec8922978eb1 treesitter: add more metadata to `language.inspect()` (#32657)
- bd3b6ec8360e treesitter: add node_for_range function
- 688b961d13bd treesitter: add support for wasm parsers
- 8543aa406c4a treesitter: allow LanguageTree:is_valid() to accept a range
- 44ccd9ca24dd treesitter: allow `iter_captures` to accept `opts`
- 8b5a0a00c8cf treesitter: allow disabling captures and patterns on TSQuery (#32790)
- 1af55bfcf21b treesitter: allow get_node to return anonymous nodes
- a94a2927d00a treesitter: allow passing lang to InspectTree
- 45e606b1fddb treesitter: async parsing
- 3dfb9e6f60d9 treesitter: include capture id in return value of `get_captures_at_pos()` #30559
- 267c7525f738 treesitter: introduce child_with_descendant()
- 09f9f0a94625 treesitter: show which nodes are missing in InspectTree
- b9b408a56c7e treesitter: start moving get_parser to return nil #30313
- da0ae9534900 treesitter: support modelines in `query.set()` (#30257)
- 2e5b560482fb treesitter: table of contents for checkhealth, markdown (#32282)
- 8ba047e33fe3 treesitter: vertical conceal support for highlighter
- ff85e54939b0 tui: builtin UI (TUI) sets client info #30397
- 4fb3b57a19cb tui: handle kitty key events in libtermkey (#31727)
- f93ecd2760f5 tui: parse CSI subparams in termkey (#29805)
- 44dbfcfba4b0 tui: recognize X1 and X2 mouse events
- e41368f3bc1d tui: support in-band resize events (#29791)
- d460928263d0 tui: update 'background' on theme change events (#31350)
- 45e319ade639 tutor: give hints to satisfy the line checker #30952
- 4b0e2605eaf9 ui: UI :detach command
- 394f69a25dc3 ui: additional arguments for cmdline_show/hide events
- a0e3fe57417f ui: cascading style inheritance for Pmenu* highlights #29980
- f85bc41c800d ui: don't show unfocusable windows in :tabs, 'tabline' #27984
- 9762c5e3406c ui: gx: use url extmark attribute and tree-sitter directive (#30192)
- 43d552c56648 ui: more intuitive :substitute confirm prompt #31787
- 433b342baa04 ui: sign/statuscolumn can combine highlight attrs #31575
- a10636fbe7bb ui: specify whether msg_show event is added to history
- e049c6e4c08a ui: statusline text inherits highlights #29976
- 611ef354919f vim.fs: find(), dir() can "follow" symlinks #31551
- 3f15e57b2614 vim.ui: configurable "gx" / vim.ui.open() tool
- f4b620c4e643 vim.ui.open: support lemonade #30845
- 3572319b4cb1 vim.validate: improve fast form and deprecate spec form
- cb84cd5d9fba win32: embed executable icon

FIXES
--------------------------------------------------------------------------------
- 200e7ad15786 apply the change on more files
- 6720bd440f19 assert failure in VimL expression parser
- d123202ae6ef change deprecation presentation
- ded15ca8c210 completion.enable(false,...) deletes invalid augroup #32121
- 7737f892063a deps build for ARM64 MSVC
- 50749f8df89d extend the life of vim.tbl_flatten to 0.13
- 25abcd243e41 fix broken wasmtime build
- b6ab29483842 fix incorrect search code
- 46b69aaf14a7 include nvim/ascii_defs.h
- 01b4da65c229 merge all provider healthchecks into a single health.lua
- 5c245ec3e955 remove vim.lsp._with_extend
- 98ba65b8be8c replace NVIM with Nvim in default titlestring (#30348)
- 6aa42e8f92bd resolve all remaining LuaLS diagnostics
- e71713ba2b5c show swapfile warning as a warning (#28971)
- 04181070746a update osc52 termfeatures flag on UIEnter/UILeave (#32756)
- 0829e7575d63 warn when :InspectTree on buffer with no parser #32783
- 47f2769b462e Man: completion on Mac
- 89f9f168a5c4 api: alloc and draw cursor window in nvim__redraw
- 743c5808b616 api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value`
- 487c48ec8689 api: clamp range lines in `nvim__redraw()` (#31710)
- 141114c170d6 api: crash on invalid buffer to nvim_buf_del_user_command (#31908)
- 716adbcc4563 api: deprecate nvim_subscribe, nvim_unsubscribe #30456
- 1e47aa677a24 api: deprecated API nvim_get_option does not validate option name #31919
- 095c0876c201 api: don't override Vimscript SID (#32610)
- bff07f6dd0d8 api: don't try to get/set option for invalid option name (#31302)
- 0e59f6f4c7cd api: don't use 'winborder' when reconfiguring float (#32984)
- cce1eb0806cc api: error properly with invalid field in nvim_open_win (#30078)
- 63bbb7c109a5 api: fix 'winborder' preventing splits with nvim_open_win (#32981)
- f55213ce0e2b api: fix crash/leak with float title/footer on error (#30543)
- 022449b52236 api: generic error messages, not using TRY_WRAP #31596
- 8de1dc692339 api: make `nvim_set_hl()` respect all `cterm` attributes (#31390)
- ad60b3fb4806 api: memory leaks in vim.api.nvim_*get_option #32390
- 167a2383b996 api: not using TRY_WRAP, generic error messages #31595
- bf48dfadeccc api: nvim__complete_set requires completeopt=popup #31177
- d1d7d5468091 api: nvim_buf_get_text() crashes with large negative column #28740
- 6ea45031d584 api: nvim_echo free text memory with invalid highlight (#31243)
- e2ad251c8d01 api: nvim_get_option_value does not clean up on FileType error #31219
- 5b9518b43663 api: nvim_set_decoration_provider callback return type #31912
- 01a97d2ad75a api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576
- 40347f6e27f1 api: only flush nvim__redraw when necessary #31250
- 36f44b3121fc api: remove invalid assertions
- 235cb5bc5f25 api: update "range" windows in nvim__redraw #31042
- 9c718bc2bce5 api: validation, documentation of hl_group #31195
- 289c9d21cb91 autocmds: once=true Lua event-handler may call itself #29544
- ffaab09e9986 build: <termios.h> is system-dependent #31705
- 486076a0e1ee build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME
- 217e26cb641f build: surpress spurious warnings from gcc in -E preprocessor mode
- 34a2bfdcc5ce build: vimdoc tags are not validated #32801
- 807098824762 channel: handle writing to file instead of pipe (#30519)
- c49162be5958 channel: log after (not before) channel-close
- 965dc81f818e checkhealth: disable 'listchars' #31245
- 4c9f3689a1c0 checkhealth: failed if 'lua' in plugin name
- f5dd30948e67 checkhealth: handle nested lua/ directory #32918
- c48cf1875225 checkhealth: module not found when `&rtp` has nested paths #32988
- 2495e7e22a0d clipboard: tmux clipboard depends on $TMUX #31268
- 847c28f6f6cc cmdline: always show cmdline when it is a prompt #31866
- af4231d4070c cmdline: cmdline completion of _defer_require() modules #33007
- a70ad5cdb6de cmdline: ext_cmdline block events for conditionals
- bbf36ef8ef86 cmdline: prevent cmdline_show events after exiting cmdline #32033
- 092042b43d58 cmdline: simplify and correct grapheme cluster adjustment
- 86ae59c61286 colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256
- 9b9f54e2c1cd colorscheme: underline StatusLineNC with 'notermguicolors' #28810
- 8bc28978b632 column: apply custom highlight to last 'statuscolumn' segment (#32182)
- 3cb1e825e679 column: check if signcolumn changed in all windows #31439
- 1dcda865591b column: clamp line number for legacy signs
- f2083bd55caf column: crash with 'signcolumn' set to "number" (#29003)
- f9a49fab0c90 column: modifying a sign should update placed signs (#29750)
- d5f6f61879ba column: set signcolumn width after splitting window (#30556)
- 063b69bab4ab column: unnecessary redraws with resized 'statuscolumn' (#32944)
- 0a2218f965ac comment: fall back to using trimmed comment markers (#28938)
- e788d1a3a903 completion: avoid deleting text when completion leader changes #31448
- bfa365a87267 completion: don't include <Lua function> in -complete= (#30209)
- 55dc482e757e completion: fix inconsistent Enter behavior (#30196)
- 83a7d97d64a6 coverity: CID 509571 Uninitialized variables #30395
- e1c2179dd93e coverity: INTEGER_OVERFLOW #31657
- f9eb68f340f9 coverity: error handling CHECKED_RETURN #31618
- 069451bb214b coverity: size_t overflow #30497
- ff7832ad3fce coverity/497355: shada_read_when_writing out of bounds read #30665
- c49030b75ad8 coverity/497375: f_strpart cast overflow (#30773)
- 0fe4362e216e coverity/509227/509228: tui driver_ti underflow #30341
- 60e1862ccba7 coverity/510275: linematch out of bounds access (#30687)
- a2008118a0f2 coverity/510436: shada_read_when_writing index out of bounds (#30686)
- 71507281fb86 coverity/530826: validate_opt_idx unchecked negative idx (#32081)
- 5af9c065ada5 decor: don't draw invalidated virtual lines (#29858)
- a8fbe1d409e0 decor: don't use separate DecorSignHighlight for url (#30096)
- 34ded4d97b78 decor: exclude invalid marks from meta total
- 87610d82db91 decor: set invalid flag for end of invalidated paired marks
- 33ff546b50f7 decoration: fix crash when on_lines decor provider modifies marktree
- 0e299ebf7559 decorator: noisy errors from decoration provider #31418
- f2173b1aa2be defaults: cannot remove "How-to disable mouse" menu item #30375
- 61aabe0730b5 defaults: default @/Q broken when 'ignorecase' is set (#29343)
- 8323398bc608 defaults: don't replace keycodes in Visual search mappings (#31460)
- f6f2334ac28f defaults: error messages UX for unimpaired mappings #30884
- 59a171fd99a7 defaults: improve visual search mappings #32378
- 01739d4673ee defaults: missing ]Q/[Q unimpaired mappings #30943
- c644228e1dfe defaults: omit empty line from unimpaired mapping messages (#31347)
- ff93cccbc1ce defaults: omit extraneous info from unimpaired mapping errors (#30983)
- 4075e613b2d3 defaults: properly pass count to quickfix commands (#30632)
- 289380bc40c7 defaults: use "range" instead of "count" for some mappings (#30642)
- 573fcb8b6641 deps: revert accidental test commits (#30864)
- de794f2d2409 diagnostic: broken variable reference #31557
- c78728a3844c diagnostic: clear autocmd only for valid buf (#32861)
- f1fcf653cb7c diagnostic: clear virtual_lines autocmd only for valid buf #32979
- 921dc22fc090 diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506)
- 0e8e4a07f515 diagnostic: don't include diagnostic code when using custom formatter #32464
- d918ebe3b8a5 diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593)
- f69937fdbd16 diagnostic: fix float scope filtering (#29134)
- 5bc948c050ce diagnostic: improve current_line refresh logic #32275
- 4b3be56a0369 diagnostic: make docs agree with code (#29561)
- fd902b1cb246 diagnostic: only store quickfix id when creating a new one #31466
- 3b1d0e7f701b diagnostic: remove deprecated `severity_limit` option
- 5eda7aafe995 diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553
- 9a43ec13e6f1 diagnostic: show backtrace for deprecation warnings
- 4cbeb6fa3cc7 diagnostic: silence :chistory #31701
- 6c975515c560 diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585
- 17c25a66fcea diagnostic: virtual lines should scroll horizontally
- fb842dfc224d diagnostic: virtual_lines diagnostic columns (#32703)
- e5e81262af88 diagnostics: don't apply extmarks to invalid lines #29321
- c65646c2474d diff: use mmfile_t in linematch
- 81ea44fa6aca display: adjust winline info for concealed lines below last line (#32708)
- f25dd7a8d548 display: correctly store winline info for concealed lines (#32656)
- a901fb875f69 docs: add missing properties to hl_info #30032
- cc26cf040028 docs: do not treat indexes as `short_link`
- 056009f74146 docs: markdown instead of vimdoc in meta docstrings #30680
- 8801b77ed098 docs: missing `@returns` desc in _meta/api.lua #30673
- 09bcb310681e docs: replace `yxx` mappings with `g==` #31947
- efe92f9dff93 docs: update context type in `vim.lsp.LocationOpts.OnList`
- b8135a76b71f docs: wrong return value annotation for `nvim_buf_get_extmarks`
- 376de1483ee5 drawline: correct highlight priority with Visual selection (#30706)
- 9a0239fdc8b3 drawline: don't draw beyond end of window (#29035)
- b1c439cef6ca drawline: don't draw beyond end of window with 'rnu' (#29406)
- 34344b939c06 editor: avoid scrolling :substitute confirm message #32149
- 9e7b0bcf5192 editorconfig: fix indent style for `local.mk` (#31342)
- b0a1d35f69b4 eval: don't shorten $HOME in v:stacktrace (#32634)
- 2a3561819e0e eval: handle wrong v:lua in expr option properly (#29953)
- 4317d366691b event-loop: process input before events in getchar() (#32322)
- f05a6666cfcb events: always allow some events to be nested (#32706)
- e9f4ceeb7467 events: don't expand `args.file` for Lua callback (#31473)
- 1f49a59b8bde events: fix incorrect capitalization of Cmdwin* events (#32813)
- 8c2d45be7729 exit: close memfiles after processing events (#30872)
- c7ec010ade08 extmark: builtin completion can still affect nearby extmarks #31387
- 93278e7720b2 extmark: clearer error message for invalid ephemeral mark usage
- 43a2019f09e8 extmarks: issues with revalidating marks #28961
- 84ad95fdc9d4 fileio: copy to correct buffer position when reading
- 93347a67bf91 filetype: fix :filetype detect error with -u NONE (#29991)
- aa9f21ee953d filetype: fix typos in filetype detection
- 032e024f8ab9 filetype: handle .in files with no filename (#30487)
- 1077843b9bee filetype: make filetype detection work with :doautocmd (#31470)
- 21cbd9000748 filetype: normalize full path before matching #32227
- 5a8a34dafa2a filetype: source ftdetect/* after creating scripts.vim autocmds (#29445)
- cff5fa49fc5a float: "Not enough room" error for 1-line float #25192
- 07c5f41da3ad float: can set title/footer without setting border #32594
- be01b361d8ff float: cannot set title/footer independently #31993
- ff1791c9e59b float: close preview float window when no selected #29745
- d2cca606a1b6 float: ensure floating window width can fit title
- 8ddcf9d93900 float: handle error in win_float_create() (#29742)
- 8b2b1fba2abf float: missing default highlight for title
- df915f3afccb float: properly find last window of tabpage (#30571)
- 17383870dd3b float: re-sort layers when grid zindex changed #30259
- 206f8f24a247 fs: make vim.fs.root work for relative paths and unnamed buffers (#28964)
- 2c160f39d329 ftplugin/man.vim: hide signcolumn (auto)
- 214ce8d33c11 gen_help_html: first tag in h2 is broken #30720
- ceea6898a8bd gen_help_html: handle delimiter, heading #29415
- 6c3f7e7e27a0 gen_vimdoc: correctly generate function fields
- 913e81c35f16 getchar: do not simplify keycodes in terminal mode
- b109b1abce8c glob: avoid `subcapture nesting too deep` error (#29520)
- 4bd86120d41e glob: handle overlapping `{}` condition elements #29236
- b47b0b3f757d grid: double grid_line_start() with ext_messages #31292
- fe87656f29e9 grid: grid_line_start NULL access with 'redrawdebug'
- a9c89bcbf69a gx: allow `@` in url
- 570a8da01b55 health: "q" should not close last window #31876
- 2e3f1069f499 health: better layout of vim.treesitter health check
- 10f917351906 health: broken ruby detect #28804
- 84e85aeb10ae health: check more "old" files #30421
- 5b778a64ec2e health: fix fetching url with python in provider health (#29594)
- b4b4cf46a7a2 health: fix pyenv root and python exepath detect issue
- 237d2aef4d70 health: return correct name from 'path2name()'
- 5e9040648739 health: set nomodifiable in checkhealth buffers
- 91773710145e help: remove runnable code virtual text
- ff75f345ab5f highlight: 'winhl' shouldn't take priority over API (#31288)
- 458473acb8d6 highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313)
- 6bcefad5a671 highlight: fix the seg fault caused by the invalid linked hl ids
- 8e81212e151a highlight: floating windows inherit NormalFloat from global-ns
- 67192760409b highlight: make TablineSel more noticeable with 'notermguicolors' #31905
- b67fcd048874 highlight: make `TablineSel` more noticeable #31896
- 862679c70fa0 highlight: update `PmenuSel` for colored completion items #30183
- 59e130b6cacd inccommand: ensure cursor is where it belongs
- 16f63b964fc4 input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677)
- b52ffd0a59df inspect: always show priority
- 9c278af7cc96 inspect: show priority for treesitter highlights
- 22fd52325bf6 inspector: update semantic token namespace (#32157)
- efe1732c6fd8 jobs: do not block UI when jobwait() doesn't block (#31803)
- 574ea6a1911b keycodes: recognize <Find>, <Select> #28431
- 67bb0cfa79bc loader: follow the style of the error message for built-in loaders
- 44740e561fc9 log: RPC log format #32337
- 851137f67905 log: log unset $TMPDIR at "debug" level #32137
- c908c2560db8 log: unify error messages for vim.ui_attach/decor providers #33005
- a6f219b06beb log: unintuitive message for undefined $TMPDIR
- 2e6d295f799c lsp: account for changedtick version gap on modified reset (#29170)
- fac96b72a59e lsp: add foldingrange method support check #31463
- 8263ed467066 lsp: add textDocument/documentLink to capability map (#28838)
- a41b6fd17341 lsp: autocmds to close lsp preview windows not cleared
- b42dc232c532 lsp: autotrigger should only trigger on client's triggerCharacters (#32266)
- 7031949be065 lsp: avoid reusing diagnostics from different servers in actions (#30002)
- fc9b70826ec8 lsp: avoid vim.keymap.del error when stopping a client (#29478)
- 39d79efa1e1e lsp: better multi-client support for callHierarchy
- bdfba8598b41 lsp: cancel pending requests before refreshing
- f9bf64d74641 lsp: check buffer is loaded and valid #30330
- c2bf09ddff49 lsp: check for configuration workspace folders when reusing clients
- 81b372fecd74 lsp: check for nil response from server (#29196)
- a9cdf76e3a14 lsp: check for valid buf before processing semantic tokens response
- 230bc34ca541 lsp: check if buffer is valid before LspDetach autocmd (#29162)
- af200c10cf9d lsp: check if buffer was detached in on_init callback (#28914)
- 02097e43c8cf lsp: check if sig_help window is focusable when configuring cycle keymap
- 025c87441502 lsp: clear lsp client diagnostics (#29050)
- c374f264305f lsp: clear word when expand multi-lines word (#32393)
- adf7c98d607b lsp: compare URI instead of workspace folder name (#30962)
- b4599acbf8e3 lsp: correct hover result handling (#30995)
- f8d5811c717b lsp: correctly check for "codeAction/resolve" support
- 7d8db544417e lsp: delete b:lsp_floating_preview buf var after win close
- 2a1f604c77a1 lsp: delete bufvar inside WinClosed event
- 879d17ea8d62 lsp: detach all clients on_reload to force buf_state reload (#28875)
- 292365fa1b8f lsp: do not detach from buffer if there are uninitialized clients (#29029)
- 37bf4c572a8f lsp: do not reset buf version when detaching client (#29242)
- d56ba71af11c lsp: document_symbol uses loclist by default #32070
- 720b309c786c lsp: don't send foreign diagnostics to servers in buf.code_action (#29501)
- 1f2f460b4a77 lsp: don't show codelens for buffers that don't support it (#29690)
- 5f527f24f0ea lsp: don't use completion filterText if prefix is empty
- 305012ea0732 lsp: enable `additionalPropertiesSupport`
- 9d9ee3476e64 lsp: ensure watcher cancel
- aec7f1979ada lsp: fallback to `label` for completion items if all others are missing (#29522)
- 33d10db5b7a7 lsp: filter completion candidates based on completeopt (#30945)
- b3109084c2c3 lsp: fix cursor position after snippet expansion (#30659)
- 4b001f297ae2 lsp: fix infinite loop
- 983953858e56 lsp: fix isIncomplete condition in completion trigger (#30130)
- 2ce4a4d91e4a lsp: fix reverse sorting of same position text edits (#29212)
- 8654a9700690 lsp: handle empty call hierarchy items #30349
- f279d1ae33ee lsp: handle encoding bounds in str_utfindex_enc
- 882a450a2982 lsp: handle locations exceeding line length #30253
- 008782208d82 lsp: handle mixed encoding in tagfunc params
- e0a5c3bb5817 lsp: handle multiline signature help labels #30460
- 8512f669f0e0 lsp: handle nil bytes in strings
- f03b1622ad1b lsp: handle nil root_dir in health check (#29007)
- ed071672613b lsp: handle non-existent configs in lsp.config/enable
- 003b8a251dc1 lsp: handle out-of-bounds character positions #30288
- 5187be81c2eb lsp: handle using array as open_floating_preview title (#33016)
- d9a2acdab3bf lsp: hide layout in codelenses in virtual text (#28794) (#28807)
- f54266dbed6f lsp: hover border type can be string (#31013)
- 9a681ad09e2a lsp: hover keymap (#31208)
- a14fca432b96 lsp: improve LSP floating preview window cleanup #31353
- e29f245a1082 lsp: inlay hints are rendered in the correct order (#29707)
- 0086ee90dd2f lsp: list all workspace folders in healthcheck #30966
- 0e394f136fcb lsp: log when receiving markup messages (#30065)
- 203e7a43d1f2 lsp: mention function name in warning #31301
- a4f575abd85e lsp: minimum height for floating popup #31990
- 4fd2694f20d6 lsp: missing method parameter when canceling requests
- be8d87014c0c lsp: on detach, cancel pending foldingRange requests #31509
- 7d5866d47174 lsp: open_floating_preview() ignores max_height (#32716)
- 86770108e2c6 lsp: open_floating_preview() zindex relative to current window #31886
- 724d1110b1e4 lsp: pre-filter matches on label if filterText is missing (#29491)
- a450fda4eded lsp: prefer `on_list` over `loclist` in default handler
- 6bb40f3dbffb lsp: prevent desync due to empty buffer (#29904)
- eb629cce9171 lsp: redundant spaces in lsp log (#29970)
- 43581011e41b lsp: remove superfluous on_detach callback from semantic tokens module (#29174)
- d76f7fef13e5 lsp: reset active request when reporting an error
- 6bc79790449f lsp: reset the applied hints on `refresh` request #32446
- 47aaddfa0dda lsp: resize hover window for concealed lines
- 081beb3659bd lsp: restore get_language_id behaviour
- 29c72cdf4a49 lsp: retrigger diagnostics request on server cancellation (#31345)
- d9ccd828b0d4 lsp: return call hierarchy item, not the index (#30145)
- 9c2034229739 lsp: reuse client if configs match and no root dir
- 6e45cd7f0026 lsp: revert buf_versions deprecation/replacement (#29217)
- bdff50dee56e lsp: revert text edit application order change (#29877)
- e8a6c1b02122 lsp: schedule call to vim.lsp.start for async root_dir (#31998)
- a108852b008b lsp: semantic token functions allow "0" bufnr #28849
- c3cb702ac7a5 lsp: set 'smoothscroll' in docs hover #30748
- 8a236c242a76 lsp: set floating window filetype after setup #32112
- 3c51058d7611 lsp: set tagstack on jump via goto methods
- 24d7debdfb77 lsp: signature_help highlights wrong parameter #32382
- 80e37aa53357 lsp: str_byteindex_enc bounds checking #30747
- 629a5b71b55e lsp: support multiple clients in typehierarchy
- e48179f31e65 lsp: suppress completion request if completion is active (#30028)
- 50f006b61774 lsp: tagfunc fails in unusual buffer #30700
- 5ac8db10f042 lsp: trigger LspDetach on buffer delete (#28795)
- 19be3d26830c lsp: trim trailing whitespace from completion words (#29122)
- aa47af7e69bb lsp: tune completion word extraction for decorated labels (#29331)
- 38838fb00ab3 lsp: type-errors, other nits in vim.lsp.log #31235
- 8d7eb03040c2 lsp: unify get_completion_word for textEdits/insertText
- fe5ae88b20f5 lsp: update request name to capability map #30098
- 5aa9906676f3 lsp: use client.id instead of pairs index (#29143)
- c8d7d65679f8 lsp: use correct method for prepareTypehierarchy
- b9e6fa7ec81c lsp: use filterText as word if textEdit/label doesn't match
- 5d08b65ac2f6 lsp: use unresolved code action when `codeAction/resolve` fails
- 0a7e4e9e5f28 lsp: vim.lsp.enable(...,false) does not disable  #32002
- 888a803755c5 lsp: vim.lsp.start fails if existing client has no workspace_folders #31608
- 42ed0ffad985 lsp: when prefix is non word add all result into matches (#30044)
- 55bdb077b706 lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837
- 2dcbfe78fcec lsp.buf: use correct offset_encoding for all requests
- 3275ae830da9 lsp.protocal: improve typing of constants
- acbc6a7f91d1 lsp.util: inconsistent handling of offset_encoding
- 564173e5568c lsp.util: wrong arguments to 'validate' function
- 614c9322d500 lua: SIGSEGV in luv callback with error(nil) #32595
- b28373638848 lua: `@private` => `@nodoc` #32587
- b6e350a6b4df lua: allows tables with integer keys to be merged in tbl_deep_extend
- c8b64b7a4397 lua: always use vim.inspect() for :lua= (#32715)
- 0e42c81c7fd4 lua: avoid recursive vim.on_key() callback (#30753)
- fe1e2eff0626 lua: avoid vim._with() double-free with cmdmod (#31505)
- 487f44a6c14f lua: change some vim.fn.expand() to vim.fs.normalize() (#29583)
- 43bd9c9c1cac lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203)
- bdc6e3878132 lua: don't include text after cursor in completion pattern (#29587)
- e2aca58bcc4f lua: don't override script ID from :source (#32626)
- d40481322a79 lua: ensure inspect_pos() only shows visible highlight extmarks
- 948f2beed4ea lua: find length of completion prefix earlier (#29384)
- ebb963a4a082 lua: format errors from luv callbacks using __tostring
- 65a703e06063 lua: ignore stdout and stderr for xdg-open
- 6b00c9acfde9 lua: no omni/cmdline completion for vim.env (#33044)
- c6d2cbf8f51a lua: pop retval for fast context LuaRef
- a5b1b83a2693 lua: prevent SIGSEGV when lua error is NULL in libuv_worker
- 3d707e6f14b7 lua: remove vim.loader.disable() #31344
- 3a8811324604 lua: revert vim.tbl_extend behavior change and document it
- 3688a3335442 lua: show stacktrace for error in vim.on_key() callback (#31021)
- 40a149e7f992 lua: types for vim.api.keyset.win_config #32700
- 7f33c1967b78 lua: use rawget() to get __call in vim.is_callable() (#29536)
- 960fdc775a88 lua: vim.deprecate does not support major>0
- d832518ec6b4 lua: vim.hl.on_yank highlights wrong region with yi' (#32850)
- cd3855fb2be7 lua: vim.tbl_get({}, nil, 1) should return nil #32218
- 89d6d6f25cf2 lua: wrong script context for option set by func from nvim_exec2 (#32659)
- 9eb042600269 luacats: allow all types inside tuples
- ee5aaba21560 man: avoid setting v:errmsg (#30052)
- 7588ff2d8986 man: check if buffer is valid before restoring 'tagfunc' (#30180)
- da6f68ee6966 man: filter OSC 8 hyperlink markup #29171
- 7940ec69136f man.lua: `:Man <tab>` does not complete #31569
- e08e3d15f66d man.lua: skip `Attrs.None` highlights #32262
- d6653e1cc957 marks: ensure decor is removed with proper range (#32973)
- 906ad04dddff marks: handle composing in inline virt_text with 'nowrap' (#32477)
- 84520325547d marks: handle double-with inline virt_text with 'nowrap' (#32476)
- 86046c5a3103 marks: ineffective conceal_line callback optimization (#32662)
- 72f630f92dc8 marks: issues with invalid marks and marks beyond eob (#32862)
- 8da59060c6dc marks: mark winline as invalid if change is in a concealed line (#32766)
- 012db2b0f509 marks: revalidate marks whose position did not change
- 5cc93ef4729c marks: revise metadata for start mark of revalidated pair #32017
- c4f76299f039 marks: skip right_gravity marks when deleting text
- cdedfc3743df marks: truncate double-width inline virt_text consistently (#32560)
- 7371abf7554e marks: wrong winline info for concealed line with below virt line (#32747)
- a9287dd882e0 mbyte: check for utf8proc_map() failure (#30531)
- 50a576ba576b mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char
- 15bc930fca94 memline: don't check line count for closed memline #32403
- aa976f0d9327 messages: add a trailing space to inputlist() etc. prompts (#32328)
- 37c77ab46baa messages: attaching/detaching ext_messages causes asserts #31952
- d98827b634af messages: avoid empty msg_showmode with 'noshowmode'
- 31d6885deba0 messages: better formatting for :highlight with ext_messages #31627
- 21718c67dd96 messages: better formatting for ext_messages #31839
- 92556be33d04 messages: compute msg_col after last newline in ext_messages
- ad853d1df093 messages: improve deadly signal messages #32364
- 51853b82bc95 messages: incorrect error message splitting and kind #32990
- 08f7c2237767 messages: list_cmd kind for :registers, :au[g] #32531
- 7ce27381fb49 messages: lsp window/showMessage is not an error
- 1b6442034f6a messages: more ext_messages kinds #31279
- 9c6a3703bb15 messages: no message kind for :undo messages #31590
- ca760e645ba4 messages: no message kind for :write messages #31519
- 909b18d05a8d messages: no message kind for completion menu messages #31646
- f111c32ff9dc messages: no message kind for search pattern #31272
- 282f73f067cb messages: no trailing newline for inputlist, tselect, z= with ext_messages
- 9fa3a0964e9b messages: pass previous highlight id to ext chunks
- e025f5a5b30a messages: proper multiline Lua print() messages #31205
- d1e00a5f6dce messages: typo and unwanted truncation in msg_outtrans_long #31669
- d55b17e2b4e0 messages: verbose kind for nvim_echo()
- c8e47f648052 meta: do not use hyphens in param names
- 2cd72258f6be mouse: 'statuscolumn' fold and popopmenu handling
- 81d4e96bc868 mouse: don't treat click on hsep as click on statusline (#29565)
- 102971a39672 mouse: early return when clicking in padded 'statuscolumn' (#29394)
- 86c5c8724bd8 mouse: indicate X1 and X2 button clicks on statusline (#30655)
- f86864f22fef move: 'scrolloff' cursor correction no longer handles folds properly (#32642)
- 5947f249f838 move: half-page scrolling with resized grid at eob (#28821)
- ac7e0ff32ff1 move: redraw for 'concealcursor' after changing w_wcol (#31276)
- af0a2157ad29 move: wrong cursor row on concealed line (#32629)
- 83479b95abae mpack: remove invalid bool definition
- d32780de4daf mswin: UI may hang on exit
- fa99afe35eb5 multibyte: handle backspace of wide clusters in replace mode
- de83cc5842c9 netrw: re-add missing comment marker in syntax file
- d9585bdcfb5b nvim__set_complete: pum preview info truncated during completion #32555
- 34e2185022ab options: better handling of empty values
- 190d0241e2a0 options: fix 'winborder' accepting multiple string values (#32978)
- 8c532a9ea8a0 options: fix 'winhl' still accepting invalid value (#30896)
- 1b9dafa67ba9 options: fix :setglobal not working for 'spelloptions' (#30894)
- 395f420fc65c options: fix some 'belloff' flags not working properly (#30856)
- 50e63c8171d4 options: missing error check for global 'scl' and 'winhl' (#30919)
- e697c1b43dfb paste: improve repeating of pasted text (#30438)
- 052875b9dc3d paste: only record a paste when it's from RPC (#30491)
- 9516997eb0ad paste: wrong '[ mark after pasting a big string (streamed chunks) #33025
- 42aa69b076cb path: avoid chdir() when resolving path (#28799)
- 42db8b17594e path: crash with nvim_get_runtime_file during wildcard expansion (#32992)
- 0dfcf3fe12ac plines: don't count invalidated virt text in char size (#29863)
- afc3c43f12e2 popup: new preview_bufnr created when menu item is selected #32819
- ac1c5ccb2c04 popup: reuse pum preview float win, set 'winfixbuf' #32636
- d288f7003d25 popup: wrong extmark data sync when lines changed in popup preview #30246
- d24fb72c335b pum: don't select item when clicking to the left/right (#30967)
- 73ae7d44a281 quickfix: make shortmess+=O work with cmdheight=0 (#29609)
- 3bcd5624beec regexp: fix typo in E888 error message (#30161)
- cb924764a40d runtime: "E121 Undefined variable s:termguicolors" #32209
- 29a47b39ccd0 runtime: E15: Invalid expression in lua file when `gf`
- b6c1ce8a9545 runtime: add commentstring for glsl ftplugin
- 9ddfcb64bfdb runtime: add remaining missing commentstrings (#30252)
- e641155b023c runtime: avoid E31 in ftplugin (#32578)
- 82b02ae2f2af runtime: clean up one-off scripts
- 9788b81d7e53 runtime: fully port emoji_list to Lua
- 74fcc9452cd9 runtime: gO always says "Help TOC" #32971
- 69aa33d89046 runtime: let matchit and matchparen skips fallback on treesitter captures
- 8369590eb215 runtime: remove obsolete ftplugin/calender.lua
- 41b70a0dea4d runtime: set 'keywordprg' only once in vim ftplugin
- 7b16c1fa8451 runtime: source c ftplugin properly for cpp on Windows (#29053)
- 12c9791e0fef runtime: stop treesitter highlight in b:undo_ftplugin (#29533)
- 862338255da6 runtime: sync bundled treesitter queries
- 9e80738f3073 runtime: sync bundled treesitter queries
- 50577534318b runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473)
- 8f5e90811025 runtime: update b:undo_ftplugin in Lua runtime files (#29529)
- a5bd6665b00a scripts: update bundled dependencies in bump_deps
- 573a71469d37 scrollbind: properly take filler/virtual lines into account
- a8b6fa07c4d9 search: avoid quadratic time complexity when computing fuzzy score (#32153)
- 648d6426c863 server: CID 509282: DEADCODE #30316
- f4921e2b7deb shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538
- cd48b72b60af shada: restore search pattern length properly (#28929)
- 608543f8a90b snippet: cancel snippet session when leaving the buffer (#29031)
- 7994fdba6a1e snippet: don't override unnamed register on tabstop select (#28998)
- 5fe4ce6678c0 snippet: modify base indentation when there's actually whitespace (#29670)
- 424f4cc0389e snippet: wrong indentation when snippet contains "^" #32970
- d46ebd2a7403 startup: avoid crash with completion from -l script (#32160)
- 08153ddd1c14 startup: ignore broken $XDG_RUNTIME_DIR #30285
- 17e00d0cc63c startup: report --startuptime error to stderr (#31131)
- 8a2aec997482 startup: server fails if $NVIM_APPNAME is relative dir #30310
- 19fc65acbc67 statuscolumn: misleading v:lnum for virtual lines #32912
- 87e806186c72 statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265
- 1c30d86c337e tabline: restore behavior of click after last tabpage (#30602)
- a49f95d887a2 terminal: avoid mismatched `busy_start` without `busy_stop` (#32458)
- f3ce67549c94 terminal: avoid more `busy_start` lacking `busy_stop` (#32509)
- 3d49c55d3c33 terminal: avoid rescheduling events onto the same queue (#32755)
- 69a19295f8fe terminal: delay when finishing terminal process #32846
- f8c8a245aa5b terminal: don't crash on unprintable chars
- 6d997f8068a8 terminal: handle C0 characters in OSC terminator (#30090)
- fa46441264b2 terminal: improve cursor refresh handling (#32596)
- 1d11808bfd28 terminal: interrupt/got_int hangs terminal (#30056)
- 3db3947b0ed2 terminal: restore cursor from 'guicursor' on TermLeave (#31620)
- c51bf5a6b249 terminal: set cursor cell percentage (#31703)
- 5def8714ad70 terminal: set local values of window options (#29326)
- e9c077d197a8 termkey: fix null pointer dereference (#31792)
- c8e3618e0e68 test: "tempdir not a directory" in CI logs
- f7e32fb6e626 test: better management of tmpfiles
- db2c3d1143fb tests: filter out lines with __typeof__ keyword (#32524)
- e61228a214eb tests: needing two calls to setup a screen is cringe
- 639734bed4ef tests: remove the __extension__ keyword  in filter_complex_blocks (#32483)
- 59baa5e8a1f9 tohtml: apply sp color if present #30110
- 67c39f5ecae0 tohtml: disable modeline #32822
- e37404f7fecc tohtml: enclose font-family names in quotation marks
- 25db0a138537 tohtml: extmark text may be out of bounds
- 8cd9feb50166 tohtml: ignore lsp inlay hints
- eb37241d38ad tohtml: properly handle multiple hl groups #29012
- 2ed6423c7e9d tohtml: replace ipairs with pairs
- 88c7997503e1 tohtml: show how many warnings are hidden
- 118ae7e5ed6c tohtml: support ranges again
- c63e49cce2d2 treesitter: #trim! range for nodes ending at col 0 #31488
- b63cd8cbaec1 treesitter: EditQuery shows swapfile ATTENTION #30536
- 55b165ac15a7 treesitter: `TSNode:field()` returns all children with the given field
- 86b737649bb8 treesitter: add 'QuitPre' event to autocommands in inspect_tree
- bc1018a8d3ee treesitter: avoid computing fold levels for empty buffer
- a119dab40f93 treesitter: avoid computing foldlevels for reloaded buffer #32233
- 6696ea7f1038 treesitter: clean up parsing queue
- 99acc9de559a treesitter: close InspectTree/EditQuery window on BufUnload (#31036)
- f50f86b9ff5d treesitter: compute folds on_changedtree only if not nil
- 7a20f93a929a treesitter: correct condition in `__has_ancestor`
- 9b25c68db21c treesitter: correctly parse queries with combined injections
- 3abfaafad255 treesitter: detect trees with outdated regions in `is_valid()`
- 9217e0d671b7 treesitter: display fields for anonymous nodes in :InspectTree
- da4e8dc5b04a treesitter: do not modify highlight state for _on_spell_nav
- 0e3e1e6b6d83 treesitter: don't open fold when o/O adds a line below #28709
- aa2b44fbb07f treesitter: don't return error message on success #31955
- b0bbe25c4808 treesitter: don't spam query errors in the highlighter
- b88874d33c15 treesitter: empty queries can disable injections (#31748)
- d413038b4fd7 treesitter: ensure syntaxset augroup exists (#29542)
- f8e1ebd6f626 treesitter: escape things like `"` in omnifunc results
- c4eb0b64bd49 treesitter: find buffer in multiple windows #28922
- 94d42a3e7239 treesitter: highlight anonymous nodes in inspect_tree
- 5331f87f6145 treesitter: indent size for inspect_tree #28727
- 6ef80eb42c73 treesitter: keep treeview open if source window is still open #31198
- 052e048db676 treesitter: lint top-level anonymous nodes
- 4b9095285160 treesitter: mark supertype nodes as named
- 096ae3bfd707 treesitter: nil access when running string parser async
- c3337e357a83 treesitter: nil check query for has_conceal_line
- 6711fa27ca6e treesitter: recalculate folds on VimEnter #32240
- 05dcda8f9b05 treesitter: recognize aliased parsers in omnifunc, query linter
- d3193afc2559 treesitter: remove duplicate symbol names in language.inspect()
- cdc9baeaf89e treesitter: remove redundant on_bytes callback #31041
- 1827ab7a1f9a treesitter: separately track the number of valid regions
- 36990f324de2 treesitter: show proper node name error messages
- 4349bdbd0bd0 treesitter: specify success status in edit_query return value
- e7ebc5c13d2d treesitter: stop async parsing if buffer is invalid
- 0f067cd34d09 treesitter: suppress get_parser warnings via opts.error
- ae917dbd06cb treesitter: sync queries from upstream
- c4e9ff30a6b6 treesitter: sync queries with upstream
- d8eec8156098 treesitter: update lua, markdown queries
- 6e44a6a289c5 treesitter: update queries
- 5a54681025ec treesitter: uv_dlclose after uv_dlerror
- e4bc8b5967d2 treesitter.foldexpr: only refresh valid buffers
- 48acbc4d645f treesitter.foldexpr: refresh in the buffers affected by OptionSet
- 8474f529780b treesitter.foldexpr: robustness against ctrl-c
- f81131cca2b4 tui: also reset cursor color if it was invisible (#31348)
- 4846bf05dc63 tui: avoid flushing buffer halfway an OSC 2 sequence (#30793)
- 720ec5cec2df tui: cursor color in suckless terminal #32310
- b5cb69f8a4a3 tui: handle key events for arrow and function keys (#31804)
- d7651b27d54a tui: move $COLORTERM check to _defaults.lua (#29197)
- a811d4babd22 tui: only reset cursor color if it was changed (#31337)
- 0c0352783fca tui: remove DCS escaping in tmux (#32723)
- 47c741e30c87 tui: remove duplicate disabling of synchronized output (#28884)
- f32557ca679c tui: reset active attr ID when OSC 8 sequence is terminated (#29960)
- bc63ffcf39e8 tui: reset clear_region attributes during startup #28713
- b02c83941493 tui: set id parameter in OSC 8 sequences (#29840)
- 0231265c8cf8 tui: skip TUI in ui_rgb_attached (#29096)
- 8b8096500d08 tutor: incorrect lines marked as correct #29833
- 31745b17e60d types: add narrower vim.validate types
- 44410d063ad2 types: add some vim.fn type annotations
- b813075b8a55 types: do not mark unstable API as private
- e947f226bebe types: use vararg return type annotation
- a1906c23ddab ui: Windows :detach is opt-in
- 594c7f3d7726 ui: avoid ambiguity about last chunk when flushing halfway (#29718)
- 216ec7397214 ui: avoid redundant ext_cmdline events (#32237)
- 6cdcac4492cc ui: clamp 'cmdheight' for other tabpages on screen resize (#31419)
- 318c0415d5b1 ui: correctly pass metadata to get_node_text #30222
- 7eba016c8681 ui: ensure screen update before waiting for input #30576
- 5b6477be45c5 ui: flush ext_cmdline events before doing cmdpreview #27950
- 6e4df18b457e ui: no fast context for prompt message kinds #31224
- 6b8c56c7f6da ui: schedule UI detach (#32827)
- b66106a46c5c ui: superfluous showmode / excessive grid_cursor_goto #29089
- d1fd674df3eb ui: update title in more cases (#31508)
- 442d338cb50e uri: uri_encode encodes brackets incorrectly for RFC2732 #31284
- d049752e45c3 version: fix vim.version().prerelease
- 8bdfc2ab2b25 version: return nil with empty string
- 6401b433f7c0 vim.fs: default to follow=false #32859
- 47e6b2233fef vim.fs: dirname() returns "." on mingw/msys2 #30480
- 0bef3b911cc2 vim.fs: joinpath() does not normalize slashes on Windows #31782
- 6dc0eb9f41e6 vim.fs.abspath: correctly handle UNC paths
- a8ace2c58a31 vim.fs.normalize: normalize case for windows drive letter
- 4c0d18c19773 vim.iter: enable optimizations for arrays (lists with holes) (#28781)
- 734dba04d13b vim.system: close pipe handles after process handle
- 4e130c1ee446 vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638
- ad3472e29169 vim.system: resolve executable paths on windows
- 33464189bc02 vim.text: handle very long strings (#30075)
- 4cff4185647c vim.text: remove assert from vim.text.hexdecode
- d338ec9cb299 vim.ui.open: prefer xdg-open on WSL #30302
- 8bf79bd13c4d vim.wo: never allow non-zero bufnr
- 453f2c52d291 vim_snprintf: special-case handling of binary format
- 32e128f20992 watch: exclude .git when using inotifywait (#29914)
- 9e23b4e1852f watch: ignore nonexistent paths (ENOENT)
- a18652ed619b win-msi: add bin to PATH per-machine after installation (#29099)
- 88f07d6ca4a6 win-msi: set installer scope to machine #29895
- 4f9311b759ff window: making float with title/footer non-float leaks memory (#30551)
- 7b71fdbc1e9f window: respect hide flag of float windows when switching (#30507)
- 59da82abd91e wininfo: when freeing windows, free the lowest priority wininfo

PERFORMANCE
--------------------------------------------------------------------------------
- 48251134ee59 add fast path to vim.validate (#28977)
- 3abd7ed4a4cd consider only active decorations when drawing lines
- 8d2ee542a82a decor: join predicates and matches cache
- 48e3ac60c633 diagnostics: cache line diagnostics when `current_line` is set #32288
- b8ddd3b6bbfb events: remove unnecessary loop in event_nr2name() (#32777)
- 15f2da55a8de events: use hashy for event name lookup (#32802)
- abf4b65a51b2 filetype: cache (more) pattern data during "add" time
- f61efe3fe77c filetype: implement parent pattern pre-matching (#29660)
- ff575b388640 filetype: optimize internal data structures
- dc04ef2a20bf filetype: skip contents check in `match()` if there is no contents (#29596)
- 12d4caa9d3e4 keycodes: use hashy for string lookup
- f8fc6cb15755 loader: reduce calls to Loader.cache_file
- 138a93a057da lsp: avoid repeated table lookup in completion.enable
- 7342e6b00d5e lsp: do not apply semantic tokens to folded lines
- c85d15e0d557 lsp: don't construct potentially expensive strings
- cc1f2d2ca6ca lsp: don't copy completion items in filter pass
- 3e855d533f44 lsp: use faster version of str_byteindex
- 000129201c54 mouse: only generate <MouseMove> for a new cell positon (#31103)
- 3fdc43024159 treesitter: cache queries strongly
- b192d58284a7 treesitter: calculate folds asynchronously
- c6abc97006ee treesitter: do not use tree cursors with a small lifetime
- cbad2c662873 treesitter: don't block when finding injection ranges
- d9ee0d2984e5 treesitter: don't fetch parser for each fold line
- 562056c87573 treesitter: only search for injections within the parse range
- c57a85e0eda0 treesitter: remove unnecessary foldexpr loop
- 64847fbdc908 treesitter: use `child_containing_descendant()` in `is_ancestor()`
- 4b0291633453 treesitter: use child_containing_descendant() in has-ancestor? (#28512)
- 3f3e4837d5f7 validate: use lighter version
- 99b5ffd68824 vim.text: use lookup table implementation for hex encoding (#30080)

BUILD
--------------------------------------------------------------------------------
- 104800ce2ead "popcount" name conflict on NetBSD #28983
- 198a952c13a1 add luals check
- ef8067a19d98 add quotes around `CMAKE_GENERATOR` variable
- 32e16cb0b6b0 add utf8proc as dependency
- b213f5169c33 allow comment after #include for required header (#29722)
- 382eb878bcbf bump lua dev dependencies
- 1d815acd78e5 bump minimum cmake version to 3.16
- 5284a2a79316 bump unibilium to v2.1.2
- ac5a6d9ff56b fix RelWithDebInfo optimization flags #31802
- 7c652242579b fix lint error on macos
- 046e0956eeb3 fix or silence new clang-tidy warnings
- 5719f2b91a31 fix uncrustify install in nix devShell (#33020)
- 4a0ee22e77d1 make makefile work on msys
- 4ee65484b16d make makefile work on windows
- 1b90f4a9c472 mark CMake variables advanced #31412
- 0f24b0826a27 move all generator scripts to `src/gen/`
- e5ff3020330e remove -O2 from gen_cflags
- d74c74aae35e remove `lintcommit` from `lint` target
- 573bcb2aaf3e remove enforcement of cmake build type
- 0e9c92a90043 remove nix flakes (#28863)
- f09f5c45facc reuse code for deps.txt for both deps and main build
- e1dc824b7ef4 set luals checklevel to Hint #32392
- cac86e9b4c14 silence "po" noise #30469
- 07b14c8e2ed2 specify POST_BUILD when using add_custom_command
- e83ce331da91 use treesitter's CMakeLists.txt
- e268fcbdaa1e work around bug in make when PATH includes cmake as dir
- b288fa8d62c3 bump_deps: abort if archive doesn't exist
- 7ead328a4858 cjson: sync with upstream (#32114)
- 0e2f92ed79e3 clint: make NOLINT work with header checks (#31281)
- 327110ff8c59 cmake: remove unnecessary policy code
- 535c2f8658c4 contrib: add zsh completion (#32617)
- 51d85f7ea58b deps: drop unused bundled bash, python parsers and queries
- 9216bc927c00 deps: fix formatc target on MSVC
- b3641b80083d deps: remove libtermkey dependency
- 1247684ae14e deps: remove msgpack-c dependency
- fa79a8ad6dee deps: vendor libvterm at v0.3.3
- c614969570ac docs: update CSS #28896
- 0a087f207331 generator: add dependencies on hashy (#32796)
- e178331488a0 lpeg: search for lpeg.so on MacOS
- 7e099cf3eb1f macos: disable deduplication in link step
- f4d9a2983a49 release.sh: fix hang when generating docs (#33026)
- b923fcbaf062 vim-patch.sh: don't ignore changes to version*.txt (#29425)
- 7aaa4a51b76f vim-patch.sh: include commit subject #28767
- 314643319080 vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants