Commit Graph

23278 Commits

Author SHA1 Message Date
Sean Dewar a8fdfd4fcb patch 9.2.0252: Crash when ending Visual mode after curbuf was unloaded
Problem:  if close_buffer() in set_curbuf() unloads curbuf, NULL pointer
          accesses may occur from enter_buffer() calling
          end_visual_mode(), as curbuf is already abandoned and possibly
          unloaded.  Also, selection registers may not contain the
          selection with clipboard+=autoselect(plus).
Solution: Move close_buffer()'s end_visual_mode() call to buf_freeall(), after
          any autocmds that may restart it, but just before freeing anything
          (Sean Dewar)

related: #19728

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0252
2026-03-26 20:05:31 +00:00
Yasuhiro Matsumoto 68b3585e1d patch 9.2.0251: Link error when building without channel feature
Problem:  Compile error when building without channel feature
          (John Marriott, after v9.2.0250)
Solution: Update ifdefs and move implementation out of FEAT_JOB_CHANNEL
          (Yasuhiro Matsumoto)

Move build_argv_from_list() and mch_get_cmd_output_direct() out of
FEAT_JOB_CHANNEL guards so that system() with a List argument works
in builds that have FEAT_EVAL but not FEAT_JOB_CHANNEL (e.g.
FEAT_NORMAL without GUI).

related: #19791
closes:  #19826

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0251
2026-03-26 19:32:49 +00:00
Ola Söder c84526dd29 runtime(amiga): revamp syntax highlighting and add new maintainer
closes: #19825

Signed-off-by: Ola Söder <rolfkopman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 19:25:30 +00:00
Antonio Giovanni Colombo be7ef8a19e translation(it): Update Italian xxd man page
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-25 22:11:55 +00:00
Antonio Giovanni Colombo e09000a786 runtime(doc): Update examples in xxd.1 manpage
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-25 22:10:09 +00:00
Yasuhiro Matsumoto 30f012d8bc patch 9.2.0250: system() does not support bypassing the shell
Problem:  system() and systemlist() only accept a String, requiring
          manual shell escaping for arguments with special characters.
Solution: Accept a List as the first argument and execute the command
          bypassing the shell (Yasuhiro Matsumoto).

fixes:  #19789
closes: #19791

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0250
2026-03-25 22:04:13 +00:00
Foxe Chen bde5832216 patch 9.2.0249: clipboard: provider reacts to autoselect feature
Problem:  clipboard: provider reacts to autoselect feature
Solution: Disable autoselection when using clipboard provider feature
          (Foxe Chen).

closes: #19812

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0249
2026-03-25 21:30:59 +00:00
Yasuhiro Matsumoto af3ccc2845 patch 9.2.0248: json_decode() is not strict enough
Problem:  json_decode() accepted keywords case-insensitively, violating
          RFC 7159. Both json_decode() and js_decode() silently accepted
          lone surrogates, which are invalid Unicode.
Solution: Only allow lowercase keyword in json_decode(), reject lone
          surrogates, improve encoding performance in write_string() and
          blob byte serialization.

1. Fix surrogate pair range check (0xDFFF -> 0xDBFF) so only high
   surrogates trigger pair decoding. Reject lone surrogates that do
   not form a valid pair instead of producing invalid UTF-8.
2. Use case-sensitive matching for JSON keywords (true, false, null,
   NaN, Infinity) in json_decode() per RFC 7159. js_decode() retains
   case-insensitive behavior.
3. Replace double ga_append() calls for escape sequences with single
   GA_CONCAT_LITERAL() calls, halving function call and buffer growth
   check overhead.
4. Replace vim_snprintf_safelen() for blob byte encoding (0-255) with
   direct digit conversion.

closes: #19807

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0248
2026-03-25 21:20:21 +00:00
Hirohito Higashi c0f0a34ea3 patch 9.2.0247: popup: popups may not wrap as expected
Problem:  popup: popups may not wrap as expected
          (Enrico Maria De Angelis, after v9.1.0949)
Solution: don't shift popupwin left when 'wrap' is on and maxwidth is
          set (Hirohito Higashi)

When a non-fixed popup with 'wrap' enabled and an explicit maxwidth was
placed near the right edge of the screen, the shift-left logic increased
maxwidth beyond the user-specified value, preventing text from wrapping.

