]> git.feebdaed.xyz Git - 0xmirror/vim.git/log
0xmirror/vim.git
3 hours agopatch 9.1.2028: [security]: Buffer-overflow with incomplete multi-byte chars master
Christian Brabandt [Sat, 27 Dec 2025 15:43:37 +0000 (15:43 +0000)]
patch 9.1.2028: [security]: Buffer-overflow with incomplete multi-byte chars

Problem:  Buffer overflow in buf_write() when converting incomplete
          multi-byte characters (Kevin Goodsell)
Solution: Make the buffer slightly larger

closes: #19007

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 hours agoruntime(bpftrace): add indention plugin
Stanislaw Gruszka [Sat, 27 Dec 2025 15:37:53 +0000 (15:37 +0000)]
runtime(bpftrace): add indention plugin

Problem:  No indention support when editing bpftrace files.
Solution: Add indention settings based on cindent with custom options.

closes: #19030

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 hours agotranslation(zh_CN): Update the Simplify Chinese translation
Mao-Yining [Sat, 27 Dec 2025 15:33:21 +0000 (15:33 +0000)]
translation(zh_CN): Update the Simplify Chinese translation

closes: #19031

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 hours agoruntime(doc): improve :catch documentation
Mao-Yining [Sat, 27 Dec 2025 15:28:26 +0000 (15:28 +0000)]
runtime(doc): improve :catch documentation

related: #18984
closes:  #19029

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 hours agopatch 9.1.2027: filetype: bicep filetype used for 2 bicep file types
Scott McKendry [Sat, 27 Dec 2025 15:15:35 +0000 (15:15 +0000)]
patch 9.1.2027: filetype: bicep filetype used for 2 bicep file types

Problem:  filetype: bicep filetype used for 2 bicep file types
Solution: Detect *.bicepparam files as bicep-param filetype, include
          new bicep-params and bicep filetype plugin
          (Scott McKendry)

The bicep language server handles parameter files differently than
regular bicep files. Treating them the same at the editor level leads to
false positive diagnostics in the editor.

References:

Bicep Language Constants:
- https://github.com/Azure/bicep/blob/51392d32ca2c8b94b1bb7a255e78e1d559d12573/src/Bicep.Core/LanguageConstants.cs#L23
VS Code Extension definition:
- https://github.com/Azure/bicep/blob/51392d32ca2c8b94b1bb7a255e78e1d559d12573/src/vscode-bicep/package.json#L47

closes: #19026

Signed-off-by: Scott McKendry <me@scottmckendry.tech>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 hours agopatch 9.1.2026: tests: patch 9.1.2019 not tested properly
zeertzjq [Sat, 27 Dec 2025 15:07:52 +0000 (15:07 +0000)]
patch 9.1.2026: tests: patch 9.1.2019 not tested properly

Problem:  tests: patch 9.1.2019 not tested properly.
Solution: Add missing :exe (zeertzjq).

closes: #19028

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 hours agopatch 9.1.2025: conpty terminal process may not start
Muraoka Taro [Sat, 27 Dec 2025 14:36:31 +0000 (14:36 +0000)]
patch 9.1.2025: conpty terminal process may not start

Problem:  Conpty terminal process may not start.
Solution: Do not close the input handle at EOF when conpty is in use.
          (Muraoka Taro)

It causes the following tests to fail in Windows conpty:

          - Test_terminal_duplicate_eof_arg()
          - Test_terminal_eof_arg()
          - Test_terminal_eof_arg_win32_ctrl_z()

To be precise, the process is launched, but immediately after it is
launched, the input handle to the console is closed with the EOF of the
input, and the console is terminated. When the console is terminated,
the associated process is also terminated.

In the Windows pseudo console, input and output handles are closed after
the process in the console has terminated.  This is not explicitly
stated in Microsoft's documentation.  However, looking at the code for
Windows Terminal, which is presented as a complete example of the pseudo
console, it is implemented exactly this way.

See the sample codes below:

- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/EchoCon/EchoCon/EchoCon.cpp
- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/GUIConsole/GUIConsole.ConPTY/Terminal.cs
- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/MiniTerm/MiniTerm/Terminal.cs

The handle that is not closed at EOF is closed when Vim detects the end
of the job, so there is no risk of them being forgotten and leaking.

`ch_anonymous_pipe`, which was used to determine whether a channel was
for conpty, was set to TRUE only when conpty was being used. The
definition also had the comment `// ConPTY` attached to it.  This name
is not very appropriate, but I felt it would be rude to add a new field
to `channel_T` just for this purpose, so I reused it.

closes: #19025

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 hours agopatch 9.1.2024: 'fsync' option cannot be set per buffer
glepnir [Sat, 27 Dec 2025 14:26:38 +0000 (14:26 +0000)]
patch 9.1.2024: 'fsync' option cannot be set per buffer

Problem:  'fsync' option cannot be set per buffer
Solution: Make 'fsync' option global-local
          (glepnir)

closes: #19019

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 hours agopatch 9.1.2023: [security]: Use-after-free in alist_add() with nasty autocmd
Christian Brabandt [Sat, 27 Dec 2025 14:10:37 +0000 (14:10 +0000)]
patch 9.1.2023: [security]: Use-after-free in alist_add() with nasty autocmd

Problem:  A BufAdd autocommand may cause alist_add() to use freed
          memory, this is caused by the w_locked variable unset too
          early (henices)
Solution: in trigger_undo_ftplugin() only set w_locked to false, if it
          was false when calling the function.

related: v9.1.0678
closes: #19023

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 hours agoruntime(compiler): add pyright Python type checker
Konfekt [Sat, 27 Dec 2025 14:07:21 +0000 (14:07 +0000)]
runtime(compiler): add pyright Python type checker

closes: #19017

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
26 hours agoruntime(doc): remove some fixed items from todo.txt
Mao-Yining [Fri, 26 Dec 2025 16:01:31 +0000 (16:01 +0000)]
runtime(doc): remove some fixed items from todo.txt

