Commit Graph

20791 Commits

Author SHA1 Message Date
Hirohito Higashi f0cae9d5ab patch 9.2.0580: xxd: binary output is not colored with -R
Problem:  With xxd the -R option colors the hex output but leaves the
          binary output produced by -b uncolored (Boris Verkhovskiy)
Solution: Color the binary (bits) output per byte with the same colors as
          the hex output, update the documentation and add a test
          (Hirohito Higashi).

fixes:  #20385
closes: #20401

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 21:11:55 +00:00
Miguel Barro d69cf0dbcf patch 9.2.0579: :mksession, :mkview and :mkvimrc emit legacy Vim script
Problem:  :mksession, :mkview and :mkvimrc emit legacy Vim script
Solution: Generate vim9 script for those commands (Miguel Barro).

fixes:  #16549
fixes:  #16688
fixes:  #19005
closes: #20152

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 21:03:12 +00:00
Yasuhiro Matsumoto 63a9471e22 patch 9.2.0578: GTK4: :unmenu does not remove entries from the menubar
Problem:  GTK4: gui_mch_destroy_menu() never removed the entry from its
          parent GMenu, so :unmenu was effectively a no-op against the
          visible menubar model.  After "Refresh menu" the Buffers menu
          items doubled because runtime/menu.vim BMShow() re-appended
          Refresh / Delete / Alternate / Next / Previous / -SEP- into a
          still-populated GMenu.  The GAction registered for the item
          and the reference on its submenu GMenu were also leaked.
Solution: Compute the entry's position in the parent GMenu by walking
          the vimmenu_T sibling list, call g_menu_remove(), remove the
          GAction we registered, and release our reference on the
          submenu GMenu (Yasuhiro Matsumoto)

fixes:  #20262
closes: #20314

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 20:32:40 +00:00
Foxe Chen 568daf65b8 patch 9.2.0577: GTK4: window resizing issues
Problem:  GTK4: window size does not account for client-side decorations
Solution: Compute the client side decoration height from
          gui_resize_shell() (Foxe Chen)

fixes:  #20365
closes: #20388

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 20:14:59 +00:00
Christian Brabandt 4f1cd5f78a patch 9.2.0576: popup_create() not blocked in secure/sandbox
Problem:  popup_create() is not gated by check_secure(), unlike the
          similar deferred-callback registrars timer_start() and
          feedkeys().  A popup created with a 'time' and 'callback' (or with
          close/filter callbacks) registers code that runs after the secure/sandbox
          context has been left, which is inconsistent with how
          timer_start() and feedkeys() handle the same situation.
Solution: Call check_secure() at the top of popup_create(), matching the
          timer_start()/feedkeys() pattern.

closes: #20400

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 20:00:14 +00:00
Patrick Meiser-Knosowski 0878792046 patch 9.2.0575: tests: filetype test for v9.2.0557 can be improved
Problem:  tests: filetype test for v9.2.0557 can be improved
Solution: Use a correct Kawasaki robot AS test file
          (Patrick Meiser-Knosowski)

related: #20370
closes:  #20387