Instead cap the shift amount so that maxwidth does not exceed w_maxwidth
when wrapping is enabled, letting text wrap as expected.

fixes:  #19767
closes: #19809

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0247
2026-03-25 20:12:28 +00:00
Huihui Huang 418400075a patch 9.2.0246: memory leak in globpath()
Problem:  memory leak in globpath()
Solution: Free the individual allocated strings when ga_grow() fails
          (Huihui Huang)

closes: #19817

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0246
2026-03-25 19:51:42 +00:00
Hirohito Higashi 1578ea9d97 patch 9.2.0245: xxd: color output detection is broken
Problem:  xxd: color output detection is broken
          (Juergen Weigert)
Solution: Fix the issues (Hirohito Higashi)

- Disable auto color when output goes to a file (two-argument form)
- Check TERM variable: disable color when unset, empty or "dumb"
- Add color_forced flag to preserve -R always behavior
- Add tests for the new behavior

fixes:  #19790
closes: #19813

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0245
2026-03-25 19:38:51 +00:00
Huihui Huang e2cf84d0a0 patch 9.2.0244: memory leak in eval8()
Problem:  memory leak in eval8()
Solution: Free type_list() even when evaluate is FALSE
          (Huihui Huang)

closes: #19819

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0244
2026-03-25 19:26:38 +00:00
Huihui Huang 0effd2faf9 patch 9.2.0243: memory leak in change_indent()
Problem:  memory leak in change_indent()
Solution: Free orig_line in the error case
          (Huihui Huang)

closes: #19820

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0243
2026-03-25 19:18:20 +00:00
Huihui Huang a4c0119786 patch 9.2.0242: memory leak in check_for_cryptkey()
Problem:  memory leak in check_for_cryptkey()
Solution: Free cryptkey if it had been allocated
          (Huihui Huang)

closes: #19821

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0242
2026-03-25 19:11:13 +00:00
Christian Brabandt 742e8722b3 patch 9.2.0241: tests: Test_visual_block_hl_with_autosel() is flaky
Problem:  tests: Test_visual_block_hl_with_autosel() is flaky on ASAN CI
          (after v9.2.0221)
Solution: Add a TermWait() call

related: #19784

Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0241
2026-03-25 19:03:50 +00:00
Yasuhiro Matsumoto b435da0b4f patch 9.2.0240: syn_name2id() is slow due to linear search
Problem:  Looking up highlight group names uses a linear scan of the
          highlight table, which is slow at startup when many groups
          are defined.
Solution: Use a hashtable for O(1) highlight group name lookup.
          (Yasuhiro Matsumoto).

Benchmark (523 highlight groups, :highlight + highlight link + syntax
keyword + hlID() + redraw, 20 iterations):

master:      0.057 sec (~295,000 ops/sec)
this branch: 0.036 sec (~463,000 ops/sec)
speedup:     ~1.57x

closes: #19788

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0240
2026-03-24 20:47:27 +00:00
Aliaksei Budavei 955c02dff7 runtime(sh): Distinguish parts of function definitions
- Highlight keywords "function" and "namespace" with
  the "Keyword" group ("shFunctionKey").
- Highlight function body delimiters "{" and "}" with the
  "Delimiter" group ("shFunctionExprRegion").
- Highlight function body delimiters "(" and ")" with the
  "Operator" group ("shFunctionSubShRegion").
- Also, follow one style in folding all supported variants
  of function bodies for grouping commands too by enclosing
  a delimited function body, e.g. "{" and "}", in a fold and
  leaving its function header, e.g. "function f()", out of
  it when the header is written on a separate line.

To restore previous colouring, add to "after/syntax/sh.vim":
------------------------------------------------------------
hi link shFunctionKey Function
hi link shFunctionExprRegion Function
hi link shFunctionSubShRegion Function
------------------------------------------------------------

fixes:  https://github.com/vim/vim/pull/19638#issuecomment-4052635546
closes: #19638

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-24 20:36:23 +00:00
Aliaksei Budavei 9c0d057e3d runtime(sh): Improve the matching of function definitions
- Drop the remaining undefined "shFunctionStart" references
  (gone in v7.2b.000, c236c16d0).
- Revise nestable contexts where function definitions are
  supported:
  * Stop looking for function definitions in arithmetic
    expressions.
  * Recognise function definitions enclosing other function
    definitions.
