]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
109 min agopatch 9.1.1962: filetype: Erlang application resource files are not recognized master v9.1.1962
Doug Kearns [Sun, 7 Dec 2025 18:12:33 +0000 (19:12 +0100)] 
patch 9.1.1962: filetype: Erlang application resource files are not recognized

Problem:  filetype: Erlang application resource files are not recognized
Solution: Add content-based filetype detection for application resource
          files matching extension '*.app' (Doug Kearns)

related: #18835
closes:  #18842

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
114 min agopatch 9.1.1961: :0tab behaves like :tab for :stag when 'swb' contains "newtab" v9.1.1961
zeertzjq [Sun, 7 Dec 2025 18:07:37 +0000 (19:07 +0100)] 
patch 9.1.1961: :0tab behaves like :tab for :stag when 'swb' contains "newtab"

Problem:  :0tab behaves like :tab for :stag when 'switchbuf' contains
          "newtab" (after 9.1.1949).
Solution: Don't override cmod_tab if it's already non-zero (zeertzjq).

closes: #18859

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
115 min agopatch 9.1.1960: Wrong position of info popup v9.1.1960
glepnir [Sun, 7 Dec 2025 17:54:26 +0000 (18:54 +0100)] 
patch 9.1.1960: Wrong position of info popup

Problem:  When the popup menu is displayed above the cursor and the
          selected item has no room below for the info popup,
          popup_adjust_position() places the popup in the available
          space above. The calculation added some extra lines, causing
          the popup to be misaligned.
Solution: For info popups, undo that extra spacing so the popup stays
          aligned with the selected item (glepnir)

closes: #18860

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 hours agopatch 9.1.1959: Wrong wrapping of long output using :echowindow v9.1.1959
glepnir [Sun, 7 Dec 2025 17:48:22 +0000 (18:48 +0100)] 
patch 9.1.1959: Wrong wrapping of long output using :echowindow

Problem:  Outputting long strings using :echowindow wraps one character
          per line and display in reverse order (Hirohito Higashi)
Solution: Use full width for :echowindow, reset msg_col after wrapping,
          and increment lnum correctly when creating new lines (glepnir)

fixes: #18750
closes: #18874

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 hours agopatch 9.1.1958: Wrong display with sign_unplace() and setline() in CursorMoved v9.1.1958
zeertzjq [Sun, 7 Dec 2025 17:45:19 +0000 (18:45 +0100)] 
patch 9.1.1958: Wrong display with sign_unplace() and setline() in CursorMoved

Problem:  Wrong display when scrolling with 'scrolloff' and calling
          sign_unplace() and setline() in CursorMoved (after 8.2.3204).
Solution: Still scroll for changed lines below the top area when the top
          is scrolled down (zeertzjq)

closes: #18878

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agopatch 9.1.1957: filetype: bpftrace files are not recognized v9.1.1957
Stanislaw Gruszka [Sat, 6 Dec 2025 09:40:44 +0000 (10:40 +0100)] 
patch 9.1.1957: filetype: bpftrace files are not recognized

Problem:  filetype: bpftrace files are not recognized
Solution: Detect *.bt files as btftrace filetype,
          include a btftrace filetype plugin (Stanislaw Gruszka)

closes: #18866

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agoruntime(odin): support underscore-separated numeric literals
Maxim Kim [Sat, 6 Dec 2025 09:36:30 +0000 (10:36 +0100)] 
runtime(odin): support underscore-separated numeric literals

Add support for underscore-separated numeric literals in Odin syntax
highlighting. This allows proper highlighting of numbers like 1_000_000,
0xFF_AA_BB, and 0b1010_1111 as specified in the Odin language.

>  Numerical literals are written similar to most other programming
>  languages. A useful feature in Odin is that underscores are allowed
>  for better readability: 1_000_000_000 (one billion).
>  https://odin-lang.org/docs/overview/#numbers

closes: #18852

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agoruntime(doc): fix return value in 'exists' and 'exists_compiled()'
Mao-Yining [Sat, 6 Dec 2025 09:33:45 +0000 (10:33 +0100)] 
runtime(doc): fix return value in 'exists' and 'exists_compiled()'

closes: #18867

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agopatch 9.1.1956: tests: test_sort.vim leaves swapfiles behind v9.1.1956
Christian Brabandt [Sat, 6 Dec 2025 09:28:33 +0000 (10:28 +0100)] 
patch 9.1.1956: tests: test_sort.vim leaves swapfiles behind

Problem:  tests: test_sort.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agopatch 9.1.1955: sort() does not handle large numbers correctly v9.1.1955
Yegappan Lakshmanan [Sat, 6 Dec 2025 09:22:07 +0000 (10:22 +0100)] 
patch 9.1.1955: sort() does not handle large numbers correctly

Problem:  sort() does not handle large numbers correctly
          (Igbanam Ogbuluijah)
Solution: Don't truncate the return value of tv_get_number_chk()
          (Yegappan Lakshmanan)

closes: #18868

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agopatch 9.1.1954: Setting a byte in a blob, accepts values outside 0-255 v9.1.1954
Yegappan Lakshmanan [Sat, 6 Dec 2025 09:13:00 +0000 (10:13 +0100)] 
patch 9.1.1954: Setting a byte in a blob, accepts values outside 0-255

Problem:  Setting a byte in a blob, accepts values outside 0-255
Solution: When setting a byte in a blob, check for valid values
          (Yegappan Lakshmanan)

closes: #18870

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
34 hours agopatch 9.1.1953: gui_mch_set_titlebar_colors() is excessively called v9.1.1953
Mao-Yining [Sat, 6 Dec 2025 09:04:06 +0000 (10:04 +0100)] 
patch 9.1.1953: gui_mch_set_titlebar_colors() is excessively called

Problem:  gui_mch_set_titlebar_colors() doesn't need to be called when
          'go+=C' is not set.
Solution: Switch the default value to false.

closes: #18872

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(swayconfig): separate identifier groups + cleanup
Josef Litoš [Wed, 3 Dec 2025 21:10:02 +0000 (21:10 +0000)] 
runtime(swayconfig): separate identifier groups + cleanup

