]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
12 hours agopatch 9.1.1623: Buffer menu does not handle unicode names correctly v9.1.1623
Yee Cheng Chin [Sun, 10 Aug 2025 08:06:14 +0000 (10:06 +0200)] 
patch 9.1.1623: Buffer menu does not handle unicode names correctly

Problem:  Buffer menu does not handle unicode names correctly
          (after v9.1.1622)
Solution: Fix the BMHash() function (Yee Cheng Chin)

The Buffers menu uses a BMHash() function to generate a sortable number
to be used for the menu index. It used a naive (and incorrect) way of
encoding multiple ASCII values into a single integer, but assumes each
character to be only in the ASCII 32-96 range. This means if we use
non-ASCII file names (e.g. Unicode values like CJK or emojis) we get
integer underflow and overflow, causing the menu index to wrap around.
Vim's GUI implementations internally use a signed 32-bit integer for the
`gui_mch_add_menu_item()` function and so we need to make sure the menu
index is in the (0, 2^31-1) range.

To do this, if the file name starts with a non-ASCII value, we just use
the first character's value and set the high bit so it sorts after the
other ASCII ones. Otherwise, we just take the first 5 characters, and
use 5 bit for each character to encode a 30-bit number that can be
sorted.

This means Unicode file names won't be sorted beyond the first
character. This is likely going to be fine as there are lots of ways to
query buffers.

related: #17403
closes: #17928

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 hours agopatch 9.1.1622: Patch v9.1.1432 causes performance regressions v9.1.1622
Yee Cheng Chin [Sun, 10 Aug 2025 08:03:26 +0000 (10:03 +0200)] 
patch 9.1.1622: Patch v9.1.1432 causes performance regressions

Problem:  Patch v9.1.1432 causes performance regressions
Solution: Revert "patch 9.1.1432: GTK GUI: Buffer menu does not handle
          unicode correctly" (Yee Cheng Chin).

This reverts commit 08896dd330c6dc8324618fde482db968e6f71088.

The previous change to support Unicode characters properly in the
buffers menu resorted to removing all buffer menus and re-add the
buffers after doing a sort, per each buffer addition. This was quite
slow because if Vim is trying to load in multiple buffers at once (e.g.
when loading a session) this scales in O(n^2) and Vim can freeze for
dozens of seconds when adding a few hundred buffers.

related: #17405
related: #17928
fixes: #17897

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agopatch 9.1.1621: flicker in popup menu during cmdline autocompletion v9.1.1621
Girish Palya [Fri, 8 Aug 2025 06:26:03 +0000 (08:26 +0200)] 
patch 9.1.1621: flicker in popup menu during cmdline autocompletion

Problem:  When the popup menu (PUM) occupies more than half the screen
          height, it flickers whenever a character is typed or erased.
          This happens because the PUM is cleared and the screen is
          redrawn before a new PUM is rendered. The extra redraw between
          menu updates causes visible flicker.
Solution: A complete, non-hacky fix would require removing the
          CmdlineChanged event from the loop and letting autocompletion
          manage the process end-to-end. This is because screen redraws
          after any cmdline change are necessary for other features to
          work.
          This change modifies wildtrigger() so that the next typed
          character defers the screen update instead of redrawing
          immediately. This removes the intermediate redraw, eliminating
          flicker and making cmdline autocompletion feel smooth
          (Girish Palya).

Trade-offs:
This behavior change in wildtrigger() is tailored specifically for
:h cmdline-autocompletion. wildtrigger() now has no general-purpose use
outside this scenario.

closes: #17932

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agopatch 9.1.1620: filetype: composer.lock and symfony.lock files not recognized v9.1.1620
Dietrich Moerman [Sun, 10 Aug 2025 07:44:42 +0000 (09:44 +0200)] 
patch 9.1.1620: filetype: composer.lock and symfony.lock files not recognized

Problem:  filetype: composer.lock and symfony.lock files not recognized
Solution: Detect composer.lock and symfony.lock files as json filetype
          (Dietrich Moerman)

closes: #17945

Signed-off-by: Dietrich Moerman <dietrich.moerman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agopatch 9.1.1619: Incorrect E535 error message v9.1.1619
zeertzjq [Sun, 10 Aug 2025 07:41:50 +0000 (09:41 +0200)] 
patch 9.1.1619: Incorrect E535 error message

Problem:  Incorrect E535 error message (after 9.1.1603).
Solution: Don't use transchar(), as the character is always printable
          (zeertzjq).

closes: #17948

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agoruntime(doc): Fix style and typos in builtin.txt and usr_41.txt
veotos [Sun, 10 Aug 2025 07:27:17 +0000 (09:27 +0200)] 
runtime(doc): Fix style and typos in builtin.txt and usr_41.txt

- Reformat parts to fit into 80 column window.
- Fix example with mandatory call with a range.
  https://github.com/vim/vim/discussions/17950#discussioncomment-14055687
- Remove some duplicate information

closes: #17949

Signed-off-by: veotos <veotos@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agopatch 9.1.1618: completion: incorrect selected index returned from complete_info() v9.1.1618
Robert Muir [Sun, 10 Aug 2025 07:19:36 +0000 (09:19 +0200)] 
patch 9.1.1618: completion: incorrect selected index returned from complete_info()

Problem:  completion: incorrect selected index returned from
          complete_info()
Solution: Return the index into "items" and restore the previous
          behaviour (Robert Muir).

complete_info() returned an incorrect selected index after
0ac1eb3555445f4c458c06cef7c411de1c8d1020 (Patch v9.1.1311). Effectively
it became an index into "matches" instead of "items". Return the index
into "items" by default to restore the previous behavior, unless
"matches" was requested.

closes: #17952

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Robert Muir <rmuir@apache.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agopatch 9.1.1617: Vim9: some error messages can be improved v9.1.1617
Yegappan Lakshmanan [Sun, 10 Aug 2025 07:15:03 +0000 (09:15 +0200)] 
patch 9.1.1617: Vim9: some error messages can be improved

Problem:  Vim9: some error messages can be improved
Solution: Improve error messages when parsing generic function type
          arguments (Yegappan Lakshmanan).