closes: #19024

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
26 hours agopatch 9.1.2022: using C++ keyword class as member variable name
Wei Tang [Fri, 26 Dec 2025 15:54:46 +0000 (15:54 +0000)]
patch 9.1.2022: using C++ keyword class as member variable name

Problem:  A recent commit introduced a member variable named `class` in
          the `exarg` structure, which conflicts with the C++ keyword
          `class`. This causes compilation issues on Windows when VIM
          is compiled with OLE enabled, as "if_ole.cpp" cannot compile
          due to the keyword conflict (after v9.1.2012).
Solution: Rename the member variable of `exarg` from `class` to `ea_class`.
          (Wei Tang)

related: #18949
closes:  #19016

Signed-off-by: Wei Tang <gauchyler@uestc.edu.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
26 hours agoruntime(netrw): Fix reading UNC paths on windows
tao [Fri, 26 Dec 2025 15:51:32 +0000 (15:51 +0000)]
runtime(netrw): Fix reading UNC paths on windows

Problem:  When Vim is launched with a UNC directory, netrw treats it as a
          relative path and compose it again.
Solution: This is due to `exists("g:netrw_cygwin")` always being true.
          We can directly use `g:netrw_cygwin`.

closes: #19015

Signed-off-by: tao <2471314@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agoruntime(compiler): ignore 'Found' messages in ruff and ty compiler
Konfekt [Fri, 26 Dec 2025 15:33:39 +0000 (15:33 +0000)]
runtime(compiler): ignore 'Found' messages in ruff and ty compiler

while at it, also update the ty command line

closes: #19012

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agopatch 9.1.2021: filetype: fluent files are not recognized
ners [Fri, 26 Dec 2025 15:27:19 +0000 (15:27 +0000)]
patch 9.1.2021: filetype: fluent files are not recognized

Problem:  filetype: fluent files are not recognized
Solution: Detect *.ftl files as fluent filetype (ners)

References:
- https://projectfluent.org/

closes: #19011

Signed-off-by: ners <ners@gmx.ch>
Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agoruntime(termdebug): update v:shell_error condition test.
Miguel Barro [Fri, 26 Dec 2025 15:19:41 +0000 (15:19 +0000)]
runtime(termdebug): update v:shell_error condition test.

vim9 conditions only admit 0 or 1 integers, however the return value of
shells is not limited to either 0 or 1 (e.g. powershell)

closes: #19010

Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agopatch 9.1.2020: tests: test_virtualedit.vim leaves swapfiles behind
Christian Brabandt [Fri, 26 Dec 2025 15:16:46 +0000 (15:16 +0000)]
patch 9.1.2020: tests: test_virtualedit.vim leaves swapfiles behind

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

Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agopatch 9.1.2019: inconsistent cursor encoding past EOL with ve=all
McAuley Penney [Fri, 26 Dec 2025 15:10:01 +0000 (15:10 +0000)]
patch 9.1.2019: inconsistent cursor encoding past EOL with ve=all

Problem:  When virtualedit is set to all, the cursor is supposed to be
          permitted to reside anywhere, including on the virtual space
          beyond the end of the buffer's text. Switching modes triggered
          a routine that "fixed" a cursor that was past the end of the
          line by shifting it back to the last actual character in the
          line and compensating with a virtual column offset. While
          visually identical, this re-encoding changed the underlying
          byte index, causing position-reporting functions to return
          inconsistent values after a mode change.
Solution: Skip this coordinate adjustment when virtual editing is fully
          enabled. By treating the line terminator as a valid, stable
          position, the cursor’s internal representation remains
          unchanged when entering or exiting Visual mode, ensuring
          consistent coordinate reporting. Add a regression test to
          check this functionality.
          (McAuley Penney)

fixes:  #16276
closes: #19009

Signed-off-by: McAuley Penney <jacobmpenney@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agopatch 9.1.2018: proto: ops.pro outdated
tao [Fri, 26 Dec 2025 15:04:24 +0000 (15:04 +0000)]
patch 9.1.2018: proto: ops.pro outdated

Problem:  proto: ops.pro outdated (after v9.1.2017)
Solution: Regenerate the ops.pro proto file (Tao)

closes: #19018

Signed-off-by: tao <2471314@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
27 hours agoruntime(osc52): A few minor fixes
Foxe Chen [Fri, 26 Dec 2025 14:59:01 +0000 (14:59 +0000)]
runtime(osc52): A few minor fixes

- If g:osc52_disable_paste is enabled, then return an empty list instead
  of a list with a single empty string.
- use `echo` instead of `echom` when printing osc waiting message

closes: #19002

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): add reference to searchcount() function
Christian Brabandt [Tue, 23 Dec 2025 22:22:38 +0000 (22:22 +0000)]
runtime(doc): add reference to searchcount() function

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): Improve :catch documentation
Christian Brabandt [Tue, 23 Dec 2025 21:58:57 +0000 (21:58 +0000)]
runtime(doc): Improve :catch documentation

fixes: #18984

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(make): Makefile highlighting breaks with ')' in string
Beleswar Prasad Padhi [Tue, 23 Dec 2025 21:32:10 +0000 (21:32 +0000)]
runtime(make): Makefile highlighting breaks with ')' in string

Problem:  Makefile syntax highlighting incorrectly ends function calls
          when encountering ')' inside double or single quoted strings,
          causing incorrect highlighting for the remainder of the line.
Solution: Add makeDString and makeSString to the contains list for
          makeIdent regions. This allows strings to be recognized inside
          variable references and function calls.

fixes:  #18687
closes: #18818

Signed-off-by: Beleswar Prasad Padhi <beleswarprasad@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(make): Move target greedy match after $() to avoid region matching overflow
Yiyang Wu [Tue, 23 Dec 2025 21:25:04 +0000 (21:25 +0000)]
runtime(make): Move target greedy match after $() to avoid region matching overflow

