]> git.ipfire.org Git - thirdparty/vim.git/log
thirdparty/vim.git
22 hours agoruntime(algol68): Update syntax file, match symbolic identity relators master
Doug Kearns [Fri, 1 May 2026 16:35:57 +0000 (16:35 +0000)] 
runtime(algol68): Update syntax file, match symbolic identity relators

closes: #20109

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
22 hours agopatch 9.2.0428: popup: no opacity support for completepopup/previewpopup v9.2.0428
Yasuhiro Matsumoto [Fri, 1 May 2026 16:28:51 +0000 (16:28 +0000)] 
patch 9.2.0428: popup: no opacity support for completepopup/previewpopup

Problem:  popup: no opacity support for completepopup/previewpopup
Solution: Add support opacity: suboption for the 'completeopt'.

Accepts opacity:0-100 with the same semantics as popup_create()'s
opacity option, allowing the info / preview popup to blend with
the background.

closes: #20099

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
22 hours agopatch 9.2.0427: popup: opacity blend may leaks white bg color v9.2.0427
Yasuhiro Matsumoto [Fri, 1 May 2026 16:10:21 +0000 (16:10 +0000)] 
patch 9.2.0427: popup: opacity blend may leaks white bg color

Problem:  popup: opacity blend may leaks white bg color
Solution: Add cterm color blending for 256 color terminals, use
          COLOR_INVALID() macro to check for invalid color
          (Yasuhiro Matsumoto)

When a textprop highlight only set gui=undercurl/guisp (no fg/bg), the
CTERMCOLOR sentinel was treated by hl_blend_attr() as a real near-white
color, leaking white bg onto textprop-covered cells under an opacity
popup or pum.  Add a cterm color blending path that approximates blends
in the xterm 256-color palette using the gui RGB when available, so
opacity now has a visible effect even without 'termguicolors' (in
256-color terminals).  Below 256 colors the blend is skipped.

Also document the requirement (GUI, 'termguicolors', or 256-color
terminal) and update existing pumopt/popupwin opacity screendumps to
reflect the new blended output.

closes: #20095

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
22 hours agopatch 9.2.0426: tests: still some flaky screendump tests v9.2.0426
Yasuhiro Matsumoto [Fri, 1 May 2026 16:01:03 +0000 (16:01 +0000)] 
patch 9.2.0426: tests: still some flaky screendump tests

Problem:  tests: still some flaky screendump tests
          (James McCoy)
Solution: Replace flaky VerifyScreenDump checks with assert_* assertions
          for Test_visual_block_scroll and Test_scrolloffpad_with_folds,
          and remove the now-unused dump files, mark those tests as
          flaky (which happened previously for screendump tests
          automatically) (Yasuhiro Matsumoto).

fixes:   #20096
related: #20095

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
24 hours agopatch 9.2.0425: Cannot silence undo/redo messages v9.2.0425
Shougo Matsushita [Fri, 1 May 2026 14:54:56 +0000 (14:54 +0000)] 
patch 9.2.0425: Cannot silence undo/redo messages

Problem:  Cannot silence undo/redo messages
Solution: Add "u" flag to 'shortmess' option
          (Shougo Matsushita).

fixes:  #20049
closes: #20107

Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
25 hours agopatch 9.2.0424: popup: flicker when wildtrigger() refreshes the popup menu v9.2.0424
Yasuhiro Matsumoto [Fri, 1 May 2026 13:29:01 +0000 (13:29 +0000)] 
patch 9.2.0424: popup: flicker when wildtrigger() refreshes the popup menu

Problem:  popup: flicker when wildtrigger() refreshes the popup menu
Solution: Wrap the pum teardown and cmdline redraw in synchronized
          terminal output (Yasuhiro Matsumoto).

Reduces flicker when wildtrigger() refreshes the popup on every
keystroke and the cmdline is wrapped: the un-scroll inside
update_screen() and the re-scroll inside redrawcmd() are emitted as
one atomic terminal update.

closes: #20081

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
25 hours agopatch 9.2.0423: popup: wrapped cmdline truncated with wildoptions=pum v9.2.0423
Yasuhiro Matsumoto [Fri, 1 May 2026 13:25:31 +0000 (13:25 +0000)] 
patch 9.2.0423: popup: wrapped cmdline truncated with wildoptions=pum

Problem:  popup: wrapped cmdline truncated with wildoptions=pum
Solution: Call msg_starthere() in redrawcmd() to reset lines_left
          before each redraw (Yasuhiro Matsumoto).

redrawcmd() leaves lines_left at its previous value, which decrements
across successive redraws (e.g. when wildtrigger() refreshes the popup
on every keystroke) until 0, after which msg_no_more aborts drawing
the wrapped cmdline. Call msg_starthere() to reset it.

related: #20081

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
25 hours agopatch 9.2.0422: popup: leave stray char when scrollbar changes v9.2.0422
Yasuhiro Matsumoto [Fri, 1 May 2026 13:12:11 +0000 (13:12 +0000)] 
patch 9.2.0422: popup: leave stray char when scrollbar changes

Problem:  popup: leave stray char when scrollbar changes
          (Maxim Kim, after v9.2.0112)
Solution: refresh popup mask when scrollbar visibility changes
          (Yasuhiro Matsumoto)

popup_adjust_position() set popup_mask_refresh only on geometry
changes, missing the case where w_has_scrollbar flips. After
popup_settext() shrinks the buffer enough that the scrollbar
disappears, the cell that held the old border / scrollbar was
never repainted, leaving stray characters.

fixes:  #20092
closes: #20098

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
44 hours agotranslation(sr): Update of Serbian translation
Ivan Pešić [Thu, 30 Apr 2026 18:06:46 +0000 (18:06 +0000)] 
translation(sr): Update of Serbian translation

closes: #20105

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
44 hours agoruntime(cabal): add missing haskell language editions
Léana 江 [Thu, 30 Apr 2026 18:00:28 +0000 (18:00 +0000)] 
runtime(cabal): add missing haskell language editions

closes: #20097

Signed-off-by: Léana 江 <leana.jiang+git@icloud.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(doc): clarify separator cell on status line rows
Hirohito Higashi [Wed, 29 Apr 2026 21:44:12 +0000 (21:44 +0000)] 
runtime(doc): clarify separator cell on status line rows

- Expand hl-VertSplit / hl-VertSplitNC in syntax.txt to spell out which
  character (space vs 'fillchars' "vert") and which highlight group
  (StatusLine / StatusLineNC / VertSplit / VertSplitNC) are used at the
  separator cell on each kind of screen row.
- Add cross references from hl-StatusLine and hl-StatusLineNC to
  hl-VertSplit / hl-VertSplitNC.

The behavior itself is unchanged — see v9.2.0349 (c72196529) — but the
asymmetry reported in #20089 surprised users, so this aims to make the
spec discoverable from the highlight group docs.

closes: #20101

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(doc): Update help tags file
Christian Brabandt [Wed, 29 Apr 2026 21:22:48 +0000 (21:22 +0000)] 
runtime(doc): Update help tags file

forgotten from Commit e7e35b9e3866abcbb33e

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agoruntime(doc): clarify that viminfo file should be trusted
Christian Brabandt [Wed, 29 Apr 2026 21:17:11 +0000 (21:17 +0000)] 
runtime(doc): clarify that viminfo file should be trusted

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0421: vimball: can smuggle Vimscript into VimballRecord file v9.2.0421
Christian Brabandt [Wed, 29 Apr 2026 20:36:14 +0000 (20:36 +0000)] 
patch 9.2.0421: vimball: can smuggle Vimscript into VimballRecord file

Problem:  vimball: can smuggle Vimscript into VimballRecord file
          (Mayank Jangid and Kushal Khemka)
Solution: Disallow strange file names

Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0420: channel: cannot handle binary data via channel callbacks v9.2.0420
Yasuhiro Matsumoto [Wed, 29 Apr 2026 19:48:05 +0000 (19:48 +0000)] 
patch 9.2.0420: channel: cannot handle binary data via channel callbacks

Problem:  channel: cannot handle binary data via channel callbacks
Solution: Add a blob channel mode that passes callback data as a Blob
          (Yasuhiro Matsumoto).

