Commit Graph

36480 Commits

Author SHA1 Message Date
zeertzjq
20a7e74444 vim-patch:9.1.1043: [security]: segfault in win_line()
Problem:  [security]: segfault in win_line()
          (fizz-is-on-the-way)
Solution: Check that ScreenLines is not NULL

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-j3g9-wg22-v955

9d1bed5ecc

Omit ex_redraw_crash: remove in patch 9.1.1110.

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-16 15:55:34 +08:00
zeertzjq
786c5fbdec vim-patch:9.1.0671: Problem: crash with WinNewPre autocommand
Problem:  crash with WinNewPre autocommand, because window
          structures are not yet safe to use
Solution: Don't trigger WinNewPre on :tabnew

fb3f969936

Cherry-pick doc updates from latest Vim runtime.

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-16 15:55:34 +08:00
zeertzjq
4544cec168 vim-patch:9.1.0117: Stop split-moving from firing WinNew and WinNewPre autocommands
Problem:  win_splitmove fires WinNewPre and possibly WinNew when moving
          windows, even though no new windows are created.
Solution: don't fire WinNew and WinNewPre when inserting an existing
          window, even if it isn't the current window. Improve the
          accuracy of related documentation. (Sean Dewar)

related: vim/vim#14038

96cc4aef3d

Most of the patch was already ported. This includes the remaining part.

Co-authored-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
2026-01-16 15:55:34 +08:00
zeertzjq
d6e5286d2c vim-patch:9.1.0059: No event triggered before creating a window
Problem:  No event is triggered before creating a window.
          (Sergey Vlasov)
Solution: Add the WinNewPre event (Sergey Vlasov)

fixes: vim/vim#10635
closes: vim/vim#12761

1f47db75fd

Not sure if this should be triggered before creating a floating window,
as its use case is related to window layout.

Co-authored-by: Sergey Vlasov <sergey@vlasov.me>
2026-01-16 15:55:33 +08:00
Jan Edmund Lazo
992eaac082 vim-patch:8.2.0370: the typebuf_was_filled flag is sometimes not reset (#37404)
Problem:    The typebuf_was_filled flag is sometimes not reset, which may
            cause a hang.
Solution:   Make sure typebuf_was_filled is reset when the typeahead buffer is
            empty.

e49b4bb895

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-01-16 15:11:07 +08:00
zeertzjq
43339dee40 Merge pull request #37419 from zeertzjq/vim-af973d4
vim-patch: runtime file updates
2026-01-16 07:53:27 +08:00
zeertzjq
074ca976de vim-patch:16c2279: runtime(sh): highlight single-dash short options containing digits
fixes: vim/vim#19082

16c2279062

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-16 07:27:30 +08:00
zeertzjq
d423dd8b8b vim-patch:5529b75: runtime(c): Do not highlight noreturn in C++ code
closes: vim/vim#19170

5529b750a7

Co-authored-by: Wu Yongwei <wuyongwei@gmail.com>
2026-01-16 07:27:18 +08:00
zeertzjq
b94061a71d vim-patch:f25c343: runtime(csh): Support negated if in matchit
Currently, the matchit configuration chokes on valid syntax like:

```csh
if !(true) then
   true
endif
```

Make sure the negation syntax is supported.

closes: vim/vim#19172

f25c343b26

Co-authored-by: Simão Afonso <simao.afonso@powertools-tech.com>
2026-01-16 07:27:08 +08:00
zeertzjq
5144d802c3 vim-patch:f8cde69: runtime(rapid): Update syntax file for ABB Rapid
Also remove trailing white spaces.

closes: vim/vim#19175

f8cde69788

Co-authored-by: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
2026-01-16 07:26:59 +08:00
zeertzjq
d01f1f379c vim-patch:4969b8d: runtime(mbsync): Add syntax highlighting for TLSVersions keyword
mbsync deprecated SSLVersions. Now use TLSVersions (we keep
computability with SSLVersions).

closes: vim/vim#19179

4969b8db4a

Co-authored-by: Mathis Bernadet <matbernadet@emi.u-bordeaux.fr>
2026-01-16 07:26:48 +08:00
zeertzjq
182a8f08b2 vim-patch:af973d4: runtime(yaml): fix indentation script
Problem:  The indentation of Ansible Playbooks gets messed up after
          gg=G (after 9179ddc0608813e)
Solution: Remove one shiftwidth() that seems to be misplaced.

closes: vim/vim#19180

af973d4018

Co-authored-by: Bjoern Foersterling <bjoern.foersterling@gmail.com>
2026-01-16 07:25:46 +08:00
Sean Dewar
ba1d50fdc3 vim-patch:9.1.2086: Memory leak when skipping invalid literal dict
Problem:  memory leak when not evaluating (just parsing) invalid literal
          dict.
Solution: Always clear the key's typval (Sean Dewar)

Though "check_typval_is_value(&tv) == FAIL && !evaluate" is maybe never
true, also always clear tvs if check_typval_is_value fails; at worst
this would be a no-op as their initial types are VAR_UNKNOWN.

closes: vim/vim#19178

b10a3e1a20

check_typval_is_value change is for Vim9 script. (from 9.0.2163)

N/A patch:
vim-patch:9.0.2163: Vim9: type can be assigned to list/dict

Co-authored-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
2026-01-15 23:21:33 +00:00
Sean Dewar
7e2e116343 fix(api): nvim_get_option_value dummy buffer crashes
Problem: nvim_get_option_value with "filetype" set can crash if autocommands
open the dummy buffer in more windows, or if &bufhidden == "wipe".

Solution: Attempt to close all dummy buffer windows before wiping. Promote the
dummy buffer to a normal buffer if that fails.
2026-01-15 20:08:45 +00:00
Sean Dewar
40114d1631 refactor: remove dead code, adjust comment
Removed code doesn't seem to do anything? Looks like a clobbered remnant from
when do_filetype_autocmd lived in did_set_string_option.

Doc comment for wipe_buffer doesn't decrement top_file_num since a2d25b7 (2016),
which presumably means the comment on marks doesn't apply either. (fmark_T::fnum
can't refer to the wrong buffer as numbers aren't reused here anymore)
2026-01-15 20:08:45 +00:00
Sean Dewar
3cb462a960 fix(api): autocmds mess up nvim_get_option_value's dummy buffer
Problem: When the "filetype" key is set for nvim_get_option_value, autocommands
can crash Nvim by prematurely wiping the dummy buffer, or cause options intended
for it to instead be set for unrelated buffers if switched during OptionSet.