Partially revert 2a33b499a3d7f46dc307234847a6562cef6cf1d8, where all
syn match makeIdent are moved before syn region makeIdent to match $()
(reason: see https://github.com/vim/vim/pull/18403#issuecomment-3341161566)

However this results in https://github.com/vim/vim/issues/18890 ,
because lines like
`$(a) =`
will first start a region search beginning with `$(`
but then the whole target including `)` will be matched by
`syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1`
which leaves the region search for the never-found `)` and let the
region matching overflow.

Same for

`$(a) ::`
`$(a) +=`

The solution is to move those greedy target match back, so they take
priority and prevents region match from happening.

fixes:  #18890
closes: #18938

Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.2017: getregionpos() depends on 'linebreak' setting
McAuley Penney [Tue, 23 Dec 2025 20:51:25 +0000 (20:51 +0000)]
patch 9.1.2017: getregionpos() depends on 'linebreak' setting

Problem:  getregionpos() depends on 'linebreak' setting
Solution: Reset linebreak setting temporarily (McAuley Penney)

When a line is wrapped on word boundaries, getregionpos() may report a
different end column for a visual block than the cursor position used to
define the selection.

Update the blockwise calculation in getregionpos() to use the same
wrapping assumptions as visual block mode, so the reported region
matches the selection boundaries.

Add a regression test that forces wrapping and checks that the end
position stays consistent under "setlocal wrap" and "setlocal
linebreak".

closes: #19006

Signed-off-by: McAuley Penney <jacobmpenney@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.2016: cindent wrong indentation after do-while loop
Anttoni Erkkilä [Tue, 23 Dec 2025 20:42:57 +0000 (20:42 +0000)]
patch 9.1.2016: cindent wrong indentation after do-while loop

Problem:  At "if(0) do if(0); while(0); else", else should be aligned
          with outer if, but is aligned with inner if.
Solution: In function find_match, ignore "if" and "else" inside a
          do-while loop, when looking for "if". (Anttoni Erkkilä)

closes: #19004

Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.2015: blob2string() stopped after an empty line
Foxe Chen [Tue, 23 Dec 2025 20:37:19 +0000 (20:37 +0000)]
patch 9.1.2015: blob2string() stopped after an empty line

Problem:  blob2string() stopped after an empty line
Solution: Specifically check for empty content (Foxe Chen)

closes: #19001

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.2014: clipboard: clipboard register corrupted with clipboard provider
Foxe Chen [Tue, 23 Dec 2025 20:29:08 +0000 (20:29 +0000)]
patch 9.1.2014: clipboard: clipboard register corrupted with clipboard provider

Problem:  clipboard: clipboard register corrupted with clipboard
          provider (Satoru Kitaguchi and mikoto2000 after v9.1.1972)
Solution: Only adjust clipboard register points to the unnamed register
          (Foxe Chen)

fixes:  #18983
fixes:  #18988
closes: #19000

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.2013: tests: Test_terminal_shell_option fails with conpty
Muraoka Taro [Tue, 23 Dec 2025 20:22:54 +0000 (20:22 +0000)]
patch 9.1.2013: tests: Test_terminal_shell_option fails with conpty

Problem:  tests: When opening a conpty terminal, if process startup
          fails, it will silently exit.  As a result, the
          Test_terminal_shell_option in test_terminal3.vim failed in
          conpty.

          In a winpty terminal, the winpty-provided error message
          "CreateProcess failed" was displayed.  The test is designed to
          catch this error as an exception.

Solution: Make conpty fail with an error messages in the same way as winpty.
          (Muraoka Taro)

In addition, since the GetWin32Error() function can obtain more detailed
error messages, the format has been changed to "CreateProcess failed:
{localized message from the OS}" for conpty.

Also, since the GetWin32Error() function returns errors in ACP (Active
Code Page) encoding, these have been converted to Vim's internal
encoding, enc.  This will prevent messages from being garbled in
Japanese environments, etc.  The output of this function was basically
used by the semsg() function in other places, so this change also fixes
potential similar garbled characters.

The test now errors out immediately in places where it is expected not
to be reached, and comments have been added about the expected content
of the winpty and conpty error messages.

closes: #18998

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.2012: Vim9: cannot initialize class member with protected var
Foxe Chen [Tue, 23 Dec 2025 20:17:30 +0000 (20:17 +0000)]
patch 9.1.2012: Vim9: cannot initialize class member with protected var

Problem:  Vim9: cannot initialize class member with protected var
Solution: Allow this to work if this happens within the same class
          (Foxe Chen)

closes: #18949

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(ftplugin): set different formatoptions for bpftrace
Stanislaw Gruszka [Tue, 23 Dec 2025 20:15:14 +0000 (20:15 +0000)]
runtime(ftplugin): set different formatoptions for bpftrace

Problem:   Comment formatting does not work by default for bpftrace.
Solution:  Change default 'formatoptions' similarly as C and many other
           languages.

closes: #18996

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.2011: crash when unreferencing gtk icon theme
Christian Brabandt [Mon, 22 Dec 2025 18:59:50 +0000 (18:59 +0000)]
patch 9.1.2011: crash when unreferencing gtk icon theme

Problem:  crash when unreferencing gtk icon theme
          (noamhalevy-wq, after v9.1.1583)
Solution: Remove the g_object_unref() call.

gtk_icon_theme_get_default() returns a singleton that should NOT be
unreferenced. From GTK documentation:

> A unique GtkIconTheme associated with the default screen. This icon
theme is associated with the screen and can be used as long as the
screen is open. Do not ref or unref it.

fixes: #18997

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.2010: Missing out-of-memory checks in vim9class.c
John Marriott [Mon, 22 Dec 2025 18:49:43 +0000 (18:49 +0000)]
patch 9.1.2010: Missing out-of-memory checks in vim9class.c

Problem:  Missing out-of-memory checks in vim9class.c
          (after v9.1.2000)
Solution: Return FAIL early (John Marriott)

closes: #18991

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agoruntime(bpftrace): add base syntax plugin
Stanislaw Gruszka [Mon, 22 Dec 2025 18:46:44 +0000 (18:46 +0000)]
runtime(bpftrace): add base syntax plugin

Problem:  No syntax highlighting for bpftrace files.
Solution: Add basic syntax rules, which cover comments, keywords, strings,
          numbers, macros and probes (the bpftrace specific items).

closes: #18999

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2009: tests: "Xm4" test directory may not be deleted
Muraoka Taro [Mon, 22 Dec 2025 18:33:50 +0000 (18:33 +0000)]
patch 9.1.2009: tests: "Xm4" test directory may not be deleted

Problem:  tests: "Xm4" test directory may not be deleted
Solution: Use "R" flag with mkdir() call to have the directory
          recursively deleted at the end of function Test_m4_format()
          (Muraoka Taro)

Test_m4_format in test_filetype.vim creates the "Xm4" directory with the
'D' flag. Then it creates two files in the "Xm4" directory. One of them,
"alocal.m4," was created with the 'D' flag, so it will disappear after
the test is complete. However, the other, "configure.ac," was created
without any flags, so it will remain even after the test is complete.
Because the parent directory "Xm4" was created with the 'D' flag, the
latter "configure.ac" remains and is not empty, so it will not be
deleted.

This forces the directory to be deleted regardless of its contents. As a
result, the two files "alocal.m4" and "configure.ac" created in the
directory are no longer needed, so they have been deleted.

closes: #18995

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2008: filetype: hylo files are not recognized
Ambrus Tóth [Mon, 22 Dec 2025 18:26:52 +0000 (18:26 +0000)]
patch 9.1.2008: filetype: hylo files are not recognized

Problem:  filetype: hylo files are not recognized
Solution: Detect *.hylo files as hylo filetype (Ambrus Tóth)

References:
- https://hylo-lang.org/

closes: #18994

Signed-off-by: Ambrus Tóth <ping@ambrus.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agotranslation(sr): Update Serbian message translation
Ivan Pešić [Mon, 22 Dec 2025 18:21:01 +0000 (18:21 +0000)]
translation(sr): Update Serbian message translation

closes: #18993

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2007: filetype: bpftrace hashbang lines are not recognized
Stanislaw Gruszka [Mon, 22 Dec 2025 18:17:36 +0000 (18:17 +0000)]
patch 9.1.2007: filetype: bpftrace hashbang lines are not recognized

Problem:    bpftrace files are not recognized from the hashbang line.
Solution:   Add a hashbang check (Stanislaw Gruszka)

closes: #18992

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2006: MS-Windows: ANSI colors not correct in terminal
Muraoka Taro [Sun, 21 Dec 2025 19:42:23 +0000 (19:42 +0000)]
patch 9.1.2006: MS-Windows: ANSI colors not correct in terminal

Problem:  ANSI escape colors are not displayed correctly in
          non-termguicolors in vim (cli) on Windows. The red and blue
          channels seem to be swapped.
Cause:    When converting VTerm ANSI index colors to cterm colors in
          terminal.c, the Windows case equivalent to NR-16 (:help
          cterm-colors) is ignored.
Solution: Created and used a table to convert ANSI indexed colors to
          cterm's NR-16 representation (Windows only). This table
          corresponds to the inverse conversion of cterm_ansi_idx in
          term.c. The values in both tables are exactly the same, but
          the meanings are opposite, so they are separate tables
          (Muraoka Taro).

closes: #18931

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agoruntime(doc): Improve :help builtin-function-list table formatting
Doug Kearns [Sun, 21 Dec 2025 19:37:10 +0000 (19:37 +0000)]
runtime(doc): Improve :help builtin-function-list table formatting

- Start each field at the correct tabstop - on a new line if required.
- Use "Type1/Type2" for return types rather than "Type1 or Type2",
  matching the dominant style.
- Convert hyperlinked Ex commands to command markup, `:cmd`.
- Wrap overlong lines.

closes: #18438

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2005: MS-Windows: Missing fullscreen support for GUI version
Mao-Yining [Sun, 21 Dec 2025 19:31:24 +0000 (19:31 +0000)]
patch 9.1.2005: MS-Windows: Missing fullscreen support for GUI version

Problem:  MS-Windows: Missing fullscreen support for GUI version
Solution: Add "s" flag to guioptions (Mao-Yining)

- Implement fullscreen mode controlled by the 'go-s' flag in 'guioptions'
- Update documentation with usage examples and platform-specific details

See :help 'go-s' and :help gui-w32-fullscreen for complete documentation.

closes: #18836

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2004: MS-Windows: executable() cannot find file in directory with single...
Muraoka Taro [Sun, 21 Dec 2025 19:19:39 +0000 (19:19 +0000)]
patch 9.1.2004: MS-Windows: executable() cannot find file in directory with single char

Problem:  MS-Windows: If a directory with a single character name is
          included in the PATH environment variable without a trailing
          path separator, executable() will not be able to find the
          executable file under it.
Solution: The second argument of the after_pathsep() function is now
          passed the next pointer where a path separator may exist
          (Muraoka Taro).

As a specific example, the default installation path for PowerShell v7
is "C:\Program Files\PowerShell\7", but if you set this as is in the
PATH environment variable, Vim will not be able to find the pwsh.exe
command. In this case, Vim will try to search for "C:\Program
Files\PowerShell\7pwsh.exe".

Cause: The after_pathsep() function determines whether the location
passed as its second argument immediately follows a path separator.
However, in the code where the problem occurred, the second argument was
passed a location that might contain a path separator. As a result, it
was mistakenly determined that a path separator was present in cases
where the final directory name was a single character and not followed
by a path separator, and the path to search was incorrect.

closes: #18979

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agoruntime(ty): include ty compiler plugin
Konfekt [Sun, 21 Dec 2025 19:17:14 +0000 (19:17 +0000)]
runtime(ty): include ty compiler plugin

closes: #18960

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2003: tests: Test_glob_symlinks may fail on Window
Muraoka Taro [Sun, 21 Dec 2025 19:09:20 +0000 (19:09 +0000)]
patch 9.1.2003: tests: Test_glob_symlinks may fail on Window

Problem:  tests: Test_glob_symlinks may fail on Windows with UCRT
          runtime
Solution: Comment out the code, do not use _wstat().
          (author)

For Test_glob_symlinks() to succeed, vim_stat() (which is actually
mswin_stat_impl()) must fail on empty symlinks.  When the dynamically
linked C runtime is linked, _wstat() succeeds even on empty symbolic
links. As a result, Test_glob_symlinks() fails.

For details, see here:
https://github.com/koron/vc-stat-behavior-verification

closes: #18962

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.2002: Vim9: heap-use-after-free when when accessing protect class member
Yegappan Lakshmanan [Sun, 21 Dec 2025 19:03:31 +0000 (19:03 +0000)]
patch 9.1.2002: Vim9: heap-use-after-free when when accessing protect class member

Problem:  Vim9: heap-use-after-free when when accessing protect class
          member (Foxe Chen)
Solution: Set cl->class_type_list and return directly, add tests for
          using protected class method and variable from another class
          (Yegappan Lakshmanan).

closes: #18971

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agorefactor(vim9): use 'start' open urls on win32
Mao-Yining [Sun, 21 Dec 2025 18:59:48 +0000 (18:59 +0000)]
refactor(vim9): use 'start' open urls on win32

- Use `:!start` directly, discard the using of `explorer.exe`.
- Update the document in `eval.txt`.

closes: #18985

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(vim9): Reset pwsh and powershell in Open()
Mao-Yining [Sun, 21 Dec 2025 18:45:26 +0000 (18:45 +0000)]
runtime(vim9): Reset pwsh and powershell in Open()

relates: #17995
closes:  #18986

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agotranslation(hy): Update Armenian language translation
gagik [Sun, 21 Dec 2025 18:42:18 +0000 (18:42 +0000)]
translation(hy): Update Armenian language translation

closes: #18990

Signed-off-by: gagik <hakgagik@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(openPlugin): start :Launch process in the background in GUI mode
Mateo Gjika [Sun, 21 Dec 2025 09:47:38 +0000 (09:47 +0000)]
runtime(openPlugin): start :Launch process in the background in GUI mode

fixes:  #18977
closes: #18981

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agotranslation(zh_CN): Add license disclaimer
Mao-Yining [Sat, 20 Dec 2025 18:29:16 +0000 (18:29 +0000)]
translation(zh_CN): Add license disclaimer

Added disclaimer to clarify that the Chinese translation is for
reference only and is not legally binding. The original English version
of the license is the sole authoritative text. No liability is accepted
for any ambiguities or errors arising from the translation.

closes: #18980

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(getscript): GLVS plugin fails with wget.exe with PowerShell
Muraoka Taro [Sat, 20 Dec 2025 18:13:18 +0000 (18:13 +0000)]
runtime(getscript): GLVS plugin fails with wget.exe with PowerShell

Problem:  Only Windows: The GLVS plugin fails in a PowerShell Desktop if
          wget.exe is installed. The PowerShell Desktop has an alias
          called wget which hides wget.exe.
Solution: Force .exe extension if wget.exe is available.

closes: #18987

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(doc): Fix "Vim script" formatting at :help clipboard-providers
Doug Kearns [Sat, 20 Dec 2025 17:39:32 +0000 (17:39 +0000)]
runtime(doc): Fix "Vim script" formatting at :help clipboard-providers

closes: #18966

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.2001: cursor may end up in wrong window after :botright copen
glepnir [Sat, 20 Dec 2025 17:26:39 +0000 (17:26 +0000)]
patch 9.1.2001: cursor may end up in wrong window after :botright copen

Problem:  After :botright copen and closing the quikfix window, the
          cursor ends up in the wrong window. The problem is fr_child
          always points to the first (leftmost for FR_ROW, topmost for
          FR_COL) child frame. When do :vsplit, the new window is
          created on the left, and frame_insert() updates the parent's
          fr_child to point to this new left window.
Solution: Create a snapshot before open the quickfix window and restore
          it when close it (glepnir).

closes: #18961

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(doc): clarify the behavior of CTRL-Z
Christian Brabandt [Sat, 20 Dec 2025 16:54:07 +0000 (16:54 +0000)]
runtime(doc): clarify the behavior of CTRL-Z

fixes: #18975

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(zip): Use :lcd instead of :cd in zip.vim
zoumi [Sat, 20 Dec 2025 16:25:16 +0000 (16:25 +0000)]
runtime(zip): Use :lcd instead of :cd in zip.vim

closes: #18967

Signed-off-by: zoumi <zoumi@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agopatch 9.1.2000: Vim9: object member used char_u pointers
John Marriott [Sat, 20 Dec 2025 16:00:17 +0000 (16:00 +0000)]
patch 9.1.2000: Vim9: object member used char_u pointers

Problem:  Vim9: class and object member names are stored as char_u *
          pointer requiring repeated strlen() calls and making it harder
          to use length-aware string operations consistently.
Solution: Store ocm_name as a string_T instead of char_u *
          (John Marriott).

In addition in vim9class.c:
1: change some calls from ga_concat() to ga_concat_len() where the
   length is known.
2: in ex_class() remove unneeded variable name.
3. in intf_method_present() remove unneeded variable cl_name.
4: in update_member_method_lookup_table() move some assignments from
   inner loops into outer loops.
5: in member_lookup() remove unneeded else.
6: in is_duplicate_variable() and is_duplicate_enum() rearrange the
   string comparisons to first check the lengths match.

closes: #18973

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agotranslation(hy): Update Armenian language translation
gagik [Sat, 20 Dec 2025 15:55:40 +0000 (15:55 +0000)]
translation(hy): Update Armenian language translation

closes: #18969

Signed-off-by: gagik <hakgagik@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agotranslation(zh_CN): Update the Simplify Chinese translation
Mao-Yining [Sat, 20 Dec 2025 15:45:36 +0000 (15:45 +0000)]
translation(zh_CN): Update the Simplify Chinese translation

closes: #18978

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
7 days agoruntime(doc): fix outdated :function help
zeertzjq [Sat, 20 Dec 2025 15:24:57 +0000 (15:24 +0000)]
runtime(doc): fix outdated :function help

Since patch 7.4.264 a leading "g:" is skipped.

closes: #18976

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(osc52): Update documentation, send DA1 query when loading package
Foxe Chen [Thu, 18 Dec 2025 20:55:25 +0000 (21:55 +0100)]
runtime(osc52): Update documentation, send DA1 query when loading package

closes: #18944

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.1.1999: clipboard provider does not respect 'clipboard' option
Foxe Chen [Thu, 18 Dec 2025 20:47:34 +0000 (21:47 +0100)]
patch 9.1.1999: clipboard provider does not respect 'clipboard' option

Problem:  clipboard provider does not respect 'clipboard' option
          (Satoru Kitaguchi, after v9.1.1972)
Solution: make clipboard provider register respect "unnamed/unnamedplus"
          from the 'clipboard' option value

fixes:  #18930
closes: #18952

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(tutor): Chapter 2: consistently use upper case letter, fix typo after 1e3e1ba...
Christian Brabandt [Thu, 18 Dec 2025 20:22:06 +0000 (21:22 +0100)]
runtime(tutor): Chapter 2: consistently use upper case letter, fix typo after 1e3e1ba067c79a

Chapter 2: Fix missing "R" after 1e3e1ba067c79a when using register from insert
mode. While at it, consistently use upper case letter for CTRL-R in the
new-tutor.

related: #18950

Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agoruntime(compiler): improve rust errorformat
yilisharcs [Thu, 18 Dec 2025 20:14:12 +0000 (21:14 +0100)]
runtime(compiler): improve rust errorformat

This commit adds match patterns for:
- warnings with error codes (warning[E0123]: foobar)
- valid nightly unicode entries

closes: #18957

Signed-off-by: yilisharcs <yilisharcs@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.1.1998: tests: not enough tests for :setlocal omnifunc
zeertzjq [Thu, 18 Dec 2025 20:02:48 +0000 (21:02 +0100)]
patch 9.1.1998: tests: not enough tests for :setlocal omnifunc

Problem:  Not enough tests for :setlocal omnifunc (after 9.1.1991).
Solution: Move the last :new after :setlocal. Also test with 'complete'
          (zeertzjq).

closes: #18958

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): use codepoint consistently
Christian Brabandt [Wed, 17 Dec 2025 22:24:57 +0000 (23:24 +0100)]
runtime(doc): use codepoint consistently