closes: #17957

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
13 hours agoruntime(doc): Tweak documentation style
Hirohito Higashi [Sun, 10 Aug 2025 07:12:46 +0000 (09:12 +0200)] 
runtime(doc): Tweak documentation style

closes: #17959

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
22 hours agopatch 9.1.1616: xxd: possible buffer overflow with bitwise output v9.1.1616
Christian Brabandt [Sat, 9 Aug 2025 22:06:51 +0000 (00:06 +0200)] 
patch 9.1.1616: xxd: possible buffer overflow with bitwise output

Problem:  xxd: possible buffer overflow with bitwise output
          (after v9.1.1459, Xudong Cao)
Solution: Update LLEN_NO_COLOR macro definition for the max line output
          (using bitwise output -b)

fixes: #17944
closes: #17947

Signed-off-by: Christian Brabandt <cb@256bit.org>
22 hours agopatch 9.1.1615: diff format erroneously detected v9.1.1615
Christian Brabandt [Sat, 9 Aug 2025 22:01:21 +0000 (00:01 +0200)] 
patch 9.1.1615: diff format erroneously detected

Problem:  diff format erroneously detected
          (Tomáš Janoušek)
Solution: Make the regex to detect normal diff format a bit stricter,
          while at it, fix wrong test content from patch v9.1.1606

fixes: #17946

Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agopatch 9.1.1614: Vim9: possible variable type change v9.1.1614
Yegappan Lakshmanan [Sat, 9 Aug 2025 21:52:07 +0000 (23:52 +0200)] 
patch 9.1.1614: Vim9: possible variable type change

Problem:  Vim9: possible variable type change when using closure in a
          for loop (Maxim Kim)
Solution: Use unwind_locals(..., TRUE) (Yegappan Lakshmanan)

fixes: #17844
closes: #17951

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agopatch 9.1.1613: tests: test_search leaves a few swapfiles behind v9.1.1613
Christian Brabandt [Sat, 9 Aug 2025 21:49:47 +0000 (23:49 +0200)] 
patch 9.1.1613: tests: test_search leaves a few swapfiles behind

Problem:  tests: test_search leaves a few swapfiles behind
Solution: Use :bw! instead of :close to close the swapfile at the end of
          the test.

related: #17933

Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agopatch 9.1.1612: Ctrl-G/Ctrl-T do not ignore the end search delimiter v9.1.1612
Christian Brabandt [Sat, 9 Aug 2025 21:47:01 +0000 (23:47 +0200)] 
patch 9.1.1612: Ctrl-G/Ctrl-T do not ignore the end search delimiter

Problem:  Ctrl-G/Ctrl-T does not ignore the end search delimiter
          (irisjae)
Solution: Check if the pattern ends with a search delimiter and ignore
          it, unless it is part of the pattern.

fixes: #17895
closes: #17933

Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agopatch 9.1.1611: possible undefined behaviour in mb_decompose() v9.1.1611
Áron Hárnási [Sat, 9 Aug 2025 21:43:13 +0000 (23:43 +0200)] 
patch 9.1.1611: possible undefined behaviour in mb_decompose()

Problem:  possible undefined behaviour in mb_decompose(), when using the
          same pointer as argument several times
Solution: use separate assignments to avoid reading and writing the same
          object at the same time (Áron Hárnási)

closes: #17953

Signed-off-by: Áron Hárnási <aron.harnasi@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agoruntime(vim): Update ftplugin, fix option variable 'keywordprg' matching
Doug Kearns [Sat, 9 Aug 2025 21:41:21 +0000 (23:41 +0200)] 
runtime(vim): Update ftplugin, fix option variable 'keywordprg' matching

- Match &option, and &[lg]:option variables.
- Match Ex commands after :bar.
- Fix matching of pre and post context text.
- Style - use '..' for string concatenation.

fixes #17567
closes: #17653

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agoruntime(racket): update Racket runtime files
D. Ben Knoble [Sat, 9 Aug 2025 21:38:07 +0000 (23:38 +0200)] 
runtime(racket): update Racket runtime files

This brings the upstream files to commit 9dc3bd3 (ftplugin: escape Vim
special characters when opening docs, 2025-08-09). Note that not all
upstream files are included.

closes: #17956

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
23 hours agotranslation: Generate year for MS Windows differently
RestorerZ [Sat, 9 Aug 2025 21:32:32 +0000 (23:32 +0200)] 
translation: Generate year for MS Windows differently

Commit 22fc41f1f7c94fca491b6759e49ac2430f0b81a2 used wmic to generate
the year, however it may not always be available. So use Powershell
directly.

related: #17855
closes: #17955

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1610: completion: hang or E684 when 'tagfunc' calls complete() v9.1.1610
zeertzjq [Fri, 8 Aug 2025 14:03:43 +0000 (16:03 +0200)] 
patch 9.1.1610: completion: hang or E684 when 'tagfunc' calls complete()

Problem:  completion: hang (after 9.1.1471) or E684 (after 9.1.1410)
          when 'tagfunc' calls complete().
Solution: Check if complete() has been called immediately after getting
          matches instead of in the next loop iteration (zeertzjq).

related: #1668
related: neovim/neovim#34416
related: neovim/neovim#35163
closes: #17929

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(doc): Update CONTRIBUTING and clarify use of Vim9 script
Christian Brabandt [Fri, 8 Aug 2025 13:49:43 +0000 (15:49 +0200)] 
runtime(doc): Update CONTRIBUTING and clarify use of Vim9 script

related: #17871

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1609: complete: Heap-buffer overflow with complete function v9.1.1609
Girish Palya [Fri, 8 Aug 2025 13:42:27 +0000 (15:42 +0200)] 
patch 9.1.1609: complete: Heap-buffer overflow with complete function

Problem:  complete: Heap-buffer overflow with complete function
          (zeertzjq)
Solution: Do not let startcol become negative (Girish Palya).

fixes: #17907
closes: #17934

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(c): set omnifunc only for Vim, since it is Vim9 Script
Christian Brabandt [Fri, 8 Aug 2025 11:43:35 +0000 (13:43 +0200)] 
runtime(c): set omnifunc only for Vim, since it is Vim9 Script