- cleanup of PR for tearing and other output options
  - removed `allow_tearing` from global keywords (it's only an output option)
  - moved `...clockwise` directives from general to transform options
  - separated `icc` highlight to correctly detect and highlight paths
  - updated output bg to use the same approach as `icc` for file path
- separated all identifier-matchers into their own groups
- added support for bar identifiers

closes: #18851

Signed-off-by: Josef Litoš <54900518+litoj@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(i3config): highlight identifiers separately
Josef Litoš [Wed, 3 Dec 2025 21:09:19 +0000 (21:09 +0000)] 
runtime(i3config): highlight identifiers separately

- mapped all identifier-highlighting groups to a new group `i3ConfigIdent`
- i3config bar is now split into keyword and block matches
- support `xft:` namespace in fonts
- Update maintainer information in i3config.vim

related: #18851

Signed-off-by: Josef Litoš <54900518+litoj@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1952: tests: need better tests for tf files v9.1.1952
Christian Brabandt [Wed, 3 Dec 2025 21:01:37 +0000 (21:01 +0000)] 
patch 9.1.1952: tests: need better tests for tf files

Problem:  tests: need better tests for tf files
Solution: Add better filetype test for terraform/tf filetype

closes: #18339

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(quarto): add missing loaded guard
Doug Kearns [Wed, 3 Dec 2025 20:30:59 +0000 (20:30 +0000)] 
runtime(quarto): add missing loaded guard

closes: #18630

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(python): Highlight t-strings
Rob B [Wed, 3 Dec 2025 20:25:41 +0000 (20:25 +0000)] 
runtime(python): Highlight t-strings

- Highlight t-strings
- Update comments
- Add tests

closes: #18679

Signed-off-by: Rob B <github@0x7e.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(sml): Update syntax, improve special constant matching
Doug Kearns [Wed, 3 Dec 2025 20:21:49 +0000 (20:21 +0000)] 
runtime(sml): Update syntax, improve special constant matching

- Match \dE\d real literal form
- Match all string escape sequences
- Add related tests

closes: #18723

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(hog): set undo_ftplugin correctly, delete trailing whitespace
D. Ben Knoble [Wed, 3 Dec 2025 20:15:06 +0000 (20:15 +0000)] 
runtime(hog): set undo_ftplugin correctly, delete trailing whitespace

closes: #18727

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1951: tests: Test_windows_external_cmd_in_cwd() only run in huge builds v9.1.1951
zeertzjq [Wed, 3 Dec 2025 20:10:07 +0000 (20:10 +0000)] 
patch 9.1.1951: tests: Test_windows_external_cmd_in_cwd() only run in huge builds

Problem:  tests: Test_windows_external_cmd_in_cwd() is only run in huge
          builds (after 9.1.1947).
Solution: Move it to test_system.vim so that it is run in normal builds.

closes: #18853

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1950: tests: Test_tagjump.vim leaves swapfiles behind v9.1.1950
Christian Brabandt [Wed, 3 Dec 2025 19:27:08 +0000 (19:27 +0000)] 
patch 9.1.1950: tests: Test_tagjump.vim leaves swapfiles behind

Problem:  tests: Test_tagjump.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1949: :stag does not use 'swichtbuf' option v9.1.1949
Yegappan Lakshmanan [Wed, 3 Dec 2025 19:22:13 +0000 (19:22 +0000)] 
patch 9.1.1949: :stag does not use 'swichtbuf' option

Problem:  :stag does not use 'swichtbuf' option, though the
          documentation states differently
          (Christian Brabandt)
Solution: Respect 'switchbuf' option (Yegappan Lakshmanan).

related: #18845
closes: #18856

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): Update vim9.txt Section 1
Peter Kenny [Wed, 3 Dec 2025 19:13:34 +0000 (19:13 +0000)] 
runtime(doc): Update vim9.txt Section 1

closes: #18855

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1948: Windows: Vim adds current directory to search path v9.1.1948
Christian Brabandt [Mon, 1 Dec 2025 20:51:35 +0000 (20:51 +0000)] 
patch 9.1.1948: Windows: Vim adds current directory to search path

Problem:  Windows: Vim always adds the current directory to search path.
          This should only happen when using cmd.exe as 'shell'. For
          example, powershell won't run binaries from the current
          directory.
Solution: Only add current directory to system path, when using cmd.exe
          as 'shell'.

related: #10341
related: 083ec6d9a3b7

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1947: [security]: Windows: Vim may execute commands from current directory v9.1.1947
Christian Brabandt [Tue, 25 Nov 2025 21:45:58 +0000 (22:45 +0100)] 
patch 9.1.1947: [security]: Windows: Vim may execute commands from current directory

Problem:  [security]: Windows: Vim may execute commands from current
          directory (Simon Zuckerbraun)
Solution: Set the $NoDefaultCurrentDirectoryInExePath before running
          external commands.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-g77q-xrww-p834

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1946: Cannot open the help in the current window v9.1.1946
Peter Kenny [Tue, 2 Dec 2025 20:42:53 +0000 (20:42 +0000)] 
patch 9.1.1946: Cannot open the help in the current window

Problem:  Cannot open the help in the current window
Solution: Promote the example from tips.txt to a proper package and
          include the helpcurwin package, add tests for it
          (Peter Kenny)

closes: #18840

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.1945: tests: Test_getbufwintabinfo() leaves swapfiles behind v9.1.1945
Christian Brabandt [Tue, 2 Dec 2025 19:59:54 +0000 (19:59 +0000)] 
patch 9.1.1945: tests: Test_getbufwintabinfo() leaves swapfiles behind

Problem:  tests: Test_getbufwintabinfo() leaves swapfiles behind
Solution: Close all open buffers using %bw!

Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.1944: getwininfo() does not return if statusline is visible v9.1.1944
Hirohito Higashi [Tue, 2 Dec 2025 19:58:01 +0000 (19:58 +0000)] 
patch 9.1.1944: getwininfo() does not return if statusline is visible

Problem:  gewininfo() does not return if statusline is visible
Solution: Add status_height to the dict items returned by
          getwininfo() (Hirohito Higashi)

closes: #18841

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agoruntime(doc): clarify the use of v:errormsg
Christian Brabandt [Mon, 1 Dec 2025 20:02:10 +0000 (20:02 +0000)] 
runtime(doc): clarify the use of v:errormsg