Signed-off-by: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 19:52:46 +00:00
thinca b16a9ddc28 patch 9.2.0574: tests: missing test for v9.2.0572
Problem:  tests: missing test for v9.2.0572 (the patch accidentally
          included some additional unwanted changes from #20372)
          (thinca)
Solution: Add additional test for delfunc
          (thinca)

Patch 9.2.0572 fixed ":call d.key()" and ":delfunction d.key" failing
with E1017 in Vim9 script, but only the :call form was covered by a
regression test.  Add Test_delfunction_dict_funcref to exercise both
"delfunction d.key" and "delfunction d['k2']".

closes: #20372

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 19:47:46 +00:00
Peter Kenny 38d9a16eba patch 9.2.0573: Vim9: missing EX_WHOLE on some block keywords
Problem:  Several Vim9 keywords lack EX_WHOLE and can be shortened in
          Vim9 script, inconsistent with endif/enddef/endfor/endwhile/
          endtry which already have it.  The error from :endd in a
          nested function also hardcodes "enddef" instead of reporting
          what the user typed.  fullcommand("ho") returns "horizontal"
          even though :ho is below the documented 3-char minimum.
Solution: Add EX_WHOLE to :class, :def, :endclass, :endinterface,
          :endenum, :public and :static.  In get_function_body() pass
          the user-typed command to the error message.  Force :ho to
          CMD_SIZE in find_ex_command() so fullcommand() reflects the
          modifier minimum.  Extend tests and documentation accordingly
          (Peter Kenny).

fixes:  #20032
closes: #20191

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 19:16:57 +00:00
Hirohito Higashi 09f7fc60d3 patch 9.2.0572: lines disappear with wrapping virtual text after a double-width char
Problem:  With 'nowrap', when a line ends with a double-width character
          exactly at the window width and has wrapping "after" virtual
          text, the lines below disappear and "@@@" is shown.
Solution: Detect that the last character fills the rightmost column using
          its displayed width (win_chartabsize(), so a <Tab> or double-width
          character is handled like a single-width one), and also when it
          overflows the last column.  Also clarify in the help that "wrap"
          only takes effect with the 'wrap' option set.

fixes:   #20384
related: #12213
closes:  #20395

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 18:43:42 +00:00
thinca 37089793b8 patch 9.2.0571: Vim9: memory leak in compile_nested_function() on failure
Problem:  compile_nested_function() calls define_function(), which registers
          the new ufunc in func_hashtab with uf_refcount == 1.  For a local
          nested function the caller then reserves a local lvalue and
          generates a FUNCREF instruction; if either step fails, the code
          jumps to the theend label and leaves the ufunc behind with
          refcount 1 and no external reference, leaking it.  This mirrors
          patch 8.2.3951, which fixed the same leak for the "text after
          :enddef" branch a few lines above.
Solution: Call func_ptr_unref() on the ufunc before "goto theend" on both
          failure paths in the local-variable branch (thinca).

closes: #20394

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 18:28:34 +00:00
Foxe Chen d0fffdab16 patch 9.2.0570: GTK4: mouse wheel scrolling does not work correctly
Problem:  GTK4: mouse wheel scrolling does not work correctly
Solution: Use gui_mch_getmouse() to obtain the pointer position, and
          add GTK_EVENT_CONTROLLER_SCROLL_DISCRETE to the scroll
          controller flags (Foxe Chen).

closes: #20389

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 18:24:21 +00:00
Christian Brabandt 54ffef7eb8 patch 9.2.0569: out-of-bounds access in libvterm CSI 8 t resize
Problem:  In the bundled libvterm the CSI 8 ; rows ; cols t sequence reaches
          on_resize() without validating its arguments.  Missing, zero or
          negative dimensions cause a negative-size memmove() in
          resize_buffer() and out-of-bounds accesses in set_lineinfo() and
          DECALN, all reachable from output rendered in a terminal window
          (Yukihiro Nakamura).
Solution: Reject missing, zero or negative dimensions before calling
          on_resize().  Also clamp a negative cell width in on_text() as
          hardening for the bundled libvterm.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 14:27:16 +00:00
thinca 868ad62cb8 patch 9.2.0568: pythoncomplete: g:pythoncomplete_allow_import had no effect
Problem:  The security patch 9.2.0561 added a vim.eval() call inside
          Completer.evalsource() to honor g:pythoncomplete_allow_import.
          But the 'vim' module is only imported inside the outer
          vimcomplete() / vimpy3complete() function, not at the script's
          top level, so referring to it from a Completer method raises
          NameError.  The surrounding bare 'except' silently swallows
          the error and leaves allow_imports at 0, meaning the opt-in
          never takes effect -- 'import os' (and any other
          buffer-level import) is always skipped, no candidates are
          produced for 'os.<...>' and
          Test_popup_and_preview_autocommand() fails on the Windows
          CI matrix (Linux skips the test because Python 2 is absent).
Solution: Re-import 'vim' at the top of evalsource() in both
          pythoncomplete.vim and python3complete.vim so the eval reads
          the global, and set g:pythoncomplete_allow_import = 1 in the
          test (it is the opt-in intended for callers that trust the
          buffer contents) (thinca).

closes: #20386

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-31 12:33:07 +00:00
thinca 2b2dfc4f5a patch 9.2.0567: dict function name allocation failure not handled
Problem:  When defining a dictionary function, the function name string
          is allocated with vim_strnsave() but the result is not
          checked. On allocation failure the dict entry is left with
          type VAR_FUNC and a NULL name, and in the overwrite case the
          previous entry has already been freed before the NULL is
          stored.
Solution: Allocate the name before modifying the dict entry and bail out
          on failure, freeing it on all error paths (thinca)

closes: #20376

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-30 18:40:55 +00:00
Yohei Kojima 113e507cdd patch 9.2.0566: <C-w>f duplicates window if do_ecmd() is aborted
Problem:  If got_int is true when win_close() is called, it unexpectedly
          fails in the branch that detects failure in apply_autocmds().
          This causes wingotofile in do_window() to duplicate current
          window when do_ecmd() is aborted with got_int.
Solution: Fix do_window() to save the got_int value before trying to
          close the split window (Yohei Kojima).

Steps to reproduce:
 1. run `touch a && touch .a.swp && echo a > b && vim b`
 2. Type `<C-w>f`
 3. In the warning dialogue, type `a` to abort
 4. Current window is duplicated

closes: #20382

Signed-off-by: Yohei Kojima <yk@y-koj.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-30 18:07:21 +00:00
Christian Brabandt 63680c6d3d patch 9.2.0565: [security]: out-of-bounds read in update_snapshot()
Problem:  Out-of-bounds read in update_snapshot() when a terminal cell
          fills all VTERM_MAX_CHARS_PER_CELL slots (a base character
          plus five combining marks): the loop over cell.chars[] has no
          upper bound and libvterm leaves the array unterminated when full, so
          it reads past the array and appends out-of-bounds values to a
          buffer sized for only VTERM_MAX_CHARS_PER_CELL characters.
Solution: Bound the loop with i < VTERM_MAX_CHARS_PER_CELL, mirroring
          the loop in handle_pushline() (Christian Brabandt).

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-30 16:34:40 +00:00
Foxe Chen 2c5b383807 patch 9.2.0564: GTK4: tabline does not respond to mouse clicks
Problem:  GTK4: tabline does not respond to mouse clicks
Solution: Connect on_select_tab() to "switch-page" to fire the tabline
          event, and on_tab_reordered() to "page-reordered" to call
          tabpage_move() with the new index (Foxe Chen).

closes: #20362

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 19:47:24 +00:00
Christoffer Aasted 92510c09ed patch 9.2.0563: GTK3/Wayland: crash with right mouse-button in tabline
Problem:  GTK3/Wayland: crash with right mouse-button in tabline
Solution: Use gui.mainwin and get coordinates (Christoffer Aasted).

GtkNotebook (tabline) is a windowless container widget causing a
nullptr deref inside `gdk_window_get_effective_parent()` as Wayland
lacks a surface to anchor to.

fixes:  #18864
closes: #20348

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 19:39:04 +00:00
Borys Lykah dda45ba88f patch 9.2.0562: filetype: SGF files are not recognized
Problem:  filetype: SGF files are not recognized
Solution: Detect *.sgf as sgf filetype
          (Borys Lykah)

Reference:
https://www.red-bean.com/sgf/index.html

closes: #20349

Signed-off-by: Borys Lykah <lykahb@fastmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 19:23:27 +00:00
Christian Brabandt 4b850457e1 patch 9.2.0561: [security]: possible code execution with python3complete
Problem:  [security]: possible code execution with python3complete
Solution: Disable execution of import/from statements

Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-52mc-rq6p-rc7c

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 19:08:20 +00:00
Christoffer Aasted 69f402e97f patch 9.2.0560: filetype: busybox shebang lines are not recognized
Problem:  filetype: busybox shebang lines are not recognized
Solution: Add filetype detection pattern for #!busybox sh, detect
          ash as shell in the shebang lines (Christoffer Aasted).

closes: #20358

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 18:31:35 +00:00
Wu, Zhenyu 73e619d699 patch 9.2.0559: filetype: Kaitai struct files are not recogonized
Problem:  filetype: Kaitai struct files are not recogonized
Solution: Detect *.ksy files as yaml filetype (Wu, Zhenyu)

Reference:
https://doc.kaitai.io/

closes: #20353

Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 18:25:25 +00:00
Wu, Zhenyu c83d2f888e patch 9.2.0558: filetype: Popcap Reanimation files are not recognized
Problem:  filetype: Popcap Reanimation files are not recognized
Solution: Recognize *.reanim files as xml filetype (Wu, Zhenyu).

Reference:
https://github.com/wszqkzqk/PvZ-Portable

closes: #20354

Signed-off-by: Wu, Zhenyu <wuzhenyu@ustc.edu>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 18:10:39 +00:00
Mao-Yining bc2141d27d runtime(2html): Convert to Vim9 script
closes: #19915

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: fritzophrenic <fritzophrenic@gmail.com>
Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 18:02:01 +00:00
KnoP-01 dec3d6c7da patch 9.2.0557: filetype: Kawasaki Robots files are not recognized
Problem:  filetype: Kawasaki Robots files are not recognized
Solution: Detect *.pg as kawasaki_as filetype, add filetype detection
          for *.as as atlas or kawasaki_as filetype (KnoP-01).

In Kawasaki robots (https://kawasakirobotics.com/products-robots/)
AS language

*.pg is the extention for a program file and
*.as is for a complete backup.

closes: #20370

Signed-off-by: KnoP-01 <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-29 17:54:57 +00:00
Yasuhiro Matsumoto 23b4b55364 patch 9.2.0556: GTK4: scrollbars not shown and do not respond to clicks
Problem:  GTK4: scrollbars not shown and do not respond to clicks
          (Steven A. Falco)
Solution: Use GTK_IS_SCROLLBAR and gtk_scrollbar_get_adjustment()
          instead of the GtkRange equivalents, override GtkForm's
          contains() to return FALSE (Yasuhiro Matsumoto).

fixes:  #20307
closes: #20326

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 21:45:05 +00:00
John Marriott 8e7e5d5488 patch 9.2.0555: too many strlen() in ex_substitute()
Problem:  too many strlen() in ex_substitute()
Solution: Use string_T type instead of recomputing the length
          (John Marriott).

closes: #20336

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 21:26:19 +00:00
Foxe Chen 81d42cf1aa patch 9.2.0554: GTK4: memory leak in free_menu()
Problem:  GTK4: memory leak in free_menu()
Solution: Free the label (Foxe Chen)

closes: #20343

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 21:17:23 +00:00
Christian Brabandt 93d177cd2b patch 9.2.0553: runtime(netrw): netrw rejects hostnames containing _
Problem:  runtime(netrw): netrw rejects hostnames containing _
          (lilydjwg)
Solution: Relax the restriction and allow the underscore

fixes: #20344

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 20:56:48 +00:00
Yasuhiro Matsumoto 99b51cf121 patch 9.2.0552: GTK4: F10 does nothing when the menubar is hidden
Problem:  GTK4: F10 does nothing when the menubar is hidden
          (lilydjwg)
Solution: Handle F10 explicitly (Yasuhiro Matsumoto).

In GTK3 (and on Windows) pressing F10 brings up the menu even when
the menubar is hidden via 'go-=m'.  The GTK4 path passed F10 straight
through to Vim, so users who hide the menubar lost a way to reach it
via the keyboard.

If F10 is not currently mapped, pop up the full menubar GMenu model
as a transient GtkPopoverMenu at the top of the drawing area.  A
user mapping still wins, so this only adds behaviour when F10 would
otherwise be inert.

fixes:  #20259
closes: #20355

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 20:41:14 +00:00
redavy b9bba99712 patch 9.2.0551: filetype: Tolk files are not recognized
Problem:  filetype: Tolk files are not recognized
Solution: Detect *.tolk files as tolk filetype, include a syntax and
          filetype plugin (redavy)

Tolk is a new-generation language for writing smart contracts on TON
blockchain, which is #1 in speed among other chains.

Reference:
https://docs.ton.org/blockchain-basics/tolk/overview

closes: #20320

Signed-off-by: redavy <hello.redavy@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 20:36:04 +00:00
Foxe Chen 880e06136b patch 9.2.0550: GTK4: 'mousehide' unhides cursor when switching tabs
Problem:  GTK4: 'mousehide' unhides cursor when switching tabs
Solution: Only unide if the mouse actually moved (Foxe Chen).

fixes:  #20346
closes: #20347

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 20:20:31 +00:00
glepnir 179f9efc7e patch 9.2.0549: Cursor wrong after autoindent strip is skipped
Problem:  cursor lands on the wrong line when a <Cmd> mapping or autocmd
          modifies lines during insert and the strip is skipped
          (after v9.2.0510)
Solution: Restore cursor to tpos when skipwhite skips the strip, instead
          of leaving it at end_insert_pos (glepnir).

related: #20290
closes:  #20332

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Kristijan Husak <husakkristijan@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 20:13:48 +00:00
Foxe Chen af8845e3af patch 9.2.0548: GTK4: terminal and pty job output is not processed
Problem:  GTK4: terminal and pty job output is not processed
Solution: When there is at least one channel with the keep_open flag,
          arm a 20ms timer that calls channel_handle_events() and
          parse_queued_messages(), matching the behaviour of the GTK2/3
          backend (Foxe Chen).

fixes:  #20345
closes: #20350

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 19:29:55 +00:00
Hirohito Higashi 44dcad20f2 patch 9.2.0547: "%v" in 'errorformat' is affected by 'tabstop'
Problem:  The "%v" item in 'errorformat' interprets the reported
          screen column using the buffer's 'tabstop', so the cursor
          jumps to the wrong column when 'tabstop' is not 8
          (vimpostor).
Solution: When resolving a "%v" column, always count a <tab> as 8
          screen columns, independent of 'tabstop', matching the
          column numbers reported by compilers; keep the multi-byte
          handling.  Also use "%v" in the gcc compiler file and
          update the documentation (Hirohito Higashi).

fixes:  #20321
closes: #20359

Co-Authored-By: vimpostor <21310755+vimpostor@users.noreply.github.com>
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>
2026-05-28 19:18:38 +00:00
Yasuhiro Matsumoto 627e4355ac patch 9.2.0546: configure: GTK4 build requires GTK >= 4.10
Problem:  configure: GTK4 build requires GTK >= 4.10
Solution: Update configure script and require at least GTK 4.10 version
          (Yasuhiro Matsumoto).

The GTK4 GUI uses GtkFontDialog, GtkFileDialog and GtkAlertDialog,
all introduced in GTK 4.10. Without this bump, configure passes on
systems with older GTK4 (e.g. Debian Bookworm ships 4.8) and the
build fails later in gui_gtk4.c with unknown type / implicit
function declaration errors.

fixes:  #20340
closes: #20360

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-28 18:57:20 +00:00
Shad 7a027846bf patch 9.2.0545: popup: blending uses hardcoded fallback colors
Problem:  Popup with opacity fades to black regardless of the colorscheme
          or 'background' option.  With a light colorscheme (or the
          default with background=light), lower opacity values darken the
          popup and it no longer matches the Normal background.
Solution: Compute fallback foreground and background colors from
	  guifg/guibg, ctermfg/ctermbg, or deduce from the 'background' option,
	  and use them in the popup blending paths instead of hardcoded
          white/black (Shad).

closes: #20285

Signed-off-by: Shad <shadow.walker@free.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-27 20:37:25 +00:00
Yasuhiro Matsumoto f85892e39e patch 9.2.0544: GTK4: window blank after a resize or drag
Problem:  GTK4: window blank after a resize or drag
          (Steven A. Falco)
Solution: In drawarea_resize_cb() keep the backing surface in sync with
          the drawing area, preserving the old contents. Stop touching
          the surface in gui_mch_set_text_area_pos().
          Debounce gui_resize_shell() so it runs once the drag stream
          settles and update_screen() can paint (Yasuhiro Matsumoto).

related: #20307
closes:  #20327

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-27 20:12:19 +00:00
Hirohito Higashi caba9110aa patch 9.2.0543: Vim9: wrong error when redeclaring a typed variable
Problem:  In a :def function, redeclaring an existing variable with a
          type annotation (e.g. "var x: number = 1" used twice) reports
          "E488: Trailing characters" instead of the expected
          "E1017: Variable already declared".
Solution: Report E1017 when the redeclaration uses a "var", "final" or
          "const" command; keep E488 only for a type specified in an
          assignment that has no declaration keyword (Hirohito Higashi).

fixes:  #20337
closes: #20341

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>
2026-05-27 19:29:16 +00:00
Christian Brabandt 84e6175b55 patch 9.2.0542: tests: test_codestyle fails
Problem:  tests: test_codestyle fails
          (after v9.2.0541)
Solution: Replace tabs by spaces

related: #20253

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-26 21:12:11 +00:00
Peter Kenny 207039097a patch 9.2.0541: Vim9: endclass/endenum/endinterface can give errors
Problem:  Vim9: ":endclass", ":endenum" and ":endinterface" can give a
          "command cannot be shortened" error, because the full-name
          check compares against the line start instead of the command
          word.
Solution: Skip a leading colon and white space before checking the end
          command name, update tests (Peter Kenny).

related: #20032
related: #20191
closes:  #20253

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-26 19:13:27 +00:00
K.Takata c3e975df47 patch 9.2.0540: tests: Test_mswin_event_mouse is flaky
Problem:  tests: Test_mswin_event_mouse is flaky
Solution: Mark as flaky (Ken Takata)

Test_mswin_event_mouse is flaky in console:
https://github.com/vim/vim-win32-installer/issues/446#issuecomment-4538212367

closes: #20331

Signed-off-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-26 18:46:35 +00:00
Martin Schwan 2df68c8e4b patch 9.2.0539: filetype: too many Bitbake include files are recognized
Problem:  filetype: too many Bitbake include files are recognized
          (Brahmajit Das, after v9.1.1732)
Solution: Tighten the pattern to detect BitBake include files, update
          tests (Martin Schwan).

Be more strict when detecting BitBake inc files. In particular, only
match include keywords and variable assignments at the beginning of a
line (excluding whitespace).

Use non-capturing groups to slightly improve performance.

Use regex or-operators to exactly match BitBake assignment operators.
The previous expression would falsely match

    FOO .=. "bar"

, which is not valid BitBake syntax. The new capturing group is more
specific and matches only valid assignments.

fixes:  #20288
closes: #20335

Signed-off-by: Martin Schwan <m.schwan@phytec.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-26 18:41:11 +00:00
glepnir e8d7a40b98 patch 9.2.0538: Cannot keep leading whitespace in %{} statusline expr
Problem:  A leading space in the result of a %{} item is sometimes
          stripped, and an all-digit result is converted to a number.
Solution: Add %0{} atom which inserts the expression result verbatim
          (glepnir)

fixes:  #3898
closes: #20315

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-25 17:41:13 +00:00
Yasuhiro Matsumoto b748f4b2f0 patch 9.2.0537: GTK4: mouse popup menu does not show up at mouse pointer
Problem:  GTK4: mouse popup menu does not show up at mouse pointer,
          Drawing area blanks while popover is open
          (lilydjwg, after v9.2.0501)
Solution: Query the pointer position, make the popover parented to the
          surrounding GtkOverlay  and build it from buttons instead of a
          GMenu model(Yasuhiro Matsumoto)

fixes:  #20255
closes: #20260

Co-Authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-25 17:08:59 +00:00
Christian Brabandt 7e55dae2fe patch 9.2.0536: tests: Test_invalid_args() fails on GTK4 without xterm_clipboard
Problem:  tests: Test_invalid_args() fails on GTK4 builds when
          xterm_clipboard is not enabled
Solution: Add has('xterm_clipboard') check to the test, while at it,
          also document the --display argument.

closes: #20318

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-25 16:59:58 +00:00
Andrey Starodubtsev 3a90b2ba8e patch 9.2.0535: tests: matchit plugin is not tested
Problem:  tests: matchit plugin is not tested
Solution: Add test_plugin_matchit, improve b:match_words for the html
          filetype plugin (Andrey Starodubtsev)

`b:match_words` which contains patterns used by `matchit` plugin to find
tag's counterpath, is fixed so that matching happens using the whole
tag, not just its first letter.

Also, it allows to find matching tag in case if there are spaces or
attributes after tag name.

fixes:  chrisbra/matchit#51
closes: #20313

Signed-off-by: Andrey Starodubtsev <andrey.starodubtsev@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-25 16:29:23 +00:00
Muraoka Taro 14c6730a39 patch 9.2.0534: GTK UI does not support fullscreen mode
Problem:  GTK UI does not support fullscreen mode
Solution: Add support for fullscreen (guioptions+=s) mode
          (Muraoka Taro).

closes: #20303

Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-25 15:54:20 +00:00
Hirohito Higashi bc7805323f patch 9.2.0533: '[ mark moved to end of inserted text after CTRL-R CTRL-P paste
Problem:  After CTRL-R CTRL-P (or CTRL-R CTRL-O) pastes a register
          into Insert mode, a follow-up edit such as backspace makes
          stop_arrow() rewrite Insstart with the post-paste cursor
          position.  As a result the '[ mark points at the end of the
          inserted text instead of its start  (agguser, after 9.2.0384)
Solution: In stop_arrow(), only pull Insstart back when the cursor
          moved above the previous Insstart, so a line-start backspace
          can still save the joined range (#20031) without disturbing
          the start position for inserts that advance the cursor
          (Hirohito Higashi).

related: #20031
fixes:   #20130
closes:  #20322

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>
2026-05-25 15:36:30 +00:00
Muraoka Taro e323740b56 patch 9.2.0532: GTK: preedit font size is wrong for fractional point sizes
Problem:  GTK: preedit font size is wrong for fractional point sizes
Solution: Compute the font size as a double and round to the nearest
          integer (Muraoka Taro).

closes: #20316

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-05-25 15:26:08 +00:00