- In addition to grouping commands "{}" and "()", also match
  other compound commands (e.g. "if"; see "shFunctionCmd*")
  whenever these commands are supported as complete function
  bodies.
- Balance body delimiters "(" and ")" for "shFunctionFour"
  in Bash; match such function bodies whenever the use of
  the function parameter list "()" token is optional, i.e.
  when the "function" reserved word is present.
- Enable the use of "shFunctionFour" definitions.
- Do not claim optional leading whitespace characters before
  a matched function definition.
- Prefer patterns with ASCII atoms (e.g. "\h") to equivalent
  collections (e.g. "[A-Za-z_]") for speed.
- Accommodate word-boundary assertions in function name
  patterns to names that may start and/or end with supported
  non-word characters, e.g. "@test:".
- Match more valid function names in Bash: non-ASCII names,
  non-word names.
- Allow for function names with "do", "done", etc. prefixes;
  confine these name checks to "shDoError" and "shIfError".

fixes:   #19619
related: #19638

References:
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_19_09_04
https://gitweb.git.savannah.gnu.org/gitweb/?p=bash.git;a=blob_plain;f=doc/bash.html;hb=637f5c8696a6adc9b4519f1cd74aa78492266b7f
https://web.archive.org/web/20151105130220/http://www.research.att.com/sw/download/man/man1/ksh88.html
https://web.archive.org/web/20151025145158/http://www2.research.att.com/sw/download/man/man1/ksh.html
http://www.mirbsd.org/htman/i386/man1/mksh.htm

Co-authored-by: Johnothan King <johnothanking@protonmail.com>
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-24 20:35:48 +00:00
Yasuhiro Matsumoto 4292eea714 patch 9.2.0239: signcolumn may cause flicker
Problem:  Changing the 'signcolumn' may cause flicker, because it uses
          the P_RCLR flag for redrawing (Yggdroot)
Solution: Change 'signcolumn' to use P_RWIN instead of P_RCLR, matching
          the behavior of 'number' and 'foldcolumn'
          (Yasuhiro Matsumoto).

fixes:  #19663
closes: #19713

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0239
2026-03-24 20:25:06 +00:00
Hirohito Higashi 9a2260d6cf patch 9.2.0238: showmode message may not be displayed
Problem:  showmode message may not be displayed (Yee Cheng Chin)
Solution: Don't call char_avail() in skip_showmode(), but check
          for anything in the stuff and typeahead buffer
          (Hirohito Higashi).

Fix "-- VISUAL --" not shown when terminal responses are pending

When starting Vim with a script that enters Visual mode (e.g.
"vim -S script.vim"), the "-- VISUAL --" mode message sometimes
doesn't appear. This happens because skip_showmode() calls
char_avail(), which reads raw terminal input and picks up terminal
response escape sequences (e.g. t_RV response). Combined with
!KeyTyped (which is TRUE after script execution), this causes
skip_showmode() to return TRUE, preventing the mode from being
displayed.

Fix this by checking only the stuff buffer and typeahead buffer for
pending characters, instead of char_avail() which also reads raw
terminal input. This way, terminal response sequences no longer
interfere with mode display.

fixes:  #16620
closes: #19801

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0238
2026-03-24 20:11:07 +00:00
Hannah Kimura 25f6539645 patch 9.2.0237: filetype: ObjectScript routines are not recognized
Problem:  filetype: ObjectScript routines are not recognized
Solution: Add ObjectScript routines detection for .mac, .int, and .inc
          files (Hannah Kimura)

Reference:
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GORIENT_ch_intro#GORIENT_intro_routines

closes: #19805

Signed-off-by: Hannah Kimura <hannah.kimura@intersystems.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0237
2026-03-24 19:58:01 +00:00
Yasuhiro Matsumoto a603175c6c runtime(manpager): use \x07 instead of \a for BEL in OSC 8 regex
\a in Vim's regex matches [A-Za-z], not the BEL character (0x07).
This caused the OSC 8 hyperlink stripping pattern to incorrectly
match alphabetic characters, breaking man page display.

Use \x07 (inside []) and %x07 (outside []) to correctly match BEL.

closes: #19806

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-24 19:48:44 +00:00
Yasuhiro Matsumoto abd2d7d453 patch 9.2.0236: stack-overflow with deeply nested data in json_encode/decode()
Problem:  stack-overflow with deeply nested data in json_encode/decode()
          (ZyX-I)