fixes: #18825

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.1.1943: Memory leak with :breakadd expr v9.1.1943
zeertzjq [Mon, 1 Dec 2025 19:43:05 +0000 (19:43 +0000)] 
patch 9.1.1943: Memory leak with :breakadd expr

Problem:  Memory leak with :breakadd expr
Solution: Free debug_oldval and debug_newval before assigning to them.
          Verify the existing (though confusing) :breakadd expr behavior
          (zeertzjq).

It seems that :breakadd expr doesn't work as documented at all. This PR
only fixes the memory leak. The tests are for the existing behavior.

closes: #18844

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(lf): update syntax to support lf version r39
CatsDeservePets [Mon, 1 Dec 2025 18:49:24 +0000 (18:49 +0000)] 
runtime(lf): update syntax to support lf version r39

closes: #18846

Signed-off-by: CatsDeservePets <145048791+CatsDeservePets@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(vim): Update base syntax, match full :language command
Doug Kearns [Sun, 30 Nov 2025 15:44:36 +0000 (15:44 +0000)] 
runtime(vim): Update base syntax, match full :language command

closes: #18808

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1942: Vim9: Assignment to read-only registers @: and @% is allowed v9.1.1942
Doug Kearns [Sun, 30 Nov 2025 15:26:22 +0000 (15:26 +0000)] 
patch 9.1.1942: Vim9: Assignment to read-only registers @: and @% is allowed

Problem:  Assignment to read-only registers @: and @% is allowed during
          compilation.
Solution: Abort compilation and emit an E354 error when assigning to
          these registers (Doug Kearns).

Fix the E354 error emitted when attempting to declare @: with :var so
that it references the correct register, @:,  rather than the garbage
string "^@".

closes: #18806

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1941: tests: Test_execute_register() leaves swapfile behind v9.1.1941
Christian Brabandt [Sun, 30 Nov 2025 15:22:40 +0000 (15:22 +0000)] 
patch 9.1.1941: tests: Test_execute_register() leaves swapfile behind

Problem:  tests: Test_execute_register() leaves swapfile behind
Solution: Use :bw instead of :close to close the buffer completely

Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1940: clipboard registers "+" and "*" synced without "autoselect" v9.1.1940
Corey Hickey [Sun, 30 Nov 2025 15:16:16 +0000 (15:16 +0000)] 
patch 9.1.1940: clipboard registers "+" and "*" synced without "autoselect"

Problem:  clipboard registers "+" and "*" synced without "autoselect"
Solution: Remove code that explicitly syncs those clipboard registers
          (Corey Hickey)

Before this change, writes to '+' get copied to '*', but only under
certain conditions. By default, this does not happen, because clipboard
"autoselect" (via :set clipboard+=autoselect) is enabled. Disabling
"autoselect" (an option which should only apply to visual mode) results
in normal-mode writes such as "+yy also going to the '*' register.

This behavior is undocumented and untested; remove the behavior in order
to make Vim's handling of these two registers be consistent.

This frees up the did_star variable to be removed.

Add a test to check that the registers are independent.

fixes: #18830
closes: #18831

Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1939: tests: test_matchfuzzy() leaves swapfiles behind v9.1.1939
Christian Brabandt [Sun, 30 Nov 2025 15:09:53 +0000 (15:09 +0000)] 
patch 9.1.1939: tests: test_matchfuzzy() leaves swapfiles behind

Problem:  tests: test_matchfuzzy() leaves swapfiles behind
Solution: Close loaded buffers using "%bw"

Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1938: tests: excessive wait in Test_matchfuzzy_initialized v9.1.1938
Corey Hickey [Sun, 30 Nov 2025 15:07:40 +0000 (15:07 +0000)] 
patch 9.1.1938: tests: excessive wait in Test_matchfuzzy_initialized

Problem:  tests: excessive wait in Test_matchfuzzy_initialized
Solution: Use term_wait() instead of the TermWait() wrapper
          (Corey Hickey)

Test_matchfuzzy_initialized is a terminal test, which are specified to be
"flaky" and automatically retried. The TermWait wrapper multiplies the
specified wait time by higher values for later retries, maxing out at
10x the specified value. This makes tries #3 to #6 sleep for 20 seconds
each, which makes the test very slow to work with. The specified intent
of the test (as noted in a comment eight lines above here) is to
sleep for 2s.

closes: #18822

Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1937: tests: Test_matchfuzzy_initialized() fails v9.1.1937
Corey Hickey [Sun, 30 Nov 2025 15:02:39 +0000 (15:02 +0000)] 
patch 9.1.1937: tests: Test_matchfuzzy_initialized() fails

Problem:  tests: Test_matchfuzzy_initialized() fails
Solution: Send a dummy key (Corey Hickey)

Test_matchfuzzy_initialized seems to expect that the 'lvimgrep' will be
interrupted by sending a SIGINT. If the search finishes beforehand,
though, then the SIGINT triggers vim to tell the user how to quit.

Vim does not show this message immediately, though; instead, vim shows
the message next time it is active. When StopVimInTerminal() sends a key
sequence intended to cause vim to quit, this activates vim to show the
message instead of quitting.

I do not understand every detail of the problem fully--if I type the
characters from StopVimInTerminal() into a post-SIGTERM terminal
directly, that seems to work ok; there seems to be a timing issue due to
sending all the characters at once.

This fix does make the test work reliably for me, and the test still
works even if I limit my CPU frequency so that the search is interrupted
by the SIGINT.

fixes: #18821
related: #18822

Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1936: filetype: Erlang lexical files are not recognized v9.1.1936
Jon Parise [Sun, 30 Nov 2025 14:45:48 +0000 (14:45 +0000)] 
patch 9.1.1936: filetype: Erlang lexical files are not recognized

Problem:  filetype: Erlang lexical files are not recognized
Solution: Detect *.xrl files as leex filetype, include syntax and
          filetype plugins (Jon Parise).

leex is the lexical analyzer generator for Erlang. Its input file format
follows a section-based structure and uses the `.xrl` file extension.

This initial work includes file detection, an ftplugin (which inherits
the Erlang configuration), and a syntax definition.

Reference:
-  https://www.erlang.org/doc/apps/parsetools/leex.html