related: #17871

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(vim): add simple vimscript complete function
Maxim Kim [Fri, 8 Aug 2025 11:42:49 +0000 (13:42 +0200)] 
runtime(vim): add simple vimscript complete function

closes: #17871

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(script): Update Last Change Header
Christian Brabandt [Fri, 8 Aug 2025 11:35:19 +0000 (13:35 +0200)] 
runtime(script): Update Last Change Header

This was missing from Patch v9.1.1606
(Commit: eb2aebeb7982168ece3888c9c0b08fc46f9d4d15)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1608: No command-line completion for :unsilent {command} v9.1.1608
Doug Kearns [Fri, 8 Aug 2025 11:34:04 +0000 (13:34 +0200)] 
patch 9.1.1608: No command-line completion for :unsilent {command}

Problem:  No command-line completion for :unsilent {command}.
Solution: Add missing command arg completion (Doug Kearns).
          (author)

Add completion tests for all command modifiers.

closes: #17524

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1607: :apple command detected as :append v9.1.1607
Hirohito Higashi [Fri, 8 Aug 2025 11:25:27 +0000 (13:25 +0200)] 
patch 9.1.1607: :apple command detected as :append

Problem:  :apple command detected as :append (dai475694450)
Solution: Disallow to define a custom command with lower-case letter,
          correctly detect :insert/:change/:append ex commands
          (Hirohito Higashi).

fixes: #17893
closes: #17930

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1606: filetype: a few more files are not recognized v9.1.1606
lacygoill [Fri, 8 Aug 2025 11:17:57 +0000 (13:17 +0200)] 
patch 9.1.1606: filetype: a few more files are not recognized

Problem:  filetype: a few more files are not recognized
Solution: guess Mail, Info and Terminfo files by its content
          (lacygoill)

closes: #17880

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1605: cannot specify scope for chdir() v9.1.1605
kuuote [Fri, 8 Aug 2025 11:09:25 +0000 (13:09 +0200)] 
patch 9.1.1605: cannot specify scope for chdir()

Problem:  Cannot specify scope for chdir()
Solution: Add optional scope argument (kuuote)

closes: #17888

Signed-off-by: kuuote <znmxodq1@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(doc): Improve doc for cmdline-autocomplete
Girish Palya [Fri, 8 Aug 2025 11:03:43 +0000 (13:03 +0200)] 
runtime(doc): Improve doc for cmdline-autocomplete

Maybe this was unnecessary, but saw this:
https://github.com/vim/vim/issues/17854

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(doc): update develop assumptions
Damien Lejay [Fri, 8 Aug 2025 10:51:23 +0000 (12:51 +0200)] 
runtime(doc): update develop assumptions

closes: #17892

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1604: completion: incsearch highlight might be lost v9.1.1604
Girish Palya [Fri, 8 Aug 2025 10:42:10 +0000 (12:42 +0200)] 
patch 9.1.1604: completion: incsearch highlight might be lost

Problem:  completion: incsearch highlight might be lost after search
          completion (Hirohito Higashi)
Solution: Restore incsearch highlight after dismissing pum with Ctrl-E
          (Girish Palya)

related: #17870
closes: #17891

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(optwin): Fix E94 when searching for the option-window
RestorerZ [Fri, 8 Aug 2025 10:37:06 +0000 (12:37 +0200)] 
runtime(optwin): Fix E94 when searching for the option-window

Problem:  When the parameter debug=msg is set and the command :option is
          entered, error E94 will be displayed.
Solution: Add a check for the existence of the buffer before getting the
          buffer number “option-window”.

Reproduce:

vim --clean -c "set debug=msg" -c "option"

    Error detected while processing command line..script D:\Programs\Vim\vim91\optwin.vim:
    line 9: E94: No matching buffer for option-window

closes: #17927

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.1.1603: completion: cannot use autoloaded funcs in 'complete' F{func} v9.1.1603
Girish Palya [Fri, 8 Aug 2025 10:30:35 +0000 (12:30 +0200)] 
patch 9.1.1603: completion: cannot use autoloaded funcs in 'complete' F{func}

Problem:  completion: cannot use autoloaded funcs in 'complete' F{func}
          (Maxim Kim)
Solution: Make it work (Girish Palya)

fixes: #17869
closes: #17885

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(java): Manage byte limits for variable-width lookbehind assertions
Aliaksei Budavei [Fri, 8 Aug 2025 08:50:19 +0000 (10:50 +0200)] 
runtime(java): Manage byte limits for variable-width lookbehind assertions

Raise the byte limits from 80 to 120 for "javaFuncDef" and
"java*CommentTitle"; and support selecting other arbitrary
values with
------------------------------------------------------------
let g:java_lookbehind_byte_counts = {
\ 'javaMarkdownCommentTitle': 240,
\ }
------------------------------------------------------------

for related groups of syntax definitions, referring to their
names with dictionary keys.

Over-80-Byte-Limit Lookbehind Examples:
https://raw.githubusercontent.com/openjdk/jdk/refs/tags/jdk-24%2B36/src/java.base/share/classes/sun/security/x509/NamedX509Key.java [Lines 43 & 44]
https://raw.githubusercontent.com/openjdk/jdk/refs/tags/jdk-24%2B36/src/jdk.compiler/share/classes/com/sun/tools/javac/util/GraphUtils.java [Line 154]

closes: #17921

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(help): Unset `'comments'` and `'cms'` options
Phạm Bình An [Fri, 8 Aug 2025 08:44:18 +0000 (10:44 +0200)] 
runtime(help): Unset `'comments'` and `'cms'` options

Problem:  Vim's help file doesn't have any syntax for comments, but
          'comments' and 'commentstring' are still set in the help
          buffer.
Solution: Unset 'comments' and 'cms' in help buffer

closes: #17889

Signed-off-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(netrw): netrw#BrowseX() needs to distinguish local and remote file
Christian Brabandt [Thu, 7 Aug 2025 18:23:16 +0000 (20:23 +0200)] 
runtime(netrw): netrw#BrowseX() needs to distinguish local and remote file

fixes: #17794

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(typescript): Add syntax support for defer and arbitrary module identifiers
rhysd [Thu, 7 Aug 2025 18:08:42 +0000 (20:08 +0200)] 
runtime(typescript): Add syntax support for defer and arbitrary module identifiers