Solution: Add depth limit check using 'maxfuncdepth' to
          json_encode_item() and json_decode_item() to avoid crash when
          encoding/decoding deeply nested lists, dicts, or JSON arrays/objects,
          fix typo in error name, add tests (Yasuhiro Matsumoto).

fixes:  #588
closes: #19808

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0236
2026-03-23 21:42:04 +00:00
Aliaksei Budavei c9eaff0a8a runtime(java): Make changes for JDK 26
Reintroduce supported syntax-preview-feature numbers 455,
488, and 507 as _a new number_ 530.

Reference:
https://openjdk.org/jeps/530 (Primitive Types in Patterns etc.)

closes: #19793

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-23 19:54:00 +00:00
Anakin Childerhose 8c116bbe79 patch 9.2.0235: filetype: wks files are not recognized.
Problem:  filetype: wks files are not recognized.
Solution: Detect *.wks, *.wks.in and *.wks.inc as wks filetype,
          include a filetype and syntax plugin (Anakin Childerhose)

The OpenEmbedded Image Creation tool, `wic` uses wic kickstarter files
to define image partition and bootloader layouts.
wks files can end with .wks, .wks.in for templated wks files, and
.wks.inc for including in other .wks files.

The autocmd for *.wks.inc needs to come before *.inc in
runtime/ftdetect.vim

Reference:
https://docs.yoctoproject.org/ref-manual/kickstart.html#openembedded-kickstart-wks-reference
https://git.openembedded.org/openembedded-core/tree/scripts/lib/wic/canned-wks

closes: #19796

Signed-off-by: Anakin Childerhose <anakin@childerhose.ca>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0235
2026-03-23 19:43:57 +00:00
Yasuhiro Matsumoto 3abbe31fe0 patch 9.2.0234: test: Test_close_handle() is flaky
Problem:  test: Test_close_handle() is flaky
Solution: Use WaitForAssert() to wait for the channel to be closed
          (Yasuhiro Matsumoto)

Ch_close_handle() did not wait for the channel to be fully closed,
which could cause Ch_CloseHandler to fire during the next test's
GetPort() sleep loop, resulting in E906.

Wait for ch_status() to become 'closed' before returning.

closes: #19797

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0234
2026-03-23 19:29:57 +00:00
Hirohito Higashi 347e8c1e7d patch 9.2.0233: Compiler warning in strings.c
Problem:  Compiler warning in strings.c
          (Timothy Rice, after v9.2.0031)
Solution: Return early when str_m is zero
          (Hirohito Higashi)

fixes:  #19795
closes: #19800

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0233
2026-03-23 18:46:31 +00:00
Hirohito Higashi 3d472d8675 patch 9.2.0232: fileinfo not shown after :bd of last listed buffer
Problem:  fileinfo not shown after :bd of last listed buffer
          (memeplex)
Solution: Set need_fileinfo to true in empty_curbuf()
          (Hirohito Higashi)

When deleting the last listed buffer with :bd, the new empty buffer's
file info (e.g. "[No Name]" --No lines in buffer--) was not displayed.
do_ecmd() only calls fileinfo() for existing buffers (oldbuf), not for
newly created empty buffers.

Set need_fileinfo in empty_curbuf() so the file info is displayed after
redraw.

fixes:  #548
closes: #19802

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0232
2026-03-22 21:41:42 +00:00
Ola Söder 0172ff5542 patch 9.2.0231: Amiga: Link error for missing HAVE_LOCALE_H
Problem:  AROS/MorphOS/AmigaOS tiny/small link error
Solution: Include get_cmd_output by defining HAVE_LOCALE_H
          (Ola Söder)

closes: #19792

Signed-off-by: Ola Söder <rolfkopman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0231
2026-03-22 21:03:45 +00:00
Yasuhiro Matsumoto 196cf9f644 patch 9.2.0230: popup: opacity not working accross vert splits
Problem:  popup: opacity not working across vert splits
Solution: Iterate over the full popup width to find all underlying
          windows (Yasuhiro Matsumoto)

redraw_win_under_opacity_popup() only checked the popup's left column
to find underlying windows. When a popup spans a vertical split, the
right-side window was never forced to redraw, causing blended
ScreenAttrs values to accumulate across redraw cycles.