Solution: Don't crash. Also quash side-effects from setting the buffer options.
2026-01-15 20:08:45 +00:00
bfredl
b4db223d33 fix(build): treesitter parsers are not ReleaseSafe 2026-01-15 11:43:46 +01:00
bfredl
1427b94200 fix(typval): allocated dynamic size must be at least the static size
fixes #37160
2026-01-15 11:43:46 +01:00
bfredl
ad1c07ebb9 build(ci): test zig build -Doptimize=ReleaseSafe
the ReleaseSafe build mode activates UBSAN rules
which was previously untested, most notably `-fsanitize=object-size`
2026-01-15 11:43:40 +01:00
bfredl
6082b7f850 Merge pull request #37040 from p00f/push-nwlkmnvmmlrt
feat(build.zig): add option to use system dependencies
2026-01-15 11:07:40 +01:00
zeertzjq
405c6c9bb0 Merge pull request #37403 from zeertzjq/vim-9.1.0700
vim-patch:9.1.{0700,0701,0702,0703}
2026-01-15 14:51:13 +08:00
zeertzjq
094d3dd3d4 vim-patch:9.1.0703: crash with 2byte encoding and glob2regpat()
Problem:  possible crash with 2-byte encoding and glob2regpat()
          (after v9.1.0700, v9.1.0702)
Solution: include both bytes for a multi-byte character for an
          escaped character

closes: vim/vim#15590

c9bfed2fda

DBCS 'encoding' is N/A.

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-15 14:15:36 +08:00
zeertzjq
8c31b3eeac vim-patch:9.1.0702: Patch 9.1.0700 broke CI
Problem:  Patch 9.1.0700 broke CI
Solution: Revert for now

f459d68ecf

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-15 14:15:36 +08:00
zeertzjq
0de85e322a vim-patch:9.1.0701: crash with NFA regex engine when searching for composing chars
Problem:  crash with NFA regex engine when searching for composing chars
          (SuyueGuo)