related: #18819
closes: #18832

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Csaba Hoch <csaba.hoch@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.1935: filetype: not all Erlang files are recognized v9.1.1935
Jon Parise [Sun, 30 Nov 2025 10:02:45 +0000 (10:02 +0000)] 
patch 9.1.1935: filetype: not all Erlang files are recognized

Problem:  filetype: not all Erlang files are recognized
Solution: Detect *.app.src and rebar.config files as erlang filetype
          (John Parise).

*.app.src files contain Erlang application definitions. (There are also
*.app files, which are similar but more often build artifacts, and that
file extension is too ambiguous to be recognized by default.)

Reference:
- https://www.erlang.org/doc/system/applications.html

Rebar is the Erlang build tool. rebar.config uses Erlang syntax.

Reference:
- https://rebar3.org/docs/configuration/configuration/

closes: #18835

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(doc): Update and clarify vim9.txt Section 3
Peter Kenny [Sun, 30 Nov 2025 09:40:04 +0000 (09:40 +0000)] 
runtime(doc): Update and clarify vim9.txt Section 3

closes: #18779

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(doc): Improve :help :catch command specification
Doug Kearns [Sun, 30 Nov 2025 09:23:16 +0000 (09:23 +0000)] 
runtime(doc): Improve :help :catch command specification

The pattern argument is optional.  See :help :sort for another example.

closes: #18834

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(netrw): fix undefined variable curwin in s:NetrwMenu()
Christian Brabandt [Fri, 28 Nov 2025 22:37:06 +0000 (22:37 +0000)] 
runtime(netrw): fix undefined variable curwin in s:NetrwMenu()

fixes: #18829

Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.1.1934: filetype: not all starlark files are recognized v9.1.1934
Bruno Belanyi [Fri, 28 Nov 2025 20:48:55 +0000 (20:48 +0000)] 
patch 9.1.1934: filetype: not all starlark files are recognized

Problem:  filetype: not all starlark files are recognized
Solution: Detect *.sky files as starlark filetype (Bruno Belanyi)

References:
- https://docs.bazel.build/versions/0.17.1/skylark/spec.html

closes: #18807

Signed-off-by: Bruno Belanyi <bruno@belanyi.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(doc): Change termdebug_config debug value to v:true in terminal.txt
Rochish Manda [Fri, 28 Nov 2025 20:42:13 +0000 (20:42 +0000)] 
runtime(doc): Change termdebug_config debug value to v:true in terminal.txt

closes: #18820

Signed-off-by: Rochish Manda <28740792+Rochish-Manda@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(doc): Correct typo in usr_30.txt regarding softtabstop
Shin Rag [Fri, 28 Nov 2025 20:37:16 +0000 (20:37 +0000)] 
runtime(doc): Correct typo in usr_30.txt regarding softtabstop

Fix typo in explanation of softtabstop and shiftwidth.

closes: #18823

Signed-off-by: Shin Rag <62047911+aquanjsw@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(doc): fix typo in "appendbufline()", builtin.txt
Mao-Yining [Fri, 28 Nov 2025 20:34:38 +0000 (20:34 +0000)] 
runtime(doc): fix typo in "appendbufline()", builtin.txt

closes: #18824

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(defaults): Update comment for reverting C comment strings
C.D. MacEachern [Fri, 28 Nov 2025 20:25:41 +0000 (20:25 +0000)] 
runtime(defaults): Update comment for reverting C comment strings

Add `g:` prefix, so the example works in vim9script as well (errors
without it).

closes: #18827

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: C.D. MacEachern <craig.daniel.maceachern@gmail.com>
8 days agoruntime(doc): Clarification in listener_add() doc
Paul Ollis [Fri, 28 Nov 2025 20:21:29 +0000 (20:21 +0000)] 
runtime(doc): Clarification in listener_add() doc

Make it clear that the overall end value can be greater than
line('$') + 1.

fixes: #18664
closes: #18828

Signed-off-by: Paul Ollis <paul@cleversheep.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1933: completion: complete_match() is not useful v9.1.1933
Girish Palya [Thu, 27 Nov 2025 21:19:54 +0000 (21:19 +0000)] 
patch 9.1.1933: completion: complete_match() is not useful

Problem:  completion: complete_match() Vim script function and
          'isexpand' option are not that useful and confusing
          (after v9.1.1341)
Solution: Remove function and option and clean up code and documentation
          (Girish Palya).

complete_match() and 'isexpand' add no real functionality to Vim. They
duplicate what `strridx()` already does, yet pretend to be part of the
completion system. They have nothing to do with the completion mechanism.

* `f_complete_match()` in `insexpand.c` does not call any completion code.
   It’s just a `STRNCMP()` wrapper with fluff logic.
* `'isexpand'` exists only as a proxy argument to that function.
   It does nothing on its own and amounts to misuse of a new option.

The following Vim script function can be used to implement the same
functionality:

```vim
  func CompleteMatch(triggers, sep=',')
    let line = getline('.')->strpart(0, col('.') - 1)
    let result = []
    for trig in split(a:triggers, a:sep)
      let idx = strridx(line, trig)
      if l:idx >= 0
        call add(result, [idx + 1, trig])
      endif
    endfor
    return result
  endfunc
```

related: #16716
fixes: #18563
closes: #18790

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1932: OSC terminal response hard to detect v9.1.1932
Foxe Chen [Thu, 27 Nov 2025 20:53:36 +0000 (20:53 +0000)] 
patch 9.1.1932: OSC terminal response hard to detect

Problem:  OSC terminal response hard to detect
Solution: Add the <OSC> and <xOSC> pseudo keys
          (Foxe Chen).

related: #18660
closes: #18799

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): remove outdated help about 'completeopt' "fuzzy"
zeertzjq [Thu, 27 Nov 2025 20:27:13 +0000 (20:27 +0000)] 
runtime(doc): remove outdated help about 'completeopt' "fuzzy"

closes: #18815

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agotranslation: regenerate po/vim.pot after v9.1.1930
Christian Brabandt [Thu, 27 Nov 2025 20:25:22 +0000 (20:25 +0000)] 
translation: regenerate po/vim.pot after v9.1.1930

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1931: completion: wrong item selected with fuzzy and noinsert v9.1.1931
Girish Palya [Thu, 27 Nov 2025 20:20:38 +0000 (20:20 +0000)] 
patch 9.1.1931: completion: wrong item selected with fuzzy and noinsert