Iterate across the full popup width to find and redraw all underlying
windows.

closes: #19737

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0230
2026-03-22 20:38:22 +00:00
AstroSnail 1fe0d1e8f5 patch 9.2.0229: keypad keys may overwrite keycode for another key
Problem:  In XTerm, with 'xtermcodes' enabled (default), vim will
          request keypad keys after editing pad keys, and will remove
          the latter when they're duplicates of the former.
Solution: When a termcode reply is a keypad key and it would replace a
          different key, skip it.

fixes:   #19182 (case 2)
related: #19643
closes:  #19644

Signed-off-by: AstroSnail <astrosnail@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0229
2026-03-22 20:21:50 +00:00
Antonio Giovanni Colombo 6463c32e20 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-22 18:16:43 +00:00
Antonio Giovanni Colombo 243dcd1bcb translation(it): Update Italian xxd man page
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-22 18:13:45 +00:00
Yasuhiro Matsumoto 0b257ecb90 patch 9.2.0228: still possible flicker
Problem:  still possible flicker
Solution: Use redraw_as_cleared() instead of screenclear() to avoid
          flicker (Yasuhiro Matsumoto).

When the window width matches the frame width, screenclear() causes
visible flicker. Use redraw_as_cleared() instead which marks the
screen for redraw without actually clearing it.

closes: #19732

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0228
2026-03-22 17:21:09 +00:00
Yasuhiro Matsumoto aeb716ea77 patch 9.2.0227: MS-Windows: CSI sequences may be written to screen
Problem:  MS-Windows: CSI sequences may be written to screen
          (after v9.2.0200).
Solution: Move the CSI parsing and skipping logic outside of the USE_VTP
          guard in mch_write() so that sequences are always consumed
          even if VTP is inactive (Yasuhiro Matsumoto).