closes: #17911

Signed-off-by: rhysd <lin90162@yahoo.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agotranslation: Auto-generate headers for the vim.pot file
RestorerZ [Thu, 7 Aug 2025 14:16:09 +0000 (16:16 +0200)] 
translation: Auto-generate headers for the vim.pot file

closes: #17855

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1602: filetype: requirements-*.txt files are not recognized v9.1.1602
Xudong Zheng [Thu, 7 Aug 2025 13:55:49 +0000 (15:55 +0200)] 
patch 9.1.1602: filetype: requirements-*.txt files are not recognized

Problem:  filetype: requirements-*.txt files are not recognized
Solution: Detect requirements-*.txt files as requirements filetype
          (Xudong Zheng).

References:
- https://github.com/search?q=path%3Arequirements-*.txt&type=code
- https://github.com/zephyrproject-rtos/zephyr/tree/v4.2.0/scripts

closes: #17894

Signed-off-by: Xudong Zheng <7pkvm5aw@slicealias.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1601: Patch v8.1.0425 was wrong v9.1.1601
Hirohito Higashi [Thu, 7 Aug 2025 13:51:25 +0000 (15:51 +0200)] 
patch 9.1.1601: Patch v8.1.0425 was wrong

Problem:  Patch v8.1.0425 was wrong
Solution: Revert that patch (Hirohito Higashi)

This is because the root cause was fixed in 8.1.0786 and a regression
occurred elsewhere.

related: #3455
related: #3830
fixes: #11558
closes: #17899

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(netrw): Use correct "=~#" for the netrw_sizestyle='H' option
veotos [Thu, 7 Aug 2025 13:48:11 +0000 (15:48 +0200)] 
runtime(netrw): Use correct "=~#" for the netrw_sizestyle='H' option

Correct expression syntax to match case in if and if-else clauses.

related: #8535
closes: #17901

Signed-off-by: veotos <veotos@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(openscad): add a filetype plugin
Squibid [Thu, 7 Aug 2025 13:42:54 +0000 (15:42 +0200)] 
runtime(openscad): add a filetype plugin

closes: #17902

Signed-off-by: Squibid <me@zacharyscheiman.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1600: using diff anchors with hidden buffers fails silently v9.1.1600
Yee Cheng Chin [Thu, 7 Aug 2025 13:33:34 +0000 (15:33 +0200)] 
patch 9.1.1600: using diff anchors with hidden buffers fails silently

Problem:  diff: using diff anchors with hidden buffers fails silently
Solution: Give specific error message for diff anchors when using hidden
          buffers (Yee Cheng Chin).

Diff anchors currently will fail to parse if a buffer used for diff'ing
is hidden. Previously it would just fail as the code assumes it would
not happen normally, but this is actually possible to do if `closeoff`
and `hideoff` are not set in diffopt. Git's default diff tool "vimdiff3"
also takes advantage of this.

This fix this properly would require the `{address}` parser to be
smarter about whether a particular address relies on window position or
not (e.g. the `'.` address requires an active window, but `'a` or `1234`
do not). Since hidden diff buffers seem relatively niche, just provide a
better error message / documentation for now. This could be improved
later if there's a demand for it.

related: #17615
closes: #17904

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(javascript): add "as" as a reserved keyword to syntax script
Nir Lichtman [Thu, 7 Aug 2025 13:29:18 +0000 (15:29 +0200)] 
runtime(javascript): add "as" as a reserved keyword to syntax script

closes: #17912

Signed-off-by: Nir Lichtman <nir@lichtman.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1599: :bnext doesn't go to unlisted help buffers v9.1.1599
zeertzjq [Thu, 7 Aug 2025 13:24:29 +0000 (15:24 +0200)] 
patch 9.1.1599: :bnext doesn't go to unlisted help buffers

Problem:  :bnext doesn't go to unlisted help buffers when cycling
          through help buffers (after 9.1.0557).
Solution: Don't check if a help buffer is listed (zeertzjq).

From <https://github.com/vim/vim/issues/4478#issuecomment-498831057>:

> I think we should fix that, since once you get to a non-help buffer
> all unlisted buffers are skipped, thus you won't encounter another
> help buffer.

This implies that cycling through help buffers should work even if help
buffers are unlisted. Otherwise this part of :bnext isn't really useful,
as :h makes help buffers unlisted by default.

related: #4478
related: #15198
closes: #17913

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): Update ft-vim-syntax documentation
veotos [Thu, 7 Aug 2025 13:17:45 +0000 (15:17 +0200)] 
runtime(doc): Update ft-vim-syntax documentation

g:vimsyn_folding and g:vimsyn_embed regexps need to match case.

closes: #17914

Signed-off-by: veotos <veotos@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1598: filetype: waybar config file is not recognized v9.1.1598
Furkan Sahin [Thu, 7 Aug 2025 13:13:21 +0000 (15:13 +0200)] 
patch 9.1.1598: filetype: waybar config file is not recognized

Problem:  filetype: waybar config file is not recognized
Solution: Detect */waybar/config file as jsonc filetype
          (Furkan Sahin)

closes: #17915

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1597: CI reports leaks in libgtk3 library v9.1.1597
Christian Brabandt [Thu, 7 Aug 2025 12:58:24 +0000 (14:58 +0200)] 
patch 9.1.1597: CI reports leaks in libgtk3 library

Problem:  CI reports leaks in libgtk3 library
Solution: Add libgtk-3 library to leak suppression

Recently, CI started reporting leaks inside the GTK3 library, which cause
failures like here
https://github.com/vim/vim/actions/runs/16796766276/job/47572520887?pr=17922

So let's add libgtk-3*.so* to the leak suppression for the
gtk_init_check() function.

Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.1.1596: tests: Test_search_wildmenu_iminsert() depends on help file v9.1.1596
zeertzjq [Thu, 7 Aug 2025 12:57:22 +0000 (14:57 +0200)] 
patch 9.1.1596: tests: Test_search_wildmenu_iminsert() depends on help file

Problem:  tests: Test_search_wildmenu_iminsert() depends on help file
          (after 9.1.1594).