fixes: #18944

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(tutor): Update Chapter 2, remove mentioning surround plugin
Christian Brabandt [Wed, 17 Dec 2025 22:13:36 +0000 (23:13 +0100)]
runtime(tutor): Update Chapter 2, remove mentioning surround plugin

fixes: #18950

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1997: Missing out-of-memory check in vim9class.c
John Marriott [Wed, 17 Dec 2025 21:31:59 +0000 (22:31 +0100)]
patch 9.1.1997: Missing out-of-memory check in vim9class.c

Problem:  Missing out-of-memory check in vim9class.c in calls to
          vim_strnsave().
Solution: Refactor is_duplicate_variable() and is_duplicate_enum() and
          make use of string_T struct instead (John Marriott).

closes: #18947

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(compiler): Match gcc.vim make error format
yilisharcs [Wed, 17 Dec 2025 21:29:24 +0000 (22:29 +0100)]
runtime(compiler): Match gcc.vim make error format

Problem:  gcc.vim interprets "make: *** [Makefile" in the error message
          "make: *** [Makefile:2: all] Error 1" as a valid filename.
Solution: Add pattern to extract the filename correctly. Note that this
  doesn't remove the dangling "]" from the output ("all]").

closes: #18956

Signed-off-by: yilisharcs <yilisharcs@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1996: tests: test_cmdline.vim leaves swapfiles behind
Christian Brabandt [Wed, 17 Dec 2025 21:16:31 +0000 (22:16 +0100)]
patch 9.1.1996: tests: test_cmdline.vim leaves swapfiles behind

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

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1995: tests: flaky test_cmdline.vim causes test failures
Aliaksei Budavei [Wed, 17 Dec 2025 21:08:19 +0000 (22:08 +0100)]
patch 9.1.1995: tests: flaky test_cmdline.vim causes test failures