Problem:  completion: wrong item selected with fuzzy and noinsert
          (Evgeni Chasnovski)
Solution: Reset selected item after fuzzy sort
          (Girish Palya)

fixes: #18802
closes: #18816

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1930: completion: 'completefuzzycollect' is too obscure v9.1.1930
Girish Palya [Wed, 26 Nov 2025 21:00:16 +0000 (21:00 +0000)] 
patch 9.1.1930: completion: 'completefuzzycollect' is too obscure

Problem:  completion: 'completefuzzycollect' option is too obscure
Solution: Deprecate the option, but don't error out for existing scripts,
          behave like 'completefuzzycollect' is set when fuzzy
          completion is enabled (Girish Palya).

fixes: #18498
closes: #18788

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(i3config/swayconfig): add all option for i3config only
Robertus Chris [Wed, 26 Nov 2025 20:37:09 +0000 (20:37 +0000)] 
runtime(i3config/swayconfig): add all option for i3config only

Since i3 version 4.24, popup_during_fullscreen has new
option `all`. So add the `all` option for popup_during_fullscreen to
prevent `all` option highlighted as error.

However, sway won't implement `all` option for popup_during_fullscreen,
so let's remove the extra options from the syntax cluster in swayconfig
syntax script after sourcing the i3config.

Reference:
- https://i3wm.org/docs/userguide.html#_popups_during_fullscreen_mode
- https://github.com/swaywm/sway/issues/8746

closes: #18760

Signed-off-by: Robertus Chris <robertusdchris@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1929: completion: spell completion wrong with fuzzy v9.1.1929
Maxim Kim [Wed, 26 Nov 2025 20:23:44 +0000 (20:23 +0000)] 
patch 9.1.1929: completion: spell completion wrong with fuzzy

Problem:  completion: spell completion wrong with fuzzy
Solution: Disable fuzzy sort for spell completion
          (Maxim Kim)

fixes #18800
closes: #18809

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(doc): Fix typo in "Jumping to Changes", usr_08.txt
Brent Pappas [Wed, 26 Nov 2025 20:12:28 +0000 (20:12 +0000)] 
runtime(doc): Fix typo in "Jumping to Changes", usr_08.txt

- Change "Prepended" (past tense) to "Prepend" (present tense,
  imperative).
- Add short examples clarifying the behavior of prepending a count to
  commands that jump to changes in diff mode.

closes: #18810

Signed-off-by: Brent Pappas <pappasbrent@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoCI: retire socketserver runner
Foxe Chen [Wed, 26 Nov 2025 20:06:03 +0000 (20:06 +0000)] 
CI: retire socketserver runner

closes: #18811

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1928: xxd: exit_with_usage() can be simplified v9.1.1928
Stefan Haubenthal [Wed, 26 Nov 2025 20:02:16 +0000 (20:02 +0000)] 
patch 9.1.1928: xxd: exit_with_usage() can be simplified

Problem:  xxd: exit_with_usage() can be simplified
Solution: Clean up exit_with_usage() formatting slightly
          (Stefan Haubenthal)

closes: #18813

Signed-off-by: Stefan Haubenthal <polluks@sdf.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.1.1927: Wayland: clipboard code too complex v9.1.1927
Foxe Chen [Tue, 25 Nov 2025 22:04:58 +0000 (22:04 +0000)] 
patch 9.1.1927: Wayland: clipboard code too complex

Problem:  Wayland: clipboard code too complex
Solution: Simplify clipboard related code around W23/W24
          (Foxe Chen).

Improve Wayland and clipboard related code:

- improve documentation
- remove unused code
- fix error handling
- remove warning per Clipboard_T

closes: #18794

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agoCI: Bump actions/checkout from 5 to 6
dependabot[bot] [Tue, 25 Nov 2025 21:50:30 +0000 (21:50 +0000)] 
CI: Bump actions/checkout from 5 to 6

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

closes: #18803

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoUpdate link to XDG base specification in option.c comment
Philip H. [Sun, 23 Nov 2025 19:35:12 +0000 (19:35 +0000)] 
Update link to XDG base specification in option.c comment

closes: #18789

Co-authored-by: dkearns <dougkearns@gmail.com>
Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): Add environment variable expansion note to options
Alex Plate [Sun, 23 Nov 2025 19:30:19 +0000 (19:30 +0000)] 
runtime(doc): Add environment variable expansion note to options

Add "Environment variables are expanded |:set_env|" documentation to
options that have the P_EXPAND flag but were missing this note.

Updated options:
- 'cdpath'
- 'dictionary'
- 'mkspellmem'
- 'packpath'
- 'runtimepath'
- 'spellfile'
- 'spellsuggest'
- 'thesaurus'
- 'ttytype'
- 'undodir'
- 'verbosefile'
- 'viewdir'
- 'viminfofile'

These options support environment variable expansion in their values
(e.g., $HOME, $USER) but the documentation didn't explicitly mention
this capability. This brings their documentation in line with other
options like backupdir, directory, and makeprg that already include
this note.

closes: #18791

Signed-off-by: Alex Plate <AlexPl292@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1926: xdiff: Coverity warning with MAX_CNT/UINT_MAX usage v9.1.1926
Yee Cheng Chin [Sun, 23 Nov 2025 19:24:10 +0000 (19:24 +0000)] 
patch 9.1.1926: xdiff: Coverity warning with MAX_CNT/UINT_MAX usage

Problem:  xdiff: Coverity warning with MAX_CNT/UINT_MAX usage
          (after v9.1.1921)
Solution: Replace XDL_MIN macro to a manual check.
          (Yee Cheng Chin)