closes: #20084

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0419: popup: rendering issues v9.2.0419
Yasuhiro Matsumoto [Wed, 29 Apr 2026 19:23:47 +0000 (19:23 +0000)] 
patch 9.2.0419: popup: rendering issues

Problem:  popup: rendering issues
Solution: Fix popup bottom edge overflow, stabilize popup width across
          scrolling, fix popup right edge overflow
          (Yasuhiro Matsumoto)

closes: #20042

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0418: wildcards in expanded env vars reinterpreted by glob v9.2.0418
glepnir [Wed, 29 Apr 2026 19:10:43 +0000 (19:10 +0000)] 
patch 9.2.0418: wildcards in expanded env vars reinterpreted by glob

Problem:  With $d='[dir]', `:e $d/file.txt` opens the wrong file,
          `:e $d/<Tab>` fails to complete, and `glob('$d/*')` returns
          nothing. Wildcard characters inside expanded environment
          variables get picked up by globbing again.
Solution: Turn the 4th parameter of expand_env_esc() from a bool into a
          string of characters to escape in each expanded value. Callers
          that pass the result to wildcard expansion should include
          PATH_ESC_WILDCARDS in addition to " \t" (glepnir).

closes: #20053

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0417: completion: no support for "noinsert" with 'wildmode' v9.2.0417
glepnir [Wed, 29 Apr 2026 18:35:55 +0000 (18:35 +0000)] 
patch 9.2.0417: completion: no support for "noinsert" with 'wildmode'

Problem:  completion: no support for "noinsert" with 'wildmode' and
          commandline completion
Solution: Add "noinsert" value to the 'wildmode' option, mirroring
          'completeopt' "noinsert" behaviour (glepnir).

fixes:  #16551
closes: #20080

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0416: Unix: filename completion splits at space for single-file Ex commands v9.2.0416
Maxim Kim [Wed, 29 Apr 2026 17:14:11 +0000 (17:14 +0000)] 
patch 9.2.0416: Unix: filename completion splits at space for single-file Ex commands

Problem:  SPACE_IN_FILENAME is defined on most platforms but not on Unix.
  As a result, set_context_for_wildcard_arg() on Unix always resets the
  completion pattern at white space for Ex commands that take a
          single file argument.
Solution: Drop the SPACE_IN_FILENAME ifdef (Maxim Kim)

fixes:  #18411
closes: #20090

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0415: Wrong behavior when executing register that ends in Insert mode v9.2.0415
zeertzjq [Wed, 29 Apr 2026 16:10:04 +0000 (16:10 +0000)] 
patch 9.2.0415: Wrong behavior when executing register that ends in Insert mode

Problem:  Wrong behavior when executing register that ends in Insert
          mode from Ctrl-O (Emilien Breton)
Solution: Use :startinsert etc. to restore Insert mode after executing
          the register contents (zeertzjq).

fixes:  #20085
closes: #20091

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 days agopatch 9.2.0414: Flicker when drawing window separator and pum is shown v9.2.0414
Yasuhiro Matsumoto [Wed, 29 Apr 2026 15:58:42 +0000 (15:58 +0000)] 
patch 9.2.0414: Flicker when drawing window separator and pum is shown

Problem:  In a vertical split where the pum overlaps the windows vsep column,
          background draws (vsep at cursor row, status line,
          redraw_vseps, idle ins_redraw) can write into cells that are
          covered by the pum, because skip_for_popup() only protects
          those cells while pum_will_redraw is set.
Solution: In skip_for_popup(), also skip cells under a visible pum when
          the current draw is not the pum itself (screen_zindex
          POPUPMENU_ZINDEX).  Exclude the wildmenu pum (MODE_CMDLINE):
          while the cmdline grows, pum_row is briefly stale and
          protecting those cells would blank a cell of the wrapped
          cmdline row (Yasuhiro Matsumoto).

closes: #20093

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(qml): Add optional chaining to QML syntax
ii14 [Tue, 28 Apr 2026 21:20:41 +0000 (21:20 +0000)] 
runtime(qml): Add optional chaining to QML syntax

"obj?.prop" was wrongly parsed as ternary operator.

closes: #19988

Signed-off-by: ii14 <ii14@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0413: Scrolling wrong with 'splitkeep' when changing 'cmdheight' v9.2.0413
Luuk van Baal [Tue, 28 Apr 2026 21:09:45 +0000 (21:09 +0000)] 
patch 9.2.0413: Scrolling wrong with 'splitkeep' when changing 'cmdheight'

Problem:  Cursor is not adjusted when 'cmdheight' is changed to cover
          the cursor with 'splitkeep' ~= "cursor".
Solution: Handle window resize for 'splitkeep' after changing 'cmdheight'.
          Ensure previous window height is set when changing 'splitkeep'
          (Luuk van Baal).

closes: #20043

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0412: channel: term_start() out_cb/err_cb no longer deliver raw chunks v9.2.0412
Hirohito Higashi [Tue, 28 Apr 2026 21:03:12 +0000 (21:03 +0000)] 
patch 9.2.0412: channel: term_start() out_cb/err_cb no longer deliver raw chunks

Problem:  channel: term_start() out_cb/err_cb no longer deliver raw
          chunks (regression from patch 9.2.0224, breaks callers like
          vim-fugitive that parse multi-line output)
          (D. Ben Knoble, after v9.2.0224)
Solution: Remove the PTY-specific per-line splitting in
          may_invoke_callback() so RAW callbacks again receive the
          raw chunk as returned by read(), preserving embedded NL.
          If per-line handling is desired, the callback must split
          "msg" on NL and strip the trailing CR itself; document
          this behavior in term_start().  Replace
          Test_term_start_cb_per_line() with
          Test_term_start_cb_raw_chunk() to verify the raw-chunk
          contract.

fixes:  #20041
closes: #20045

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0411: tabpanel: no Vim script functions for the tabpanel v9.2.0411
Yasuhiro Matsumoto [Tue, 28 Apr 2026 20:25:30 +0000 (20:25 +0000)] 
patch 9.2.0411: tabpanel: no Vim script functions for the tabpanel

Problem:  tabpanel: no Vim script functions for the tabpanel
Solution: Add tabpanel_getinfo() and tabpanel_scroll()
          (Yasuhiro Matsumoto).

tabpanel_getinfo() returns a dict describing the tabpanel (align,
columns, scrollbar, offset, total, max_offset).

tabpanel_scroll(n) scrolls the tabpanel by n rows (positive for
down, negative for up). With {absolute: 1} the argument is used as
the new absolute offset instead of a delta. The offset is clamped to
the valid range; returns true when it actually changes.

closes: #20056

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0410: test suite races when run with parallel make v9.2.0410
Jesse Rosenstock [Tue, 28 Apr 2026 19:23:41 +0000 (19:23 +0000)] 
patch 9.2.0410: test suite races when run with parallel make

Problem:  Running "make test" with -jN causes spurious failures because
          the old-style tests share filenames (test.ok, test.out, X*,
          viminfo) in the working directory.
Solution: Add .NOTPARALLEL to the testdir Makefile to prevent parallel
          execution of tests (Jesse Rosenstock).

closes: #20082

Co-authored-by: Gemini
Signed-off-by: Jesse Rosenstock <jmr@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agoruntime(doc): Update docs related to tabpanel
Hirohito Higashi [Tue, 28 Apr 2026 19:19:53 +0000 (19:19 +0000)] 
runtime(doc): Update docs related to tabpanel

closes: #20083

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0409: memory leaks in copy_substring_from_pos() v9.2.0409
glepnir [Tue, 28 Apr 2026 19:14:22 +0000 (19:14 +0000)] 
patch 9.2.0409: memory leaks in copy_substring_from_pos()

Problem:  Memory leak in error path of copy_substring_from_pos().
Solution: Free the garray on OOM in copy_substring_from_pos()
          (glepnir).

closes: #20086

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3 days agopatch 9.2.0408: Insert-mode <Cmd> edits can corrupt undo v9.2.0408
Jaehwang Jung [Tue, 28 Apr 2026 19:04:39 +0000 (19:04 +0000)] 
patch 9.2.0408: Insert-mode <Cmd> edits can corrupt undo