Problem:  Data races between test buffers are currently addressed by
          relying on arbitrary execution delays or blissfully dismissed.
Solution: Prefer more deterministic synchronisation between test buffers
          for test cases that generate screendump files with expected
          results (Aliaksei Budavei)

closes: #18920

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1994: CI: slow cursor positioning may cause flaky test failures
Aliaksei Budavei [Wed, 17 Dec 2025 21:00:49 +0000 (22:00 +0100)]
patch 9.1.1994: CI: slow cursor positioning may cause flaky test failures

Problem:  More deterministic synchronisation can be established between
          processes running test cases and collecting visual effects to
          a screendump file for future verification by anticipating
          the availability of known parts of such a file and asserting
          the location of the cursor.
Solution: Provide a convenience test function that waits a specified
          time for cursor positioning (Aliaksei Budavei)

related: #18920

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agoruntime(doc): fix wrong help tag reference in eval.txt
Christian Brabandt [Wed, 17 Dec 2025 20:59:32 +0000 (21:59 +0100)]
runtime(doc): fix wrong help tag reference in eval.txt

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1993: MS-Windows: compile error because of implicit type conversions
Christian Brabandt [Wed, 17 Dec 2025 20:52:01 +0000 (21:52 +0100)]
patch 9.1.1993: MS-Windows: compile error because of implicit type conversions