Solution: Set buffer text using setline() instead of loading help file.
          Add a test for another bug fixed by 9.1.1594 (zeertzjq).

related: #17870
closes: #17922

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): remove mentioning of netrwSettings.vim
Lane East [Thu, 7 Aug 2025 12:37:20 +0000 (14:37 +0200)] 
runtime(doc): remove mentioning of netrwSettings.vim

closes: #17925

Signed-off-by: Lane East <laneast@laneast.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): fix typo at :h cmdline-autocompletion
Girish Palya [Wed, 6 Aug 2025 18:53:33 +0000 (20:53 +0200)] 
runtime(doc): fix typo at :h cmdline-autocompletion

The '?' needs to be escaped, because the autocommand is using
file-patterns (glob like) and not a regex). See :h file-pattern

closes: #17890

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1595: Wayland: non-portable use of select() v9.1.1595
Foxe Chen [Wed, 6 Aug 2025 18:38:33 +0000 (20:38 +0200)] 
patch 9.1.1595: Wayland: non-portable use of select()

Problem:  Wayland: non-portable use of select()
Solution: Correctly set the timeval struct
          (Foxe Chen)

closes: #17886

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.1.1594: completion: search completion throws errors v9.1.1594
Girish Palya [Wed, 6 Aug 2025 15:12:14 +0000 (17:12 +0200)] 
patch 9.1.1594: completion: search completion throws errors

Problem:  completion: search completion throws errors, wrong placement
          of pum menu with 'imi'=1 (berggeist)
Solution: Fix those errors (Girish Palya)

fixes: #17858
closes: #17870

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): tweak option name notation further
Hirohito Higashi [Wed, 6 Aug 2025 15:00:58 +0000 (17:00 +0200)] 
runtime(doc): tweak option name notation further

related: #17857
closes: #17917

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): add back bars for the '' mark
zeertzjq [Wed, 6 Aug 2025 11:41:05 +0000 (13:41 +0200)] 
runtime(doc): add back bars for the '' mark

this was erroneously changed in commit
85cd509885a05c3a6bb029fb378b1295f107f8f6

related: #17857

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(vim): add gf support for import and packadd in ftplugin
lacygoill [Wed, 6 Aug 2025 11:37:12 +0000 (13:37 +0200)] 
runtime(vim): add gf support for import and packadd in ftplugin

closes: #17881

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(helptoc): add s keymap to split and jump to selected entry
lacygoill [Wed, 6 Aug 2025 11:06:34 +0000 (13:06 +0200)] 
runtime(helptoc): add s keymap to split and jump to selected entry

closes: #17876

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(syntax-tests): Break up non-ASCII over-75-byte-long lines
Aliaksei Budavei [Wed, 6 Aug 2025 10:50:30 +0000 (12:50 +0200)] 
runtime(syntax-tests): Break up non-ASCII over-75-byte-long lines

And anticipate occasional multibyte line wrapping owing to:
> A poorly rendered line may otherwise become wrapped when enough of
> spurious U+FFFD (0xEF 0xBF 0xBD) characters claim more columns than
> are available (75) and then invalidate line correspondence under test.

Observe that for "vim_ex_command.vim" another workaround is
chosen: the long line containing an only multibyte character
near its EOL is conversely made longer by padding and moving
the character to a separate _tail_ part of the wrapped line.
That is, the _head_ part of the line is all ASCII characters
and the wrapped _tail_ part is a mix of various characters
whose total byte count is within bounds.

Other unmodified tracked files of interest:
  java_lambda_expressions.java,
  java_lambda_expressions_signature.java,
  java_numbers.java,
  markdown_conceal.markdown,
  vim9_generic_function_example_set.vim

Also, remove stray U+FFFC (0xEF 0xBF 0xBC) characters.

Related to #16559 and #17704.

Reference:
https://github.com/vim/vim/blob/0fde6aebddef5cb0428e85040994ba45e55cba99/runtime/syntax/testdir/README.txt#L120-L123

closes: #17868

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): fix mismatch between 'backspace' and |i_backspacing|
Emilien Breton [Wed, 6 Aug 2025 10:48:06 +0000 (12:48 +0200)] 
runtime(doc): fix mismatch between 'backspace' and |i_backspacing|

closes: #17867

Signed-off-by: Emilien Breton <bricktech2000@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): Use correct option-name tags
Hirohito Higashi [Wed, 6 Aug 2025 10:44:36 +0000 (12:44 +0200)] 
runtime(doc): Use correct option-name tags

closes: #17857

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoCI: Update labeler.yml with correct netrw path
Ken Takata [Wed, 6 Aug 2025 09:44:38 +0000 (11:44 +0200)] 
CI: Update labeler.yml with correct netrw path

closes: #17916

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): Tweak documentation style
Hirohito Higashi [Wed, 6 Aug 2025 09:43:45 +0000 (11:43 +0200)] 
runtime(doc): Tweak documentation style

closes: #17862

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agotranslation(uk): Fix wrong Ukrainian message translation
Christian Brabandt [Wed, 6 Aug 2025 09:38:27 +0000 (11:38 +0200)] 
translation(uk): Fix wrong Ukrainian message translation

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agocheck.vim: Further improve po message checks
Antonio Giovanni Colombo [Wed, 6 Aug 2025 09:33:49 +0000 (11:33 +0200)] 
check.vim: Further improve po message checks

Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agotranslation(it): Update Italian translation
Antonio Giovanni Colombo [Wed, 6 Aug 2025 07:54:33 +0000 (09:54 +0200)] 
translation(it): Update Italian translation

Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.1593: Confusing error when compiling incomplete try block v9.1.1593
Hirohito Higashi [Tue, 5 Aug 2025 18:03:36 +0000 (20:03 +0200)] 
patch 9.1.1593: Confusing error when compiling incomplete try block

Problem:  Confusing error when compiling incomplete try block
          (lacygoill)
Solution: Give better error messages (Hirohito Higashi)

fixes: #17833
closes: #17853

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agoruntime(misc): removing saccarosium from maintainer list
Luca Saccarola [Tue, 5 Aug 2025 17:38:12 +0000 (19:38 +0200)] 
runtime(misc): removing saccarosium from maintainer list