Problem:  A <Cmd> command in Insert mode can edit the current buffer,
          e.g., with setline(). That edit appends to the current undo
          block, but Insert mode does not know that the cursor line may
          need to be saved again before the next typed edit. If the next
          typed edit is a <BS> at the start of a line, it can join away
          the line that was changed by the <Cmd> command before Insert
          mode saves that updated line. The newest undo entry can then
          still refer to the joined-away line, so undo sees a range past
          the end of the buffer and fails with E438.
Solution: If a <Cmd> command in Insert mode changes the buffer, set
          ins_need_undo so stop_arrow() refreshes Insstart. This lets
          the next edit properly decide whether a new undo entry is
          needed (Jaehwang Jung)

closes: #20087
AI-assisted: Codex

Signed-off-by: Jaehwang Jung <tomtomjhj@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0407: tabpanel: A few issues with the tabpanel v9.2.0407
Hirohito Higashi [Mon, 27 Apr 2026 21:14:46 +0000 (21:14 +0000)] 
patch 9.2.0407: tabpanel: A few issues with the tabpanel

Problem:  Several issues around the tabpanel scrollbar:
          1. :set tabpanelopt= completion did not offer "scroll" and
              "scrollbar".
          2. gt/gT and other tab switches did not update the scrollbar
              thumb; the current tab could move outside the visible
              panel range without the view following.
          3. When tpl_scroll_offset was at its maximum, the thumb's
              bottom did not reach the last screen row due to integer
              truncation in thumb_top (e.g. 31 tabs on 24 rows + :tablast
              left a one-row gap).
          4. For align:right the scrollbar was drawn on the panel's
              left edge (adjacent to the buffer area), which breaks the
              common convention that a vertical scrollbar sits on the
              right.
Solution: - Add "scroll" and "scrollbar" to the 'tabpanelopt' expansion
            list.  Cover the completion in test_options.vim and extend
            util/gen_opt_test.vim with the new valid/invalid values;
            drop the now-redundant acceptance test from
            test_tabpanel.vim.
          - In draw_tabpanel(), remember the last-drawn curtab and,
            when it changes, adjust tpl_scroll_offset so curtab_row
            falls inside [offset, offset + Rows).  Mouse wheel and
            drag leave curtab unchanged, so the user's chosen offset
            is preserved.
          - In draw_tabpanel_scrollbar(), compute thumb_top as
            (Rows - thumb_height) * tpl_scroll_offset
            / (tpl_total_rows - Rows), mirroring the mapping already
            used by tabpanel_drag_scrollbar().  This guarantees the
            thumb's bottom reaches the last row at the maximum offset.
          - In draw_tabpanel(), place the scrollbar at the tabpanel's
            right edge for both align:left and align:right (previously
            align:right put it on the panel's left edge next to the
            vertical separator).  For align:right this means the
            scrollbar now sits at the screen's right edge.
          - Update :h tabpanel-scroll to describe the new, align-
            independent placement.
          - Add Test_tabpanel_scrollbar_follows_curtab() and
            Test_tabpanel_scrollbar_reaches_bottom() to exercise the
            regressions fixed by items 2 and 3.

closes: #20052

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0406: VisualNOS not used when Wayland selection ownership lost v9.2.0406
Shane Harper [Mon, 27 Apr 2026 19:55:03 +0000 (19:55 +0000)] 
patch 9.2.0406: VisualNOS not used when Wayland selection ownership lost

Problem:  VisualNOS not used when Wayland selection ownership lost
          (lilydjwg)
Solution: Don't require X_DISPLAY != NULL to use VisualNOS
          (Shane Harper).

fixes:   #19914
related: #19812
related: #19659
closes:  #20066

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0405: when jumping to tags, will open URLs v9.2.0405
Christian Brabandt [Mon, 27 Apr 2026 18:40:07 +0000 (18:40 +0000)] 
patch 9.2.0405: when jumping to tags, will open URLs

Problem:  when jumping to tags, will open URLs
          (Srinivas Piskala Ganesh Babu)
Solution: Disallow trying to open remote files.

closes: #20068

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0404: redraw_listener_add() does not check secure flag v9.2.0404
Christian Brabandt [Mon, 27 Apr 2026 18:29:33 +0000 (18:29 +0000)] 
patch 9.2.0404: redraw_listener_add() does not check secure flag

Problem:  redraw_listener_add() does not check secure flag
Solution: Check for check_secure() in f_redraw_listener_add()

closes: #20070

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0403: Vim9: def function sandbox bypass v9.2.0403
Christian Brabandt [Mon, 27 Apr 2026 18:14:49 +0000 (18:14 +0000)] 
patch 9.2.0403: Vim9: def function sandbox bypass

Problem:  Vim9: def function sandbox bypass
          (Srinivas Piskala Ganesh Babu)
Solution: Check for sandbox flag in call_user_func() and call_dfunc()
          when executing Vim9 script functions

closes: #20071

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0402: pum: opacity not applied to wildmenu pum v9.2.0402
Yasuhiro Matsumoto [Mon, 27 Apr 2026 18:05:12 +0000 (18:05 +0000)] 
patch 9.2.0402: pum: opacity not applied to wildmenu pum

Problem:  pum: opacity not applied to wildmenu pum
Solution: Call pum_call_update_screen() in cmdline_pum_display() when
          opacity is set, fix flicker by checking against expected row
          (Yasuhiro Matsumoto).

closes: #20072

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0401: tests: still a few flaky tests v9.2.0401
Christian Brabandt [Mon, 27 Apr 2026 17:41:45 +0000 (17:41 +0000)] 
patch 9.2.0401: tests: still a few flaky tests

Problem:  tests: still a few flaky tests
Solution: Add WaitForAssert to test_messages.vim, use a smaller terminal
          window for test_tabpanel, add TermWait() in test_messages
          to handle DECQRM messages.

closes: #20074

Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0400: sandbox callbacks selected through 'complete' v9.2.0400
Barrett Ruth [Mon, 27 Apr 2026 17:18:17 +0000 (17:18 +0000)] 
patch 9.2.0400: sandbox callbacks selected through 'complete'

Problem:  Modeline-tainted 'complete' values can invoke completion
          callbacks outside the sandbox.
Solution: Enter the sandbox for both 'complete' callback phases and add
          a regression test (Barrett Ruth)

closes: #20078

Signed-off-by: Barrett Ruth <br.barrettruth@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agopatch 9.2.0399: MS-Windows: compile warning in strptime.c v9.2.0399
Yasuhiro Matsumoto [Mon, 27 Apr 2026 17:10:25 +0000 (17:10 +0000)] 
patch 9.2.0399: MS-Windows: compile warning in strptime.c

Problem:  MS-Windows: compile warning in strptime.c
          (John Marriott, after v9.2.0398)
Solution: Fix the compile warning (Yasuhiro Matsumoto).

Use _get_tzname() instead of the deprecated tzname[] global on UCRT and
MSVC builds; older MinGW (msvcrt.dll) keeps using tzname[] as a
fallback.

related: #20054
closes:  #20079

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
4 days agoruntime(doc): fix :z command description again
Christian Brabandt [Mon, 27 Apr 2026 17:06:47 +0000 (17:06 +0000)] 
runtime(doc): fix :z command description again

Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.2.0398: MS-Windows: missing strptime() support v9.2.0398
Yasuhiro Matsumoto [Sun, 26 Apr 2026 16:58:30 +0000 (16:58 +0000)] 
patch 9.2.0398: MS-Windows: missing strptime() support

Problem:  MS-Windows: missing strptime() support
Solution: Port NetBSD's strptime fallback to Vim
          (Yasuhiro Matsumoto).

The MSVC and MinGW C runtimes do not provide strptime(), so the
strptime() builtin was unavailable on Windows.  Port NetBSD's
lib/libc/time/strptime.c (rev 1.67) and compile it into the Windows
builds.  The BSD 2-clause notice from the original is preserved in the
file.  Windows-specific adjustments: English-only locale tables, the
fromzone()/tzalloc() path is stubbed out (no IANA tzfile loader on
Windows), and tm_gmtoff / tm_zone stores are elided.

Also call tzset() before mktime() in f_strptime() so changes to \$TZ
are honored.