After v9.2.0200 added send_decrqm_modes(), running vim -u NONE -U NONE
-N on Windows displays raw ESC[?2026$p on screen. This is because
USE_VTP is false when termguicolors is off and t_colors < 256, and the
CSI skip logic in mch_write() was inside the if (USE_VTP) block, so
s/len were never advanced and the escape sequence leaked out as plain
text.

Move the CSI parsing/skipping outside the USE_VTP guard so sequences are
always consumed. Only the vtp_printf() pass-through for DECSCUSR (q)
remains conditional on USE_VTP.

related: #19755
closes:  #19762

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0227
2026-03-22 17:05:14 +00:00
Hirohito Higashi 48137e4e48 patch 9.2.0226: No 'incsearch' highlighting support for :uniq
Problem:  No 'incsearch' highlighting support for :uniq
Solution: Add :uniq support (Hirohito Higashi)

closes: #19780

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0226
2026-03-22 17:00:46 +00:00
Aditya Malik e147b635fc patch 9.2.0225: runtime(compiler): No compiler plugin for just
Problem:  runtime(compiler): No compiler plugin for just
Solution: Add a compiler plugin for the just command runner, add a test
          (Aditya Malik)

Sets makeprg and a custom errorformat to parse just's multi-line
error output into quickfix entries with file, line, column, and
message. Includes a test.

Reference:
- https://github.com/casey/just

closes: #19773

Signed-off-by: Aditya Malik <adityamalik2833@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0225
2026-03-22 16:46:41 +00:00
Hirohito Higashi 9e55474849 patch 9.2.0224: channel: 2 issues with out/err callbacks
Problem:  channel: 2 issues with out/err callbacks
Solution: fix indentation and output order with term_start()
          (Hirohito Higashi).

When term_start() is called with err_cb (and optionally out_cb),
two issues occur:
1. Unexpected indentation in the terminal buffer display: stderr
   arrives via a pipe which lacks the PTY ONLCR line discipline,
   so bare LF moves the cursor down without a CR, causing each
   subsequent line to be indented one column further.

2. stdout appears in the terminal and callbacks before stderr,
   even when the child process writes to stderr first.  This is
   because channel_parse_messages() iterates parts in enum order
   (PART_OUT before PART_ERR), so when both have buffered data
   they are always processed in the wrong order.

Solution:
- In may_invoke_callback(), before writing PART_ERR data to the
  terminal buffer, convert bare LF to CR+LF so that vterm renders
  each line at column 0.

- In channel_parse_messages(), when about to process PART_OUT of a
  terminal PTY job, if PART_ERR already has readahead data, skip
  PART_OUT and process PART_ERR first.  This works without any
  artificial delay because channel_select_check() reads all ready
  file descriptors into their readahead buffers in a single
  select() pass before any callbacks are invoked; by the time
  channel_parse_messages() runs, both buffers are populated and
  the skip logic can enforce the correct order.

- Also add a per-line split for out_cb/err_cb on terminal PTY
  jobs: instead of passing a potentially multi-line raw chunk to
  the callback, split on NL and strip trailing CR so each callback
  receives exactly one clean line.

Add Test_term_start_cb_per_line() to verify that err_cb and out_cb
each receive one line per call, with correct stderr-before-stdout
ordering, without any sleep between the writes.

fixes:  #16354
closes: #19776

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0224
2026-03-22 16:42:53 +00:00
Mao-Yining de10c87bed translation: Regenerate desktop files in runtime directory
I don't know whether it is necessary to copy desktop files to runtime/
manually, but these two files seem not to have been updated for some
time.

The change in Makefile is because the previous pattern will throw an error:

	C:\msys64\ucrt64\bin\sed.exe: -e expression #1, char 3: unknown command: `.'

which I am not sure why.

closes: #19777

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-22 16:27:43 +00:00
Hirohito Higashi e2f4e18437 patch 9.2.0223: Option handling for key:value suboptions is limited
Problem:  Option handling for key:value suboptions is limited
Solution: Improve :set+=, :set-= and :set^= for options that use
          "key:value" pairs (Hirohito Higashi)

For comma-separated options with P_COLON (e.g., diffopt, listchars,
fillchars), :set += -= ^= now processes each comma-separated item
individually instead of treating the whole value as a single string.

For :set += and :set ^=:
- A "key:value" item where the key already exists with a different value:
  the old item is replaced.
- An exact duplicate item is left unchanged.
- A new item is appended (+=) or prepended (^=).

For :set -=:
- A "key:value" or "key:" item removes by key match regardless of value.
- A non-colon item removes by exact match.

This also handles multiple non-colon items (e.g., :set
diffopt-=filler,internal) by processing each item individually, making
the behavior order-independent.

Previously, :set += simply appended the value, causing duplicate keys to
accumulate.

fixes:  #18495
closes: #19783

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0223
2026-03-22 16:19:31 +00:00
zeertzjq 5a3b75d67b patch 9.2.0222: "zb" scrolls incorrectly with cursor on fold
Problem:  "zb" scrolls incorrectly with cursor on fold.
Solution: Set w_botline to the line below the fold (zeertzjq).

related: neovim/neovim#38413
closes:  #19785

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0222
2026-03-22 15:49:59 +00:00
zeertzjq 03e89ccf33 patch 9.2.0221: Visual selection drawn incorrectly with "autoselect"
Problem:  Visual selection may be drawn incorrectly with "autoselect".
Solution: Restore w_virtcol after getting clipboard selection
          (zeertzjq).

fixes:  #19590
closes: #19784

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0221
2026-03-22 15:44:47 +00:00
Muraoka Taro 2f8bd14198 patch 9.2.0220: MS-Windows: some defined cannot be set on Cygwin/Mingw
Problem:  In Cygwin and MinGW, options like MODIFIED_BY cannot be set.
          MSVC (Make_mvc.mak) allows you to build optional features
          without modifying the source code by specifying DEFINES in the
          nmake options. However, this is not the case in
          Make_cyg_ming.mak.
Solution: Since DEFINES is used in many places, we will provide
          EXTRA_DEFINES assuming that the user will define it. By adding
          this to DEFINES, it will be possible to specify it in the same
          way as in MSVC.

closes: #19786

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0220
2026-03-22 15:35:20 +00:00
Yasuhiro Matsumoto 9774651ecf runtime(manpager): Strip OSC 8 hyperlink sequences in manpager plugin
fixes:  #19726
closes: #19787

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-22 15:30:53 +00:00
Sergey Vlasov 8e0483c2f4 patch 9.2.0219: call stack can be corrupted
Problem:  call stack can be corrupted, because calculated remaining
          capacity for call stack string can underflow (after v9.1.1983)
Solution: Calculate capacity against maximum capacity
          (Sergey Vlasov).

closes: #19759

Signed-off-by: Sergey Vlasov <sergey@vlasov.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0219
2026-03-20 23:21:28 +00:00
Shane Harper 60edf94c4e patch 9.2.0218: visual selection highlighting in X11 GUI is wrong.
Problem:  The check for whether an X connection was opened was incorrect
          (after v9.2.0158).
Solution: Use X_DISPLAY instead of xterm_dpy (Shane Harper)

Note: xterm_dpy would be NULL if Vim was started in GUI mode.

Previously, starting two instances of gvim that use GTK3 with:
GDK_BACKEND=x11 gvim and making a visual selection in both would leave
both selections highlighted with the Visual highlight group. Now, when
the second selection is made the first selection will be highlighted
with VisualNOS.

closes: #19752

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0218
2026-03-20 23:12:33 +00:00
Jamie Shorten 68f9dedba4 patch 9.2.0217: filetype: cto files are not recognized
Problem:  filetype: cto files are not recognized
Solution: Detect *.cto as concerto filetype (Jamie Shorten)

Add filetype detection for the Concerto Modelling Language. Concerto
is a schema language by the Accord Project for defining data models
used in smart legal contracts and business networks.

Reference:
Language spec: https://concerto.accordproject.org
Tree-sitter grammar: https://github.com/accordproject/concerto-tree-sitter

closes: #19760

Signed-off-by: Jamie Shorten <jamie@jamieshorten.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0217
2026-03-20 23:07:02 +00:00
Yasuhiro Matsumoto b3d8a0f349 patch 9.2.0216: MS-Windows: Rendering artifacts with DirectX
Problem:  MS-Windows: Rendering artifacts with DirectX
          (Alexander Zhura)
Solution: Force redraw (Yasuhiro Matsumoto)

DirectWrite subpixel rendering (especially with CFF/OTF fonts) can
extend glyph pixels beyond cell boundaries.  Vim already handles the
forward direction (redraw the next character when the current one
changes) for MS-Windows antialiasing, but the backward direction was
missing.

Add gui.directx_enabled flag accessible from screen.c and extend the
existing spill-over handling to:
- Redraw the current character when the previous one changed (backward)
- Force redraw of the next character in screen_puts_len() and
  screen_fill() paths

fixes:  #19586
closes: #19761

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0216
2026-03-20 22:51:30 +00:00
Muraoka Taro 890d5fd138 patch 9.2.0215: MS-Windows: several tests fail in the Windows CUI.
Problem:  The Windows CUI actively buffers transmissions to terms. Patch
          0200 changed the timing of DECRQM transmissions, and
          out_flush() is no longer called after transmission. Therefore,
          actual term initialization does not occur until the buffer is
          flushed, causing the following tests to fail:
            - test_autocmd.vim - Test_Changed_FirstTime()
            - test_mapping.vim - Test_error_in_map_expr()
            - test_messages.vim - Test_mode_message_at_leaving_insert_with_esc_mapped()
            - test_search.vim - Test_search_cmdline_incsearch_highlight_attr()

            The failures since version 200 can be confirmed in the following CI jobs.
            - 9.2.0200 https://github.com/vim/vim/actions/runs/23312934497
                - https://github.com/vim/vim/actions/runs/23312934497/job/67804736843
                - https://github.com/vim/vim/actions/runs/23312934497/job/67804736752
                - https://github.com/vim/vim/actions/runs/23312934497/job/67804736735
            - 9.2.0199 https://github.com/vim/vim/actions/runs/23311871938
                - The above test can be confirmed to be successful.
Solution: After sending DECRQM in send_decrqm_modes(), explicitly call
          out_flush() to ensure terminal initialization (Muraoka Taro).

closes: #19764

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0215
2026-03-20 22:46:13 +00:00
Yasuhiro Matsumoto 2b7b745bb5 patch 9.2.0214: tests: Test_gui_system_term_scroll() is flaky
Problem:  tests: Test_gui_system_term_scroll() is flaky
          (after: v9.2.0208)
Solution: Fix test (Yasuhiro Matsumoto)

Remove timer-based screen check and use a simple command instead
of ping.  The timer could fire before ConPTY initialization was
complete, causing screenstring() to return an empty string.

Check screenstring() directly after the command finishes instead.

related: #19735
closes:  #19765

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
v9.2.0214
2026-03-20 22:34:11 +00:00