closes: #17848

Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.1.1592: Vim9: crash with classes and garbage collection v9.1.1592
Yegappan Lakshmanan [Tue, 5 Aug 2025 17:17:51 +0000 (19:17 +0200)] 
patch 9.1.1592: Vim9: crash with classes and garbage collection

Problem:  Vim9: crash with classes and garbage collection
          (Christian J. Robinson, after v9.1.1566)
Solution: When getting the references to an object, make sure the object
          is valid (Yegappan Lakshmanan)

closes: #17860

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(vim): Update base syntax, match Neovim builtin functions
Doug Kearns [Fri, 1 Aug 2025 13:05:58 +0000 (23:05 +1000)] 
runtime(vim): Update base syntax, match Neovim builtin functions

Match Neovim functions when has("nvim") is true or g:vimsyn_vim_features
contains "nvim".

Fixes issue #17884.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
9 days agoruntime(vim): Update base syntax, fix :map termination in :command RHS
Doug Kearns [Tue, 29 Jul 2025 11:03:52 +0000 (21:03 +1000)] 
runtime(vim): Update base syntax, fix :map termination in :command RHS

Ensure :map (and :abbreviate) terminate at | when included in :command
replacement strings containing commands separated by line continuations.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
2 weeks agoCI: Manage multibyte characters in syntax tests
Aliaksei Budavei [Fri, 25 Jul 2025 18:08:52 +0000 (20:08 +0200)] 
CI: Manage multibyte characters in syntax tests

As reported in #16559, bytes of a multibyte character may
be written as separate U+FFFD characters in a ":terminal"
window on a busy machine.  The testing facilities currently
offer an optional filtering step to be carried out between
reading and comparing the contents of two screendump files
for each such file.  This filtering has been resorted to
(#14767 and #16560) in an attempt to unconditionally replace
known non-Latin-1 characters with an arbitrary substitute
ASCII character and avoid this rendering mishap leading to
syntax tests failures.  However, it has been overlooked at
the time that metadata description (in shorthand) to follow
spurious U+FFFD characters may be *distinct* and make the
remainder of such a line, ASCII characters and whatnot, also
unequal between compared screendump files.

While it is straightforward to adapt current filter files to
ignore the line characters after the leftmost U+FFFD,

> It is challenging and error-prone to keep up to date filter
> files because moving around examples in source files will
> likely make redundant some previously required filter files
> and, at the same time, it may require creating new filter
> files for the same source file; substituting one multibyte
> character for another multibyte character will also demand
> a coordinated change for filter files.

Besides, unconditionally dropping arbitrary parts of a line
is rather too blunt an instrument.  An alternative approach
is to not use the supported filtering for this purpose; let
a syntax test pass or fail initially; then *if* the same
failure is imminent, drop the leftmost U+FFFD and the rest
of the previously seen line (repeating it for all previously
seen unequal lines) before another round of file contents
comparing.  The obvious disadvantage with this filtering,
unconditional and otherwise, is that if there are consistent
failures for _other reasons_ and the unequal parts happen to
be after U+FFFDs, then spurious test passing can happen when
stars align for _a particular test runner_.

Hence syntax test authors should strive to write as little
significant text after multibyte characters as syntactically
permissible, write multibyte characters closer to EOL in
general, and make sure that their checked-in and published
"*.dump" files do not have any U+FFFDs.

It is also practical to refrain from attempting screendump
generation if U+FFFDs can already be discovered, and instead
try re-running from scratch the syntax test in hand, while
accepting other recently generated screendumps without going
through with new rounds of verification.

Reference:
https://github.com/vim/vim/pull/16470#issuecomment-2599848525

closes: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: Remove the file filters for syntax tests
Aliaksei Budavei [Fri, 25 Jul 2025 18:07:47 +0000 (20:07 +0200)] 
CI: Remove the file filters for syntax tests

These file filters are not sufficient to work around #16559
and are to be superseded by a more promising alternative.

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI(screendump): Support iterative filtering for screendump comparison
Aliaksei Budavei [Fri, 25 Jul 2025 18:06:38 +0000 (20:06 +0200)] 
CI(screendump): Support iterative filtering for screendump comparison

Before two screendumps are compared for equality by calling
"VerifyScreenDump()", parts of their contents can be omitted
from comparison by executing arbitrary Vim commands written
in a filter file that shares its basename with screendumps.
Sometimes, such filtering can only be too general, as more
context is required in order to decide what parts to touch.
Two new arbitrary functions are therefore hooked in the body
of "VerifyScreenDump()" for the purpose of probing into the
current context and applying iterative filtering as needed.
A paired-up public implementation of each function is also
provided to expedite a workaround for #16559:
------------------------------------------------------------
source util/screendump.vim
let opts = {
    \ 'FileComparisonPreAction':
\ function('g:ScreenDumpDiscardFFFDChars'),
    \ 'NonEqualLineComparisonPostAction':
\ function('g:ScreenDumpLookForFFFDChars'),
\ }
call g:VerifyScreenDump(buf, basename, opts)
------------------------------------------------------------

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI(screendump): Move an early-return test out of the loop
Aliaksei Budavei [Fri, 25 Jul 2025 18:05:37 +0000 (20:05 +0200)] 
CI(screendump): Move an early-return test out of the loop

And express the established indentation style of the file in
its modeline.

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: Include provenance in names of collected artifacts
Aliaksei Budavei [Fri, 25 Jul 2025 18:05:00 +0000 (20:05 +0200)] 
CI: Include provenance in names of collected artifacts

The currently given names to the uploaded archives are too
common and require (often manual) renaming for downloaded
archives that belong to different CI runs/attempts of a PR
and/or different PRs.  Let's automatically disambiguate such
archives from one another by giving them more unique names
for convenience and future reference.

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim): Cleanup syntax tests
Doug Kearns [Fri, 25 Jul 2025 18:00:25 +0000 (20:00 +0200)] 
runtime(vim): Cleanup syntax tests

Improve formatting and naming consistency of the syntax tests.