Skip the POSIX DST TZ assertion in Test_strptime() on MS-Windows since
the CRT tzset() does not parse POSIX TZ strings with DST rules.

closes: #20054

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
5 days agopatch 9.2.0397: tabpanel: double-click opens a new tab v9.2.0397
Yasuhiro Matsumoto [Sun, 26 Apr 2026 16:47:08 +0000 (16:47 +0000)] 
patch 9.2.0397: tabpanel: double-click opens a new tab

Problem:  tabpanel: double-click opens a new tab page
Solution: Do not create a new tab page when using a double click
          (Yasuhiro Matsumoto).

The tabpanel click handler inherited the tabline behavior where a
double-click opens a new, empty tab page.  Unlike the tabline, the
tabpanel has no "empty area": every row maps to some tab, so this
fires on any double-click in the tabpanel and can generate stray
empty tabs.  The behavior is also not documented for the tabpanel.

Skip the new-tab branch when the click originated in the tabpanel
and fall through to the regular tab-switch path instead.  The
tabline behavior is unchanged.

closes: #20044

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(javascript): Fix regex highlighting after `(`
Doug Kearns [Sun, 26 Apr 2026 14:52:21 +0000 (14:52 +0000)] 
runtime(javascript): Fix regex highlighting after `(`

- Fix regex highlighting after opening parens, javascriptParens was
  matching later.  Fixes issue #20069.
- Add missing regex flags.
- Mark the file as unmaintained.  Thanks Claudio for all your work.

closes: #20076

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(help): fix wrong check for existing HelpComplete function
zeertzjq [Sun, 26 Apr 2026 14:36:23 +0000 (14:36 +0000)] 
runtime(help): fix wrong check for existing HelpComplete function

To check for an existing HelpComplete function, exists('*HelpComplete')
should be used, as exists('HelpComplete') still returns 0 after sourcing
the ftplugin.

closes: #20073

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(algol68): Add new syntax file, ftplugin and filetype detection
Doug Kearns [Sun, 26 Apr 2026 14:31:55 +0000 (14:31 +0000)] 
runtime(algol68): Add new syntax file, ftplugin and filetype detection

- Add a syntax file update to Neville Dempsey's long-serving version
- Add a new rudimentary ftplugin
- Add filetype detection

Changes to the syntax file include:
- improved prelude, number and symbol highlighting
- prelude highlighting tests
- updated boiler plate

Note that these runtime files currently target Algol 68 Genie employing
the default UPPER stropping regime.  Support for GNU Algol 68 should
also be usable with the UPPER stropping regime, although somewhat less
complete.  Full support for the SUPPER stropping regime in GNU Algol 68
is also planned.

closes: #19818

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Janis Papanagnou <janis_papanagnou@hotmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(dockerfile): Update syntax, fix RUN command highlighting
Doug Kearns [Sun, 26 Apr 2026 14:26:19 +0000 (14:26 +0000)] 
runtime(dockerfile): Update syntax, fix RUN command highlighting

Allow for docker comments to be interspersed in a multiline (continued)
RUN command argument.

fixes:  #8364
closes: #19829

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0396: tests: Test_error_callback_terminal is flaky on macOS v9.2.0396
Yasuhiro Matsumoto [Sun, 26 Apr 2026 09:22:38 +0000 (09:22 +0000)] 
patch 9.2.0396: tests: Test_error_callback_terminal is flaky on macOS

Problem:  tests: Test_error_callback_terminal is flaky on macOS
Solution: Use WaitForAssert() to make it more reliable
          (Yasuhiro Matsumoto).

term_wait() only waits for terminal screen updates and does not
guarantee that the err_io 'pipe' callback has fired, so on macOS
the assert_match() against g:error frequently runs before sh has
written "sh: XXXX: not found", causing the test to flake.

Replace term_wait() + assert_match() with WaitForAssert() so each
assertion polls until the callback delivers the expected output.
Also defer sending "exit" until the stderr message has been seen,
to avoid losing the stderr write to the exit race.

closes: #20075

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): Update documentation on :z
Christian Brabandt [Sun, 26 Apr 2026 09:18:07 +0000 (09:18 +0000)] 
runtime(doc): Update documentation on :z

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(help): make help omnifunc global
Peter Cardenas [Sun, 26 Apr 2026 08:42:57 +0000 (08:42 +0000)] 
runtime(help): make help omnifunc global

closes: #20024

Signed-off-by: Peter Cardenas <16930781+PeterCardenas@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0395: tests: Test_backupskip() may read from $HOME v9.2.0395
D. Ben Knoble [Sun, 26 Apr 2026 08:33:59 +0000 (08:33 +0000)] 
patch 9.2.0395: tests: Test_backupskip() may read from $HOME

Problem:  tests: Test_backupskip() may read from $HOME
Solution: Set $HOME to an empty value, use --clean
          (D Ben Knoble)

Even though we unset HOME, we can see via scriptnames that user files
are still sourced! One of my installed plugins warns when not compiled
with +python3, so this test has a "press Enter" prompt.

Use `--clean` like most other GetVimProg()'s do to fix it. Some tests
use `system()` instead, but that turns this test into a failure rather
than passing; I'm not sure why other tests don't suffer from this.

To prove to ourselves, we can use code like this:

    diff --git i/src/testdir/test_options.vim w/src/testdir/test_options.vim
    index a408e20e1..044364a54 100644
    --- i/src/testdir/test_options.vim
    +++ w/src/testdir/test_options.vim
    @@ -1179,6 +1179,7 @@ func Test_backupskip()
       " P_NODUP).  Run this in a separate instance and write v:errors in a file,
       " so that we see what happens on startup.
       let after =<< trim [CODE]
    +      call writefile([execute('scriptnames')], 'foo')
           let bsklist = split(&backupskip, ',')
           call assert_equal(uniq(copy(bsklist)), bsklist)
           call writefile(['errors:'] + v:errors, 'Xtestout')
    @@ -1196,7 +1197,7 @@ func Test_backupskip()
       " unset $HOME, so that it won't try to read init files
       let saveenv['HOME'] = getenv("HOME")
       call setenv('HOME', v:null)
    -  exe 'silent !' . cmd
    +  exe 'silent !' . cmd .. ' --cmd "echo &rtp"'
       call assert_equal(['errors:'], readfile('Xtestout'))

       " restore environment variables

Here, that causes "foo" to include a bunch of files under ~/.vim. I'm
not sure why this happens, but lets paper over it for the test.

We can also tell that (orthogonal to --clean) setting HOME='' works too.
Let's do that in addition since unsetting HOME isn't quite enough.

closes: #20051

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0394: xxd: offsets greater than LONG_MAX print as negative v9.2.0394
Yasuhiro Matsumoto [Sun, 26 Apr 2026 08:22:23 +0000 (08:22 +0000)] 
patch 9.2.0394: xxd: offsets greater than LONG_MAX print as negative

Problem:  xxd: offsets greater than LONG_MAX print as negative
Solution: Use "%lu" to print unsigned long value
          (Yasuhiro Matsumoto)

closes: #20055

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoCI: Fix syntax error in lychee URL checker
svardew [Sun, 26 Apr 2026 08:16:59 +0000 (08:16 +0000)] 
CI: Fix syntax error in lychee URL checker

fixes: #20040

Signed-off-by: svardew <svardew@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoNo guidance for AI coding agents
Christian Brabandt [Sun, 26 Apr 2026 08:07:18 +0000 (08:07 +0000)] 
No guidance for AI coding agents

Problem:  No guidance for AI coding agents working in the Vim
          repository.
Solution: Add AGENTS.md to the repository documenting build
          and test commands, repository layout, commit format,
          C and Vim9-script conventions, test conventions, help
          file style, and release policy, so that AI agents can
          produce patches that match project expectations.

closes: #20039

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoCI: Bump the github-actions group across 1 directory with 3 updates
dependabot[bot] [Sun, 26 Apr 2026 08:05:33 +0000 (08:05 +0000)] 
CI: Bump the github-actions group across 1 directory with 3 updates

Bumps the github-actions group with 3 updates in the / directory: [msys2/setup-msys2](https://github.com/msys2/setup-msys2), [actions/cache](https://github.com/actions/cache) and [github/codeql-action](https://github.com/github/codeql-action).

Updates `msys2/setup-msys2` from 2.31.0 to 2.31.1
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/msys2/setup-msys2/compare/v2.31.0...v2.31.1)