Solution: When there is no composing character, break out of the loop
          and check that out1 state is not null

fixes: vim/vim#15583

c3a02d78bd

Test uses DBCS 'encoding', which is N/A.

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-15 14:15:36 +08:00
zeertzjq
11b3699252 vim-patch:9.1.0700: crash with 2byte encoding and glob2regpat()
Problem:  possible crash with 2byte encoding and glob2regpat()
Solution: Skip over character, if it is multi-byte character

1c815b54bb

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-15 14:15:36 +08:00
Jan Edmund Lazo
5042394241 vim-patch:9.1.0697: [security]: heap-buffer-overflow in ins_typebuf (#37372)
Problem:  heap-buffer-overflow in ins_typebuf
          (SuyueGuo)
Solution: When flushing the typeahead buffer, validate that there
          is enough space left

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-4ghr-c62x-cqfh

322ba91086

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-15 13:35:21 +08:00
ashab-k
86c939ba91 fix(treesitter): fix spell navigation on first line (#37361)
Problem:  Spell navigation skips words on the first line because
          _on_spell_nav passes an empty range (0,0) to the highlighter.

Solution: Use math.max(erow, srow + 1) to ensure a valid search window.

Signed-off-by: ashab-k <ashabkhan2000@gmail.com>
2026-01-15 10:20:24 +08:00
zeertzjq
4451adbf84 Merge pull request #37325 from zeertzjq/term-poll
fix(process): don't limit PTY master remaining data size
2026-01-15 09:57:12 +08:00
zeertzjq
e051718908 fix(process): don't limit PTY master remaining data size 2026-01-15 09:32:10 +08:00
zeertzjq
75c8f75501 refactor(process): don't read from PTY master using uv_pipe_t
Using uv_pipe_t to read from PTY master may drop data if the PTY process
exits immediately after output, as libuv treats a partial read after
POLLHUP as EOF, which isn't true for PTY master on Linux. Therefore use
uv_poll_t instead.

This commit can be reverted if libuv/libuv#4992 is fixed for uv_pipe_t.
2026-01-15 09:32:10 +08:00
zeertzjq
896968cad1 refactor(event/stream.c): fix confusing indent (#37398) 2026-01-15 01:00:55 +00:00
Justin M. Keyes
994444571e test: remove non-actionable tests from "pending" list #37384
Problem:
`t.skip()` adds to the "pending" list. If there is no path to fixing
a pending test, it adds noise to the pending list.

Solution:
Return early instead of using `t.skip()`.
2026-01-14 19:25:11 -05:00
zeertzjq
cabf82be5a test(lsp/diagnostic_spec): fix creating unused clients (#37397)
Fix #36793

Also fix some `integer?` -> `integer` conversion warnings while at it.
2026-01-15 00:23:55 +00:00
Chinmay Dalal
8df6e5ea92 docs(build.zig): document zig build 2026-01-14 13:16:38 -05:00
Chinmay Dalal
5ec0c1ca07 feat(build.zig): install parsers in install step
Problem: The install step does not install parsers
Solution: Make the install step depend on installing parsers
2026-01-14 13:16:38 -05:00
zeertzjq
83552847f3 Merge pull request #37389 from zeertzjq/vim-9.1.2085
vim-patch:partial:9.0.0907,9.1.{1323,2023,2085}
2026-01-14 14:19:37 +08:00
zeertzjq
40fb2818b6 vim-patch:9.1.2085: Use-after-free in winframe_remove()
Problem:  Use-after-free in winframe_remove() (henices)
Solution: Set window_layout_locked() inside winframe_remove()
          and check that writing diff files is disallowed when the
          window layout is locked.

It can happen with a custom diff expression when removing a window:

 1. Buffer was removed, so win_frame_remove() is called to remove the
    window.
 2. win_frame_remove() → frame_new_height() → scroll_to_fraction()
    → diff_check_fill() (checks for filler lines)
 3. diff_check_fill() ends up causing a diff_try_update, and because we
    are not using internal diff, it has to first write the file to a
    buffer using buf_write()
 4. buf_write() is called for a buffer that is not contained within a
    window, so it first calls aucmd_prepbuf() to create a new temporary
    window before writing the buffer and then later calls
    aucmd_restbuf(), which restores the previous window layout, calling
    winframe_remove() again, which will free the window/frame structure,
    eventually freeing stuff that will still be accessed at step 2.

closes: vim/vim#19064

ead1dda74a

Nvim doesn't have this bug as Nvim uses a floating window as autocommand
window, and removing it doesn't need winframe_remove().

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-14 13:56:01 +08:00
zeertzjq
6fa2ebec6b vim-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: vim/vim#19023

9266a2a197

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-14 13:56:01 +08:00
zeertzjq
328640aed0 vim-patch:9.1.1323: b:undo_ftplugin not executed when re-using buffer
Problem:  b:undo_ftplugin not executed when re-using buffer
          (archy3)
Solution: explicitly execute b:undo_ftplugin in buflist_new() when
          re-using the current buffer

fixes: vim/vim#17113
closes: vim/vim#17133

baa8c90cc0

Cherry-pick test_filetype.vim changes from patch 9.1.1325.

Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-01-14 13:56:01 +08:00
zeertzjq
92596a37e7 vim-patch:partial:9.0.0907: restoring window after WinScrolled may fail
Problem:    Restoring window after WinScrolled may fail.
Solution:   Lock the window layout when triggering WinScrolled.

d63a85592c

Only check close_disallowed in window_layout_locked() for now.
Also don't check window_layout_locked() when closing a floating window,
as it's not checked when creating a floating window.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-01-14 13:56:00 +08:00
Chinmay Dalal
41bc3020c4 fix(build.zig): format build.zig to keep lines under 100 chars 2026-01-13 22:09:03 -05:00
Chinmay Dalal
b618511ef9 fix(editorconfig): use 4 spaces indentation for zig files 2026-01-13 22:09:03 -05:00
Chinmay Dalal
6d9031390c feat(build.zig): add option to use system dependencies
Problem:
build.zig always downloads dependencies and statically links them,
which is frowned upon by distro packagers.

Solution:
Add option to use system libraries.
2026-01-13 22:09:03 -05:00
zeertzjq
dddc359213 test(client): check for uv.run() failure (#37379)
Related #37376
2026-01-14 08:00:37 +08:00
zeertzjq
bb0f28f20b Merge pull request #37385 from zeertzjq/vim-ec46b9d
vim-patch: runtime file updates
2026-01-14 07:39:33 +08:00
zeertzjq
6869d0698f vim-patch:17d60ce: runtime(compiler): add compiler plugin for cabal
closes: vim/vim#19152

17d60cee55

Co-authored-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
2026-01-14 07:12:48 +08:00
zeertzjq
3f10748a07 vim-patch:c2f453f: runtime(krl): Update syntax file for Kuka Robot Language
closes: vim/vim#19171

c2f453f5f3

Co-authored-by: KnoP-01 <knosowski@graeffrobotics.de>
2026-01-14 07:12:28 +08:00
zeertzjq
3ad9e6254b vim-patch:ec46b9d: runtime(matchit): include minor improvement from chrisbra/matchit
In particular, documentation update from
related: chrisbra/matchit#55

ec46b9d4f2

Co-authored-by: Jon Parise <jon@indelible.org>
2026-01-14 07:11:32 +08:00
bfredl
686a9edd38 Merge pull request #35991 from bfredl/neopipe
fix(shell): ceci n'est pas une pipe
2026-01-13 10:31:32 +01:00
bfredl
5581a53437 fix(shell): ceci n'est pas une pipe
On linux /dev/stdin is defined as a symlink to /proc/self/fd/0
This in turn is defined as a "magic" symlink which is allowed to point
to internal kernel objects which really does not have a file
name. As a glaring inconsistency, fopen("/proc/self/fd/0", "r")
works if fd was originally opened using pipe() but not using
socketpair(). As it happens UV_CREATE_PIPE does not create pipes
but creates socket pairs. These two unfortunate conditions
means that using /dev/stdin and similar does not work in
shell commands in nvim on linux. as a work around, override
libuv's descicion and create an actual pipe pair.

This change is not needed on BSD:s but done unconditionally for simplicity,
except for on windows where it is not done for stdout because of windows

fixes #35984
2026-01-13 09:41:51 +01:00