closes: #17850

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1591: VMS support can be improved v9.1.1591
Zoltan Arpadffy [Fri, 25 Jul 2025 17:16:09 +0000 (19:16 +0200)] 
patch 9.1.1591: VMS support can be improved

Problem:  VMS support can be improved
Solution: Merge chagnes from Steven M. Schweda
          (Zoltan)

closes: #17810

Co-authored-by: Steven M. Schweda <sms@antinode.info>
Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1590: cannot perform autocompletion v9.1.1590
Girish Palya [Fri, 25 Jul 2025 16:48:53 +0000 (18:48 +0200)] 
patch 9.1.1590: cannot perform autocompletion

Problem:  cannot perform autocompletion
Solution: Add the 'autocomplete' option value
          (Girish Palya)

This change introduces the 'autocomplete' ('ac') boolean option to
enable automatic popup menu completion during insert mode. When enabled,
Vim shows a completion menu as you type, similar to pressing |i\_CTRL-N|
manually. The items are collected from sources defined in the
'complete' option.

To ensure responsiveness, this feature uses a time-sliced strategy:

- Sources earlier in the 'complete' list are given more time.
- If a source exceeds its allocated timeout, it is interrupted.
- The next source is then started with a reduced timeout (exponentially
  decayed).
- A small minimum ensures every source still gets a brief chance to
  contribute.

The feature is fully compatible with other |i_CTRL-X| completion modes,
which can temporarily suspend automatic completion when triggered.

See :help 'autocomplete' and :help ins-autocompletion for more details.

To try it out, use :set ac

You should see a popup menu appear automatically with suggestions. This
works seamlessly across:

- Large files (multi-gigabyte size)
- Massive codebases (:argadd thousands of .c or .h files)
- Large dictionaries via the `k` option
- Slow or blocking LSP servers or user-defined 'completefunc'

Despite potential slowness in sources, the menu remains fast,
responsive, and useful.

Compatibility: This mode is fully compatible with existing completion
methods. You can still invoke any CTRL-X based completion (e.g.,
CTRL-X CTRL-F for filenames) at any time (CTRL-X temporarily
suspends 'autocomplete'). To specifically use i_CTRL-N, dismiss the
current popup by pressing CTRL-E first.

---

How it works

To keep completion snappy under all conditions, autocompletion uses a
decaying time-sliced algorithm:

- Starts with an initial timeout (80ms).
- If a source does not complete within the timeout, it's interrupted and
  the timeout is halved for the next source.
- This continues recursively until a minimum timeout (5ms) is reached.
- All sources are given a chance, but slower ones are de-prioritized
  quickly.

Most of the time, matches are computed well within the initial window.

---

Implementation details

- Completion logic is mostly triggered in `edit.c` and handled in
  insexpand.c.

- Uses existing inc_compl_check_keys() mechanism, so no new polling
  hooks are needed.

- The completion system already checks for user input periodically; it
  now also checks for timer expiry.

---

Design notes

- The menu doesn't continuously update after it's shown to prevent
  visual distraction (due to resizing) and ensure the internal list
  stays synchronized with the displayed menu.

- The 'complete' option determines priority—sources listed earlier get
  more time.

- The exponential time-decay mechanism prevents indefinite collection,
  contributing to low CPU usage and a minimal memory footprint.

- Timeout values are intentionally not configurable—this system is
  optimized to "just work" out of the box. If autocompletion feels slow,
  it typically indicates a deeper performance bottleneck (e.g., a slow
  custom function not using `complete_check()`) rather than a
  configuration issue.

---

Performance

Based on testing, the total roundtrip time for completion is generally
under 200ms. For common usage, it often responds in under 50ms on an
average laptop, which falls within the "feels instantaneous" category
(sub-100ms) for perceived user experience.

| Upper Bound (ms) | Perceived UX
|----------------- |-------------
| <100 ms          | Excellent; instantaneous
| <200 ms          | Good; snappy
| >300 ms          | Noticeable lag
| >500 ms          | Sluggish/Broken

---

Why this belongs in core:

- Minimal and focused implementation, tightly integrated with existing
  Insert-mode completion logic.
- Zero reliance on autocommands and external scripting.
- Makes full use of Vim’s highly composable 'complete' infrastructure
  while avoiding the complexity of plugin-based solutions.
- Gives users C native autocompletion with excellent responsiveness and
  no configuration overhead.
- Adds a key UX functionality in a simple, performant, and Vim-like way.

closes: #17812

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(ccomplete): return partial results on complete_check()
Maxim Kim [Fri, 25 Jul 2025 16:30:14 +0000 (18:30 +0200)] 
runtime(ccomplete): return partial results on complete_check()

closes: #17838

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1589: Cannot disable cscope interface using configure v9.1.1589
Christian Brabandt [Fri, 25 Jul 2025 16:27:53 +0000 (18:27 +0200)] 
patch 9.1.1589: Cannot disable cscope interface using configure

Problem:  Cannot disable cscope interface using configure, because in
          feature.h FEAT_CSCOPE will always be enabled for huge builds
          (chdiza)
Solution: Don't define FEAT_CSCOPE from configure script but set the
          ENABLE_CSCOPE flag and check for the presence of that flag in
          feature.h

fixes: #17825
closes: #17842

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1588: Vim9: cannot split dict inside command block v9.1.1588
Yegappan Lakshmanan [Fri, 25 Jul 2025 16:23:58 +0000 (18:23 +0200)] 
patch 9.1.1588: Vim9: cannot split dict inside command block

Problem:  Vim9: cannot split dict inside command block
          (lacygoill)
Solution: Remove the current restriction (Yegappan Lakshmanan).

fixes: #17841
closes: #17845

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(netrw): upstream snapshot v184
Luca Saccarola [Fri, 25 Jul 2025 16:20:59 +0000 (18:20 +0200)] 
runtime(netrw): upstream snapshot v184

This change includes the following upstream commits:

- fix: remove black lines in directory listing
- fix: correctly create new file when using Lexplore
- refactor: remove print functionality

The main highlight is removing print functionality that was broken both
in neovim and vim.

closes: #17847

Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim): fix various indentation issues
lacygoill [Fri, 25 Jul 2025 16:16:09 +0000 (18:16 +0200)] 
runtime(vim): fix various indentation issues