Updates `actions/cache` from 5.0.4 to 5.0.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/v5.0.4...v5.0.5)

Updates `github/codeql-action` from 4.35.1 to 4.35.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.35.1...v4.35.2)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-version: 2.31.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: 4.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

closes: #20063

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0393: MS-Windows: link error with XPM support on UCRT64 v9.2.0393
Yasuhiro Matsumoto [Sun, 26 Apr 2026 07:57:14 +0000 (07:57 +0000)] 
patch 9.2.0393: MS-Windows: link error with XPM support on UCRT64

Problem:  MS-Windows: link error with XPM support on UCRT64
Solution: Make_cyg_ming.mak: allow XPM to point to system layout with
          X11/ headers (Yasuhiro Matsumoto)

When XPM is set to a system prefix such as /msys64/ucrt64 (where xpm.h
lives in include/X11/), the existing -I flags miss the header.  Add
-I $(XPM)/include/X11 so both the bundled layout (xpm/include/xpm.h)
and the system layout (include/X11/xpm.h) work.

closes: #20064

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): Update docs about tabpanel
Hirohito Higashi [Sat, 25 Apr 2026 17:55:55 +0000 (17:55 +0000)] 
runtime(doc): Update docs about tabpanel

closes: #20067

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0392: tests: Some tests are flaky v9.2.0392
Christian Brabandt [Sat, 25 Apr 2026 17:50:47 +0000 (17:50 +0000)] 
patch 9.2.0392: tests: Some tests are flaky

Problem:  tests: Some tests are flaky and cause CI to fail
Solution: Add WaitForAsserts() calls to reduce flakiness

closes: #20050

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agoruntime(doc): Update the ga output to match the actual output
Christian Brabandt [Sat, 25 Apr 2026 17:46:51 +0000 (17:46 +0000)] 
runtime(doc): Update the ga output to match the actual output

Signed-off-by: Christian Brabandt <cb@256bit.org>
6 days agopatch 9.2.0391: tests: Comment in test_vim9_cmd breaks syntax highlighting v9.2.0391
Christian Brabandt [Sat, 25 Apr 2026 16:49:21 +0000 (16:49 +0000)] 
patch 9.2.0391: tests: Comment in test_vim9_cmd breaks syntax highlighting

Problem:  tests: Comment in test_vim9_cmd breaks syntax highlighting
Solution: Move the comment into the function and use the # as comment
          marker instead

Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agotranslation(ru): Fix typo in "може" to "можете" in lang/README.ru.txt
Vitaliy Gromov [Thu, 23 Apr 2026 16:03:31 +0000 (16:03 +0000)] 
translation(ru): Fix typo in "може" to "можете" in lang/README.ru.txt

closes: #20047

Signed-off-by: Vitaliy Gromov <101171374+VitaliyGromov@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
8 days agopatch 9.2.0390: filetype: some Beancount files are not recognized v9.2.0390
Bruno Belanyi [Thu, 23 Apr 2026 15:56:30 +0000 (15:56 +0000)] 
patch 9.2.0390: filetype: some Beancount files are not recognized

Problem:  filetype: some Beancount files are not recognized
Solution: Detect *.bean files as beancount filetype
          (Bruno Belanyi)

closes: #20037

Signed-off-by: Bruno Belanyi <bruno@belanyi.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0389: DECRQM still leaves stray "pp" on Apple Terminal.app v9.2.0389
Hirohito Higashi [Wed, 22 Apr 2026 20:22:25 +0000 (20:22 +0000)] 
patch 9.2.0389: DECRQM still leaves stray "pp" on Apple Terminal.app

Problem:  DECRQM was still sent to Apple Terminal.app before its DA2
          reply was processed, leaving a literal "pp" on screen.
          may_req_decrqm() was called from vim_main2()
          right after may_req_termresponse(), at which point
          term_props[TPR_DECRQM].tpr_status was still TPR_UNKNOWN, so
          the `!= TPR_NO` guard let the request through (after v9.2.0387)
Solution: Send DECRQM from handle_version_response() once
          term_props[TPR_DECRQM].tpr_status == TPR_YES, the same
          pattern already used for t_RS (TPR_CURSOR_STYLE) and t_RC
          (TPR_CURSOR_BLINK), which deliberately wait for the DA2
          reply to avoid the same echo-on-screen issue on Apple
          Terminal.app and Gnome terminal.  Drop the now-unused
          may_req_decrqm() helper and its call site in vim_main2()
          (Hirohito Higashi).

fixes:   #19852
related: #19938
closes:  #20038

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: John Marriott <basilisk@internode.on.net>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
9 days agopatch 9.2.0388: strange indent in update_topline() v9.2.0388
zeertzjq [Wed, 22 Apr 2026 16:09:06 +0000 (16:09 +0000)] 
patch 9.2.0388: strange indent in update_topline()

Problem:  strange indent in update_topline()
Solution: Fix the indentation (zeertzjq)

closes: #20033

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0387: DECRQM request may leave stray chars in terminal v9.2.0387
Hirohito Higashi [Tue, 21 Apr 2026 20:46:12 +0000 (20:46 +0000)] 
patch 9.2.0387: DECRQM request may leave stray chars in terminal

Problem:  Sending DECRQM from handle_version_response() caused DECRPM
          responses to arrive during user input processing, leaving
          bytes in typebuf when clear_showcmd() ran.  This made
          visual-mode showcmd (e.g. "7" line count after V<C-D><C-D>)
          intermittently disappear, failing many screendump tests on CI.
Solution: Move DECRQM request out of handle_version_response() and send
          it at startup via may_req_decrqm(), following the existing
          may_req_termresponse() and may_req_bg_color() pattern.
          Add TPR_DECRQM property set per terminal from the DA2 reply,
          and route DECRQM sends through a may_req_decrqm() helper using
          the termrequest_T pattern, skipping terminals known to
          mishandle it (Foxe Chen, Hirohito Higashi).

fixes:  #19852
closes: #19938

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Hirohito Higashi <h.east.727@gmail.com>
Co-Authored-By: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0386: No scroll/scrollbar support in the tabpanel v9.2.0386
Yasuhiro Matsumoto [Tue, 21 Apr 2026 20:20:30 +0000 (20:20 +0000)] 
patch 9.2.0386: No scroll/scrollbar support in the tabpanel

Problem:  No scroll/scrollbar support in the tabpanel
Solution: Add support for it (Yasuhiro Matsumoto)

closes: #19979

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(sh): allow "#" in special derefs
D. Ben Knoble [Tue, 21 Apr 2026 19:59:07 +0000 (19:59 +0000)] 
runtime(sh): allow "#" in special derefs