Problem:  MS-Windows: compile error because of implicit size conversions
          (after v9.1.1983)
Solution: Change type casts

closes: #18946

Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1992: Vim9: heap buffer overflow with COMPAREANY instruction
Foxe Chen [Wed, 17 Dec 2025 20:47:53 +0000 (21:47 +0100)]
patch 9.1.1992: Vim9: heap buffer overflow with COMPAREANY instruction

Problem:  Vim9: heap buffer overflow with COMPAREANY instruction
Solution: Verify the type and error out in case of different types
          (Foxe Chen)

closes: #18945

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1991: :setlocal changes effective global 'omnifunc'
zeertzjq [Wed, 17 Dec 2025 20:34:23 +0000 (21:34 +0100)]
patch 9.1.1991: :setlocal changes effective global 'omnifunc'

Problem:  :setlocal changes effective global 'omnifunc' (Maxim Kim)
Solution: Don't change global callback when using :setlocal (zeertzjq).

fixes:  #18948
closes: #18951

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.1.1990: tests: Test_term_gettty() fails when using conpty on Windows
Muraoka Taro [Wed, 17 Dec 2025 19:52:32 +0000 (20:52 +0100)]
patch 9.1.1990: tests: Test_term_gettty() fails when using conpty on Windows

Problem:  tests: Test_term_gettty() fails when using conpty on Windows,
          CI uses winpty, so this test passes.