fixes: #15123
closes: #17849

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): use correct possessive form
Christian Brabandt [Thu, 24 Jul 2025 17:51:04 +0000 (19:51 +0200)] 
runtime(doc): use correct possessive form

as suggested by chdiza

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1587: Wayland: timeout not updated before select() v9.1.1587
Foxe Chen [Thu, 24 Jul 2025 17:29:13 +0000 (19:29 +0200)] 
patch 9.1.1587: Wayland: timeout not updated before select()

Problem:  Wayland: timeout not updated before select()
Solution: Always set timeval struct before select() (Foxe Chen).

closes: #17836

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1586: Vim9: can define an enum/interface in a function v9.1.1586
Yegappan Lakshmanan [Thu, 24 Jul 2025 17:14:51 +0000 (19:14 +0200)] 
patch 9.1.1586: Vim9: can define an enum/interface in a function

Problem:  Vim9: can define an enum/interface in a function
          (lacygoill)
Solution: Give an error when defining an enum or an interface inside a
          function (Yegappan Lakshmanan)

fixes: #17835
fixes: #17837
closes: #17837

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim): Update base syntax, match enum constructor type args
Doug Kearns [Thu, 24 Jul 2025 16:54:16 +0000 (18:54 +0200)] 
runtime(vim): Update base syntax, match enum constructor type args

closes: #17840

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim): Update base syntax, match generic functions
Doug Kearns [Wed, 23 Jul 2025 19:25:57 +0000 (21:25 +0200)] 
runtime(vim): Update base syntax, match generic functions

Match Vim9 generic functions, added in #17313.

closes: #17722

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(ccomplete): use complete_check() in ccomplete plugin
Maxim Kim [Wed, 23 Jul 2025 19:20:46 +0000 (21:20 +0200)] 
runtime(ccomplete): use complete_check() in ccomplete plugin

Add complete_check() to ccomplete completion script to avoid UI hangs
and keep Vim responsive as ccomplete can be slow on huge files.

closes: #17826

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(editorconfig): drop mkzip.sh
Christian Brabandt [Wed, 23 Jul 2025 19:12:37 +0000 (21:12 +0200)] 
runtime(editorconfig): drop mkzip.sh

this is not needed here, so let's drop mkzip.sh as requested per
https://github.com/vim/vim/commit/e5e04306bf02aa4ad488558dd593cf5c3b72f9b7#diff-97da9d3de12ae57e69f1287447808b7c30be2d540b3e54dbbe12e7880b0611d0

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1585: Wayland: gvim still needs GVIM_ENABLE_WAYLAND v9.1.1585
Christoffer Aasted [Wed, 23 Jul 2025 19:05:51 +0000 (21:05 +0200)] 
patch 9.1.1585: Wayland: gvim still needs GVIM_ENABLE_WAYLAND

Problem:  Wayland: gvim still needs GVIM_ENABLE_WAYLAND
Solution: Drop the GVIM_ENABLE_WAYLAND code, always enable both X11 and
          Wayland GUI support (Christoffer Aasted)

closes: #17817

Signed-off-by: Christoffer Aasted <chr.aasted@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(misc): use :hor :term to ensure new term window is split horizontally
phanium [Wed, 23 Jul 2025 19:01:40 +0000 (21:01 +0200)] 
runtime(misc): use :hor :term to ensure new term window is split horizontally

Problem:  :term splits new window above in vim, but in nvim it change
          the buffer for current window
Solution: :hor term to ensure consistent splitting for Vim and Neovim

closes: #17822

Signed-off-by: phanium <91544758+phanen@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: increase test timeout to 30 minutes
Christian Brabandt [Wed, 23 Jul 2025 18:45:10 +0000 (20:45 +0200)] 
CI: increase test timeout to 30 minutes

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1584: using ints as boolean type v9.1.1584
Hirohito Higashi [Wed, 23 Jul 2025 18:41:11 +0000 (20:41 +0200)] 
patch 9.1.1584: using ints as boolean type

Problem:  using ints as bool
Solution: Include stdbool.h and start using bool type directly
          (Hirohito Higashi)

This is a test to see if using the boolean types cause any issues.
If this change causes issues on any platform, please reach out.

closes: #17830

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agocheck.vim: Improve po message checks
Antonio Giovanni Colombo [Wed, 23 Jul 2025 18:36:01 +0000 (20:36 +0200)] 
check.vim: Improve po message checks

Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agotranslation(it): Update Italian translation
Antonio Giovanni Colombo [Wed, 23 Jul 2025 17:49:07 +0000 (19:49 +0200)] 
translation(it): Update Italian translation

Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): Tweak documentation style in usr_90.txt
Hirohito Higashi [Wed, 23 Jul 2025 17:44:57 +0000 (19:44 +0200)] 
runtime(doc): Tweak documentation style in usr_90.txt

closes: #17832

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1583: gvim window lost its icons v9.1.1583
Olaf Seibert [Wed, 23 Jul 2025 17:35:59 +0000 (19:35 +0200)] 
patch 9.1.1583: gvim window lost its icons

Problem:  Since patch 9.1.1199 the gvim window no longer had _NET_WM_ICON
          nor WM_HINTS icon information, for example when not using a
  Gnome or KDE desktop (after v9.1.1199)
Solution: Check if the icon theme as used in patch 1199 contains a gvim
          icon. If so, set the window's icon from that. Otherwise
  use the previous method (Olaf Seibert)

fixes: #17703
closes: #17814

Signed-off-by: Olaf Seibert <rhialto@falu.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.1.1582: style issue in vim9type.c and vim9generics.c v9.1.1582
Christian Brabandt [Tue, 22 Jul 2025 17:41:39 +0000 (19:41 +0200)] 
patch 9.1.1582: style issue in vim9type.c and vim9generics.c

Problem:  style issue in vim9type.c and vim9generics.c
          (after v9.1.1581 and v9.1.1580)
Solution: Update Style and place opening brace on a new line.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): remove mention of ftp.vim.org
Christian Brabandt [Tue, 22 Jul 2025 17:30:53 +0000 (19:30 +0200)] 
runtime(doc): remove mention of ftp.vim.org

fixes: #17819

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