Problem: tests: test_plugin_comment fails, because it depends on nroff
filetype for .mom file (after v9.1.1909)
Solution: Explicitly set filetype to nroff
Vadim Yanitskiy [Wed, 12 Nov 2025 19:36:46 +0000 (19:36 +0000)]
runtime(erlang): recognize -if/-elif as erlangPreCondit in syntax script
The -if(Condition)/-elif(Condition) are compiler macros that evaluate
the following lines only if Condition evaluates to true. This patch
enables syntax highlighting for these macros.
Neil Lambert [Tue, 11 Nov 2025 18:01:31 +0000 (18:01 +0000)]
runtime(css): improve cssBoxProp matches
closes: #18717
Signed-off-by: Neil Lambert <nlambert@pm.me> Signed-off-by: Jay Sitter <jsit@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: tabpanel: truncates terminal output
(hokorobi)
Solution: Use topframe->fr_width, not Columns (which includes the
tabpanel width) (Hirohito Higashi)
related: #18678
closes: #18707
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
patch 9.1.1901: tests: test_vim9_generics fails without job feature
Problem: tests: test_vim9_generics fails when built without the job or
channel feature (lazypingu)
Solution: Skip test if job/channel feature is not available
Doug Kearns [Sun, 9 Nov 2025 19:23:50 +0000 (19:23 +0000)]
runtime(doc): Clean up file header whitespace
- :retab! line 1 and line 4 (main page heading).
- Use four columns whitespace before "by [Author]" in the user manual
heading to match the reference manual formatting.
- double space headings.
closes: #18648
Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Jesse Portnoy [Sun, 9 Nov 2025 18:57:34 +0000 (18:57 +0000)]
runtime(spec): Add support for more tags and distributions
- specMacroIdentifier: support macros starting with '?'; the most common
example is `%{?dist}`
- specPreAmble: added some missing tags from:
https://rpm.org/docs/4.19.x/manual/spec.html
- Added support for: `fedora`, `rhel`, `rocky`, `rhl`, `centos`, `el\d`
and `fc\d`, see https://docs.fedoraproject.org/en-US/packaging-guidelines/DistTag
closes: #18703
Signed-off-by: Jesse Portnoy <jesse.portnoy@perforce.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
patch 9.1.1898: tabpanel: inconsistent use of cmdline with tabpanel
Problem: tabpanel: inconsistent use of cmdline and message area with
tabpanel
Solution: Reduce the cmdline and message area by the horizontal size of
the tabpanel (Hirohito Higashi)
closes: #18678
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Luke Lollard [Thu, 6 Nov 2025 20:04:38 +0000 (20:04 +0000)]
patch 9.1.1897: Mac: Build failure on Mac OS X 10.6
Problem: Mac: Build failure on Mac OS X 10.6 due to the use of generics
for the sound feature.
Solution: Use the simple, non-generic Objective-C version.
(Luke Lollard)
fixes: #17678
closes: #18681
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com> Signed-off-by: Luke Lollard <haihige@protonmail.ch> Signed-off-by: Christian Brabandt <cb@256bit.org>
patch 9.1.1894: global_runtime_dir appends /after directory when using XDG
Problem: global_runtime_dir appends /after directory when using XDG
configuration directory (Marius Gedminas).
Solution: Do not append /after to RUNTIME_GLOBAL_AFTER.
Problem: ICCF charity will dissolve
Solution: Update references to Kuwasha
Since the ICCF[1] will be dissolved and handing over to the Kuwasha charity
to continue supporting the Kibaale Children Center in Uganda, update the
uganda.txt help file.
patch 9.1.1892: Not possible to know once Vim is done with sourcing vimrc
Problem: A plugin does not know when startup scripts were already
triggered. This is useful to determine if a function is
called inside vimrc or after (like when sourcing 'plugin/'
files).
Solution: Add the v:vim_did_init variable (Evgeni Chasnovski)
closes: #18668
Signed-off-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Changing permissions fail when using `gp` if the file under
the cursor is not in the current working directory.
Solution: Use the already available `a:curdir` argument and prepend it
to the `<cfile>`, so that the path of the file is correct.
varsidry [Fri, 31 Oct 2025 16:16:11 +0000 (16:16 +0000)]
patch 9.1.1891: g<End> does not move to last non-blank in visual mode
Problem: In visual mode, g<End> does not move to the last non-blank
character when the end of a line is on the same line as the
cursor (after v9.0.1753)
Solution: Move the cursor back by one position if it lands after the
line (varsidry)
fixes: #18657
closes: #18658
Signed-off-by: varsidry <240319857+varsidry@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
zeertzjq [Wed, 29 Oct 2025 20:15:01 +0000 (20:15 +0000)]
patch 9.1.1888: Wrong display with cpo+=$, matchparen and wrapped line
Problem: Wrong display with cpo+=$, matchparen and wrapped line.
Solution: Use old cursor line height when scrolling with cpo+=$. Also
fix wrong redraw in non-current window. (zeertzjq)
fixes: #18647
closes: #18662
Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
John Marriott [Tue, 28 Oct 2025 20:56:47 +0000 (20:56 +0000)]
patch 9.1.1887: string handling in strings.c can be improved
Problem: string handling in strings.c can be improved
Solution: Refactor strings.c and remove calls to STRLEN()
(John Marriott)
This change does:
- In vim_strsave_shellescape() a small cosmetic change.
- In string_count() move the call to STRLEN() outside the while loop.
- In blob_from_string() refactor to remove call to STRLEN().
- In string_from_blob() call vim_strnsave() instead of vim_strsave().
- In vim_snprintf_safelen() call vim_vsnprintf_typval() directly instead
of vim_vsnprintf() which then calls vim_vsnprintf_typval().
- In copy_first_char_to_tv() change to return -1 on failure or the length
of resulting v_string. Change string_filter_map() and string_reduce() to
use the return value of copy_first_char_to_tv().
closes: #18617
Signed-off-by: John Marriott <basilisk@internode.on.net> Signed-off-by: Christian Brabandt <cb@256bit.org>
zeertzjq [Tue, 28 Oct 2025 20:27:19 +0000 (20:27 +0000)]
patch 9.1.1885: Wrong restored cursor pos when re-entering buffer after changes
Problem: Wrong restored cursor position when re-entering a buffer
previously viewed in a window after making changes to the same
buffer in another window.
Solution: Adjust per-window "last cursor" positions on buffer changes.
(zeertzjq)
closes: #18655
Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This was added in #16807, with no explanation for why it was necessary beyond
"it's an example of an idea". It completely breaks `gq` for me—rustfmt doesn't
reflow comments so is not an appropriate tool here! Beyond that, formatting a
selection with rustfmt treats that selection as if it were an entire file,
throwing away any indentation.
patch 9.1.1879: Crash when using a lambda funcref with :defer
Problem: Crash when using a lambda funcref with :defer
Solution: De-reference the partial correctly after invoking the deferred
functions (Yegappan Lakshmanan).
closes: #18640
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Anttoni Erkkilä [Sun, 26 Oct 2025 19:46:38 +0000 (19:46 +0000)]
patch 9.1.1877: cindent: wrong indentation after an array declaration
Problem: cindent: wrong indentation after an array declaration
Solution: check if the filetype if javascript before matching the syntax
(Anttoni Erkkilä)
cindent matches a javascript syntax for C files causing wrong
indentation in the following case:
```
void foo() {
float a[5],
b;
}
```
closes: #18631
Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Girish Palya [Sun, 26 Oct 2025 18:30:40 +0000 (18:30 +0000)]
patch 9.1.1876: pre-inserted text not exposed in cmdcomplete_info()
Problem: pre-inserted text not exposed in complete_info()
Solution: Add the pre-inserted text to the complete_info() Vim script
function (Girish Palya)
closes: #18571
Signed-off-by: Girish Palya <girishji@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Feat: expose preinserted text in complete_info()
Václav Kobera [Sun, 26 Oct 2025 18:21:04 +0000 (18:21 +0000)]
patch 9.1.1875: username parsing bug in netrw plugin
Problem: username parsing bug in netrw plugin when using remote adding
feature
Solution: Allow any characters except for "@" (Václav Kobera), add a
test for the netrw plugin
closes: #18611
Signed-off-by: Václav Kobera <vasekobera@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
zeertzjq [Sun, 26 Oct 2025 13:29:09 +0000 (13:29 +0000)]
patch 9.1.1872: Cmdline history not updated when mapping <Up> and <CR>
Problem: Cmdline history not updated when mapping both <Up> and <CR>.
Solution: Consider the command typed when in Cmdline mode and there is
no pending input (zeertzjq).
Although the existing behavior technically does match documentation, the
"completely come from mappings" part is a bit ambiguous, because one may
argue that the command doesn't completely come from mappings as long as
the user has typed a key in Cmdline mode. I'm not entirely sure if this
change will cause problems, but it seems unlikely.
Aliaksei Budavei [Sat, 25 Oct 2025 14:21:56 +0000 (14:21 +0000)]
CI: Include a job index in names of collected artifacts
And include "extra" Linux elements to further disambiguate
archive names.
The current naming of artifacts is inadequate when it comes
to files whose differing name-parts only come from array
values, as arrays are not automatically converted to string.
For example, both artifacts for failing "socketserver" and
"no_x11" CI jobs will claim the same name, and whichever job
finishes last is allowed to overwrite another matching name
artifact.
Yiyang Wu [Sat, 25 Oct 2025 14:19:07 +0000 (14:19 +0000)]
runtime(make): Prevent makeTargetinDefine matching extra line
This fixes a bug introduced in 2a33b499a3d7f46dc307234847a6562cef6cf1d8:
When makeTargetinDefine ends with makeIdent, makeSpecTarget or
makeComment, the following line is also matched as makeTargetinDefine.
So, add keepend to prevent that just as makeTarget does.
related: #18403
closes: #18570
Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> Signed-off-by: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name> Signed-off-by: Christian Brabandt <cb@256bit.org>
patch 9.1.1869: tests: test failures with Python 3.14 and test_python3
Problem: tests: test failures with Python 3.14 and test_python3
Solution: Adjust the expected error message (Yee Cheng Chin)
Python 3.14 changed the error message from "argument must be 2-item
sequence" to "argument must be 2-item tuple". Fix test to account for
that. Otherwise the error message for the `vim.current.window.cursor =
True` line would not match.
closes: #18629
Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>