Solution: Skip the test Test_term_gettty(). Since conpty communicates
          via anonymous pipes, there is no name that can be obtained
          with term_gettty() (Muraoka Taro)

closes: #18954

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1989: Vim intro screen shows register message
Christian Brabandt [Tue, 16 Dec 2025 19:39:31 +0000 (20:39 +0100)]
patch 9.1.1989: Vim intro screen shows register message

Problem:  Vim intro screen shows register message (after v9.1.1893)
Solution: Remove the register message, registering is no longer useful
          and possible.

fixes:  #18933
closes: #18934

Signed-off-by:
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1988: osc52 package can be further improved
Foxe Chen [Tue, 16 Dec 2025 19:35:53 +0000 (20:35 +0100)]
patch 9.1.1988: osc52 package can be further improved

Problem:  osc52 package can be further improved (after v9.1.1984).
Solution: Improve plugin, update test and check for clipboard_provider
          feature (Foxe Chen).

closes: #18935

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1987: assert_equal() prepends unnecessary ':' when typed
zeertzjq [Tue, 16 Dec 2025 19:07:27 +0000 (20:07 +0100)]
patch 9.1.1987: assert_equal() prepends unnecessary ':' when typed

Problem:  assert_equal() prepends unnecessary ':' when typed
          (after 9.0.1758).
Solution: Don't change a NULL stacktrace to an empty string (zeertzjq).

closes: #18936

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1986: clipboard provider does not work when redirecting messages
Foxe Chen [Tue, 16 Dec 2025 19:02:20 +0000 (20:02 +0100)]
patch 9.1.1986: clipboard provider does not work when redirecting messages

Problem:  clipboard provider does not work when redirecting messages
          (BenYip, after v9.1.1972)
Solution: Adjust ifdefs in ex_redir()

fixes:  #18937
closes: #18939

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(tutor): Improve Spanish translations
Victorhck [Tue, 16 Dec 2025 18:56:59 +0000 (19:56 +0100)]
runtime(tutor): Improve Spanish translations

This change does the following:
- fix lesson number in tutor 1
- added and explanation about how get vimtutor lesson 2
- fix credits to authors in lesson 2

closes: #18940

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.1.1985: tests: test_sound.vim fails on Windows
Muraoka Taro [Tue, 16 Dec 2025 18:51:26 +0000 (19:51 +0100)]
patch 9.1.1985: tests: test_sound.vim fails on Windows

Problem:  tests: test_sound.vim fails when run locally on Windows
Solution: Skip Test_play_silent in Windows non-GUI environments.

Cause: There are two causes:

1) The global variable g:id is undefined, causing an undefined
   reference. Due to the execution order of test cases, g:id is defined in
   Test_play_event. However, on Windows, this test is skipped, so g:id is
   not defined. It is referenced in Test_play_silent's WaitForAssert()
   without being defined, resulting in an undefined error.

   Solution: Define g:id at the beginning of Test_play_silent.

2) In the non-GUI Windows version of vim, there is no message loop,
   so the callback when play file sound ends does not occur, and
   Test_play_silent's WaitForAssert times out and fails. In CI,
   sound_playfile() returns 0, so Test_play_silent is skipped. The
   reason for this is unknown, but it may be because CI is running on
   Windows Server or something like that.

   Solution: Skip Test_play_silent in Windows non-GUI environments.

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
closes: #18941

11 days agopatch 9.1.1984: terminal OSC52 support can be improved
Foxe Chen [Mon, 15 Dec 2025 20:45:07 +0000 (21:45 +0100)]
patch 9.1.1984: terminal OSC52 support can be improved

Problem:  terminal OSC52 support to access the clipboard can be improved
Solution: Include and package the optional osc52 package, note: this
          requires a Vim with clipboard provider feature (Foxe Chen).

related: #14995
closes: #18575

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.1.1983: Vim9: class_name definition can be improved
John Marriott [Mon, 15 Dec 2025 20:09:29 +0000 (21:09 +0100)]
patch 9.1.1983: Vim9: class_name definition can be improved

Problem:  Vim9: class_name definition can be improved
Solution: Use string_T to store class_name, avoid using STRLEN() calls,
          simplify code, remove unused definition of struct
          oc_newmember_S (John Marriott)

Use struct string_T to store the field class_name in struct class_T,
which means we can just use the .length field in struct string_T
instead of measuring it.

In addition:
1. In eval.c use string_T to store class_name and s in function
   class_tv2string().
2. In vim9type.c change some calls from ga_concat() to ga_concat_len()
   where the length is known.
3. In vim9class.c remove unused struct definition oc_newmember_S.
   Change some calls from ga_concat() to ga_concat_len() where the
   length is known.
4. In scriptfile.c use string_T to store type_name, class_name and
   es_name in function estack_sfile().
5. In function estack_sfile() simplify construction of the grow array ga
   and change some calls from ga_concat() to ga_concat_len() when the
   length is known.

closes: #18925

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.1.1982: Use after free with redraw_listener_add()
Foxe Chen [Mon, 15 Dec 2025 18:58:54 +0000 (19:58 +0100)]
patch 9.1.1982: Use after free with redraw_listener_add()