Code like ${!#} flags the "#" as shDerefWordError [1]; the "!prefix"
syntax region delegates to one of the shDerefSpecial handlers via
@shDerefList, but it misses the "#" case as valid for ${##} and ${!#}.

[1]: https://vi.stackexchange.com/q/48617/10604

Correct that. Indirection is only valid in Bash in Ksh, so rearrange the
"!" handling to be conditional.

closes: #20016

Helped-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0385: Integer overflow with "ze" and large 'sidescrolloff' v9.2.0385
zeertzjq [Tue, 21 Apr 2026 19:41:37 +0000 (19:41 +0000)] 
patch 9.2.0385: Integer overflow with "ze" and large 'sidescrolloff'

Problem:  Integer overflow with "ze" and large 'sidescrolloff'.
Solution: Check for overflow to avoid negative w_leftcol (zeertzjq).

closes: #20026

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(doc): fix incorrect description of 'scrolloffpad'
zeertzjq [Tue, 21 Apr 2026 19:34:18 +0000 (19:34 +0000)] 
runtime(doc): fix incorrect description of 'scrolloffpad'

closes: #20029

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agoruntime(graphql): Update syntax script to September 2025 spec
Jon Parise [Tue, 21 Apr 2026 19:25:54 +0000 (19:25 +0000)] 
runtime(graphql): Update syntax script to September 2025 spec

A new graphqlEscape syntax graph has been introduced to represent escape
sequences within strings, including the braced unicode form (\u{H+})
added in the September 2025 specification.

See: https://spec.graphql.org/September2025/

closes: #20030

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0384: stale Insstart after <Cmd> cursor move breaks undo v9.2.0384
Jaehwang Jung [Tue, 21 Apr 2026 19:21:24 +0000 (19:21 +0000)] 
patch 9.2.0384: stale Insstart after <Cmd> cursor move breaks undo

Problem:  A <Cmd> command executed from Insert mode can sync undo and
          move the cursor before the next edit. stop_arrow() saved the
          new cursor line for undo, but left Insstart at the previous
          insertion point. A line-start backspace could then delete
          lines above the saved line without saving the joined range,
          leaving a pending undo entry whose bottom resolved above
          its top and raising E340.
Solution: Update Insstart and Insstart_textlen after the pending undo
          save so the next edit starts from the command-updated cursor
          position (Jaehwang Jung).

closes: #20031

AI-assisted: Codex

Signed-off-by: Jaehwang Jung <tomtomjhj@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
10 days agopatch 9.2.0383: [security]: runtime(netrw): shell-injection via sftp: and file: URLs v9.2.0383
Christian Brabandt [Tue, 21 Apr 2026 19:03:02 +0000 (19:03 +0000)] 
patch 9.2.0383: [security]: runtime(netrw): shell-injection via sftp: and file: URLs

Problem:  runtime(netrw): shell-injection via sftp: and file: URLs
          (Joshua Rogers)
Solution: Escape temporary file names, harden filename suffix regex,
          drop unused g:netrw_tmpfile_escape variable

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0382: Wayland: focus-stealing is non-working v9.2.0382
Foxe Chen [Mon, 20 Apr 2026 17:59:56 +0000 (17:59 +0000)] 
patch 9.2.0382: Wayland: focus-stealing is non-working

Problem:  Wayland: focus-stealing is non-working
Solution: Remove it, the feature could be re-implemented using
          clipboard-providers feature, see :h wayland-primary-selection
          (Foxe Chen).

closes: #19984

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0381: Vim9: Missing check_secure() in exec_instructions() v9.2.0381
Christian Brabandt [Mon, 20 Apr 2026 17:44:45 +0000 (17:44 +0000)] 
patch 9.2.0381: Vim9: Missing check_secure() in exec_instructions()

Problem:  Vim9: Missing check_secure() when executing ISN_STOREENV
          instruction (Andrej Tomči)
Solution: Add check_secure(), add test.

closes: #19992

Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0380: completion: a few issues in completion code v9.2.0380
glepnir [Mon, 20 Apr 2026 17:36:56 +0000 (17:36 +0000)] 
patch 9.2.0380: completion: a few issues in completion code

Problem: ins_compl_stop() sets compl_best_matches = 0, but that's a
         pointer, should reset compl_num_bests instead,
         find_common_prefix() reads cpt_sources_array[cur_source] without
         checking cur_source != -1 which causes an OOB for -1,
         find_next_completion_match(): second `if` in the pending loop
         should be `else if`. Forward paging only moves one step per call.

Solution: Reset compl_num_bests instead, add a check for cur_source not
          equal -1, change if to else if (glepnir)

closes: #20000

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0379: gui.color_approx is never used v9.2.0379
Hirohito Higashi [Mon, 20 Apr 2026 17:18:53 +0000 (17:18 +0000)] 
patch 9.2.0379: gui.color_approx is never used

Problem:  gui.color_approx in gui_T has not been assigned anywhere since
          patch 7.4.2094 ("The color allocation in X11 is overly
          complicated", 2016), which dropped the single "gui.color_approx = TRUE;"
          site.  Because the member is zero-initialized and never written, the
          check "if (gui.color_approx)" in gui_mch_init() is always false and the
          "E458: Cannot allocate colormap entry, ..." warning can never be
          emitted.
Solution: Remove the struct member and the unreachable branch.  The E458
          error definition is removed. Update the example error code
          "E458" in the ex_eval.c comment to "E457" accordingly.

closes: #20007

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0378: Using int as bool type in win_T struct v9.2.0378
Hirohito Higashi [Mon, 20 Apr 2026 17:12:29 +0000 (17:12 +0000)] 
patch 9.2.0378: Using int as bool type in win_T struct

Problem:  Several win_T fields are declared as "int" or "char" but are
          used strictly as boolean flags with TRUE/FALSE values.  The
          integer types obscure the boolean intent and are wider than
          needed.
Solution: Change the following win_T members to bool (stdbool.h) and
          update their assignments from TRUE/FALSE to true/false
          accordingly.

The following conversions have been done:
- int -> bool (10 members):
  w_set_curswant, w_botfill, w_old_botfill, w_do_win_fix_cursor,
  w_popup_fixed, w_border_highlight_isset, w_cline_folded,
  w_redr_status, w_arg_idx_invalid, w_has_scrollbar
- char -> bool (4 members):
  w_topline_was_set, w_ru_empty, w_fold_manual, w_foldinvalid

No existing code compares these members against TRUE/FALSE explicitly or
uses ++/-- / bitwise ops on them, so only plain assignments are
affected.

Excluded:
- w_locked (recursion counter with ++/--),
- w_want_scrollbar (may hold -1 from dict_get_bool),
- w_winbar_height (used in arithmetic and exposed as number via
  getwininfo()).

related: #20005
closes:  #20008

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0377: Using int as bool type in gui_T struct v9.2.0377
Hirohito Higashi [Mon, 20 Apr 2026 16:33:57 +0000 (16:33 +0000)] 
patch 9.2.0377: Using int as bool type in gui_T struct

Problem:  Several gui_T fields are declared as "int" or "char" but are
          used strictly as boolean flags with TRUE/FALSE values.  The
          integer types obscure the boolean intent and are wider than
          needed.
Solution: Change the following gui_T members to bool (stdbool.h) and
          update their assignments from TRUE/FALSE to true/false
          accordingly (Hirohito Higashi)

The following conversions have been done:
- int -> bool (11 members):
  in_focus, in_use, starting, dying, dofork, dospawn,
  pointer_hidden, force_redraw, directx_enabled, font_can_bold,
  which_scrollbars[3]
- char -> bool (2 members):
  cursor_is_valid, menu_is_active

No existing code compares these members against TRUE/FALSE explicitly
(e.g. "== TRUE"), so only plain assignments are affected.

gui_init() used counter-style "--gui.starting" / "++gui.starting" to
temporarily clear the flag across a call to gui_mch_enable_menu().
With gui.starting now bool this triggers -Werror=bool-operation, so
replace it with an explicit save/restore.

X11 Bool members (rsrc_rev_video, color_approx) are intentionally left
unchanged: rsrc_rev_video is registered as an X Toolkit resource with
XtRBool / sizeof(Bool) and must keep the int-sized X11 Bool type.

closes: #20005

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0376: Vim9: elseif condition compiled in dead branch v9.2.0376
Furkan Sahin [Mon, 20 Apr 2026 16:22:50 +0000 (16:22 +0000)] 
patch 9.2.0376: Vim9: elseif condition compiled in dead branch

Problem:  When an `if` condition is constant true, the `else` block is
          skipped during compilation. However, any `elseif` condition
          within that skipped block was still compiled. This caused
          errors when the condition referenced variables only declared
          in the skipped block or when it checked for missing features
          (like `has('clipboard')`) (Coacher)
Solution: In compile_elseif(), when scope->se_skip_save is
          already SKIP_YES, skip compiling the elseif condition
          expression using skip_expr_cctx() (Furkan Sahin)

fixes:  #19160
closes: #20021

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0375: prop_find() does not find a virt text in starting line v9.2.0375
Furkan Sahin [Mon, 20 Apr 2026 16:12:54 +0000 (16:12 +0000)] 
patch 9.2.0375: prop_find() does not find a virt text in starting line

Problem:  prop_find() does not find a virt text in the starting line
          (@rickhowe, after v9.2.0320)
Solution: Do not skip virtual text properties with tp_col == MAXCOL on
          the starting line (Furkan Sahin)

The column matching logic incorrectly skipped virtual text properties
with tp_col == MAXCOL on the starting line.  Exclude such properties
from the column range check so they are always found.

fixes:  #20013
closes: #20019

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0374: c_CTRL-{G,T} does not handle offset v9.2.0374
Barrett Ruth [Mon, 20 Apr 2026 16:05:43 +0000 (16:05 +0000)] 
patch 9.2.0374: c_CTRL-{G,T} does not handle offset

Problem:  c_CTRL-{G,T} does not handle offset, when cycling between
          matches
Solution: Refactor parsing logic into parse_search_pattern_offset() and
          handle offsets, note: highlighting does not handle offsets
          yet (Barrett Ruth).

fixes:  #19991
closes: #19998

Signed-off-by: Barrett Ruth <br.barrettruth@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0373: Ctrl-R mapping not triggered during completion v9.2.0373
zeertzjq [Mon, 20 Apr 2026 15:43:56 +0000 (15:43 +0000)] 
patch 9.2.0373: Ctrl-R mapping not triggered during completion

Problem:  Ctrl-R mapping not triggered during completion.
Solution: Move Ctrl-R check out of vim_is_ctrl_x_key()
          (zeertzjq).

fixes:  #20004
closes: #20006

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agopatch 9.2.0372: pum: rendering issues with multibyte text and opacity v9.2.0372
Yasuhiro Matsumoto [Mon, 20 Apr 2026 15:35:39 +0000 (15:35 +0000)] 
patch 9.2.0372: pum: rendering issues with multibyte text and opacity

Problem:  pum: rendering issues with multibyte text and opacity
Solution: Fix trailing-cell handling near popup text boundary,
          use popup attrs on opaque popup text,
          preserve right border when bg wide char spills,
          blend popup text bg with underlying bg,
          fix wide background char corruption
          (Yasuhiro Matsumoto)

closes: #20017

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
11 days agoruntime: Remove wrong syn oneline keyword from a few syntax files
Eisuke Kawashima [Mon, 20 Apr 2026 15:14:31 +0000 (15:14 +0000)] 
runtime: Remove wrong syn oneline keyword from a few syntax files

Also:
- drop a few trailing whitespaces
- mark the oneline keyword for :syn keyword as error in the
  Vim syntax script, add tests for it.

closes: #20018

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0371: filetype: ghostty config files are not recognized v9.2.0371
Bez Hermoso [Mon, 20 Apr 2026 14:47:58 +0000 (14:47 +0000)] 
patch 9.2.0371: filetype: ghostty config files are not recognized

Problem:  filetype: ghostty config files are not recognized
Solution: Detect ghostty configuration files as ghostty filetype,
          include a simple ghostty filetype plugin (Bez Hermoso)

closes: #20002

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Bez Hermoso <me@bez.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0370: duplicate code with literal string_T assignment v9.2.0370
Hirohito Higashi [Mon, 20 Apr 2026 14:43:52 +0000 (14:43 +0000)] 
patch 9.2.0370: duplicate code with literal string_T assignment

Problem:  Duplicate code with literal string_T assignment
Solution: Add STR_LITERAL_SET() macro for string_T literal assignment
          (Hirohito Higashi).

Previously, assigning a string literal to a string_T variable required
two lines that repeated the literal:

    s.string = (char_u *)"open";
    s.length = STRLEN_LITERAL("open");

Writing the literal twice is error-prone -- a typo in one of them
leaves the pointer and the cached length out of sync.

Add a STR_LITERAL_SET() macro in macros.h so that the assignment can
be written in one statement with the literal appearing only once:

    STR_LITERAL_SET(s, "open");

Replace all occurrences of the two-line pattern across the codebase
with the new macro.

No functional change.

related: #19999
related: #20023
closes:  #20025

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0369: multiple definitions of STRING_INIT macro v9.2.0369
Hirohito Higashi [Sun, 19 Apr 2026 21:51:51 +0000 (21:51 +0000)] 
patch 9.2.0369: multiple definitions of STRING_INIT macro

Problem:  multiple definitions of STRING_INIT macro
Solution: Refactor use of STRING_INIT and use a single
          STR_LITERAL_INIT() macro instead
          (Hirohito Higashi)

Consolidate the ad-hoc STRING_INIT() macros that were defined and used
locally in multiple source files. Define a single STR_LITERAL_INIT()
macro in macros.h and replace all previous STRING_INIT() usages with it.

No functional change.

related: #19999
closes:  #20023

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0368: too many strlen() calls when adding strings to dicts v9.2.0368
John Marriott [Sun, 19 Apr 2026 20:58:33 +0000 (20:58 +0000)] 
patch 9.2.0368: too many strlen() calls when adding strings to dicts

Problem:  too many strlen() calls when adding strings to dicts
Solution: Refactor code to use string_T, use dict_add_string_len()
          instead of dict_add_string() (John Marriott)

Additionally:
- In textprop.c, in function prop_fill_dict() use a string_T to store
  local variable text_align.
- In popupwin.c, use a string_T to store struct member pp_name in struct
  poppos_entry_T.
- In mark.c, refactor function add_mark() to pass in the length of
  argument mname.
- In insexpand.c:
  ->Use a string_T to store the elements of static array
    ctrl_x_mode_names.
  ->Refactor function trigger_complete_done_event():
  ->->change type of argument char_u *word to string_T *word.
  ->->make one access of array ctrl_x_mode_names instead of two.
  ->Refactor function ins_compl_mode() to accept a string_T to return the
    resulting string.
- In fileio.c:
  ->Refactor function getftypewfd() to accept a string_T to return the
    resulting string.
  ->In function create_readdirex_item() use a string_T to store local
    variable q.
- In cmdexpand.c, store global cmdline_orig as a string_T.
- In autocmd.c, in function f_autocmd_get() use a string_T to store local
  variables event_name and group_name. Measure their lengths once when
  they are assigned so they are not remeasured on each call to
  dict_add_string() in the subsequent for loop.
- In channel.c, in function channel_part_info() drop local variable status
  and use s instead. Make s a string_T.

closes: #19999

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0367: runtime(netrw): ~ note expanded on MS Windows v9.2.0367
Yasuhiro Matsumoto [Sun, 19 Apr 2026 20:38:35 +0000 (20:38 +0000)] 
patch 9.2.0367: runtime(netrw): ~ note expanded on MS Windows

Problem:  runtime(netrw): ~ note expanded on MS Windows
          (Tom Vamvanij)
Solution: Expand ~ on MS Windows (Yasuhiro Matsumoto)

On Windows, ":Explore ~" did nothing because the tilde expansion was
gated to Unix/Cygwin only.  Additionally, substitute() interprets
backslashes in the replacement string specially (e.g. \U as a case
modifier), which would corrupt $HOME values like C:\Users\name even
if the branch were taken.

Include has("win32") in the guard, anchor the pattern to the start of
the string, and escape backslashes, ampersands and tildes in $HOME
before substituting.

fixes:  #20003
closes: #20014

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0366: pum: flicker when updating pum in place v9.2.0366
Yasuhiro Matsumoto [Sun, 19 Apr 2026 20:21:37 +0000 (20:21 +0000)] 
patch 9.2.0366: pum: flicker when updating pum in place

Problem:  pum: flicker when updating pum in place
Solution: Skip update_screen() when the popup menu is redrawn
          at the same position (Yasuhiro Matsumoto).

closes: #20015

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0365: using int as bool v9.2.0365
Hirohito Higashi [Sun, 19 Apr 2026 20:10:20 +0000 (20:10 +0000)] 
patch 9.2.0365: using int as bool

Problem:  using int as bool
Solution: refactor: use bool type for internal flags in buf_T
          (Hirohito Higashi)

Change the type of 23 internal state flag fields in buf_T from int
to bool for improved type clarity and code readability.

These fields are pure boolean flags that are never accessed via the
option system's varp (which uses *(int *)varp = value), never compared
with int fields holding non-0/1 values, and never use tristate values.

Converted fields:
- State flags: b_dev_valid, b_saving, b_mod_set, b_new_change,
  b_marks_read, b_modified_was_set, b_did_filetype, b_keep_filetype,
  b_au_did_filetype, b_u_synced, b_scanned, b_p_initialized
- Characteristic flags: b_has_textprop, b_may_swap, b_did_warn,
  b_help, b_spell, b_shortname, b_has_sign_column, b_netbeans_file,
  b_was_netbeans_file, b_write_to_channel, b_diff_failed

All TRUE/FALSE assignments to these fields have been updated to
true/false accordingly. The type of temporary save variables
(e.g. help_save in tag.c) has also been adjusted to bool.

Option value fields (b_p_XXX) are kept as int because they are
accessed via the option system and some use tristate (-1) semantics.
Fields compared with int option values (b_start_eof, b_start_eol,
b_start_bomb) are also kept as int to preserve comparison integrity.

closes: #20020

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0364: tests: test_smoothscroll_textoff_showbreak() fails v9.2.0364
Christian Brabandt [Sun, 19 Apr 2026 19:58:56 +0000 (19:58 +0000)] 
patch 9.2.0364: tests: test_smoothscroll_textoff_showbreak() fails

Problem:  tests: test_smoothscroll_textoff_showbreak() fails
          (after v9.2.0363)
Solution: Add missing CheckRunVimInTerminal

related: #20011

Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0363: Vim9: variable shadowed by script-local function 20010/head v9.2.0363
Furkan Sahin [Sun, 19 Apr 2026 18:39:46 +0000 (18:39 +0000)] 
patch 9.2.0363: Vim9: variable shadowed by script-local function

Problem:  Vim9: variable shadowed by script-local function
          (Mao-Yining)
Solution: Set is_global flag to true in find_func() (Furkan Sahin)

fixes:  #20009
closes: #20011

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
12 days agopatch 9.2.0362: division by zero with smoothscroll and small windows v9.2.0362
Jaehwang Jung [Sun, 19 Apr 2026 18:32:55 +0000 (18:32 +0000)] 
patch 9.2.0362: division by zero with smoothscroll and small windows

Problem:  Resizing a smoothscrolled wrapped window to its textoff width
          with 'showbreak' can leave wrapped continuation lines with
          zero text width. win_lbr_chartabsize() still runs the partial max_head_vcol calculation in
          that state and divides by width2, crashing during redraw.
Solution: Skip that partial head calculation when the wrapped
          continuation width is zero, matching the other width2 guards
          in charset.c (Jaehwang Jung)

closes: #20012

AI-assisted: Codex

Signed-off-by: Jaehwang Jung <tomtomjhj@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoCI: Bump the github-actions group across 2 directories with 4 updates
dependabot[bot] [Fri, 17 Apr 2026 16:16:15 +0000 (16:16 +0000)] 
CI: Bump the github-actions group across 2 directories with 4 updates

Bumps the github-actions group with 3 updates in the / directory: [msys2/setup-msys2](https://github.com/msys2/setup-msys2), [actions/cache](https://github.com/actions/cache) and [github/codeql-action](https://github.com/github/codeql-action).
Bumps the github-actions group with 1 update in the /.github/actions/test_artifacts directory: [actions/github-script](https://github.com/actions/github-script).

Updates `msys2/setup-msys2` from 2 to 2.31.0
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/msys2/setup-msys2/compare/v2...v2.31.0)

Updates `actions/cache` from 5 to 5.0.4
- [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/v5...v5.0.4)

Updates `github/codeql-action` from 4 to 4.35.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4...v4.35.1)

Updates `actions/github-script` from 8 to 9
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v8...v9)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-version: 2.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: 5.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

closes: #20001

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agopatch 9.2.0361: tests: no tests for ch_listen() with IPs v9.2.0361
Zdenek Dohnal [Fri, 17 Apr 2026 15:55:53 +0000 (15:55 +0000)] 
patch 9.2.0361: tests: no tests for ch_listen() with IPs

Problem:  tests: no tests for ch_listen() with IPs
Solution: Add tests that this is disallowed
          (Zdenek Dohnal)

The functionality was removed, so the test is to make sure it fails
as expected.

closes: #19997

Signed-off-by: Zdenek Dohnal <zdohnal@redhat.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(vim9): remove extra escaping in Open
Keith Smiley [Fri, 17 Apr 2026 15:02:39 +0000 (15:02 +0000)] 
runtime(vim9): remove extra escaping in Open

Before 71fd19d7ac9e83bf63d7bad337f43cd830a5b5bd this function went
through a `:!` command on all platforms, so it needed special escaping for `#` and
others. After that commit it doesn't go through that path on unix
platforms. Then with 48581f2ba96550f5499cc322647b2ff1df5ad4ed this
escaping was re-added on unix and it's needs since it goes through
`sh -c`, but it should not have the extra escaping specific to `:!`.

Specifically my original broken command is:

```
PATH=/usr/bin:/bin VIMRUNTIME=~/dev/vim/runtime ./src/vim -u NONE -c 'call dist#vim9#Open("https://github.com/keith/dotfiles/blob/7bce9f5c697df6a549cf97bf5606d8b639e5bf5a/vimrc#L19")'
```

Where the `#L19` ends up being opened as `%5C#L19`. But I verified this
case still works as well:

```
PATH=/usr/bin:/bin VIMRUNTIME=~/dev/vim/runtime ./src/vim -u NONE -c 'call dist#vim9#Open("foo bar.txt")'
```

Which is what would otherwise break if we weren't doing any shell
escaping on unix.

closes: #19996

Signed-off-by: Keith Smiley <keithbsmiley@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(doc): make window option description a bit less vague
zeertzjq [Fri, 17 Apr 2026 14:51:53 +0000 (14:51 +0000)] 
runtime(doc): make window option description a bit less vague

Say explicitly that ":setlocal" sets the local value, while ":set" also
sets the global value.

related: #19993

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(django): Removed unsupported template statements and filters by current LTS.
tecis [Fri, 17 Apr 2026 14:47:22 +0000 (14:47 +0000)] 
runtime(django): Removed unsupported template statements and filters by current LTS.

Removed djangoStatement:

- ifequal: Depricated version 4.0.
- endifequal: Depricated version 4.0.
- ifnotequal: Depricated version 4.0.
- endifnotequal: Depricated version 4.0.
- parsed
- trans: Renamed to `translate` in version 4.0.
- blocktrans: Renamed to `blocktranslate` in version 4.0.
- endblocktrans: Renamed to `endblocktranslate` in version 4.0.

Removed djangoFilter:

- fix_ampersands: Removed in version 1.8.
- length_is: Removed in version 5.1.

sources:

- Current LTS is version [5.2](https://www.djangoproject.com/download/#supported-versions).
- Documentation template builtins [5.2](https://docs.djangoproject.com/en/5.2/ref/templates/builtins/#truncatechars-html).
- Documentation template builtins [6](https://docs.djangoproject.com/en/6.0/ref/templates/builtins).
- [Django Deprecation Timeline](https://docs.djangoproject.com/en/6.0/internals/deprecation)

closes: #19994

Signed-off-by: tecis <67809811+tecis@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(django): Add missing djangoStatement `get_language_info`.
tecis [Fri, 17 Apr 2026 14:46:01 +0000 (14:46 +0000)] 
runtime(django): Add missing djangoStatement `get_language_info`.

Source: [get_language_info](https://docs.djangoproject.com/en/6.0/topics/i18n/translation/#get-language-info) .

related: #19994

Signed-off-by: tecis <67809811+tecis@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(django): Add missing statements and filters.
tecis [Fri, 17 Apr 2026 14:44:51 +0000 (14:44 +0000)] 
runtime(django): Add missing statements and filters.

Added the fallowing.

djangoStatement:

- querystring: Added in version Django 5.2.
- lorem: Added in version Django 1.8.
- verbatim: Added in version Django 1.10.

djangoFilter:

- force_escape: Added in version Django 1.8.
- iriencode: Added in version Django 1.8.
- json_script: Added in version 2.1.
- truncatechars_html: Added in version 1.7.

> According to current documentation the added keywords are supported [Django version 6](https://docs.djangoproject.com/en/6.0/ref/templates/builtins).

related: #19994

Signed-off-by: tecis <67809811+tecis@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2 weeks agoruntime(make): fix wrong highlighting with $ inside double quotes
Christian Brabandt [Thu, 16 Apr 2026 21:25:43 +0000 (21:25 +0000)] 
runtime(make): fix wrong highlighting with $ inside double quotes

fixes: #19986

Co-authored-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>