In the recent xdiff upstream sync (#18765), MAX_CNT in xhistogram was
switched back to using UINT_MAX to match upstream. This exposed an issue
in xdiff that using using min() to compare against the max integer will
not work as the number will just overflow. Switch the check to be done
in a saturating add that respects integer overflow.

related: #18765
closes: #18792

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(new-tutor): update vim-02-beginner following 48940d9
zeertzjq [Sun, 23 Nov 2025 19:19:35 +0000 (19:19 +0000)] 
runtime(new-tutor): update vim-02-beginner following 48940d9

closes: #18793

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1925: make depend does not include osdef.h v9.1.1925
Hirohito Higashi [Sun, 23 Nov 2025 18:39:36 +0000 (18:39 +0000)] 
patch 9.1.1925: make depend does not include osdef.h

Problem:  make depend does not add osdef.h for the dependencies
          (Drew Vogel)
Solution: Move ifdef PROTO (Hirohito Higashi).

fixes: #18777
closes: #18796

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(tutor): Improve style for chapter 2
Victorhck [Fri, 21 Nov 2025 18:46:27 +0000 (18:46 +0000)] 
runtime(tutor): Improve style for chapter 2

closes: #18786

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(tutor): Add Spanish translation for chapter 2
Victorhck [Fri, 21 Nov 2025 18:45:21 +0000 (18:45 +0000)] 
runtime(tutor): Add Spanish translation for chapter 2

related: #18786

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(tutor): Improve Spanish translation of chapter 1
Victorhck [Fri, 21 Nov 2025 18:43:43 +0000 (18:43 +0000)] 
runtime(tutor): Improve Spanish translation of chapter 1

related: #18786

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(haskell): Add syntax test
Doug Kearns [Fri, 21 Nov 2025 18:22:37 +0000 (18:22 +0000)] 
runtime(haskell): Add syntax test

Add a test for issue #18776 (allow spaces in backticked operators).

closes: #18783

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim): Update base syntax, match full :history command
Doug Kearns [Fri, 21 Nov 2025 18:18:51 +0000 (18:18 +0000)] 
runtime(vim): Update base syntax, match full :history command

closes: #18784

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: Fix triage labelling of maintainer runtime files
Doug Kearns [Fri, 21 Nov 2025 18:16:15 +0000 (18:16 +0000)] 
CI: Fix triage labelling of maintainer runtime files

A directory name alone does not generate matches for its contents.

closes: #18785

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1924: 'commentstring' requires +folding feature v9.1.1924
Doug Kearns [Thu, 20 Nov 2025 21:16:48 +0000 (21:16 +0000)] 
patch 9.1.1924: 'commentstring' requires +folding feature

Problem:  'commentstring' requires the +folding feature but is used in
  contexts other than folding.
Solution: Remove the +folding feature guards from 'commentstring' and
          make it available in all builds (Doug Kearns).

closes: #18731

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1923: wrong error when assigning to read-only register v9.1.1923
Doug Kearns [Thu, 20 Nov 2025 20:59:10 +0000 (20:59 +0000)] 
patch 9.1.1923: wrong error when assigning to read-only register

Problem:  When assigning to @. in a :let command an incorrect "E15"
          error is emitted.
Solution: Emit the correct "E354" error. (Doug Kearns).

An incorrect "E488" error was also emitted in Vim9 script assignments.

It appears that the code deleted in this commit was added to work around
a limitation in the returned value from find_name_end() that no longer
exists.

See commit 76b92b2830841fd4e05006cc3cad1d8f0bc8101b (tag: v7.0b).

closes: #18757

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim): Update base syntax, match :debug and :break* commands
Doug Kearns [Thu, 20 Nov 2025 20:57:15 +0000 (20:57 +0000)] 
runtime(vim): Update base syntax, match :debug and :break* commands

Match full :debug, :breakadd, :breakdel and :breaklist commands.

closes: #18748

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(compiler): set errorformat where missing
Konfekt [Thu, 20 Nov 2025 20:54:31 +0000 (20:54 +0000)] 
runtime(compiler): set errorformat where missing

As a matter of caution it sets it to the default gcc errorformat:

```
errorformat=%*[^"]"%f"%*\D%l: %m,"%f"%*\D%l: %m,%-Gg%\?make[%*\d]: *** [%f:%l:%m,%-Gg%\?make: *** [%f:%l:%m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,"%f"\, line %l%*\D%c%*[^ ] %m,%D%*\a[%*\d]: Entering directory %*[`']%f',%X%*\a[%*\d]: Leaving directory %*[`']%f',%D%*\a: Entering directory %*[`']%f',%X%*\a: Leaving directory %*[`']%f',%DMaking %*\a in %f,%f|%l| %m
```

so that the compiler keeps working after switching to others.

While likely only a subset is needed; such a subset has been proposed in
a commented errorformat;

checked to work for yamllint but ran out of steam for other compilers;

closes: #18754

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(php): Update indent script to 1.76 (from 1.75)
John Wellesz [Thu, 20 Nov 2025 20:50:54 +0000 (20:50 +0000)] 
runtime(php): Update indent script to 1.76 (from 1.75)

fixes: #18739 (editor hang on mixed syntax style)
closes: #18758

Signed-off-by: John Wellesz <john.wellesz@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(haskell): allow spaces in backticked operators in syntax script
Mirek Kratochvil [Thu, 20 Nov 2025 20:47:01 +0000 (20:47 +0000)] 
runtime(haskell): allow spaces in backticked operators in syntax script

This formatting (although rare) is actually accepted by GHC, but vim
does not highlight it. This patch adds the simplest possible regex to
support the behavior.

Inconveniently, this might trigger weird formatting on lines that
contain errors, e.g. if the first backtick is removed from:

    a `b` c `d` e

then `c` is going to be marked as an operator, which seems weird but is
valid.

closes: #18776

Signed-off-by: Mirek Kratochvil <exa.exa@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1922: Wrong virtcol('$') with virtual text at EOL v9.1.1922
zeertzjq [Thu, 20 Nov 2025 20:35:12 +0000 (20:35 +0000)] 
patch 9.1.1922: Wrong virtcol('$') with virtual text at EOL

Problem:  Wrong virtcol('$') with virtual text at EOL (rickhowe).
Solution: Also add 1 to end virtcol when there is virtual text.
          (zeertzjq)

fixes: #18761
closes: #18762

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1921: xdiff: included xdiff code is outdated v9.1.1921
Yee Cheng Chin [Thu, 20 Nov 2025 20:12:55 +0000 (20:12 +0000)] 
patch 9.1.1921: xdiff: included xdiff code is outdated

Problem:  xdiff: included xdiff code is outdated because it is based on
          git 2.40.0
Solution: Sync with xdiff from git 2.52 (Yee Cheng Chin).

Git [v2.52](https://github.com/git/git/releases/tag/v2.52.0) has just been
released. Merge from upstream to get the latest version of xdiff. Vim's xdiff
was last updated in #12181 (Patch v9.0.1418) from Git v2.33 to v2.40.

I have refined the strategy for merging from upstream a bit compared to last
time. I use the following commands to create an orphaned branch that extracts
the before/after xdiff source code from the Git codebase, and then perform a
subtree merge. The commits in the orphaned branch are reproducible
deterministically so a reviewer can reproduce the steps and it should result in
identical commit hashes (63264f229d and d741f0e230). The commands are as
follows (you could run in a separate Vim repo to keep things clean):

```bash
git remote add --no-tags git https://github.com/git/git.git
git fetch git

git switch --orphan xdiff-orig
git read-tree --reset -u 73876f4861:xdiff/  # Git v2.40.0
git rm -f xmerge.c                          # Vim doesn't use xmerge
(GIT_COMMITTER_NAME="dummy" GIT_COMMITTER_EMAIL="dummy" GIT_COMMITTER_DATE="1600000000 +0000" \
  git commit --no-gpg-sign --reuse-message=73876f4861)

git switch -c xdiff-new
git read-tree --reset -u 9a2fb147f2:xdiff/  # Git v2.52.0
git rm -f xmerge.c
(GIT_COMMITTER_NAME="dummy" GIT_COMMITTER_EMAIL="dummy" GIT_COMMITTER_DATE="1600000000 +0000" \
  git commit --no-gpg-sign --reuse-message=9a2fb147f2)

git switch master
git switch -c xdiff-upstream-v2.52.0
git merge -s ours --no-edit --allow-unrelated-histories xdiff-orig
git merge -Xsubtree=xdiff xdiff-new
```

The commit graph looks like so:

```
a005e268bd 2025-11-17 17:11:26 Yee Cheng Chin (HEAD -> xdiff-upstream-v2.52.0) Update xdiff README
*   d353c6f2c8 2025-11-17 16:26:15 Yee Cheng Chin Merge branch 'xdiff-new' into xdiff-upstream-v2.52.0
|\
| * d741f0e230 2025-11-17 07:35:33 Junio C Hamano (xdiff-new) Git 2.52
* | c4f8b15dd9 2025-11-17 16:22:30 Yee Cheng Chin Merge branch 'xdiff-orig' into xdiff-upstream-v2.52.0
|\|
| * 63264f229d 2023-03-12 14:34:41 Junio C Hamano (xdiff-orig) Git 2.40
6437997d83 2025-11-16 18:30:42 Girish Palya   (tag: v9.1.1918, origin/master, origin/HEAD, master) patch 9.1.1918: completion: crash with fuzzy completion
```

For reviewing I recommend using the following commands which simplifies the diff to only what we care about:
- `git show --remerge-diff d353c6f2c8`: This shows how my merge actually
  resolved the merge conflicts.
- `vimdiff <(git diff-tree -U0 63264f229d master:src/xdiff/) \
   <(git diff-tree -U0 d741f0e230 xdiff-upstream-v2.52.0:src/xdiff) \
   -c "silent windo %s/^index.*/index/" \
   -c "silent windo %s/^@@ [-+, 0-9]* @@/@@/"`:
This shows how the patch (downstream changes done in Vim on top of Git) has
changed. Note that some local changes for fixing compiler warnings are now gone
because they are fixed upstream.

- https://github.com/git/git/commit/d39e28e68c2b1bba25c5b1213fded95e525db15e
  added a dependency (`signed_add_overflows`) to Git code base. I replaced it
  with a custom one since it's not hard to implement.
- Upstream had fixed a lot of compiler warnings with signed/unsigned integers,
  so the compiler warning fixes that were done in Vim downstream were removed.
- Replace new `BUG()` calls with `xdl_bug()` where we use Vim's assertion
  mechanisms instead.

- Performance improvement due to optimizations in the line hashing function
  (https://github.com/git/git/commit/41d97837ab1e5a35fdcfd7f6af9b5d56af62e92a and
   https://github.com/git/git/commit/a4bbe8af0b48f9c80ccc2c4619309c4a81c1460a).
  - From personal unscientific testing (Apple M1 Max, macOS 15), when using the
    new xdiff, for simple/normal diff's this could result in **11%/29%** overall
    diff speed improvement. For larger more pathologically complicated diff this
    results in a more modest **4%/7%** improvement.
  - The two improvement numbers above are for compiling Vim with `-O3 -flto` vs
    `-O2`. The more optimized version of Vim results in lower performance
    improvement as it was already doing inlining via link-time-optimization
    before.
  - Just for reference, the command I used to test this was the following (use
    either test case and comment out the other one):
    ```bash
    # Simple/normal diff test case
    (COMMIT=0d9160e11ce; git show ${COMMIT}:src/diff.c > test1.txt; git show ${COMMIT}~:src/diff.c > test2.txt)
    # Larger diff test case
    (COMMIT=9670f61d468; git show ${COMMIT}:src/auto/configure > test1.txt; git show ${COMMIT}~:src/auto/configure > test2.txt)

    # Build Vim with old/new xdiff, then copy ./src/vim to ./src/vim_orig / ./src/vim_new respectively.
    hyperfine --warmup 4 --runs 20 -L vimcmd vim_orig,vim_new \
        "./src/{vimcmd} -u NONE -U NONE -es -V1 -c \"let g:f1=readfile('test1.txt')\" -c \"let g:f2=readfile('test2.txt')\" -c \"for i in range(1,200) | call diff(g:f1, g:f2) | endfor\" -c 'q'"
    ```

closes: #18765

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1920: tests: not enough testing for wildtrigger() pum redrawing v9.1.1920
zeertzjq [Thu, 20 Nov 2025 19:52:18 +0000 (19:52 +0000)] 
patch 9.1.1920: tests: not enough testing for wildtrigger() pum redrawing

Problem:  tests: not enough testing for wildtrigger() pum redrawing.
Solution: Also test redrawing when leaving cmdline mode (zeertzjq).

closes: #18773

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: Switch to macOS 26 runner
Philip H. [Thu, 20 Nov 2025 19:50:00 +0000 (19:50 +0000)] 
CI: Switch to macOS 26 runner

closes: #18775

Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(c): Update signal constants in syntax script
Harry [Tue, 18 Nov 2025 20:50:39 +0000 (20:50 +0000)] 
runtime(c): Update signal constants in syntax script

closes: #18763

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Harry <166658338+harrystevens4@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1919: tabpanel: cannot handle mouse clicks in command line v9.1.1919
Hirohito Higashi [Tue, 18 Nov 2025 20:10:14 +0000 (20:10 +0000)] 
patch 9.1.1919: tabpanel: cannot handle mouse clicks in command line

Problem:  tabpanel: cannot handle mouse clicks in command line
          (char101, after v9.1.1898)
Solution: Update the condition that checks if the mouse pointer is on
          the command line (Hirohito Higashi)

closes: #18771

Co-authored-by: Charles <char101@ui.ac.id>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(netrw): Use proper UNC notation for temp files
Miguel Barro [Tue, 18 Nov 2025 20:06:06 +0000 (20:06 +0000)] 
runtime(netrw): Use proper UNC notation for temp files

closes: #18764

Signed-off-by: Guybrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(compiler): expand errorformats in maven compiler
Konfekt [Tue, 18 Nov 2025 19:49:01 +0000 (19:49 +0000)] 
runtime(compiler): expand errorformats in maven compiler

matches malformed POM error messages and tries to catch other tools
as well.

closes: #18768

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): Remove :runtime completion (#11447) todo item
Doug Kearns [Tue, 18 Nov 2025 19:44:16 +0000 (19:44 +0000)] 
runtime(doc): Remove :runtime completion (#11447) todo item

This was fixed in commit a6759381a590b2d395e05b109ca9ccfc356be5a8.

closes: #18769

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.1.1918: completion: crash with fuzzy completion v9.1.1918
Girish Palya [Sun, 16 Nov 2025 18:30:42 +0000 (18:30 +0000)] 
patch 9.1.1918: completion: crash with fuzzy completion

Problem:  completion: crash with fuzzy completion
          (Christian Brabandt)
Solution: When completion candidates are gathered from a different
          window, and when completing `<c-p>`, linked list should be
          sorted only after all items are collected (Girish Palya).

fixes: #18752
closes: #18756

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agotranslation(it): Update Italian translation
Antonio Giovanni Colombo [Sun, 16 Nov 2025 17:31:43 +0000 (17:31 +0000)] 
translation(it): Update Italian translation

Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.1.1917: Vim9: incorrect type inference with mkdir() v9.1.1917
Yegappan Lakshmanan [Sat, 15 Nov 2025 17:41:28 +0000 (17:41 +0000)] 
patch 9.1.1917: Vim9: incorrect type inference with mkdir()

Problem:  Vim9: incorrect type inference with mkdir()
          (dezza)
Solution: Before compiling a RHS expression in an assignment, save the
          new local variable contents (Yegappan Lakshmanan)

fixes: #18751
closes: #18751

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.1.1916: WinEnter autocommand confuses Vim when closing tabpage v9.1.1916
Christian Brabandt [Sat, 15 Nov 2025 17:30:58 +0000 (17:30 +0000)] 
patch 9.1.1916: WinEnter autocommand confuses Vim when closing tabpage

Problem:  WinEnter autocommand may confuse Vim when closing tabpage
          (hokorobi)
Solution: Verify that curwin did not change in close_others()

fixes: #18722
closes: #18733

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(compiler): Remove version check in rustc compiler
Konfekt [Sat, 15 Nov 2025 17:18:41 +0000 (17:18 +0000)] 
runtime(compiler): Remove version check in rustc compiler

closes: #18347

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(compiler): add biome linter
Konfekt [Sat, 15 Nov 2025 10:38:35 +0000 (10:38 +0000)] 
runtime(compiler): add biome linter

closes: #18685

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(vim): Update base syntax and generator, match :cd commands
Doug Kearns [Sat, 15 Nov 2025 10:17:17 +0000 (10:17 +0000)] 
runtime(vim): Update base syntax and generator, match :cd commands

Match :cd commands explicitly.

fixes: #17964
closes: #18736

Reported by Maxim Kim.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.1.1915: :breaklist accepts unprocessed arguments. v9.1.1915
Doug Kearns [Sat, 15 Nov 2025 10:13:25 +0000 (10:13 +0000)] 
patch 9.1.1915: :breaklist accepts unprocessed arguments.

Problem:  :breaklist accepts unprocessed arguments.
Solution: Remove EX_EXTRA flag from the Ex command definition.
          (Doug Kearns)

The command should emit an "E488: Trailing characters" error rather than
silently accept arguments.

closes: #18746

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(new-tutor): escape tutor filename
Andrey Starodubtsev [Thu, 13 Nov 2025 21:49:20 +0000 (21:49 +0000)] 
runtime(new-tutor): escape tutor filename

If Vim is installed into the Windows "Program Files" directory the tutor
path name contains spaces and must therefore be quoted before passing to
:drop.

closes: #18742

Signed-off-by: Andrey Starodubtsev <andrey.starodubtsev@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.1.1914: runtime(netrw): wipes unnamed buffers v9.1.1914
Christian Brabandt [Thu, 13 Nov 2025 21:11:51 +0000 (21:11 +0000)] 
patch 9.1.1914: runtime(netrw): wipes unnamed buffers

Problem:  runtime(netrw): LocalBrowseCheck() wipes unnamed buffers when
          g:netrw_fastbrowse=0 (Carlos Falgueras García)
Solution: Check that bufname() is not empty

fixes: #18740
closes: #18741

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agopatch 9.1.1913: Error message with :unlet! and non-existing dictionary item v9.1.1913
Christian Brabandt [Thu, 13 Nov 2025 21:06:43 +0000 (21:06 +0000)] 
patch 9.1.1913: Error message with :unlet! and non-existing dictionary item

Problem:  Error message with :unlet! and non-existing dictionary item
          (Coacher)
Solution: Set GLV_QUIET when using unlet with bang attribute

fixes: #18516
closes: #18734

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 weeks agoruntime(doc): Wrap overlength lines in uganda.txt
Doug Kearns [Thu, 13 Nov 2025 21:01:42 +0000 (21:01 +0000)] 
runtime(doc): Wrap overlength lines in uganda.txt

Wrap overlength lines and normalise URL indentation.

closes: #18737

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>