Problem:  Use after free with redraw_listener_add() (after: v9.1.1976)
Solution: Copy Callbacks into listener struct (Foxe Chen)

closes: #18926

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.1.1981: tests: test suite may stop on error in gen_opt_test.vim
MURAOKA Taro [Mon, 15 Dec 2025 18:51:55 +0000 (19:51 +0100)]
patch 9.1.1981: tests: test suite may stop on error in gen_opt_test.vim

Problem:  tests: test suite may stop on error in gen_opt_test.vim
Solution: Use a different output file for log files (Muraoka Taro)

When running newtests, it may unexpectedly stop just before
test_options_all.

Cause: When generating the opt_test.vim file for test_options_all, the
failure is detected by the existence of test.log. Therefore, if a test
performed before test_options_all fails and test.log is created, it is
mistakenly thought that the generation of opt_tet.vim has failed, and
the test suite stops there.

So let's change the filename created when utils/gen_opt_test.vim fails
from test.log to gen_opt_test.log, so that it can be detected
independently from other test failures.

closes: #18928

Signed-off-by: MURAOKA Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agoCI: Bump actions/cache from 4 to 5
dependabot[bot] [Mon, 15 Dec 2025 18:49:29 +0000 (19:49 +0100)]
CI: Bump actions/cache from 4 to 5

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

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

closes: #18927

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agotranslation(sr): Update the Serbian translation
Ivan Pešić [Mon, 15 Dec 2025 18:48:00 +0000 (19:48 +0100)]
translation(sr): Update the Serbian translation

closes: #18929

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agoruntime(fvwm): Update fvwm keywords
Christian Brabandt [Sun, 14 Dec 2025 16:45:50 +0000 (17:45 +0100)]
runtime(fvwm): Update fvwm keywords

fixes: #18924

Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.1.1980: filetype: N-Quads files are not recognized
Gordian Dziwis [Sun, 14 Dec 2025 15:51:34 +0000 (16:51 +0100)]
patch 9.1.1980: filetype: N-Quads files are not recognized

Problem:  filetype: N-Quads files are not recognized
Solution: Detect *.nq files as nq filetype

Reference:
- https://www.w3.org/TR/n-quads/

closes: #18923

Signed-off-by: Gordian Dziwis <gordian@dziw.is>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.1.1979: :helpclose allows range and counts
Doug Kearns [Sun, 14 Dec 2025 15:41:03 +0000 (16:41 +0100)]
patch 9.1.1979: :helpclose allows range and counts

Problem:  :helpclose incorrectly accepts a range and a count.
Solution: Remove EX_COUNT and EX_RANGE from the command definition.
          (Doug Kearns)

closes: #18917

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agoruntime(doc): Update version9.txt for v9.1.1966
Mao-Yining [Sun, 14 Dec 2025 15:35:04 +0000 (16:35 +0100)]
runtime(doc): Update version9.txt for v9.1.1966

closes: #18919

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 days agopatch 9.1.1978: tests: Test_smoothscroll_number() may fail
Hirohito Higashi [Sun, 14 Dec 2025 15:23:18 +0000 (16:23 +0100)]
patch 9.1.1978: tests: Test_smoothscroll_number() may fail

Problem:  tests: Test_smoothscroll_number() may fail because of
          'showcmd'
Solution: Send redraw command (Hirohito Higashi)

closes: #18921

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1977: MS-Windows: missing dependency on optiondefs.h in Make_cyg_ming.mak
Christian Brabandt [Sat, 13 Dec 2025 17:43:27 +0000 (18:43 +0100)]
patch 9.1.1977: MS-Windows: missing dependency on optiondefs.h in Make_cyg_ming.mak

Problem:  MS-Windows: missing dependency on optiondefs.h in Mingw and
          Cygwin Makefile (Mao-Yining)
Solution: Update $INCL variable

fixes: #18915

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1976: Cannot define callbacks for redraw events
Foxe Chen [Sat, 13 Dec 2025 17:14:59 +0000 (18:14 +0100)]
patch 9.1.1976: Cannot define callbacks for redraw events

Problem:  When using listeners, there is no way to run callbacks at
          specific points in the redraw cycle.
Solution: Add redraw_listener_add() and redraw_listener_remove() and
          allow specifying callbacks for redraw start and end
          (Foxe Chen).

closes: #18902

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agonsis: add Chinese translation to nsis installer
Mao-Yining [Sat, 13 Dec 2025 16:50:47 +0000 (17:50 +0100)]
nsis: add Chinese translation to nsis installer

closes: #18912

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): Tweak documentation style in eval.txt and options.txt
Hirohito Higashi [Sat, 13 Dec 2025 16:45:36 +0000 (17:45 +0100)]
runtime(doc): Tweak documentation style in eval.txt and options.txt

closes: #18914

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): Remove outdated agide.org link
Gourmet [Sat, 13 Dec 2025 16:39:13 +0000 (17:39 +0100)]
runtime(doc): Remove outdated agide.org link

The agide.org domain no longer hosts Vim-related tools and now points to
unrelated content. Remove the outdated reference to avoid confusion.

closes: #18916

Signed-off-by: Gourmet <110063472+ItalianG0urmet@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1975: blob2str() may call STRNCPY() with a NULL pointer
Foxe Chen [Fri, 12 Dec 2025 07:52:07 +0000 (08:52 +0100)]
patch 9.1.1975: blob2str() may call STRNCPY() with a NULL pointer

Problem:  blob2str() may call strcpy with a NULL pointer
Solution: Check for NULL before calling STRNCPY()

closes: #18907

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1974: tests: missing cleanup in Test_bwipe_during_save()
zeertzjq [Fri, 12 Dec 2025 07:47:18 +0000 (08:47 +0100)]
patch 9.1.1974: tests: missing cleanup in Test_bwipe_during_save()

Problem:  tests: missing cleanup in Test_bwipe_during_save().
Solution: Reset &charconvert.

closes: #18908

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>