Compare commits

...

1037 Commits

Author SHA1 Message Date
dependabot[bot] 64cadcbcb2 CI: Bump github/codeql-action
Bumps the github-actions group with 1 update in the / directory: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4 to 4.35.5
- [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.5)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-28 19:05:19 +00:00
Yee Cheng Chin b0e4e533e7 MacVim r183
Note that release notes are now written in a separate file under the new
release-notes folder. This helps keep commit messages brief and makes it
easier to inspect old release notes.
2026-04-07 22:28:52 -07:00
Yee Cheng Chin 091e120ada ci: Don't use GNU iconv for legacy builds
We are only using GNU iconv instead of native one because in newer macOS
versions the system iconv is buggy. This isn't an issue for older macOS
versions. Building with GNU iconv makes the build chain more complicated
for self-hosted VMs and it also increases binary size so we don't want
to do this unless it's necessary.
2026-04-07 19:25:55 -07:00
Yee Cheng Chin ae67b87979 Merge pull request #1636 from macvim-dev/dependabot/github_actions/github-actions-364172962e
CI: Bump the github-actions group across 3 directories with 2 updates
2026-04-07 18:24:29 -07:00
dependabot[bot] d310173160 CI: Bump the github-actions group across 3 directories with 2 updates
Bumps the github-actions group with 1 update in the / directory: [actions/upload-artifact](https://github.com/actions/upload-artifact).
Bumps the github-actions group with 1 update in the /.github/actions/test_macvim_artifacts directory: [actions/upload-artifact](https://github.com/actions/upload-artifact).
Bumps the github-actions group with 1 update in the /.github/actions/universal-package directory: [actions/cache](https://github.com/actions/cache).


Updates `actions/upload-artifact` from 6 to 7
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

Updates `actions/upload-artifact` from 4 to 7
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

Updates `actions/cache` from 4 to 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/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 00:42:58 +00:00
Yee Cheng Chin cfab463785 Merge remote-tracking branch 'vim/master' 2026-04-07 17:12:21 -07:00
Yasuhiro Matsumoto ea7bf9aa8a patch 9.2.0321: MS-Windows: No OpenType font support
Problem:  MS-Windows: No OpenType font support
Solution: Allow specifying OpenType font features directly in 'guifont'
          (Yasuhiro Matsumoto).

Allow specifying OpenType font features directly in 'guifont' using
the ':f' option (e.g., :set guifont=Cascadia_Code:h14:fss19=1:fcalt=0).
Each ':fXXXX=N' sets a single OpenType feature tag with a parameter
value.  Multiple features can be specified by repeating the ':f' option.

This only takes effect when 'renderoptions' is set to use DirectWrite
(type:directx).  Default features (calt, liga, clig, rlig, kern) are
preserved unless explicitly overridden.

closes: #19857

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 21:07:46 +00:00
Hirohito Higashi ff41e9d853 patch 9.2.0320: several bugs with text properties
Problem:  several bugs with text properties
Solution: Fix the bugs, rework the text properties work

related: #19685
fixes:   #19680
fixes:   #19681
fixes:   #12568
fixes:   #19256
closes:  #19869

Co-Authored-By: Paul Ollis <paul@cleversheep.org>
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>
2026-04-07 20:46:10 +00:00
Yasuhiro Matsumoto c79edc0df9 patch 9.2.0319: popup: rendering issues with partially transparent popups
Problem:  popup: rendering issues with partially transparent popups.
Solution: Redraw the area under the old popup position on move or
          resize. Apply the background blend only to the covered half of
          a double-width character. (Yasuhiro Matsumoto)

closes: #19881

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 20:26:17 +00:00
Yasuhiro Matsumoto 317351c745 patch 9.2.0318: cannot configure opacity for popup menu
Problem:  cannot configure opacity for popup menu
Solution: Add the 'pumopt' option, consolidate existing pum options into
          the pumopt option (Yasuhiro Matsumoto)

closes: #19931

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 19:51:20 +00:00
Christian Brabandt f3cba4a205 runtime(doc): document gitcommit_summary_length
related: #19905

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 19:37:14 +00:00
Antonin Godard 15e988810e runtime(bitbake): Update syntax script
1) add syntax for include_all

The include_all directive was introduced in [1]. It uses the same syntax
as include or require, taking one or more paths as argument.

2) add syntax for inherit_defer

The inherit_defer directive was introduced in [2]. It uses the same syntax
as inherit, taking one or more class name as argument.

3) add syntax for addpylib

The addpylib directive was introduced in [3]. It uses a syntax similar
to addtask or addhandler, taking a directory and python namespace as
argument.

[1]: https://git.openembedded.org/bitbake/commit/?id=d01d5593e7829ac60f37bc23cb87dc6917026471
[2]: https://git.openembedded.org/bitbake/commit/?id=5c2e840eafeba1f0f754c226b87bfb674f7bea29
[3]: https://git.openembedded.org/bitbake/commit/?id=afb8478d3853f6edf3669b93588314627d617d6b

Signed-off-by: Antonin Godard <antonin@godard.cc>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 19:28:27 +00:00
Christian Brabandt fd836aab13 patch 9.2.0317: listener functions do not check secure flag
Problem:  listener functions do not check secure flag
          (syndicate)
Solution: Call check_secure()

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 18:57:04 +00:00
Christian Brabandt 7ab76a8604 patch 9.2.0316: [security]: command injection in netbeans interface via defineAnnoType
Problem:  [security]: The netbeans defineAnnoType command passes typeName, fg and bg
          unsanitized to coloncmd(), allowing a malicious server to inject
          arbitrary Ex commands via '|'. Similarly, specialKeys does not
          validate key tokens before building a map command.
Solution: Validate typeName, fg and bg against an allowlist of safe
          characters before passing them to coloncmd()

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-mr87-rhgv-7pw6

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-07 18:42:18 +00:00
Yee Cheng Chin 1782e971f7 Merge pull request #1638 from ychin/sparkle-force-verify-update-and-appcast-feed
Force Sparkle updater to always verify update and to use signed appcast
2026-04-06 17:22:17 -07:00
Yee Cheng Chin 1224d0f586 Force Sparkle updater to always verify update and to use signed appcast
Sparkle 2.9 introduced the ability to verify appcast feeds using a
signature. Turn that on to prevent MITM attacks.

This requires the appcast on the server side to be re-generated with
signature at the end. This was done in
macvim-dev/macvim-dev.github.io#5.
2026-04-06 17:01:21 -07:00
Yee Cheng Chin 297476521e Merge pull request #1637 from ychin/sparkle-2.9.1
Sparkle 2.9.1
2026-04-06 16:13:50 -07:00
Yee Cheng Chin 7b624f3d8d Sparkle 2.9.1
Now supports the ability to sign appcast feeds, which we will utilize in
the future.
2026-04-06 15:37:03 -07:00
Yee Cheng Chin 6d606b2307 Merge remote-tracking branch 'vim/master' 2026-04-06 15:25:59 -07:00
Christian Brabandt 794c304479 runtime(doc): clarify incsearch feature and typed chars
fixes: #19886

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 14:01:20 +00:00
Yasuhiro Matsumoto 8d23fcb603 patch 9.2.0315: missing bound-checks
Problem:  missing bound-checks
Solution: Add defensive guards against potential buffer overflow
          (Yasuhiro Matsumoto)

Add bounds checking and integer overflow guards across multiple files
as a defensive measure. While these code paths are unlikely to be
exploitable in practice, the guards prevent undefined behavior in
edge cases.

- libvterm/vterm.c: use heap tmpbuffer instead of stack buffer in
  vsprintf() fallback path
- channel.c: validate len in channel_consume() before mch_memmove()
- spell.c: use long instead of int for addlen to avoid signed overflow
  in size_t subtraction
- alloc.c: add SIZE_MAX overflow check in ga_grow_inner() before
  itemsize multiplication
- list.c: add overflow check before count * sizeof(listitem_T)
- popupwin.c: add overflow check before width * height allocation
- insexpand.c: add overflow check before compl_num_bests multiplication
- regexp_bt.c: replace sprintf() with vim_snprintf() in regprop()
- spellfile.c: use SIZE_MAX instead of LONG_MAX for allocation overflow
  check

closes: #19904

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:53:31 +00:00
Zdenek Dohnal c3c3478810 patch 9.2.0314: channel: can bind to all network interfaces
Problem:  channel: can bind to all network interfaces in ch_listen()
          (after v9.2.0153)
Solution: Restrict to a valid hostname, do not allow to bind on all
          network interfaces (Zdenek Dohnal).

This will prevent unintentional binding the process to public network
interfaces, and opening Vim to communication from outside network if
firewall allows it.

related: #19231
closes:  #19799

Signed-off-by: Zdenek Dohnal <zdohnal@redhat.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:48:15 +00:00
Foxe Chen aef812446b patch 9.2.0313: Callback channel not registered in GUI
Problem:  Callback channel not registered in GUI
Solution: Call channel_gui_register_one() in GUI mode
          (Foxe Chen).

closes: #19858

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:35:27 +00:00
Eisuke Kawashima a5b6c2d6e9 patch 9.2.0312: C-type names are marked as translatable
Problem:  C-type names are marked as translatable
Solution: Use them as-is, do not translate them
          (Eisuke Kawashima)

closes: #19861

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:32:23 +00:00
Yasuhiro Matsumoto c4921023b1 patch 9.2.0311: redrawing logic with text properties can be improved
Problem:  redrawing logic with text properties can be improved in
          win_line()
Solution: Avoid repeated sorts, use stack storage for small
          properties, pre-compute whether trailing virtual text follows
          (Yasuhiro Matsumoto)

closes: #19880

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:19:04 +00:00
Yasuhiro Matsumoto f9981bbc8e patch 9.2.0310: unnecessary work in vim_strchr() and find_term_bykeys()
problem:  unnecessary work in vim_strchr() and find_term_bykeys()
Solution: Redirect vim_strchr() to vim_strbyte() for ASCII input
          Add an early exit to find_term_bykeys() using the terminal
          leader table, mirroring check_termcode(). Reduces instruction
          count on startup by about 27%. (Yasuhiro Matsumoto)

closes: #19902

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:12:39 +00:00
John Marriott 4368ad34df patch 9.2.0309: Missing out-of-memory check to may_get_cmd_block()
Problem:  Missing out-of-memory check to may_get_cmd_block()
Solution: Return p unchanged in case of out-of-memory (John Marriott)

closes: #19906

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:07:31 +00:00
Mao-Yining f1dbca200c runtime(log): clean up and modernize log syntax
- Rename groups to consistent log* naming (LogString→logString, etc.)
- Remove redundant logOperator/logBrackets, use logSymbol for special chars
- Simplify level keywords by removing case variants
- Consolidate syslog column patterns into logSysColumn
- Move custom highlights to portable ctermfg/guifg names
- Update maintainer email address

closes: #19917

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 13:02:04 +00:00
Mao-Yining ea5084d1f1 patch 9.2.0308: Error message E1547 is wrong
Problem:  Error message E1547 is wrong
Solution: Fix error message, re-generate Chinese translations
          (Mao-Yining).

closes: #19920

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 12:54:33 +00:00
Hirohito Higashi 002fddecde patch 9.2.0307: more mismatches between return types and documentation
Problem:  more mismatches between return types and documentation
Solution: Update documentation, fix return type for remote_foreground()
          and test_mswin_event() (Hirohito Higashi)

Doc summary table fixes:
- ch_info: String -> Dict
- spellbadword: String -> List
- undotree: List -> Dict
- test_getvalue: any -> Number
- instanceof, popup_filter_menu, popup_filter_yesno: Number -> Bool
- remote_foreground: Number -> none
- test_mswin_event: bool -> Bool

evalfunc.c fixes:
- remote_foreground: ret_string -> ret_void
- test_mswin_event: ret_number -> ret_bool

Detail "Return type:" fixes:
- instanceof: Number -> vim9-boolean
- remote_foreground: Number -> void
- popup_filter_menu, popup_filter_yesno: Number -> vim9-boolean

related: #19922
closes:  #19923

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>
2026-04-06 12:49:53 +00:00
Aaron Burrow 78954f86c2 patch 9.2.0306: runtime(tar): some issues with lz4 support
Problem:  runtime(tar): some issues with lz4 support
Solution: Fix bugs (see below) (Aaron Burrow)

The tar plugin allows users to extract files from tar archives that are
compressed with lz4. But, tar#Extract() builds malformed extraction commands
for lz4-compressed tar archives. This commit fixes three issues in that code.
The first affects archives with a .tlz4 extension and the other two affect
archives with .tar.lz4 extension (but one of these is symmetric to the issue
that .tlz4 archives had).

(1) When trying to extract .tlz4 archives the command created by
tar#Extract looked like this:

    tar -I lz4pxf foo.tlz4 foo

This isn't right.  It should be something like this:

    tar -I lz4 -pxf foo.tlz4 foo

This was happening because tar.plugin is just substituting on the
first - in "tar -pxf".  This works fine if we just add a simple flag for
extraction (eg, z for .tgz), but for lz4 we need to add "-I lz4".

I don't believe that there is an obvious good way to fix this without
reworking the way the command is generated.  Probably we should collect
the command and flags separately and the flags should be stored in a
set. Then put everything together into a string just before issuing it
as an extraction command.  Unfortunately, this might break things for users
because they have access to tar_extractcmd.

This patch just makes the substitution a little bit more clever so that it
does the right thing when substituting on a string like "tar -pxf".

(2) .tar.lz4 extractions had the same issue, which my patch fixes in
the same way.

(3) .tar.lz4 extractions had another issue.  There was a space missing
in the command generated by tar#Extract.  This meant that commands
looked like this (notice the lack of space between the archive and output
file names):

    tar -I lz4pxf foo.tar.lz4foo

This patch just puts a space where it should be.

Finally, I should note that ChatGPT 5.4 initially identified this issue
in the code and generated the test cases.  I reviewed the test cases,
wrote the patch, and actually ran vim against the tests (both with and
without the patch).

closes: #19925

Signed-off-by: Aaron Burrow <burrows@fastmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 12:46:40 +00:00
Furkan Sahin 48581f2ba9 runtime(vim9): Fix dist#vim9#Open() spaced paths and SIGPIPE crashes
Problem:    dist#vim9#Open() fails to open files with spaces on Linux
            because Launch() splits the command string. Also,
            background GUI viewers (e.g., xdg-open) crash with SIGPIPE
            when Vim destroys the default job_start() IO pipes.
Solution:   Use job_start() with 'sh -c' to let the POSIX shell parse
            the shellescaped quotes safely. Set 'in_io', 'out_io', and
            'err_io' to 'null' to completely detach the background
            process and prevent pipe crashes. Unify the Launch()
            execution block across all operating systems.

closes: #19928
fixes:  #19916

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-06 12:43:07 +00:00
Hirohito Higashi 365d58a539 patch 9.2.0305: mismatch between return types and documentation
Problem:  mismatch between return types and documentation
Solution: Fix documentation, update f_err_teapot() return type to void
          (Hirohito Higashi)

- Fix summary table in builtin.txt: feedkeys, foreground, setcharsearch,
  term_wait, test_void, wildtrigger, ch_sendraw from non-none to none;
  listener_remove and prop_add from none to Number
- Fix err_teapot in evalfunc.c: ret_number_bool to ret_void
- Fix "Return type:" in detailed doc sections (64 functions across builtin.txt,
  channel.txt, terminal.txt, popup.txt, testing.txt, textprop.txt) from wrong
  types to void
- Add missing "Return type: void" for prompt_setcallback and prop_add_list

closes: #19922

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: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 16:53:52 +00:00
zeertzjq b03970f41f patch 9.2.0304: tests: test for 9.2.0285 doesn't always fail without the fix
Problem:  When the terminal is very large, test for 9.2.0285 doesn't
          trigger an ASAN error without the fix.
Solution: Use a window with fixed height (zeertzjq)

closes: #19924

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 16:45:29 +00:00
zeertzjq a1f4259e68 patch 9.2.0303: tests: zip plugin tests don't check for warning message properly
Problem:  zip plugin tests may match messages from previous test cases
          when checking for warning message.
Solution: Clear messages at the start of these tests (zeertzjq).

closes: #19926

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 16:41:15 +00:00
Christian Brabandt ab4ebb62ee patch 9.2.0302: runtime(netrw): RFC2396 decoding double escaping spaces
Problem:  runtime(netrw): RFC2396 decoding double escaping spaces
          (lilydjwg, after 3e60f03d94)
Solution: Remove escape() call, since we are using fnameescape() anyhow

fixes: #19913

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 16:36:42 +00:00
Hirohito Higashi f07a1ed903 patch 9.2.0301: Vim9: void function return value inconsistent
Problem:  Vim9: void function return value inconsistent between
          script and :def
Solution: Make void built-in functions like bufload() return void
          consistently (Hirohito Higashi)

In Vim9 script, calling a void built-in function (e.g. bufload()) at the
script level did not set rettv to VAR_VOID, making it appear to return
0. Inside :def it correctly returned VAR_VOID and raised E1031.  Set
rettv to VAR_VOID after calling a ret_void built-in function in Vim9
script so the behavior is consistent.

Also fix the documentation for bufload() and ch_logfile() to correctly
state that the return type is void.

closes: #19919

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 16:17:58 +00:00
Christian Brabandt 9e041457a5 patch 9.2.0300: The vimball plugin needs some love
Problem:  The vimball plugin needs some love
          (syndicate)
Solution: Clean-up, refactor and update the plugin,
          in particular, catch path traversal attacks

This change does the following
- Clean up Indentation and remove calls to Decho
- Increase minimum Vim version to 7.4 for mkdir()
- Use mkdir() consistently
- Update Metadata Header
- Remove check for fnameescape()
- Catch path traversal attacks
- Add vimball basic tests
- Remove mentioning of g:vimball_mkdir in documentation

closes: #19921

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 16:11:53 +00:00
Christian Brabandt 46f530e517 patch 9.2.0299: runtime(zip): may write using absolute paths
Problem:  runtime(zip): may write using absolute paths
          (syndicate)
Solution: Detect this case and abort on Unix, warn in the documentation
          about possible issues

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-05 15:58:00 +00:00
Carlo Klapproth 5943c57173 runtime(zathurarc): Update page-padding, wrap the zathurarcOption keywords
page-padding was split in page-v-padding and page-h-padding

closes: #19899

Signed-off-by: Carlo Klapproth <6682561+elcarlosIII@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 09:22:50 +00:00
Hirohito Higashi 3c79e33aeb patch 9.2.0298: Some internal variables are not modified
Problem:  Some internal variables are not modified
Solution: Add const qualifier to static table data
          (Hirohito Higashi).

Several static arrays that are never modified at runtime were missing the
const qualifier. Add const to move them from .data to .rodata section.

closes: #19901

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 09:09:13 +00:00
Yasuhiro Matsumoto 77e7a40af2 patch 9.2.0297: libvterm: can improve CSI overflow code
Problem:  libvterm: can improve CSI overflow code
Solution: Handle overflow cases better (Yasuhiro Matsumoto)

closes: #19903

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 09:04:34 +00:00
zeertzjq 18cd55dbc4 patch 9.2.0296: Redundant and incorrect integer pointer casts in drawline.c
Problem:  Currently `colnr_T` and `int` and the same type, so casting
          `int *` to `colnr_T *` is redundant. Additionally, even if
          they are changed to different types in the future, these casts
          are incorrect as they won't work on big-endian platforms.
Solution: Remove the casts. Also fix two cases of passing false instead
          of 0 to an integer argument (zeertzjq).

related: #19672
closes:  #19907

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 08:55:59 +00:00
zeertzjq 08bd9114c1 patch 9.2.0295: 'showcmd' shows wrong Visual block size with 'linebreak'
Problem:  'showcmd' shows wrong Visual block size with 'linebreak' after
          end char (after 7.4.467).
Solution: Exclude 'linebreak' from end position. Also fix confusing test
          function names.

closes: #19908

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 08:50:46 +00:00
Yee Cheng Chin 22db4a3c57 patch 9.2.0294: if_lua: lua interface does not work with lua 5.5
Problem:  if_lua: lua interface does not work with lua 5.5
          (Lyderic Landry)
Solution: Use the new lua API `luaL_openselectedlibs()`
          (Yee Cheng Chin)

Lua 5.5 removed the API function `openlibs` with `openselectedlibs`,
with `luaL_openlibs` replaced by a macro that just calls the new
`luaL_openselectedlibs` in the headers (see lua/lua@d738c8d18). This
broke Vim's dynamic Lua build as we try to redefine `luaL_openlibs`
ourselves and also this function can no longer be loaded from the lib.
Update the code to use the new API call instead to fix the issue.

fixes:  #19814
closes: #19842
closes: #19909

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 08:37:47 +00:00
dependabot[bot] bd8b6c6b05 CI: Bump codecov/codecov-action
Bumps the github-actions group with 1 update in the / directory: [codecov/codecov-action](https://github.com/codecov/codecov-action).

Updates `codecov/codecov-action` from 5 to 6
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

closes: #19910

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 08:35:52 +00:00
zeertzjq bc182ae56e patch 9.2.0293: :packadd may lead to heap-buffer-overflow
Problem:  :packadd may lead to heap-buffer-overflow when all entries in
          'runtimepath' have the same length (after 9.2.0291).
Solution: Check for comma after current entry properly (zeertzjq).

related: #19854
closes:  #19911

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 08:32:33 +00:00
Hirohito Higashi a9d01da661 patch 9.2.0292: E340 internal error when using method call on void value
Problem:  E340 internal error when using method call on void value
          (Peter Kenny)
Solution: Check for void value (Hirohito Higashi)

Using a method call on a void return value (e.g. "echo F()->empty()"
where F() returns void) caused an internal error E340. Now it properly
reports E1031 or E1186 depending on the context.

Changes:
- eval.c: check for void value before -> method call at runtime
- vim9expr.c: check for void type before -> method call at compile time
- vim9execute.c: check for void value in builtin function arguments and in
  ISN_STORE

fixes:  #19897
closes: #19912

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-04 08:31:21 +00:00
Yee Cheng Chin 05a0f0ef5a Merge remote-tracking branch 'vim/master'
MMBackend.m had to update the usage of getvcol/getvcols to match the new
function signatures.
2026-04-03 23:29:50 -07:00
Yee Cheng Chin 50cef62268 Merge pull request #1635 from ychin/ci-fix-homebrew-iconv-and-lua-5.5
Fix Homebrew iconv builds and Lua 5.5 dynamic builds
2026-04-03 23:26:56 -07:00
Yee Cheng Chin 859d963f78 Fix Lua 5.5 dynamic build
Cherry-picked from vim/vim#19909
2026-04-03 19:28:44 -07:00
Yee Cheng Chin b8ce3376e8 ci: Fix non-publish builds failing due to failing to use Homebrew iconv
CI builds switched to using Homebrew iconv instead of native one in #1626,
but for non-publish builds this assumed libiconv was installed by
Homebrew, which wasn't always the case. This led to build failures if
Homebrew didn't have it installed. Fix it so that we only use Homebrew
libiconv in publish builds and use Apple iconv otherwise. This also
helps test that both versions work correctly in CI.
2026-04-03 19:19:36 -07:00
John Marriott cb51add7ae patch 9.2.0291: too many strlen() calls
Problem:  too many strlen() calls
Solution: refactor concat_fname() and remove calls to strlen()
          (John Marriott)

Function `concat_fnames()` can make up to 5 calls to `STRLEN()` (either
directly or indirectly via `STRCAT()`). In many cases the lengths of
arguments `fname1` and/or `fname2` are either known or can simply be
calculated.

This Commit refactors this function to accept the lengths of arguments
`fname1` and `fname2` as arguments. It also adds new argument `ret` to
return the resulting string as a `string_T`.

Additionally:
- function `add_pack_dir_to_rtp()` in `scriptfile.c`:
   Use a `string_T` to store local variables `new_rtp` and `afterdir`.
   Replace calls to `STRCAT()` with calls to `STRCPY()`.
   Change type of variable `keep` to `size_t` for consistency with
   other lengths.

- function `qf_get_fnum()` in `quickfix.c`:
  Use a `string_T` to store local variables `ptr` and `bufname`
- function `qf_push_dir()` in `quickfix.c`:
  Use a `string_T` to store local variable `dirname`.
  Replace call to `vim_strsave()` with `vim_strnsave()`.

- function `qf_guess_filepath()` in `quickfix.c`:
  Use a `string_T` to store local variable `fullname`.

- function `make_percent_swname()` in `memline.c`:
  Rename some variables to better reflect their use.
  Use a `string_T` to store local variables `d` and `fixed_name`.
  Slightly refactor to remove need to create an extra string.
- function `get_file_in_dir()` in `memline.c`:
  Use a `string_T` to store local variables `tail` and `retval`.
  Move some variables closer to where they are used.

- function `cs_resolve_file()` in `if_cscope.c`:
  Use a `string_T` to store local variable `csdir`.
  Remove one call to `STRLEN()`.

- function `add_pathsep()` in `filepath.c`:
  Refactor and remove 1 call to `STRLEN()`

- function `set_init_xdg_rtp()` in `option.c`:
  Use a `string_T` to store local variable `vimrc_xdg`.

closes: #19854

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 15:14:24 +00:00
Duncan Bowring b7205b6426 patch 9.2.0290: Amiga: no support for AmigaOS 3.x
Problem:  Amiga: no support for AmigaOS 3.x
Solution: Add support for building Vim on classic AmigaOS 3.x with the
          bebbo cross-compiler and libnix (-noixemul) runtime
          (Duncan Bowring).

The existing Make_ami.mak targets AmigaOS 4 (clib2), AROS, and MorphOS.
This patch adds a fourth target for classic 68k AmigaOS 3.x systems
(A1200, A4000, accelerated A500/A2000) using:
```
  make -f Make_ami.mak UNM=AmigaOS3 BUILD=normal
```

Changes:

os_amiga.c:
- Add 256 KiB __stack cookie for OS3 (conservative for limited RAM)
- Add safe_Lock() wrapper to suppress "Please insert volume" system
  requesters during path probing (benefits all Amiga targets)
- Suppress system requesters globally in mch_init() via pr_WindowPtr=-1
  (Vim probes many paths at startup; Lock()/Open() on non-existent
  volume names triggers blocking system requesters)
- Fix mch_get_host_name() for OS3 (libnix has no gethostname)
- Fix Delay() prototype for non-LATTICE compilers
- Fix nilfh file handle leak on error exit in mch_check_win()

os_amiga.h:
- Add fchown/fchmod/ftruncate no-op stubs for OS3/libnix

os_amiga_stubs.c (new):
- IM function stubs (referenced by optiondefs.h, no X11 on Amiga)
- mch_rmdir() via AmigaDOS DeleteFile()
- getpwuid()/getgrgid()/getuid() stubs (single-user system)

Make_ami.mak:
- Add AmigaOS3 target with -noixemul, -std=gnu99, -DWORDS_BIGENDIAN

blowfish.c:
- Accept WORDS_BIGENDIAN or AMIGA without requiring HAVE_CONFIG_H

xdiff/xmacros.h:
- Make SIZE_MAX fallback unconditional (not just hpux/VMS)

All OS3-specific changes are guarded by:
  #if defined(__GNUC__) && defined(AMIGA) && !defined(__amigaos4__)

Tested on FS-UAE with Workbench 3.1: 23 automated tests passing.
Binary size: 2.2 MiB with -Os -m68020 -DFEAT_NORMAL.

This is the first modern Vim build for classic 68k AmigaOS since
Vim 5.8 circa 1998.  Vim was originally released on the Amiga
(Fred Fish Disk 591, 1991).

closes: #19840

Signed-off-by: Duncan Bowring <duncan@bowring.us>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 14:50:07 +00:00
zeertzjq 23be1889d1 patch 9.2.0289: 'linebreak' may lead to wrong Visual block highlighting
Problem:  'linebreak' may lead to wrong Visual block highlighting when
          end char occupies multiple cells (after 7.4.467).
Solution: Exclude 'linebreak' from the ending column instead of setting
          'virtualedit' temporarily (zeertzjq).

fixes:  #19898
closes: #19900

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 09:48:49 +00:00
zeertzjq af58a9f5e9 runtime(doc): adjust :h 'autowrite' and :h 'autowriteall'
- Don't go over 78 columns.
- Change the first "and" to "or", as "or" is used below.
- Change "takes one" to "switches", as "one" may be mistaken as
  referring to the command instead of the user.
- Use backticks in :h 'autowriteall' like in :h 'autowrite'.

closes: #19859

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 09:40:23 +00:00
Christian Brabandt 71a0a552cf patch 9.2.0288: libvterm: signed integer overflow parsing long CSI args
Problem:  Accumulating CSI argument digits without an upper bound causes
          signed integer overflow when the argument exceeds LONG_MAX.
Solution: Clamp CSI argument accumulation to CSI_ARG_MISSING to prevent
          signed integer overflow (Yasuhiro Matsumoto).

closes: #19894

Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 09:36:56 +00:00
Hannah 863e85e00a patch 9.2.0287: filetype: not all ObjectScript routines are recognized
Problem:  filetype: not all ObjectScript routines are recognized
Solution: Also detect "%RO" and "iris" patterns inside *.rtn files
          (Hannah Kimura)

closes: #19873

Signed-off-by: Hannah Kimura <hannah.kimura@intersystems.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 09:14:43 +00:00
Antonio Giovanni Colombo aca677de0e translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 08:47:51 +00:00
Felix Pehla ff6f277a4d runtime(swayconfig): add additional criteria and hdr
Sway 1.11 added `security_context_v1` metadata as criteria:
 - `sandbox_engine`
 - `sandbox_app_id`
 - `sandbox_instance_id`

Sway 1.12 will add the `tag` criteria for `xdg_toplevel_tag_v1`, as
well as the `hdr` output option (with options `on`, `off`, and
`toggle`).

closes: #19884

Signed-off-by: Felix Pehla <29adc1fd92@gmail.com>
Signed-off-by: James Eapen <james.eapen@vai.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 08:43:53 +00:00
Yasuhiro Matsumoto 28e75c5f31 patch 9.2.0286: still some unnecessary (int) casts in alloc()
Problem:  still some unnecessary (int) casts in alloc()
Solution: Remove more unnecessary (int) casts before alloc() calls
          (Yasuhiro Matsumoto).

Follow-up to patch 9.2.0283. Remove remaining (int) casts in
vim9script.c and netbeans.c.

vim9script.c: lengths are derived from STRLEN() on file paths,
bounded by PATH_MAX. netbeans.c: all operands are already int,
so the (int) cast is redundant and no truncation can occur.

related: #19888
closes:  #19893

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 08:39:11 +00:00
zeertzjq b7cffc8434 patch 9.2.0285: :syn sync grouphere may go beyond end of line
Problem:  :syn sync grouphere may go beyond end of line.
Solution: Start searching for the end of region at the end of match
          instead of a possibly invalid position (zeertzjq).

closes: #19896

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 08:30:40 +00:00
Peter Kenny 880cf88ea6 runtime(doc): Various fixes for ft_rust.txt (tw78, grammar, spaces)
closes: #19887

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 08:29:09 +00:00
Christian Brabandt 9d83ca5ca2 runtime(preproc_indent): Ignore Swapfiles when loading buffers
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 17:53:30 +00:00
Christian Brabandt b2fbb7c32d patch 9.2.0284: tabpanel: crash when tabpanel expression returns variable line count
Problem:  When a tabpanel expression returns a different number of lines on
          successive evaluations, the computed row offset can become negative,
          causing screen_fill() to receive an invalid start_row and crash
          (after v9.1.1391).
Solution: Clamp the row argument in screen_fill_tailing_area() to zero,
          add a safety check in screen_fill() for negative start_row
          (Michał Majchrowicz)

Supported by AI

Co-authored-by: Michał Majchrowicz <mmajchrowicz@afine.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 17:37:58 +00:00
Aliaksei Budavei 12f6f20552 runtime(sh): Keep function name patterns engine neutral
Request less backtracking to function-name candidates for
nonlinear patterns with any regexp engine BUT force using
the old engine with these patterns to avoid incurring an
additional penalty, according to ":syntime report", when the
new regexp engine is preferred.

fixes:  #19847
closes: #19849

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 16:59:28 +00:00
Yasuhiro Matsumoto 964b7b5d7b patch 9.2.0283: unnecessary (int) casts before alloc() calls
Problem:  unnecessary (int) casts before alloc() calls, can cause
          truncation and heap overflows (sgInnora)
Solution: Remove casts (Yasuhiro Matsumoto)

alloc() already accepts size_t, so (int) casts on size_t values are
redundant and could theoretically cause truncation on values > INT_MAX.

Remove the casts and change alloc_cmdbuff() signature from int to
size_t to match.

Note: list_alloc_with_items() keeps its int parameter since lv_len and
lv_with_items are int, and the call site already has an INT_MAX guard.

fixes:  #19888
closes: #19889

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 16:41:01 +00:00
Hirohito Higashi 0646047b68 runtime(doc): clarify term_start() I/O behavior for Unix pty and MS-Windows ConPTY
Explain how stdin/stdout/stderr are connected in term_start():
- On Unix, they default to pty; only "err_cb" switches stderr to a pipe,
  which may cause output order differences due to buffering.
- On MS-Windows with ConPTY, they are always pipes and stdout/stderr
  share the same pipe, so "err_cb" cannot separate them.

related: #16354

Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 16:36:48 +00:00
Yasuhiro Matsumoto b2ff915fe4 patch 9.2.0282: tests: Test_viminfo_len_overflow() fails
Problem:  tests: Test_viminfo_len_overflow() fails
Solution: Catch E342 (Yasuhiro Matsumoto).

Test_viminfo_len_overflow tries to allocate ~4GB, which may throw E342
(out of memory) depending on the platform's memory allocation behavior.
This is an acceptable outcome since the test's purpose is to verify
that Vim does not crash on a crafted viminfo entry.

closes: #19891

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 16:30:05 +00:00
Yasuhiro Matsumoto c91081d0e5 patch 9.2.0281: tests: Test_netrw_FileUrlEdit.. fails on Windows
Problem:  tests: Test_netrw_FileUrlEdit.. fails on Windows
          (after 3e60f03d94)
Solution: Skip the test on Windows (Yasuhiro Matsumoto).

The Test_netrw_FileUrlEdit_pipe_injection() test fails on Windows with
E303 because '|' is not a valid filename character on Windows.  Since
the pipe character cannot appear in a Windows filename, the command
injection vector this test guards against does not apply on Windows.

closes: #19890

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-02 16:22:42 +00:00
Christian Brabandt 7088926316 patch 9.2.0280: [security]: path traversal issue in zip.vim
Problem:  [security]: path traversal issue in zip.vim
          (Michał Majchrowicz)
Solution: Detect more such attacks and warn the user.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-jc86-w7vm-8p24

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 16:23:49 +00:00
Christian Brabandt fe05143f5d patch 9.2.0279: terminal: out-of-bounds write with overlong CSI argument list
Problem:  libvterm CSI parser does not bounds-check argi against
          CSI_ARGS_MAX, allowing excess ';'-separated arguments to
          write past the end of the args array (sentinel404).
Solution: Drop excess arguments.

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 15:36:23 +00:00
Christian Brabandt b2e55ed1d6 patch 9.2.0278: viminfo: heap buffer overflow when reading viminfo file
Problem:  Reading a crafted viminfo file can cause a heap buffer
          overflow because the length value from getdigits() is cast to
          int, truncating large size_t values
Solution: Remove the (int) cast when calling alloc() (sentinel404)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 15:06:21 +00:00
Christian Brabandt 3e60f03d94 runtime(netrw): use fnameescape() with FileUrlEdit()
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 14:47:16 +00:00
Christian Brabandt 2c976d0de4 SECURITY.md: clarify the use of AI
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 10:33:42 +00:00
Christian Brabandt 82ebaa79b0 runtime(racket): Make visual K mapping more robust for shell injection
fyi @benknoble

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 08:10:15 +00:00
zeertzjq 8c8772c6b3 patch 9.2.0277: tests: test_modeline.vim fails
Problem:  tests: test_modeline.vim fails (after v9.2.0276)
Solution: Rewrite the tests to use the existing s:modeline_fails()
          function, update documentation (zeertzjq).

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-01 07:33:46 +00:00
Eisuke Kawashima 52169dbc28 translation(cleanup): squeeze successive empty lines and remove stray comments
closes: #19860

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 19:12:36 +00:00
Christian Brabandt 75661a66a1 patch 9.2.0276: [security]: modeline security bypass
Problem:  [security]: modeline security bypass
Solution: disallow mapset() from secure mode, set the P_MLE flag for the
          'complete', 'guitabtooltip' and 'printheader' options.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-8h6p-m6gr-mpw9

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 18:29:00 +00:00
Christian Brabandt 4cc3ab7401 patch 9.2.0275: tests: test_options.vim fails
Problem:  tests: test_options.vim fails
          (after v9.2.0273)
Solution: allow column value of 0

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 17:44:00 +00:00
Yasuhiro Matsumoto 309332a32e patch 9.2.0274: BSU/ESU are output directly to the terminal
Problem:  BSU/ESU are output directly to the terminal
Solution: Route them through out_buf() and flush the output directly,
          increase the OUT_SIZE terminal buffer (Yasuhiro Matsumoto)

Route synchronized-output control sequences through out_buf and flush
explicitly at protocol boundaries, instead of forcing BSU/ESU through
ui_write() directly.

Also increase the terminal output buffer from 2047 to 8191 bytes so
large redraws are emitted in fewer writes.

The important guarantee here is terminal-visible ordering: BSU must
reach the terminal before the batched redraw bytes, ESU must reach the
terminal after them, and FLUSH must emit ESU and BSU together, then
flush immediately.

Benchmark: PTY redraw workload with TERM=xterm-256color, long wrapped
lines, cursorline, listchars, horizontal scrolling, and repeated redraw!.

write syscalls: 8514 -> 5094 (-40.2%)
wall time: 0.568s -> 0.495s (-12.9%) on valid runs in this environment

closes: #19862

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 16:34:23 +00:00
Christian Brabandt ac18dff65a patch 9.2.0273: tabpanel: undefined behaviour with large tabpanelop columns
Problem:  tabpanel: undefined behaviour with large tabpanelop columns
          (Michał Majchrowicz)
Solution: Error out for too large column values

Co-authored-by: Michał Majchrowicz <mmajchrowicz@afine.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 16:13:25 +00:00
RestorerZ e4502b6037 translation(ru): updated lang/README.ru.txt
closes: #19865

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 15:51:32 +00:00
RestorerZ f4f175332c translation(ru): updated the Russian man page the xxd
closes: #19867

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 15:49:44 +00:00
Thomas Braun 12c6417587 runtime(sshconfig): Add missing kex algorithm
These are available already with openssh 10.2p1.

closes: #19864

Signed-off-by: Thomas Braun <thomas.braun@byte-physics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 15:46:04 +00:00
Christian Brabandt 374f06ffd8 runtime(racket): Use shellescape() to harden the K mapping
fyi: @benknoble

Co-authored-by: Michał Majchrowicz <mmajchrowicz@afine.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 15:38:30 +00:00
zeertzjq b5efce0765 Fix a few typos in tests
closes: #19871

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 15:20:08 +00:00
Christian Brabandt e551e71d7e runtime(tera): use fnameescape() when loading separate syntax files
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-31 15:04:48 +00:00
RestorerZ 70afdfc127 translation(ru): updated translations
closes: #19868

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-30 10:32:10 +00:00
Christian Brabandt 068c0604c9 runtime(rustfmt): not correctly escaping directory names
Problem:  runtime(rustfmt): not correctly escaping directory names
Solution: Use fnamescape() (Michał Majchrowicz)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-30 10:18:35 +00:00
Christian Brabandt 91900b9a5c runtime(vimgoto): Not correctly escaping the filanems
Problem:  runtime(vimgoto): not correctly escaping the filenames
Solution: Use fnamescape() (Michał Majchrowicz)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-30 10:15:19 +00:00
Christian Brabandt aa5c9310f5 runtime(typeset): Use fnameescape() for the :lcd command
Problem:  runtime(typeset) does not escape the detected directory
Solution: Use fnameescape() (Michał Majchrowicz)

fyi @lifepillar

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-30 10:12:03 +00:00
Christian Brabandt 84a8ee4353 runtime(context): use fnameescape() for the Log command
Problem:  runtime(context) does not escape the detected log file
Solution: Use fnameescape() (Michał Majchrowicz)

fyi @lifepillar

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-30 09:58:07 +00:00
Christian Brabandt 664701eb75 patch 9.2.0272: [security]: 'tabpanel' can be set in a modeline
Problem:  'tabpanel' can be set in a modeline
Solution: Set the P_MLE flag for the 'tabpanel' option, disable
          autocmd_add()/autocomd_delete() functions in restricted/secure
          mode.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-2gmj-rpqf-pxvh

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-30 08:50:10 +00:00
Koda Reef 3c0f8000e1 patch 9.2.0271: buffer underflow in vim_fgets()
Problem:  buffer underflow in vim_fgets()
Solution: Ensure size is always greater than 1
          (Koda Reef)

Signed-off-by: Koda Reef <kodareef5@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-29 15:30:11 +00:00
Paul Ollis 211ceea602 patch 9.2.0270: test: trailing spaces used in tests
Problem:  test: trailing spaces used in tests
Solution: Rewrite tests to avoid trailing spaces (Paul Ollis).

Some tests currently rely on trailing whitespace at the end of lines,
escaped with '\'. I have demonstrated in another PR, such spaces can be
inadvertently removed and this is difficult to spot.

Note: there are more trailing spaces in a few more test files, see
testdir/test_codestyle.vim. Those are not yet removed.

closes: #19838

Signed-off-by: Paul Ollis <paul@cleversheep.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-29 14:21:11 +00:00
Christian Brabandt b8a653a377 patch 9.2.0269: configure: Link error on Solaris
Problem:  configure: Link error on Solaris
          (idgn23, after v9.2.0153)
Solution: Move the check for the nsl library a bit earlier,
          regenerate configure

fixes: #19803

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-29 14:00:51 +00:00
Huihui Huang 30bac359dc patch 9.2.0268: memory leak in call_oc_method()
Problem:  memory leak in call_oc_method()
Solution: Clean up argvars in the failure case
          (Huihui Huang)

closes: #19828

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-29 13:56:42 +00:00
rendcrx 466b5f531a patch 9.2.0267: 'autowrite' not triggered for :term
Problem:  'autowrite' not triggered for :term
Solution: Trigger autowrite for :term command
          (rendcrx)

closes: #19855

Signed-off-by: rendcrx <974449413@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-29 09:22:48 +00:00
Yasuhiro Matsumoto 8ea5f27745 patch 9.2.0266: typeahead buffer overflow during mouse drag event
Problem:  typeahead buffer overflow during mouse drag event
Solution: Change the guard from 5 to 10 to account for the worst case
          (Yasuhiro Matsumoto).

The typeahead buffer guard in mch_inchar() only reserved 5 bytes per
iteration, but a mouse event writes up to 7 bytes (3 header + 4
coordinates) and a scroll event with modifiers writes up to 10 bytes
(3 modifier + 3 scroll + 4 coordinates).  During fast mouse dragging,
3+ events could queue up and overflow the 20-byte buffer, corrupting
adjacent static variables and causing garbage bytes (including Ctrl-Z)
to be fed into the input stream, which triggered nv_suspend/ex_stop.

closes: #19851

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-29 09:15:14 +00:00
thinca f89662722d patch 9.2.0265: unnecessary restrictions for defining dictionary function names
Problem:  unnecessary restrictions for defining dictionary function
          names
Solution: Allow defining dict function with bracket key that is not a
          valid identifier (thinca)

In Vim script, "function obj.func()" and "function obj['func']()" both
define a dictionary function.  However, the bracket form required the
key to match function naming rules (eval_isnamec), so
"function obj['foo-bar']()" failed with E475.

Assigning and calling already work: "let obj['foo-bar'] = obj.func"
and "call obj['foo-bar']()" are valid.  Only the definition was
incorrectly restricted.

Skip the identifier check when the name comes from fd_newkey (i.e. the
key was given in bracket notation).  Dictionary keys may be any string.

Supported by AI

closes: #19833

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-28 10:07:27 +00:00
Julio B d13f135295 patch 9.2.0264: Cannot disable kitty keyboard protocol in vim :terminal
Problem:  Cannot disable kitty keyboard protocol in vim :terminal
Solution: Handle "CSI <u" sequence in libvterm (Julio B).

related: v9.0.0930
closes: #19837

Signed-off-by: Julio B <julio.bacel@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-28 10:01:38 +00:00
Yasuhiro Matsumoto 8e29c35a04 patch 9.2.0263: hlset() cannot handle attributes with spaces
Problem:  hlset() cannot handle attributes with spaces
Solution: Handle attributes with spaces by quoting those
          (Yasuhiro Matsumoto).

hlset(hlget('Normal')) fails with E416 when a highlight attribute value
contains spaces (e.g. font name "Monospace 10"). hlg_add_or_update()
builds a string like "font=Monospace 10" and passes it to do_highlight(),
whose parser splits on whitespace and treats "10" as a separate key
without "=".

Fix by quoting values with single quotes (e.g. font='Monospace 10')
when the value contains spaces and the attribute is a key=value pair.
do_highlight() already supports single-quoted values.

closes: #19843

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-28 09:47:15 +00:00
Pierluigi Lenoci 80a0c355cf patch 9.2.0262: invalid lnum when pasting text copied blockwise
Problem:  invalid lnum when pasting text copied blockwise
          (KillTheMule)
Solution: Subtract nr_lines from curwin->w_cursor.lnum when calling
          changed_lines() in do_put() (Pierluigi Lenoci)

When doing a blockwise paste beyond the end of the buffer, new lines are
appended and nr_lines is incremented accordingly. However, the
changed_lines() call used curwin->w_cursor.lnum as the "lnume" argument
(the first line below the changed lines BEFORE the change), which is
incorrect because the cursor has already been moved past the newly
appended lines.

Fix by subtracting nr_lines from curwin->w_cursor.lnum, so that lnume
correctly reflects the state before the change, as documented in
changed_lines().

Add a listener test to verify the correct values are reported.

Port of neovim/neovim#12733.

fixes:  #6660
closes: #19844

Signed-off-by: Pierluigi Lenoci <pierluigi.lenoci@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-27 15:49:27 +00:00
Yasuhiro Matsumoto 54b6c0c0e7 patch 9.2.0261: terminal: redraws are slow
Problem:  terminal: redraws are slow (Mao-Yining)
Solution: Disable redrawing in handle_movecursor()
          (Yasuhiro Matsumoto)

handle_movecursor callback was calling update_cursor() with redraw=TRUE
on every cursor move inside vterm_input_write(). This triggered
gui_mch_flush() (GdiFlush + DWriteContext_Flush) and TextChangedT
autocmd for each cursor move. ConPTY output contains ~17 cursor moves
per 4KB chunk, each flush taking ~5ms, resulting in 80-110ms per chunk.

Fix by passing FALSE to update_cursor() in handle_movecursor since
write_to_term() already calls update_cursor() with proper redraw after
vterm_input_write() finishes.

Also set vterm_screen_set_damage_merge() to VTERM_DAMAGE_SCROLL so that
damage callbacks are buffered until vterm_screen_flush_damage() instead
of being emitted per cell.

fixes:  #19845
closes: #19846

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 22:12:52 +00:00
Yasuhiro Matsumoto 575961c791 patch 9.2.0260: statusline not redrawn after closing a popup window
Problem:  When a popup window overlapping a status line is closed or
          hidden, the status line is not redrawn, leaving ghost
          artifacts from the popup.
Solution: popup_free() and popup_hide() call
          redraw_all_later(UPD_NOT_VALID) which marks window contents
          for redraw but does not set w_redr_status. The diff-based path
          in may_update_popup_mask() that normally sets w_redr_status
          is skipped when redrawing_all_win is TRUE. Add status_redraw_all
          calls to ensure status lines are properly redrawn
          (Yasuhiro Matsumoto).

closes: #19830

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 21:19:34 +00:00
Yasuhiro Matsumoto f6e1dd11f4 patch 9.2.0259: tabpanel: corrupted display during scrolling causing flicker
Problem:  tabpanel: corrupted tabpanel during scrolling causing flicker
Solution: When the tabpanel is visible, force a line-by-line redraw in
          win_do_lines() similarly to popup handling (Yasuhiro Matsumoto).

When a vertical tabpanel is visible, terminal scroll operations in
win_do_lines() affect the full screen width, corrupting the tabpanel
area. The tabpanel is then redrawn via redraw_tabpanel, causing visible
flicker. Return FAIL to force line-by-line redraw instead, analogous to
the existing popup_visible check.

closes: #19832

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 21:03:46 +00:00
Huihui Huang b90145672d patch 9.2.0258: memory leak in add_mark()
Problem:  memory leak in add_mark()
Solution: Free lpos in the error case when it hasn't been added to the
          dict yet (Huihui Huang)

closes: #19827

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 20:59:03 +00:00
Shane Harper 02abcf381f patch 9.2.0257: unnecessary memory allocation in set_callback()
Problem:  Unnecessary memory allocation in set_callback(); after
          set_callback(), callers must manually free the source
          callback's name if cb_free_name is set.
Solution: Refactor set_callback() to re-use the callback name when
          possible to avoid extra memory allocations and clean up so the
          callers do not have to take care themselves (Shane Harper).

closes: #19831

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 20:46:52 +00:00
zeertzjq 06aa378056 patch 9.2.0256: visual selection size not shown in showcmd during test
Problem:  The visual selection size is not displayed in the showcmd area
          when entering visual mode from a script or mapping, because
          char_avail() incorrectly reports input as pending. This causes
          test failure on CI with the ASAN CI runner.
Solution: Replace char_avail() with explicit checks for an empty stuff
          buffer, empty typeahead buffer, and not running a script
          (zeertzjq).

related: #19801
closes:  #19824

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 20:38:39 +00:00
Christian Brabandt 96898d7324 patch 9.2.0255: tests: Test_popup_opacity_vsplit() fails in a wide terminal
Problem:  tests: Test_popup_opacity_vsplit() fails in a wide terminal
          (after v9.2.0230)
Solution: Reduce terminal window size to 60, force termguicolors to make
          the opacity visible; enable termguicolors so that the opacity
          is visually apparent in the screen dump.

related: #19824

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 20:35:34 +00:00
Sean Dewar 7cb43f286e patch 9.2.0254: w_locked can be bypassed when setting recursively
Problem:  w_locked can be bypassed when recursively set if not restored
          to its prior value.
Solution: Rather than save/restore everywhere, just make it a count,
          like other locks (Sean Dewar)

Requires the previous commit, otherwise b_nwindows will be wrong in
tests, which causes a bunch of weird failures.

closes: #19728

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 20:27:56 +00:00
Sean Dewar bf21df1c7b patch 9.2.0253: various issues with wrong b_nwindows after closing buffers
Problem:  close_buffer() callers incorrectly handle b_nwindows,
          especially after nasty autocmds, allowing it to go
          out-of-sync.  May lead to buffers that can't be unloaded, or
          buffers that are prematurely freed whilst displayed.
Solution: Modify close_buffer() and review its callers; let them
          decrement b_nwindows if it didn't unload the buffer.  Remove
          some now unneeded workarounds like 8.2.2354, 9.1.0143,
          9.1.0764, which didn't always work (Sean Dewar)

close_buffer() now doesn't decrement b_nwindows when not unloading buf, or when
buf isn't w_buffer after autocmds (they would've already decremented it).
Callers are now expected to decrement b_nwindows if w_buffer is not NULL after
close_buffer(), and when still intending to switch buffers or close win, for two
reasons:
- close_buffer() autocmds may have switched buffers.  The new w_buffer's
  b_nwindows would also need decrementing.
- After close_buffer(), callers may opt to not switch w_buffer or close win.
  b_nwindows would need to be incremented again.  (unless w_buffer is NULL from
  being unloaded; callers are already forced to find a new buffer then)
These were the main causes of b_nwindows bugs, as these cases could not be
reliably detected, and went largely unhandled.

NOTE: if close_buffer() autocmds switch buffers, close_buffer() is not called
for that new buffer before decrementing b_nwindows.  This may skip side-effects
like from 'bufhidden', but I think it's mostly harmless, and was already
happening in other places.

Let's see how this goes...  Other details: (I have lots to say!)

It's OK to pass a win to close_buffer() that isn't showing buf (used by
set_curbuf()).  In that case, we skip some side-effects and don't decrement
b_nwindows, but may still unload buf if hidden.

buf_freeall() now returns whether it freed anything.  Removes some repeated
checks in close_buffer().

Preserve close_buffer()'s behaviour when called by win_free_popup() after its
popup was already removed from the window list.  This made win_valid_any_tab()
return FALSE, so we skip things that originally checked it in that case.

Add "set_context" to close_buffer() to preserve do_ecmd()'s behaviour of only
setting b_last_cursor and/or calling buflist_setfpos() when not splitting
(see 7.2.041: https://groups.google.com/g/vim_dev/c/ZGgNvaylNzI/m/WHxjhnuxqB0J)
Without this, Test_marks_cmd() fails from its ' mark differing.  Don't use
oldwin though; it's not always the window with the closed buf, especially
after BufLeave autocmds in do_ecmd().  Also, only set context if win is really
displaying buf.

Don't bail in do_ecmd() if buf was deleted but curwin->w_buffer is NULL; that
leaves curwin open to a NULL buffer!  Use lastbuf instead, like set_curbuf().
I don't think it's possible for buf to be deleted by close_buffer() anyway, as
b_locked was set (which I can't see a way to bypass, unlike b_locked_split).
Maybe such checks can be removed, but I'd rather not risk that here.

Don't set curwin to previouswin in set_curbuf(); shouldn't be needed, otherwise
may lead to curbuf != curwin->w_buffer if autocmds switch to a window showing
buf, as that skips enter_buffer()?  Was introduced back in 7.3.557 to avoid
cases where autocmds switch windows, possibly leaving previouswin with a NULL
buffer.  Since 7.4.2312 and 7.4.2328, close_buffer() and buf_freeall() already
handles this.  I've added an assert() as a sanity check anyway.

In free_all_mem(), set b_nwindows to 0 before close_buffer() so buffers can be
wiped if still in a window before win_free_all().  Needed as close_buffer() now
skips unloading buffers that aren't hidden if win is NULL.  If it's possible for
free_all_mem()'s :tabonly! and :only! to not close all windows before freeing,
then this issue was also previously possible if b_nwindows > 1.

related: #19728

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-26 20:27:47 +00:00
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
2026-03-20 22:34:11 +00:00
Shane Harper b1a247d659 patch 9.2.0213: Crash when using a partial or lambda as a clipboard provider
Problem:  Crash when using a partial or lambda as a clipboard provider
Solution: Don't call free_callback() from clip_provider_get_callback()
          (Shane Harper).

closes: #19766

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 22:26:59 +00:00
Mao-Yining 3ee2b76ba1 patch 9.2.0212: MS-Windows: version packing may overflow
Problem:  MS-Windows: version packing may overflow (after v9.2.0206)
Solution: Explicitly clamp the version components using min()
          (Mao-Yining).

The version components (major, minor, build) from RtlGetVersion are now
clamped to their maximum bit widths (8 bits, 8 bits, 15 bits) before
being packed into a 32-bit integer. This prevents overflow when storing
unexpectedly large values.

This fixes a regression introduced in patch 9.2.0206 where the previous
clamping logic was accidentally removed.

The MAKE_VER macro is simplified by removing bit masks, as clamping is
now done at the call site, making the macro clearer and reducing
redundant masking.

closes: #19769

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 22:06:58 +00:00
Mao-Yining c4d2fa018c translation(zh): Update the Simplify Chinese translation
closes: #19771

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 22:03:10 +00:00
Mao-Yining b3dba929cb translation: align sponsor menu string spacing
Normalize white space in the "menu Help->Sponsor" message across all
translation files and the version.c intro handler. This ensures
consistent column alignment when displayed in the user interface.

related: #19771

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 21:59:11 +00:00
Foxe Chen 88cded7ac0 patch 9.2.0211: possible crash when setting 'winhighlight'
Problem:  possible crash when setting 'winhighlight'
Solution: Validate the option value more carefully (Foxe Chen)

closes: #19774

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 21:45:13 +00:00
Phạm Bình An ce4fbda992 runtime(fish): Add matchit support to filetype plugin
closes: #19701

Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 21:29:57 +00:00
Muraoka Taro 076404ae41 patch 9.2.0210: tests: Test_xxd tests are failing
Problem:  tests: Test_xxd tests are failing, after changing the xxd
          manpage (after v9.2.0205)
Solution: Update the manpage, shorten the date and update the example,
          regenerate the expected test output, skip the first 30 bytes
          for the one of the xxd tests (Muraoka Taro)

Some of the Test_xxd tests depend on the contents of xxd.1. The patch
9.2.0205 changed xxd.1, but the test fixes were insufficient. The test
that dumps the beginning of xxd.1 and the test that reads 13 bytes
starting from byte 0x33 from the beginning were failing.

closes: #19763

Co-authored-by: James McCoy <jamessan@debian.org>
Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-20 21:19:03 +00:00
Antonio Giovanni Colombo c9e5aeff35 runtime(doc): Update Italian xxd manpage
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 22:12:44 +00:00
Yasuhiro Matsumoto 332dd22ed4 patch 9.2.0209: freeze during wildmenu completion
Problem:  Vim may freeze if setcmdline() is called while the wildmenu or
          cmdline popup menu is active (rendcrx)
Solution: Cleanup completion state if cmdbuff_replaced flag has been set
          (Yasuhiro Matsumoto)

fixes:  #19742
closes: #19744

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 21:59:45 +00:00
Yasuhiro Matsumoto 67ae763557 patch 9.2.0208: MS-Windows: excessive scroll-behaviour with go+=!
Problem:  MS-Windows: excessive scroll-behaviour with go+=! after
          switching to ConPTY as default (after v9.2.0048).
Solution: Use tl_cursor_pos to determine the number of lines to scroll
          (Yasuhiro Matsumoto).

Since patch 9.2.0048 (71cc1b12) made ConPTY the default on Windows 11,
running :!cmd with guioptions+=! scrolls up the entire window height
instead of only the output lines.

ConPTY damages all terminal rows on initialization even when they are
empty, which causes tl_dirty_row_end to equal Rows.  The scroll-up loop
in update_system_term() then scrolls the full screen because
(Rows - tl_toprow) < tl_dirty_row_end is always true until tl_toprow
reaches 0.

Use the cursor position instead of tl_dirty_row_end for the scroll
calculation, since it reflects where actual content has been written.

The scroll bug only occurs with ConPTY.  With winpty the terminal
finishes too quickly for the timer-based screen check to work.

closes: #19735

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 21:48:57 +00:00
Yasuhiro Matsumoto 6391a38e5e patch 9.2.0207: MS-Windows: freeze on second :hardcopy
Problem:  MS-Windows: freeze on second :hardcopy
          (antoniopaolini)
Solution: Enable PrintHookProc in GUI mode to ensure the print dialog is
          brought to the foreground (Yasuhiro Matsumoto).

Enable PrintHookProc for GUI mode so that the print dialog is brought
to the foreground via BringWindowToTop/SetForegroundWindow.  Without
the hook, the second PrintDlgW() modal dialog appears behind gvim due
to Windows foreground lock timeout, making gvim unresponsive.

Also add NULL checks for hDlgPrint in SendMessage calls.

fixes:  #19715
closes: #19754

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 21:44:01 +00:00
Yasuhiro Matsumoto f445ed0d56 patch 9.2.0206: MS-Window: stripping all CSI sequences
Problem:  MS-Window: stripping all CSI sequences
          (Ke Mao, after v9.2.0184)
Solution: Restore vtp_printf() to pass-through DECSUSR codes
          (Yasuhiro Matsumoto).

Patch 9.2.0184 discards all CSI sequences in mch_write() when VTP is
active to prevent unwanted DECRQM responses.  However, this also
removed the existing DECSCUSR pass-through, breaking cursor shape
changes (t_SI/t_SR/t_EI) on Windows Terminal.

Restore vtp_printf() pass-through for DECSCUSR (final byte 'q') while
continuing to discard other CSI sequences.

related: #19694
related: #11532
fixes:   #19750
closes:  #19755

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 21:31:34 +00:00
Christian Brabandt a907a7f73b runtime(doc): disable color codes when generating ascii man pages in Makefile
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 21:29:51 +00:00
Lukáš Jiřiště 4d262b4952 patch 9.2.0205: xxd: Cannot NUL terminate the C include file style
Problem:  xxd: Cannot NUL terminate the C include file style
Solution: Add option -t to end output with terminating null
          (Lukáš Jiřiště).

fixes:  #14409
closes: #19745

Signed-off-by: Lukáš Jiřiště <kyci@ljiriste.work>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 21:22:27 +00:00
Guillaume Barbier 53884ba7a8 patch 9.2.0204: filetype: cps files are not recognized
Problem:  filetype: cps files are not recognized
Solution: Detect *.cps files as json filetype (Guillaume Barbier).

Reference:
https://github.com/cps-org/cps
https://cps-org.github.io/cps/

closes: #19758

Signed-off-by: Guillaume Barbier <barbier.guillaume60@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 20:24:40 +00:00
Hirohito Higashi d2dc9a4f37 patch 9.2.0203: Patch v9.2.0185 was wrong
Problem:  Patch v9.2.0185 was wrong
Solution: Revert patch v9.2.0185, root cause fixed in v9.2.0197
          (Hirohito Higashi).

related: #19730
related: #19734
closes:  #19749

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 20:19:07 +00:00
pyllyukko 645ed6597d patch 9.2.0202: [security]: command injection via newline in glob()
Problem:  The glob() function on Unix-like systems does not escape
          newline characters when expanding wildcards. A maliciously
          crafted string containing '\n' can be used as a command
          separator to execute arbitrary shell commands via
          mch_expand_wildcards(). This depends on the user's 'shell'
          setting.
Solution: Add the newline character ('\n') to the SHELL_SPECIAL
          definition to ensure it is properly escaped before being
          passed to the shell (pyllyukko).

closes: #19746

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-w5jw-f54h-x46c

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 20:07:51 +00:00
Furkan Sahin cc8798e719 patch 9.2.0201: filetype: Wireguard config files not recognized
Problem:  filetype: Wireguard config files not recognized
Solution: Detect /etc/wireguard/*.conf files as dosini filetype
          (Furkan Sahin).

closes: #19751

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 19:28:39 +00:00
Foxe Chen 1da42ee271 patch 9.2.0200: term: DECRQM codes are sent too early
Problem:  term: DECRQM codes are sent too early, the resulting DECRPM
          responses can arrive after Vim has already exited, leaking
          into the shell's input buffer (Christian Brabandt).
Solution: Only send DECRQM codes once termcap_active is set
          (Foxe Chen).

related: #19660
fixes:   #19660#issuecomment-4085448070
closes:  #19748

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 19:19:30 +00:00
ichizok ecf90b92f1 CI: make dependabot monitor .github/actions directory
and also set `cooldown`, `groups`

related: #19747
closes:  #19756

Signed-off-by: Ozaki Kiichi <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 19:04:44 +00:00
Christian Brabandt 7aca0e14de patch 9.2.0199: tests: test_startup.vim fails
Problem:  tests: test_startup.vim fails, because the command line is
          getting too long so that the shell prompt line get shifted by one
          additional screen line down (after v9.2.0194).
Solution: Partly revert Patch v9.2.0194 and do not set termresize and
          termsync options.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-19 18:54:09 +00:00
Christian Brabandt 2f5fe8827e patch 9.2.0198: cscope: can escape from restricted mode
Problem:  cscope: can escape from restricted mode (pyllyukko)
Solution: Disallow :cscope in restricted mode (like :grep),
          add a tests for restricted mode using :grep and :cscope

closes: #19731

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 21:29:13 +00:00
Barrett Ruth faad250544 runtime(doc): Fix typo in if_pyth.txt
closes: #19733

Signed-off-by: Barrett Ruth <br.barrettruth@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 21:22:46 +00:00
Hirohito Higashi a4cf812462 patch 9.2.0197: tabpanel: frame width not updated for existing tab pages
Problem:  When 'showtabpanel' is set before any window exists (e.g. via
          --cmd) and multiple tab pages are opened with -p, the tabpanel
          appears when the second tab page is created.  At that point
          shell_new_columns() only updates the current (new) tab page's
          frame width; existing tab pages retain the wrong width.
Solution: After calling shell_new_columns() in win_new_tabpage(), iterate
          all other tab pages and update their frame widths with
          frame_new_width() (Hirohito Higashi).

related: #19730
closes:  #19734

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>
2026-03-18 21:16:14 +00:00
Thomas Dupuy 39ee7d17b9 runtime(yara): add ftplugin for yara filetype
Add a minimal ftplugin `runtime/ftplugin/yara.vim` that sets:
- `commentstring` for YARA line comments (`//`)
- `comments` for YARA block comment (`/* */`)
- `formatoptions` to wrap comment lines and continue comment after newlines
This was heavily inspired from `runtime/ftplugin/c.vim`

closes: #19736

Signed-off-by: Thomas Dupuy <thom4s.d@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 21:13:12 +00:00
Hirohito Higashi 0c109e4e60 patch 9.2.0196: textprop: negative IDs and can cause a crash
Problem:  textprop: negative IDs and can cause a crash without "text"
          (Paul Ollis)
Solution: Strictly reserve negative IDs for virtual text, ignore "id"
          when "text" is provided in prop_add() (Hirohito Higashi).

When prop_add() was called with a negative id and no "text", the
property was stored with a negative tp_id.  A subsequent call to
prop_list() or screen redraw would then treat it as a virtual text
property and dereference b_textprop_text.ga_data, which is NULL when
no virtual text properties exist.

Negative ids are reserved for virtual text properties, so always
reject them with E1293 regardless of whether virtual text properties
exist.  Also, when "text" is specified any user-provided id is now
silently ignored and an internal negative id is assigned.

Remove the now-unnecessary did_use_negative_pop_id flag and E1339.
Update E1293's message and the documentation accordingly.

related: #19684
closes:  #19741

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>
2026-03-18 21:11:41 +00:00
ichizok 2b70de167e CI: bump actions/upload-artifact to v7
closes: #19747

Signed-off-by: Ozaki Kiichi <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 20:57:15 +00:00
Christian Brabandt e5df6e8d42 patch 9.2.0195: CI: test-suite gets killed for taking too long
Problem:  test_codestyle.vim takes too much time and takes more than
          90s, this contributes to the overall time for all runners and
Solution: Create a dedicated 'make codestyle' target in the testdir
          Makefiles. Remove test_codestyle from the main test list.
          Update GitHub CI to run this check as a separate step
          in the 'normal' features build.
          Increase CI timeout to 45 minutes.

fixes: #19740

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 20:51:12 +00:00
Christian Brabandt 32e453d339 patch 9.2.0194: tests: test_startup.vim leaves temp.txt around
Problem:  tests: test_startup.vim leaves temp.txt around
Solution: Disable termresize and termsync explicitly to stop outputting
          DEC mode chars, delete all chars before the rm command

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 20:42:22 +00:00
John Marriott a74e5fc5b9 patch 9.2.0193: using copy_option_part() can be improved
Problem:  using copy_option_part() can be improved
Solution: Refactor and use the return value of copy_option_part() to
          avoid strlen() calls (John Marriott).

In addition, this commit includes the following changes:

memline.c:
- In recover_names():
  - Replace calls to vim_strsave() with vim_strnsave() for the literal
    strings
  - Use a string_T to store local variable dir_name.

bufwrite.c:
- In buf_write()
  - move variable wp to where it is used.

help.c:
- In fix_help_buffer():
  - replace call to add_pathsep() with after_pathsep()

optionstr.c:
- In export_myvimdir():
  - use a string_T to store local variable buf
  - replace call to add_pathsep() with after_pathsep()

scriptfile.c:
- In do_in_path():
  - use a string_T to store local variable buf
  - measure the lengths of prefix and name once before the while loop
  - replace call to add_pathsep() with after_pathsep()
  - move some variables closer to where they are used

spellfile.c:
- In init_spellfile():
  - use a string_T to store local variable buf

closes: #19725

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-18 19:25:22 +00:00
AstroSnail c4d212257d patch 9.2.0192: not correctly recognizing raw key codes
Problem:  When "k" is excluded from cpoptions, vim should be able to
          recognize raw key codes in mappings and replace them with
          builtin codes (e.g. ^[OA is replaced with <Up>) so that
          changing the builtin code also changes the mapping to match.
          Currently, this only works properly if the builtin code does
          not contain modifiers (e.g. @;*).
Solution: Teach find_term_bykeys how to recognize keys with modifiers
          (AstroSnail).

fixes:  #19182
closes: #19643

Signed-off-by: AstroSnail <astrosnail@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 21:26:24 +00:00
TomIO d41cd5dce4 patch 9.2.0191: Not possible to know if Vim was compiled with Android support
Problem:  The "android" and "termux" feature flags have been shipped in
          Termux's downstream vim / vim-gtk package for 5+ years but were
          never properly documented in the downstream patch.
Solution: Upstream the "android" and "termux" feature flags into Vim as
          decoupled feature flags, this enables the "android" feature in
          particular to be available independently of the "termux"
          feature for builds of Vim against the Android NDK, but not
          including the Termux NDK patchset.

closes: #19623

Co-authored-by: Lethal Lisa <43791059+lethal-lisa@users.noreply.github.com>
Co-authored-by: shadmansaleh <13149513+shadmansaleh@users.noreply.github.com>
Signed-off-by: TomIO <tom@termux.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 21:08:44 +00:00
Hirohito Higashi 1f4cd5fb52 patch 9.2.0190: Status line height mismatch in vertical splits
Problem:  When 'laststatus' changes, the status line can become
          misaligned.
Solution: Update last_status_rec() to calculate the maximum status line
          height required across all windows in a vertical row.

closes: #19688

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>
2026-03-17 21:00:45 +00:00
Yasuhiro Matsumoto 019c53b37f patch 9.2.0189: MS-Windows: opacity popups flicker during redraw in the console
Problem:  When using transparent popups in the Win32 console, redrawing
          background windows causes flickering. This happens because
          the background is drawn opaquely before the popup blends
          and draws on top.
Solution: Implement a Z-index mask  to suppress screen_char() output for
          cells covered by an opacity popup. Disable the Clear-to-EOL
          (T_CE) optimization for lines overlapping these popups to
          prevent accidental erasure (Yasuhiro Matsumoto).

closes: #19697
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 20:51:22 +00:00
pyllyukko 15a96a04ad patch 9.2.0188: Can set environment variables in restricted mode
Problem:  Can set environment variables in restricted mode
Solution: Disallow setting environment variables using legacy Vim script
          (pyllyukko).

related: #13394
related: #19705
closes:  #19704

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 20:19:59 +00:00
Yasuhiro Matsumoto 6238ee9f89 patch 9.2.0187: MS-Windows: rendering artifacts with DirectX renderer
Problem:  MS-Windows: rendering artifacts with DirectX renderer
Solution: Enable ETO_CLIPPED for DirectWrite rendering in
          gui_mch_draw_string() to ensure glyphs stay within their
          cell boundaries (Yasuhiro Matsumoto).

closes: #19711

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 19:37:02 +00:00
Kaixuan Li f9bed026ac patch 9.2.0186: heap buffer overflow with long generic function name
Problem:   Using a long generic function name may cause a heap buffer
           overflow in common_function().
Solution:  Allocate memory for the full name instead of using IObuff
           (Kaixuan Li).

closes: #19727

Signed-off-by: Kaixuan Li <kaixuanli0131@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 19:10:15 +00:00
thinca ed7c7fb225 patch 9.2.0185: buffer overflow when redrawing custom tabline
Problem:  When drawing a custom tabline, if topframe->fr_width is
          larger than Columns (possible during tab closure with
          showtabpanel=1), Vim writes past the end of the
          TabPageIdxs[] array.
Solution: Cap the column limit at Columns to ensure TabPageIdxs is
          never accessed out-of-bounds (thinca).

closes: #19725

Supported by AI

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-17 18:52:58 +00:00
elig0n 3f53a2ce2f runtime(doc): Fix typo in cmdline.txt
closes: #19724

Signed-off-by: elig0n <31196036+elig0n@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 22:20:15 +00:00
Yasuhiro Matsumoto 74c53196cc patch 9.2.0184: MS-Windows: screen flicker with termguicolors and visualbell
Problem:  When 'termguicolors' is used on MS-Windows (VTP mode), sending
          CSI query sequences (like DECRQM) causes the console to
          generate responses that are misinterpreted as keystrokes.
          The leading ESC triggers a beep or 'visualbell' flash.
Solution: In mch_write(), discard CSI sequences when USE_VTP is active
          so the console does not process queries and generate unwanted
          input responses (Yasuhiro Matsumoto).

related: #11532
closes:  #19694

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 22:09:35 +00:00
Yasuhiro Matsumoto cce17de845 patch 9.2.0183: channel: using deprecated networking APIs
Problem:  gethostbyname() and inet_ntoa() are deprecated and cause
          build errors on modern MSVC versions.
Solution: Use getaddrinfo() and inet_ntop() when FEAT_IPV6 and
          HAVE_INET_NTOP are defined. Keep the old functions as
          fallbacks for legacy platforms (Yasuhiro Matsumoto).

closes: #19719

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 22:02:13 +00:00
Sean Dewar bae31c35bb patch 9.2.0182: autocmds may leave windows with w_locked set
Problem:  autocmds that switch windows may cause them to remain with
          w_locked set, preventing them from being closed longer than
          intended.
Solution: Unset w_locked in the window where it was set (Sean Dewar).

closes: #19716

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 21:54:28 +00:00
ichizok 955d28799b patch 9.2.0181: line('w0') moves cursor in terminal-normal mode
Problem:  line('w0') moves cursor in terminal-normal mode
          (Biebar, after v9.2.0127)
Solution: Check that the terminal is not in terminal-normal-mode
          (Ozaki Kiichi).

fixes:  #19717
closes: #19718

Signed-off-by: Ozaki Kiichi <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 21:47:36 +00:00
Hirohito Higashi a5d9654620 patch 9.2.0180: possible crash with winminheight=0
Problem:  possible crash with winminheight=0
          (Emilien Breton)
Solution: Use <= instead of < when checking reserved room in
          frame_setheight() to correctly handle the zero-height
          boundary case (Hirohito Higashi).

In frame_setheight(), when shrinking the current window and the only
other window has 'winfixheight' with 'winminheight'=0, room_reserved
was not cleared because the condition used '<' instead of '<='.
The freed rows were discarded, leaving fr_height sum less than
topframe fr_height.  Subsequent resize operations then computed a
wrong room_cmdline that expanded topframe beyond the screen, causing
a crash.

fixes:  #19706
closes: #19712

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 21:44:17 +00:00
ichizok e06d084735 patch 9.2.0179: MS-Windows: Compiler warning for converting from size_t to int
Problem:  MS-Windows: Compile warning for converting from size_t to int
          breaks the Appveyor CI (after v9.2.0168)
Solution: Explicitly cast to int in convert_string() (ichizok).

closes: #19722

Signed-off-by: ichizok <gclient.gaap@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 21:31:14 +00:00
Foxe Chen d737e24437 patch 9.2.0178: DEC mode requests are sent even when not in raw mode
Problem:  Vim sends DEC mode query requests (DECRQM) regardless of the
          terminal mode.
Solution: Only send DEC mode requests when cur_tmode is TMODE_RAW, but
          e.g not for gui mode (Foxe Chen).

fixes:  #19709
closes: #19710

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 21:25:10 +00:00
pyllyukko 36d0022b3b patch 9.2.0177: Vim9: Can set environment variables in restricted mode
Problem:  Vim9: Can set environment variables in restricted mode
Solution: Disallow settings variables in exec_instructions() when in
          restricted mode (pyllyukko)

related: #13394
closes:  #19705

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 21:19:08 +00:00
pyllyukko 8faba24ca7 patch 9.2.0176: external diff is allowed in restricted mode
Problem:  When 'diffopt' does not include "internal", Vim attempts to
          execute an external diff command even in restricted mode.
          This could be used to bypass restricted mode.
Solution: Call check_restricted() in diff_file() before attempting to
          execute an external diff (pyllyukko).

closes: #19696

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 19:49:35 +00:00
Christian Brabandt e22b31887a patch 9.2.0175: No tests for what v9.2.0141 and v9.2.0156 fixes
Problem:  No tests for what v9.2.0141 and v9.2.0156 fixes
Solution: Add tests for using :perldo and rubeval() in sandbox mode

related: #19664
related: #19653
closes:  #19699

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 19:36:46 +00:00
HarshK97 42c6686c78 patch 9.2.0174: diff: inline word-diffs can be fragmented
Problem:  When using 'diffopt=inline:word', lines were excessively
          fragmented with punctuation creating separate highlight
          blocks, making it harder to read the diffs.
Solution: Added 'diff_refine_inline_word_highlight()' to merge
          adjacent diff blocks that are separated by small gaps of
          non-word characters (up to 5 bytes by default) (HarshK97).

When using inline:word diff mode, adjacent changed words separated by
punctuation or whitespace are now merged into a single highlight block
if the gap between them contains fewer than 5 non-word characters.

This creates more readable diffs and closely matches GitHub's own diff
display.

closes: #19098

Signed-off-by: HarshK97 <harshkapse1234@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-16 19:32:21 +00:00
Christian Brabandt e21c4a649a patch 9.2.0173: tests: Test_balloon_eval_term_visual is flaky
Problem:  tests: Test_balloon_eval_term_visual is flaky
Solution: Use redraw and WaitForAssert() to make it more reliable

Previously, it failed about 1 out of 4 runs for me, now I got it down to
1 out of 10. It's not perfect, but better than before.

closes: #19692

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 15:42:34 +00:00
Yasuhiro Matsumoto a72926fa51 patch 9.2.0172: Missing semicolon in os_mac_conv.c
Problem:  Missing semicolon in os_mac_conv.c (after v9.2.0168)
Solution: Add it (Yasuhiro Matsumoto).

The missing semicolon was introduced in patch 9.2.0168
(b00f441e6), which breaks the macOS build.

closes: #19695

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 15:39:34 +00:00
Mao-Yining ca62f84503 patch 9.2.0171: MS-Windows: version detection is deprecated
Problem:  MS-Windows: GetVersionEx() is deprecated since Windows 8.
          Version checks for specific features (like dark mode or title
          bar colors) are duplicated across files using multiple boolean flags.
Solution: Use RtlGetVersion() to centralize detection in a single
          win_version variable. Use the MAKE_VER() macro to check
          against major, minor, and build numbers. Update titlebar
          colors and dark theme to use proper version thresholds
          (Mao-Yining).

closes: #19673

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 09:49:33 +00:00
Murasame 98fe2b6c71 translation(zh_CN): Fix translation for 'paste' in zh_CN.UTF-8.po
Corrected the translation for 'paste' from '粘帖' to '粘贴'.

In Chinese, the correct term for the computer action "paste" is 粘贴
(zhān tiē). The original translation used 粘帖, which contains a very
common typo. The second character was mistakenly written as 帖 (which
means a note or invitation) instead of the correct character 贴 (which
means to stick or paste).

closes: #19689

Signed-off-by: Murasame <88932464+CuteMurasame@users.noreply.github.com>
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 09:40:32 +00:00
Christian Brabandt 7a9548c400 runtime(doc): Update help tags references
related: #19691

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 09:35:35 +00:00
Yasuhiro Matsumoto e05d897258 patch 9.2.0170: channel: some issues in ch_listen()
Problem:  channel: some issues in ch_listen()
          (char101, after v9.2.0153)
Solution: On MS-Windows, initialize using channel_init_winsock() and use
          SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR, allow to use port
          0 to have the OS assign a port (Yasuhiro Matsumoto).

related: #19231
closes:  #19690

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 09:32:19 +00:00
Yasuhiro Matsumoto 751b59e539 runtime(doc): clarify :silent usage for system()/systemlist()
When system() or systemlist() is called without :silent from a
statusline expression, autocommand, or timer callback, the terminal
is temporarily set to cooked mode, which re-enables ECHO on the tty.
If a terminal response (e.g. DECRPM for cursor blink mode) arrives
during this window, the tty driver echoes it to the screen, leaving
stray characters that require CTRL-L to remove.

This behavior was intentionally addressed in patch 7.4.427 by
skipping cooked mode when :silent is prepended.  However, the
documentation only mentioned this for system() and did not cover
systemlist() at all.  The guidance to use :silent in non-interactive
contexts (statusline, autocommands, timers) was also not explicit.

closes #19691

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 09:16:42 +00:00
Foxe Chen a8052afcb6 patch 9.2.0169: assertion failure in syn_id2attr()
Problem:  assertion failure in syn_id2attr()
          (@julio-b, after v9.2.0093)
Solution: Set tp_curwin to a valid window in popup_close_tabpage()
          and return early in update_winhighlight() if there are
          no highlight overrides to update (Foxe Chen).

fixes:  #19650
closes: #19670

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 09:05:14 +00:00
James McCoy b00f441e69 patch 9.2.0168: invalid pointer casting in string_convert() arguments
Problem:  invalid pointer casting in string_convert() arguments
Solution: Use a temporary local int variable (James McCoy)

string_convert()/string_convert_ext() accept an "int *lenp" parameter,
however a few call sites were taking the address of a possibly larger
type (long, size_t) and casting it as an int * when calling these
functions.

On big-endian platforms, this passes the (likely) zeroed high bytes of
the known length through to string_convert(). This indicates it received
an empty string and returns an allocated empty string rather than
converting the input. This is exhibited by test failures like

  From test_blob.vim:
  Found errors in Test_blob2str_multi_byte_encodings():
  command line..script src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_blob2str_multi_byte_encodings line 2: Expected ['Hello'] but got ['']
  command line..script src/testdir/runtest.vim[636]..function RunTheTest[63]..Test_blob2str_multi_byte_encodings line 3: Expected ['Hello'] but got ['']
  command line..script srctestdir/runtest.vim[636]..function RunTheTest[63]..Test_blob2str_multi_byte_encodings line 6: Expected ['Hello'] but got ['']

Instead, use a temporary local int variable as the in/out variable for
string_convert() and assign the result back to the larger typed length
variable post-conversion.

closes: #19672

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-15 08:58:11 +00:00
Christian Brabandt ba27e4fffa patch 9.2.0167: terminal: setting buftype=terminal may cause a crash
Problem:  setting buftype=terminal may cause a crash
          (lacygoill, after v9.2.0127)
Solution: Validate that curwin->w_buffer->b_term is not null

fixes:  #19686
closes: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-14 17:31:45 +00:00
Christian Brabandt 84c7a5d18f patch 9.2.0166: Coverity warning for potential NULL dereference
Problem:  Coverity warning for potential NULL dereference in channel.c
          (after v9.2.0153)
Solution: Use empty string in case hostname is NULL.

CID: 1686330

related: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-14 17:27:47 +00:00
Christian Brabandt 3f89324b3a patch 9.2.0165: tests: perleval fails in the sandbox
Problem:  tests: perleval fails in the sandbox
          (after v9.2.0156)
Solution: Update tests and assert that it fails

related: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-14 17:23:04 +00:00
Christian Brabandt ef3cee793f patch 9.2.0164: build error when XCLIPBOARD is not defined
Problem:  build error when XCLIPBOARD is not defined
          (Tony Mechelynck, after v9.2.0158)
Solution: Update ifdefs

related: #19676

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-14 17:10:21 +00:00
John Marriott 09af51afbe patch 9.2.0163: MS-Windows: Compile warning for unused variable
Problem:  MS-Windows: Compile warning for unused variable
          (after v9.2.0160)
Solution: Add ifdef HAVE_TGETENT (John Marriott).

related: #19676

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-14 17:06:19 +00:00
zeertzjq 81d5329ace patch 9.2.0162: tests: unnecessary CheckRunVimInTerminal in test_quickfix
Problem:  tests: unnecessary CheckRunVimInTerminal in test_quickfix.vim
          (after v9.2.0159)
Solution: Remove it (zeertzjq).

closes: #19671

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-14 16:50:43 +00:00
Foxe Chen ef3d79ebbe patch 9.2.0161: intro message disappears on startup in some terminals
Problem:  intro message disappears on startup in some terminals
          (chdiza, after v9.2.0139)
Solution: Only call set_shellsize() in handle_csi() if the reported
          width or height actually differs from the current
          Rows or Columns. (Foxe Chen)

fixes:  #19656
closes: #19660

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 22:14:36 +00:00
Foxe Chen 13b25e2f34 patch 9.2.0160: terminal DEC mode handling is overly complex
Problem:  terminal DEC mode handling is overly complex (after v9.2.0139)
Solution: Refactor DEC mode handling (Foxe Chen).

related: #19596
related: #19541
closes:  #19641

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 22:02:10 +00:00
Christian Brabandt 8d13b8244a patch 9.2.0159: Crash when reading quickfix line
Problem:  Crash when reading quickfix line (Kaiyu Xie)
Solution: Make sure line is terminated by NUL

closes: #19667

Supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 21:45:26 +00:00
Shane Harper 8b009a3bbf patch 9.2.0158: Visual highlighting might be incorrect
Problem:  Vim could use the VisualNOS highlight group when not connected
          to an X server.
Solution: Always highlight visual selections with Visual when not
          connected to an X server (Shane Harper)

When Vim is running with X11 support it chooses between the Visual and
VisualNOS highlight groups for a visual selection based on whether it
believes it owns the X selection. According to :help hl-VisualNOS,
VisualNOS should only be used by the X11 GUI or when using the
xterm-clipboard feature, however, prior to this commit Vim could choose
VisualNOS when a clipboard provider was used, even when Vim was not
connected to an X server.

closes: #19659

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 21:39:46 +00:00
John Marriott 90d751b3fb patch 9.2.0157: Vim9: concatenation can be improved
Problem:  Vim9: concatenation can be improved
Solution: Cache string segments lengths in exe_concat() and avoid
          strlen() calls (John Marriott).

closes: #19647

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 21:26:55 +00:00
pyllyukko fba75cad9a patch 9.2.0156: perleval() and rubyeval() ignore security settings
Problem:  perleval() and rubyeval() ignore security settings
Solution: Disable those functions in restricted (-Z) or 'secure' mode
          (pyllyukko).

closes: #19664

Signed-off-by: pyllyukko <pyllyukko@maimed.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 21:22:28 +00:00
Hannah b11c8efbe6 patch 9.2.0155: filetype: ObjectScript are not recognized
Problem:  filetype: ObjectScript are not recognized
Solution: Add ObjectScript filetype detection for *.cls files
          (Hannah Kimura)).

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

closes: #19668

Signed-off-by: Hannah <hannah.kimura@intersystems.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 21:08:42 +00:00
Christian Brabandt e88e360a51 patch 9.2.0154: if_lua: runtime error with lua 5.5
Problem:  Lua 5.5 makes for-loop control variables read-only.
          The path-parsing logic in if_lua.c attempts to modify the
          loop variable 's', causing the script to fail during
          runtime initialization (Binbin Qian)
Solution: Use a Lua capture group in gmatch() to extract the path
          without the semicolon, avoiding the need to re-assign
          to the loop variable.

fixes:  #19639
closes: #19658

supported by AI

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 19:26:05 +00:00
Yasuhiro Matsumoto ba861f8c53 patch 9.2.0153: No support to act as a channel server
Problem:  Vim can only act as a channel client (ch_open). There is
          no way for an external process to initiate a connection
          to a running Vim instance using the Channel API.
Solution: Implement ch_listen() and the underlying server-side
          socket logic. This allows Vim to listen on a port or
          Unix domain socket. When a client connects, a new
          channel is automatically created and passed to a
          user-defined callback (Yasuhiro Matsumoto).

closes: #19231

Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
2026-03-13 19:15:25 +00:00
Yasuhiro Matsumoto 16d421a4d9 patch 9.2.0152: concatenating strings is slow
Problem:  concatenating strings is slow
Solution: Use grow_string_tv() to grow the existing string buffer in
          place when possible (Yasuhiro Matsumoto).

closes: #19642

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 17:45:36 +00:00
Yasuhiro Matsumoto 475d6e2f1d patch 9.2.0151: blob_from_string() is slow for long strings
Problem:  blob_from_string() is slow for long strings
Solution: Use ga_grow() to allocate memory once, perform a bulk copy
          with mch_memmove() then translate NL to NUL in-place
          (Yasuhiro Matsumoto).

closes: #19665

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 17:36:34 +00:00
Yasuhiro Matsumoto 7c8168aa0a patch 9.2.0150: synchronized terminal update may cause display artifacts
Problem:  When using synchronized terminal output, the internal
          output buffer  is not flushed before sending the
          End Synchronized Update (ESU) sequence. This causes
          redrawing artifacts.
Solution: Call out_flush() immediately before sending the ESU
          sequence to ensure all pending drawing commands are
          contained within the synchronized update window.
          (Yasuhiro Matsumoto)

closes: #19662

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 17:08:17 +00:00
Christian Brabandt 3697153993 patch 9.2.0149: Vim9: segfault when unletting an imported variable
Problem:  do_unlet_var() unconditionally calls dictitem_remove() in its
          final else branch, but for imported items lp->ll_dict is NULL,
          causing a segfault (Peter Kenny)
Solution: Add a NULL check and return E1260 instead.

Affects :unlet at vim9script level and inside legacy :function.
The :def case already worked (handled in vim9cmds.c).

fixes:  #19637
closes: #19657

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-13 16:57:00 +00:00
John Marriott 9f983a9560 patch 9.2.0148: Compile error when FEAT_DIFF is not defined
Problem:  Compile error when FEAT_DIFF is not defined (after v9.2.0144)
Solution: Add ifdefs around those lines (John Marriott).

related: #19622

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 21:27:58 +00:00
Eisuke Kawashima 3697c6b020 runtime(ssh): ignore case in 'keywordprg', update syntax script
- ftplugin(sshdconfig): use "-I" for 'keywordprg' to search
  case-insensitive in the man page
- syntax(sshdconfig,sshconfig): Mark "lowdelay", "throughput", and
  "reliability" as deprecated for IPQoS, highlighting them as
  errors/warnings to reflect OpenSSH 10.1p1 release

Reference:
https://www.openssh.org/releasenotes.html#10.1p1

closes: #19636

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Jakub Jelen <jakuje@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 20:04:17 +00:00
Yasuhiro Matsumoto 67deae3b77 patch 9.2.0147: blob: concatenation can be improved
Problem:  blob: concatenation can be improved
Solution: Use ga_grow() to allocate space once and mch_memmove() to copy
          the blob data as a single block and fall back to the previous
          byte by byte append (Yasuhiro Matsumoto).

closes: #19645

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 19:35:42 +00:00
Yasuhiro Matsumoto 97a75d835b patch 9.2.0146: dictionary lookups can be improved
Problem:  dictionary lookups can be improved
Solution: Replace the vim_strncpy() by mch_memmove() call.
          (Yasuhiro Matsumoto).

closes: #19646

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 19:26:01 +00:00
Yasuhiro Matsumoto 55464b5d18 patch 9.2.0145: UTF-8 decoding and length calculation can be improved
Problem:  Vim often calls utf_ptr2char() and utf_ptr2len() separately.
Solution: Refactor UTF-8 hot paths into utf_ptr2char_and_len() to
          decode the codepoint and byte length in a single pass.
          Fold combining character logic into the same optimized flow.
          Improves redraw performance by ~8-10% in UTF-8 heavy
          scenarios (Yasuhiro Matsumoto).

closes: #19649

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 19:15:28 +00:00
Hirohito Higashi 2d14d62c50 patch 9.2.0144: 'statuslineopt' is a global only option
Problem:  'statuslineopt' is a global only option and configuring the
          line height is limited.
Solution: Make 'statuslineopt' global-local to a window and allow to
          configure a fixed-height height statusline per window
          (Hirohito Higashi).

closes: #19622

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 18:49:38 +00:00
Yinzuo Jiang 5890ea5397 patch 9.2.0143: termdebug: no support for thread and condition in :Break
Problem:  termdebug :Break does not support `thread` and `if` arguments
Solution: extend :Break and :Tbreak to accept optional location, thread
          {nr}, and if {expr} arguments (Yinzuo Jiang).

closes: #19613

Signed-off-by: Yinzuo Jiang <jiangyinzuo@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 18:34:37 +00:00
Christian Brabandt 401f9aeddf patch 9.2.0142: Coverity: Dead code warning
Problem:  Coverity: Dead code warning for expressions in non-gui builds
          (after v9.2.0139)
Solution: add ifdef FEAT_GUI

CID: 1685426
closes: #19654

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-12 18:23:38 +00:00
Christian Brabandt c5f283d641 patch 9.2.0141: :perl ex commands allowed in restricted mode
Problem:  :perl ex commands allowed in restricted mode (pyllyukko)
Solution: Add EX_RESTRICT flag to :perldo/:perl command definition.

closes: #19653

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 21:50:48 +00:00
Christian Brabandt 3c15945337 runtime(doc): update option type of 'termresize' option (after v9.2.0139)
as reported by: Antonio Giovanni Colombo <azc100@gmail.com>

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 21:46:27 +00:00
Yasuhiro Matsumoto 2ca96b09d7 patch 9.2.0140: file reading performance can be improved
Problem:  Reading large files is slow because UTF-8 validation and
          newline scanning are performed byte-by-byte. Initial file
          loading also triggers listener and channel processing.
Solution: Use memchr() for SIMD-optimized newline scanning, implement
          word-at-a-time ASCII skipping during UTF-8 validation using a
          bitmask, skip listener/netbeans/channel notifications
          when the ML_APPEND_NEW flag is set during readfile()
          (Yasuhiro Matsumoto).

closes: #19612

Co-authored-by: NRK <nrk@disroot.org>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 20:18:26 +00:00
Foxe Chen c970b470fb patch 9.2.0139: Cannot configure terminal resize event
Problem:  Cannot configure terminal resize event
Solution: Add the 'termresize' option and allow to use in-band window
          resize events (Foxe Chen).

closes: #19596

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 20:03:36 +00:00
Doug Kearns 2cf18fcc24 runtime(python): Update syntax, improve pythonNumber pattern performance
- Improve the performance of all pythonNumber patterns by unrolling
  digit/underscore sequence loops.
- Split the float literal pattern into two simpler patterns.

fixes:  #19625 (Reported by James McCoy)
closes: #19630

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 19:47:55 +00:00
Foxe Chen 49a5a80410 patch 9.2.0138: winhighlight option handling can be improved
Problem:  winhighlight option handling can be improved
          (after: v9.2.0093)
Solution: Check entire override stack in update_highlight_overrides();
          update w_hl of every window in highlight_changed() (Foxe Chen).

closes: #19633

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 19:42:46 +00:00
Eisuke Kawashima 8f2cd47404 runtime(sudoers): update filetype plugin and syntax script
- remove `set isk+=-` to highlight `-=` operator correctly
- implement highlighting of GID
- fix highlight of hostname and add special value ALL
- fix highlight of IP address
- update include and includedir patterns
- remove duplicate syntax rules
- add missing options
- fix highlight of parameter assignment (limit operators to list
  parameters)
- fix highlight of string and list parameters with trailing whitespaces
- implement highlight of permission (octal)
- implement highlight of floating point numbers
- implement highlight of timeout-specific options
- support highlight of negatable options (integer, mode, float, timeout,
  string)
- allow sudoersListParameter to be negated
- fix highlight of comma-separated parameter list used as boolean
- fix highlight of parameter negation (prevent highlighting ill-formed `! !`)
- fix highlight of Tag_Spec
- allow empty Runas spec: `()` and `(:)`
- fix highlight of comma-concatenated commands, hosts, and users
- check word boundaries for special value ALL
- implement highlight of Option_Spec
- fix highlight in User_Spec (specifically for Host position)
- fix highlight of `Default!` command
- support highlight of digests (sha224, etc.)
- add syntax test and update header

closes: #19634

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 19:33:36 +00:00
Eisuke Kawashima 1429277f0a gitattributes: mark dump files as linguist-generated
closes: #19635

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 19:23:41 +00:00
Christian Brabandt 36d6e87542 patch 9.2.0137: [security]: crash with composing char in collection range
Problem:  Using a composing character as the end of a range inside a
          collection may corrupt the NFA postfix stack
          (Nathan Mills, after v9.1.0011)
Solution: When a character is used as the endpoint of a range, do not emit
          its composing characters separately. Range handling only uses
          the base codepoint.

supported by AI

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-9phh-423r-778r

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-11 18:52:56 +00:00
Christian Brabandt 71fd19d7ac runtime(open): Use job_start() on Linux
Problem:  With zsh, executing :!nohup xdg-open url >/dev/null 2>&1 &
          does not launch the browser. This occurs presumably because
          gvim/zsh cleans up background processes in a non-interactive
          session too quickly.
Solution: Use job_start() with "stoponexit" set to an empty string.
          This bypasses the shell entirely (fixing the zsh issue)
          and ensures the browser process is not killed when Vim exits.
          On Linux, shellescape() is removed as job_start() in list
          mode handles special characters natively.

fixes: #19594

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 20:42:43 +00:00
Martin Tournoij c6f6f1602d runtime(toml): update syntax script and fix highlight of dates and escapes
From upstream:
https://github.com/cespare/vim-toml/pull/69
https://github.com/cespare/vim-toml/pull/70

closes: #19591

Signed-off-by: Martin Tournoij <martin@arp242.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 20:02:05 +00:00
Huihui Huang 93a7855f01 patch 9.2.0136: memory leak in add_interface_from_super_class()
Problem:  memory leak in add_interface_from_super_class() in
          src/vim9class.c
Solution: Free variable intf_name in the error case, decrement the
          impl_gap grow array (Huihui Huang).

closes: #19629

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 19:56:08 +00:00
Huihui Huang e945350f11 patch 9.2.0135: memory leak in eval_tuple()
Problem:  memory leak in eval_tuple() in src/tuple.c
Solution: Free variable tuple on early return (Huihui Huang).

closes: #19628

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 19:49:55 +00:00
Huihui Huang ede5252d89 patch 9.2.0134: memory leak in socket_server_send_reply()
Problem:  memory leak in socket_server_send_reply() in src/os_unix.c
Solution: Free final in the error case when returning early
          (Huihui Huang).

closes: #19627

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 19:40:33 +00:00
Huihui Huang 248de84d86 patch 9.2.0133: memory leak in netbeans_file_activated()
Problem:  memory leak in netbeans_file_activated()
Solution: Free q on early return (Huihui Huang).

closes: #19626

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 19:33:22 +00:00
James McCoy ff16ebdb08 patch 9.2.0132: tests: Test_recover_corrupted_swap_file1 fails on be systems
Problem:  tests: Test_recover_corrupted_swap_file1 fails on big-ending
          systems (after v9.2.0077)
Solution: Skip the test on big-endian systems (James McCoy)

The POC files were generated on 64-bit little-endian systems and
therefore are not portable to any other system type.

Extract the 64-bit / endianness detection from
Test_recover_corrupted_swap_file() into a SetUp() function and use that
data to determine if the test should be run.

closes: #19620

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-10 18:39:40 +00:00
Christian Brabandt 9360647715 patch 9.2.0131: potential buffer overflow in regdump()
Problem:  Potential buffer overflow in regdump()
Solution: Add the size to the compiled regular expression and ensure we
          don't read over the limit.

Note: this is not a security issue, because regdump() is typically not
compiled in any version of Vim, so should not affect anybody.

supported by AI claude.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 20:18:52 +00:00
Doug Kearns 49b8d9903b patch 9.2.0130: missing range flags for the :tab command
Problem:  :tab accepts a tab address range but doesn't specify this in
          the command specification.
Solution: Add EX_RANGE and EX_ZEROR to the command specification and use
          ADDR_TABS (Doug Kearns).

As command modifers are handled separately before these flags are tested
in the ex-command parser they have no effect.  However, it's better to
use an accurate description and the command specification table has uses
in other areas like runtime file generation for the Vim filetype.

closes: #19100

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 19:52:30 +00:00
Yasuhiro Matsumoto 433bcf3bec patch 9.2.0129: popup: wrong handling of wide-chars and opacity:0
Problem:  popup: wrong handling of wide-chars and opacity:0
Solution: Correctly handle opacity 0, correctly handle wide chars
          (Yasuhiro Matsumoto)

closes: #19606

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 18:47:10 +00:00
Christoffer Aasted 1f1b86ac60 patch 9.2.0128: Wayland: using _Boolean instead of bool type
Problem:  Wayland: using _Boolean instead of bool type
Solution: Change type of variable (Christoffer Aasted).

related: #19473
closes:  #19610

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 18:36:34 +00:00
Christian Brabandt ffeb2339cb patch 9.2.0127: line('w0') and line('w$') return wrong values in a terminal
Problem:  In a terminal window, line('w0') and line('w$') return wrong
          values instead of the first and last visible line number,
          because a terminal buffer does not go through the normal
          redraw path that updates w_topline and w_botline (ubaldot).
Solution: Before computing w0 and w$, sync the terminal contents to the
          buffer by calling may_move_terminal_to_buffer() so that
          w_topline and w_botline are correctly updated.

fixes:  #19585
closes: #19615

supported by AI claude.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 18:26:41 +00:00
John Marriott 727f6e2686 patch 9.2.0126: String handling can be improved
Problem:  String handling can be improved
Solution: Pass string length where it is known to avoid strlen() calls,
          do a few minor refactors (John Marriott).

This commit changes some calls to function `set_vim_var_string()` to pass
the string length where it is known or can be easily calculated.

In addition:
In `evalvars.c`:
  * In function `set_reg_var()` turn variable `regname` into a C string
    because that is how it used.
  * Small cosmetics.
In `option.c`:
  * Slightly refactor function `apply_optionset_autocmd()` to move some
    variables closer to where they are used.
In `getchar.c`:
  * Slightly refactor function `do_key_input_pre()`:
    -> change call to `dict_add_string()` to `dict_add_string_len()` and
       pass it the length of `buf`.
    -> only call `get_vim_var_string()` once.
In `message.c`:
  * Use a `string_T` to store local variable `p`.
In `normal.c`:
  * Move some variables closer to where they are used.

closes: #19618

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-09 18:17:22 +00:00
Phạm Bình An bab7619604 runtime(doc): Update intro.txt about Neovim
Just to fix some phrases:
- "A Vim clone". Neovim document says that it is not a clone, but just a
  fork https://neovim.io/doc/user/nvim/#nvim
- "Supports a remote GUI". Neovim supports any UI (both GUI and TUI)
  that implements its UI protocol, so "a" is not correct
- "Integration with scripting languages". This is true, but it is also
  true to Vim (which supports 8 scripting languages AFAIK), so this
  probably doesn't need to be said in this document. Instead, what makes
  Neovim unique in this "scripting languages" aspect is its first class
  support for Lua.

closes: #19605

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 21:03:12 +00:00
Christian Brabandt 271f4fe47b patch 9.2.0125: tests: test_textformat.vim leaves swapfiles behind
Problem:  tests: test_textformat.vim leaves swapfiles behind
Solution: Close open buffer using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 20:32:13 +00:00
Daniel Müller 24fd698045 patch 9.2.0124: auto-format may swallow white space
Problem:  With auto paragraph formatting enabled, when a user makes an
          attempt to add a new word before the end of a line and with
          the following space bringing the line width over 'textwidth',
          the space ends up just getting swallowed by the editor.
Solution: Detect such a constellation and do not auto-format in that
          case (Daniel Müller).

closes: #19593

Signed-off-by: Daniel Müller <deso@posteo.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 20:24:10 +00:00
Christian Brabandt 6c0321fb9d patch 9.2.0123: GTK: using deprecated gdk_pixbuf_new_from_xpm_data()
Problem:  GTK: gdk_pixbuf_new_from_xpm_data() is deprecated since
          2.44.5, causing build warnings
Solution: Replace XPM icon loading with PNG byte arrays loaded via
          g_memory_input_stream_new_from_data() and
          gdk_pixbuf_new_from_stream(). These APIs are available since
          GLib 2.12 and gdk-pixbuf 2.14 (around 2008) so should be safe
          to use today.

fixes:  #19446
closes: #19583

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 20:10:03 +00:00
Christian Brabandt 48b913d735 patch 9.2.0122: Vim still supports compiling on NeXTSTEP
Problem:  Vim still supports compiling on NeXTSTEP
Solution: Drop Support (Damien Lejay)

The NeXTSTEP operating system has been obsolete for decades. The
special-case code required to support it adds unnecessary complexity,
preprocessor conditionals, and non-standard workarounds to the codebase.

This commit removes all support for NeXTSTEP, simplifying the code and
build system in several ways:

-   Replaced custom configure checks for `union wait` with a standard `AC_CHECK_FUNCS` call for `waitpid`.
-   Removed all conditional code that used the non-standard `union wait` for process status, relying solely on a standard `int`.
-   Replaced calls to the non-standard `wait4()` function with the POSIX-standard `waitpid()`.
-   Cleaned up headers (`os_unix.h`, `os_unixx.h`) to remove NeXT-specific workarounds and macros.
-   Removed obsolete NeXT compilation instructions from the INSTALL file.

This change improves maintainability and makes the Unix process handling code more linear and compliant with modern POSIX standards.

related: #18079
closes:  #19582

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 19:48:32 +00:00
Huihui Huang 7ed37dc534 patch memory leak in list_extend_func() in list.c
Problem:  memory leak in list_extend_func() in list.c
Solution: Free l1 on early return (Huihui Huang)

closes: #19572

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 19:37:22 +00:00
Christian Brabandt 123a1e6410 patch 9.2.0120: tests: test_normal fails
Problem:  tests: test_normal fails
Solution: Ensure the terminal width is 40 columns and also
          check for existence of the tr.mo file

closes: #19608

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 19:33:01 +00:00
Christian Brabandt 2c1269f0d3 runtime(zip): Make ZipUpdatePS() check that shell is powershell
fixes: #19576

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-08 15:30:31 +00:00
Foxe Chen 6495ca4c16 patch 9.2.0119: incorrect highlight initialization in win_init()
Problem:  When initializing a window in win_init(), w_hl is reset to
          NULL without ensuring existing highlight overrides are
          cleared (after v9.2.0113)
Solution: Clear highlight overrides and reset w_hl in win_init(). Remove
          the redundant VIM_CLEAR() from win_init_empty() (Foxe Chen).

closes: #19609

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 18:35:39 +00:00
Christian Brabandt d180f67a41 patch 9.2.0118: memory leak in w_hl when reusing a popup window
Problem:  When a popup info window is reused, win_init_empty() resets
          w_hl to NULL without freeing the previously allocated value,
          causing a memory leak (after v9.2.0113)
Solution: Free w_hl before resetting it to NULL in win_init_empty()
          using the VIM_CLEAR() macro.

closes: #19607

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 17:44:24 +00:00
Christian Brabandt f17b8b1df5 patch 9.2.0117: tests: test_wayland.vim fails
Problem:  tests: test_wayland.vim fails when X11 is not available or
          $XDG_RUNTIME_DIR is not defined
Solution: Skip test_wayland when prerequisites are not fulfilled

closes: #19579

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 17:40:50 +00:00
Foxe Chen f90fc1bd72 patch 9.2.0116: terminal: synchronized output sequences are buffered
Problem:  terminal: synchronized output sequences are buffered
Solution: Output the terminal sequences directly using ui_write(),
          bypassing buffering (Foxe Chen).

closes: #19597

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 14:23:27 +00:00
dezza 49b81793ff runtime(docs): Update CONTRIBUTING.md and mention #vim on libera
Left out reddit intentionally, I think it's not the best place for
contribution questions, however irc has several contributors.

closes: #19604

Signed-off-by: dezza <402927+dezza@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 14:05:58 +00:00
Yasuhiro Matsumoto f3b566481c patch 9.2.0115: popup: screen flickering possible during async callbacks
Problem:  popup: When an async redraw is triggered, the screen may flicker
          because the terminal may render the intermediate states of the
          redraw.
Solution: Enable synchronized output if possible to ensure the terminal
          renders the entire update at once (Yasuhiro Matsumoto).

closes: #19584
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 10:22:28 +00:00
Doug Kearns e948fea640 runtime(sed): Update syntax, support more GNU address extensions
- Support all GNU address extensions.
- Fix some bugs related to erroneous matching of pattern delimiters in
  bracket expressions.

closes: #19587

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 10:13:42 +00:00
gcrtnst 78ae2ff094 patch 9.2.0114: MS-Windows: terminal output may go to wrong terminal
Problem:  MS-Windows: terminal output may go to wrong terminal with
          ConPTY
Solution: Explicitly disable inheriting the terminal handles
          (gcrtnst).

closes: #19589

Signed-off-by: gcrtnst <52910071+gcrtnst@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-07 10:01:49 +00:00
Mao-Yining bd77d327d3 runtime(doc): remove thoughts of generics for a function
Was implemented in 9.1.1577

closes: #19598

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:55:39 +00:00
Foxe Chen 9c4cb7145f patch 9.2.0113: winhighlight pointer may be used uninitialized
Problem:  winhighlight pointer may be used uninitialized causing a crash
Solution: Initialize pointer in win_init() and win_init_empty()
          (Foxe Chen).

closes: #19601

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:50:24 +00:00
Yasuhiro Matsumoto 4d0c57e15f patch 9.2.0112: popup: windows flicker when updating text
Problem:  popup: windows flicker when updating text
Solution: Only refresh the popup mask if the position or size changed,
          manually set the window redraw type instead of using
          redraw_win_later() to avoid triggering a full screen redraw.
          Handle opacity 100 correctly. Keep "firstline" sticky when
          setting options (Yasuhiro Matsumoto).

related: #19510
closes:  #19559

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:38:58 +00:00
Foxe Chen 0fe3ca6031 patch 9.2.0111: 'winhighlight' option not always applied
Problem:  'winhighlight' option not always applied
Solution: Apply 'winhighlight' setting in more places
          (Foxe Chen).

closes: #19555

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:17:57 +00:00
Devin Weaver 75decb4a8d runtime(glimmer): add syntax support for glimmer files
In commit cdf717283 ("patch 8.2.4424: ".gts" and ".gjs" files are not
recognized", 2022-02-19) support for the glimmer file types were added.

Problem:  Syntax hilighting suppoprt was missing.
Solution: Added a glimmer syntax file that will leverage the base
          syntaxs (javascript/typescript) and include handlebars syntax
          for .gjs/.gts files.

closes: #19569

Signed-off-by: Devin Weaver <suki@tritarget.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:07:50 +00:00
Devin Weaver 99ea2b5b06 runtime(handlebars): adds handlebars template syntax & indent support
The runtime had support to detect handlebars (*.hbs) files as filetype
handlebars but was lacking any indent or syntax highlighting for that
filetype.

The handlebars syntax file is also a prerequisite for the glimmer
syntax.

Permission was granted by the original author to retrofit these into the
Vim runtime. Original License (MIT) maintained in code comments.

related: #19569

Signed-off-by: Devin Weaver <suki@tritarget.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:06:02 +00:00
Christian Brabandt 22c62e2691 runtime(syntax-tests): regenerate dump files (after v9.2.0110)
related: #19541

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-05 20:01:10 +00:00
Foxe Chen 7ba60f17c2 patch 9.2.0110: No support for terminal synchronization mode
Problem:  No support for terminal synchronization mode
Solution: Add DEC 2026 support using the 'termsync' option
          (Foxe Chen).

related: #11718
closes:  #19541

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-04 21:09:25 +00:00
Martin Tournoij 6c34ace536 patch 9.2.0109: VIM_BACKTICK is always defined except for tiny builds
Problem:  VIM_BACKTICK is always defined except for tiny builds
Solution: Remove the VIM_BACKTICK define and always compile backtick
          expansion. This change however will cause the vim.tiny build
          to be slightly larger (Martin Tournoij).

closes: #19562

Signed-off-by: Martin Tournoij <martin@arp242.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-04 19:58:49 +00:00
Yasuhiro Matsumoto 499e93d09a patch 9.2.0108: byteidx_common() and f_utf16idx() call ptr2len() twice
Problem:  byteidx_common() and f_utf16idx() are calling ptr2len() twice
          per iteration, instead of reusing the already computed clen.
Solution: Reuse clen for pointer advancement in both functions
          (Yasuhiro Matsumoto).

closes: #19573

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-04 19:29:45 +00:00
Hirohito Higashi 76abd0ccdf patch 9.2.0107: tests: Test_statuslineopt() is flaky
Problem:  tests: Test_statuslineopt() is flaky
Solution: Force a redraw earlier and read screen content directly using
          screenstring() instead of g:ScreenLines() (Hirohito Higashi).

closes: #19571

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-04 19:09:37 +00:00
Huihui Huang 648240fe9a patch 9.2.0106: memory leak in expand_findfunc()
Problem:  memory leak in expand_findfunc() (after v9.1.0811)
Solution: Free list variable l on early return (Huihui Huang).

closes: #19564

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:45:18 +00:00
Huihui Huang 7d1e0a7832 patch 9.2.0105: memory leak in heredoc_get() in src/evalvars.c
Problem:  memory leak in heredoc_get() in src/evalvars.c
Solution: Free variable l on early return (Huihui Huang).

closes: #19563

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:35:48 +00:00
Javier Jaramago Fernández 2a7414594a patch 9.2.0104: popup: flickering on opaque popups with overlapping text
Problem:  popup: flickering on opaque popups with overlapping text,
          even if they are opaque (after v9.2.0016).
Solution: Prevent double redrawing by skipping background updates for
          opaque popups. Revert changes to test dumps
          (Javier Jaramago Fernández).

A flickering effect was introduced in commit v9.2.0016 (commit:
6c203072f) for all popups. This is a consequence of a double redraw of
the overlapping background characters. This could be expected for
transparent popups, but, it should exclude opaque ones. For a complete
fix of the flickering this commit is required in combination with fix
present in v9.2.0064 (commit: 97c5bed84b).

Additionally this commit reverts changes introduced for tests dumps for
masks in commits 6c203072f and cded5e220. These dumps were updated
preventing characters from popups to take into account the masks
specified for them. This forces the redraw of popup characters, even
when masks attempt to prevent them, leading to flickering effects. See
issues #19510 and PR: #19534.

closes: #19534

Signed-off-by: Javier Jaramago Fernández <jaramago.fernandez.javier@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:33:03 +00:00
Hirohito Higashi ff9185e822 patch 9.2.0103: missing FEAT_MENU guard for w_winbar_height in window.c
Problem:  missing FEAT_MENU guard for w_winbar_height in window.c
          (Char, after v9.2.0083)
Solution: Use WINBAR_HEIGHT() macro (Hirohito Higashi)

fixes:  #19556
closes: #19560

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:13:53 +00:00
zeertzjq 5845741d69 patch 9.2.0102: 'listchars' "leadtab" not used in :list
Problem:  'listchars' "leadtab" not used in :list (after 9.2.0088).
Solution: Also check for "leadtab" when using :list. Fix memory leak on
          E1572 if "multispace" or "leadmultispace" is set (zeertzjq).

closes: #19557

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:08:12 +00:00
Hirohito Higashi b0ad5c077b patch 9.2.0101: statusline drawing issue for multi-lines
Problem:  statusline drawing issue for multi-lines
          (after v9.2.0083)
Solution: Correctly redraw multi-line statusline
          (Hirohito Higashi).

closes: #19551

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 20:02:07 +00:00
Wei Tang 238a84621d patch 9.2.0100: Using reserved keyword new as function argument
Problem:  A recent commit introduced a new function named
          `update_highlight_overrides()` in `highlight.pro` and
          `highlight.c`, one of the parameter names conflicts with the C++
          keyword `new`. This causes compilation issues on Windows when
          VIM is compiled with OLE enabled, as "if_ole.cpp" cannot compile
          due to the conflict (after v9.2.0093).
Solution: Rename the parameter name of `update_highlight_overrides()`
          from new to hl_new (Wei Tang)

fixes:  #19568
closes: #19558

Signed-off-by: Wei Tang <gauchyler@uestc.edu.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 19:50:15 +00:00
Christian Brabandt b2bc54534c patch 9.2.0099: compiler warning about unused variable
Problem:  Coverity complains about uninitialized var, also gcc warns
          about a few other variables possibly being used uninitialized
          (Tony Mechelynck, after v9.2.0093)
Solution: Initialize a few other variables.

Coverity CID: 1683101

closes: #19561

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 18:37:25 +00:00
Christian Brabandt bc959db163 patch 9.2.0098: Coverity: Error handling issue in win_init()
Problem:  Coverity: error handling issues in win_init() (after
          v9.2.0093)
Solution: Only call pop_highlight_overrides() when
          push_highlight_overrides() was successful.

CID: 1683100

related: #19561

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 18:34:01 +00:00
Christian Brabandt f7a568ebeb runtime(syntax-tests): regenerate dump files (after v9.2.0093)
closes: #19553

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 18:28:32 +00:00
Christian Brabandt e352bb632a patch 9.2.0097: Memory leak in qf_push_dir()
Problem:  Memory leak in qf_push_dir() (after v9.2.0091)
Problem:  free dirname, if it is not a directory.

closes: #19552

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-03 18:25:24 +00:00
Yasuhiro Matsumoto 327e0e34c9 patch 9.2.0096: has() function is slow due to linear feature scan
Problem:  The has() function is slow because it performs a linear scan
          of the feature list for every call.
Solution: Move common runtime checks and the patch-version parser to the
          beginning of the f_has() function (Yasuhiro Matsumoto).

closes: #19550

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 20:41:44 +00:00
AstroSnail 962a8c7f00 patch 9.2.0095: keypad keys may shadow normal keys
Problem:  In XTerm, typing Home, End, PgUp or PgDn on the editing pad
	  will cause vim to recognize <kHome>, <kEnd>, <kPageUp> or
	  <kPageDown> (keypad keys) instead of <Home>, <End>, <PageUp>
	  or <PageDown> (editing pad keys) respectively, affecting
          mappings and the :terminal. This is caused because the keypad
          termcaps are sorted before the editing pad ones in
	  termcodes, meaning vim will match the former if they are the
	  same.
Solution: Only recognize keypad keys when nothing else matches
          (AstroSnail).

fixes:  #17331
closes: #19145

Signed-off-by: AstroSnail <astrosnail@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 20:06:48 +00:00
Christian Brabandt 9166f1c09b translation: regenerate po/vim.pot after v9.2.0093
also update one failing syntax test

related: #19493

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 19:58:22 +00:00
Yasuhiro Matsumoto 2c1f4dcbcc patch 9.2.0094: popup: concealed text causes incorrect truncation
Problem:  In popup windows, concealed characters and tab expansion
          may cause wrong truncation for fixed width windows.
Solution: Do not adjust the screen column and bogus column counters
          for popup windows when handling concealed text or extra
          padding characters (Yasuhiro Matsumoto).

closes: #19121

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 19:45:11 +00:00
Foxe Chen 98174caabb patch 9.2.0093: Not possible to have window-local highlighting groups
Problem:  Not possible to have window-local highlighting groups
          (Hima)
Solution: Port Neovims 'winhighlight' option to Vim (Foxe Chen).

fixes:  #3576
closes: #19493

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 19:36:07 +00:00
Christian Brabandt 62cf4c2947 patch 9.2.0092: control flow commands using '|' fail inside a {} block
Problem:  inside_block() iterates through all cstack levels
          and returns TRUE when a CSF_BLOCK frame is found.  For control
          flow commands this causes '|' to no longer be
          recognised as a command separator, breaking
          "try | silent cmd | catch | endtry" (Martin Tournoij, after
          v9.2.0072).
Solution: Return FALSE from inside_block() for control flow commands
          that handle '|' themselves, so they always use '|' as
          separator regardless of block nesting.

fixes:  #19535
closes: #19543

supported by AI claude.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 19:02:06 +00:00
Riley Bruins 99ba87d152 runtime(nickel): Add filetype plugin with com, cms settings
closes: #19545

Signed-off-by: Riley Bruins <ribru17@hotmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 18:50:47 +00:00
John Marriott 0155401538 patch 9.2.0091: missing out-of-memory checks in quickfix.c
Problem:  missing out-of-memory checks in quickfix.c
Solution: Improve error handline, refactor qf_push_dir() slightly
          (John Marriott).

closes: #19528

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 18:44:33 +00:00
Eisuke Kawashima 6ce357a586 runtime(po): Update syntax script
- support `#=`
https://www.gnu.org/software/gettext/manual/html_node/PO-File-Format-Evolution.html
- add sticky flag support:
https://www.gnu.org/software/gettext/manual/html_node/Sticky-flags.html

closes: #19548

Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 18:40:31 +00:00
Hirohito Higashi 73f41626df runtime(doc): Tweak doc style in options.txt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 18:21:40 +00:00
zeertzjq 4b30e40a1f patch 9.2.0090: "leadtab" behavior inconsistent on line with only TABs
Problem:  "leadtab" behavior inconsistent on line with only TABs
          (after 9.2.0088).
Solution: Don't consider those as leading TABs. Also add more tests for
          existing behavior of "lead" and "leadmultispace" (zeertzjq).

closes: #19549

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-02 18:18:51 +00:00
Miguel Barro a6198523fb patch 9.2.0089: netrw: does not take port into account in hostname validation
Problem:  netrw: does not take port into account in hostname validation
          (after v9.2.0073)
Solution: Update hostname validation check and test for an optional port
          number (Miguel Barro)

closes: #19533

Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 19:33:17 +00:00
Christian Brabandt 93cb5e544b translation: regenerate po/vim.pot after v9.2.0088
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 19:28:47 +00:00
mikoto2000 5a4291d34e runtime(osc52): Omit paste from the osc52 provider when g:osc52_disable_paste is enabled
Omit paste capability from the osc52 provider when g:osc52_disable_paste
is enabled This avoids OSC 52 paste queries on unsupported terminals and
prevents the +/* registers from being treated as empty. Documentation
updated accordingly.

related: #18983
closes:  #19542

Signed-off-by: mikoto2000 <mikoto2000@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 19:23:34 +00:00
HarshK97 8526d32647 patch 9.2.0088: cannot display tabs for indentation
Problem:  cannot display tabs for indentation
Solution: Add the "leadtab" value to the 'listchars' option to
          distinguish between tabs used for indentation and tabs used
          for alignment (HarshK97).

closes: #19094

Signed-off-by: HarshK97 <harshkapse1234@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:53:35 +00:00
Yasuhiro Matsumoto f7e99d102b patch 9.2.0087: popup: redrawing can be improved when moving popups
Problem:  popup: redrawing can be improved when moving popups
Solution: When a pop-up window moves, only the target window should be
          redrawn (Yasuhiro Matsumoto).

closes: #19536

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:25:08 +00:00
Christian Brabandt 08e758bb70 patch 9.2.0086: Coverity complains that ScreenLines can be NULL
Problem:  Coverity complains that ScreenLines can be NULL
          (after v9.2.0080)
Solution: Remove null test

closes: #19538
CID: 1682067

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:21:16 +00:00
Christian Brabandt a5af4352cf patch 9.2.0085: tests: test_clientserver.vim is flaky
Problem:  tests: test_client_server_stopinsert() is flaky.
Solution: Use remote_send() instead of remote_expr().

closes: #19539

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:18:09 +00:00
GX 14eddc7d46 runtime(xkb): Include a simple xkb ftplugin
Problem:  There is a xkb syntax, but no filetype plugin.
Solution: Create a filetype plugin and set the comment and commentstring
          options for the xkb filetype (xkb = X keyboard extension)

closes: #19537

Signed-off-by: GX <59413576+gx089@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:12:00 +00:00
Christian Brabandt a6550d5713 translation: regenerate po/vim.pot after v9.2.0083
related: #19123

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:09:56 +00:00
Yegappan Lakshmanan 689083a748 patch 9.2.0084: Vim9: isn_get_calltype() can be improved
Problem:  Vim9: isn_get_calltype() can be improved
Solution: Refactor isn_get_calltype for readability
          (Yegappan Lakshmanan).

related: #19519
closes:  #19529

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 17:02:52 +00:00
Hirohito Higashi a4186316ba patch 9.2.0083: Cannot have a mutli-line statusline
Problem:  Cannot have a mutli-line statusline.
Solution: Add support for multi-line statusline
          (Hirohito Higashi).

closes: #19123

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 16:57:08 +00:00
Christian Brabandt f8ec661ff5 patch 9.2.0082: Patch v9.2.0052 was wrong
Problem:  Patch v9.2.0052 was wrong
Solution: Revert it for now

Revert "patch 9.2.0052: Wayland: hiding lower half of command line in tiny vim"
This reverts commit b834c3f23b.

related: #19504
related: #19483

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-03-01 16:14:11 +00:00
Luuk van Baal eba078fc47 patch 9.2.0081: Failed "z=" does not reset 'nospell' setting
Problem:  When z= fails due to no word being found, 'spelllang' being
          unset or a multiline visual selection, 'nospell' is not
          restored.
Solution: Jump to where the user configured value of 'spell' is restored
          instead of returning early (Luuk van Baal).

closes: #19525

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-28 17:40:32 +00:00
Daniel Wennberg 75c291fc39 runtime(julia): Update julia ftplugin
commentstring changed to single line variant in
JuliaEditorSupport/julia-vim@edd3512

closes: #19530

Signed-off-by: Daniel Wennberg <daniel.wennberg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-28 17:37:23 +00:00
Yasuhiro Matsumoto cded5e2205 patch 9.2.0080: popup: a few redrawing problems
Problem:   Popup windows leave ghost images when moved. Visual options
           do not trigger a redraw when updated via popup_setoptions().
           An empty borderhighlight list fails to clear existing
           highlights.
Solution:  Modify f_popup_move() in src/popupwin.c to save the old
           position before moving and force a redraw. Enhance
           f_popup_setoptions() to trigger a redraw when
           visual-affecting options change. Modify
           apply_general_options() to explicitly clear border
           highlights when an empty list is provided
           (Yasuhiro Matsumoto).

closes: #19297

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-28 17:32:45 +00:00
Doug Kearns b901fa9a6a runtime(vim): Update base syntax, improve :syntax group list arg matching
Attempt to match all variations of group name and comma separator across
continuation lines.

Fixes issues:
- #18491 (Two ")"s are incorrectly colored 'vimOperError' in
  syntax/mail.vim), reported by @lkintact
- #19366 (highlight error for contains elements in a new line), reported
  by Maxim Kim

fixes: #18491
fixes: #19366

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-28 17:20:42 +00:00
Huihui Huang 525d1d6a94 patch 9.2.0079: memory leak in eval_dict()
Problem:  memory leak in eval_dict()
Solution: Do not return but goto failret (Huihui Huang).

closes: #19531

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-28 17:01:53 +00:00
Christian Brabandt 4e5b9e31cb patch 9.2.0078: [security]: stack-buffer-overflow in build_stl_str_hl()
Problem:  A stack-buffer-overflow occurs when rendering a statusline
          with a multi-byte fill character on a very wide terminal.
          The size check in build_stl_str_hl() uses the cell width
          rather than the byte length, allowing the subsequent fill
          loop to write beyond the 4096-byte MAXPATHL buffer
          (ehdgks0627, un3xploitable).
Solution: Update the size check to account for the byte length of
          the fill character (using MB_CHAR2LEN).

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-gmqx-prf2-8mwf

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 21:09:50 +00:00
Christian Brabandt 65c1a143c3 patch 9.2.0077: [security]: Crash when recovering a corrupted swap file
Problem:  memline: a crafted swap files with bogus pe_page_count/pe_bnum
          values could cause a multi-GB allocation via mf_get(), and
          invalid pe_old_lnum/pe_line_count values could cause a SEGV
          when passed to readfile() (ehdgks0627, un3xploitable)
Solution: Add bounds checks on pe_page_count and pe_bnum against
          mf_blocknr_max before descending into the block tree, and
          validate pe_old_lnum >= 1 and pe_line_count > 0 before calling
          readfile().

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-r2gw-2x48-jj5p

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 21:04:55 +00:00
Christian Brabandt bb6de2105b patch 9.2.0076: [security]: buffer-overflow in terminal handling
Problem:  When processing terminal output with many combining characters
          from supplementary planes (4-byte UTF-8), a heap-buffer
          overflow occurs. Additionally, the loop iterating over
          cell characters can read past the end of the vterm array
          (ehdgks0627, un3xploitable).
Solution: Use VTERM_MAX_CHARS_PER_CELL * 4 for ga_grow() to ensure
          sufficient space. Add a boundary check to the character
          loop to prevent index out-of-bounds access.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-rvj2-jrf9-2phg

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 20:51:55 +00:00
Christian Brabandt 9b7dfa2948 patch 9.2.0075: [security]: Buffer underflow with emacs tag file
Problem:  When parsing a malformed Emacs-style tags file, a 1-byte
          heap-buffer-underflow read occurs if the 0x7f delimiter
          appears at the very beginning of a line. This happens
          because the code attempts to scan backward for a tag
          name from the delimiter without checking if space exists.
          (ehdgks0627, un3xploitable)
Solution: Add a check to ensure the delimiter (p_7f) is not at the
          start of the buffer (lbuf) before attempting to isolate
          the tag name.

GitHub Advisory:
https://github.com/vim/vim/security/advisories/GHSA-xcc8-r6c5-hvwv

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 20:46:33 +00:00
Christian Brabandt f6a7f469a9 patch 9.2.0074: [security]: Crash with overlong emacs tag file
Problem:  Crash with overlong emacs tag file, because of an OOB buffer
          read (ehdgks0627, un3xploitable)
Solution: Check for end of buffer and return early.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-h4mf-vg97-hj8j

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 20:38:33 +00:00
Christian Brabandt 79348dbbc0 patch 9.2.0073: [security]: possible command injection using netrw
Problem:  [security]: Insufficient validation of hostname and port in
          netrw URIs allows command injection via shell metacharacters
          (ehdgks0627, un3xploitable).
Solution: Implement stricter RFC1123 hostname and IP validation.
          Use shellescape() for the provided hostname and port.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-m3xh-9434-g336

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 20:29:14 +00:00
Weixie Cui 1da9d1381f patch 9.2.0072: inside_block() uses wrong index in loop
Problem:  inside_block() always checks the flags of the top-most stack
          entry  instead of the current loop index.
Solution: Use the loop index 'i' to check all levels of the condition
          stack (Weixie Cui).

closes: #19524

Signed-off-by: Weixie Cui <cuiweixie@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 19:12:00 +00:00
Hirohito Higashi c598c4de27 patch 9.2.0071: Vim9: lambda function deleted on re-sourcing
Problem:  Vim9: lambda function deleted on re-sourcing
          (Mao-Yining)
Solution: Use ISN_UCALL for script-local def calls inside a lambda
          (Hirohito Higashi).

fixes:  #19509
closes: #19519

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 19:03:18 +00:00
Christian Brabandt 2fa34b6422 patch 9.2.0070: tests: various tests leave swapfiles around
Problem:  tests: various tests leave swapfiles around
Solution: close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 18:57:47 +00:00
snelling-a 9148644c1e runtime(env): add ftplugin for env filetype
Patch 9.2.0033 (#19260) introduced a dedicated `env` filetype for
.env files, which were previously detected as `sh`. This left env
files without `commentstring`, `comments`, or `formatoptions` since
no ftplugin was added alongside the new filetype.

Add runtime/ftplugin/env.vim to set these options, matching the
behavior that .env files had when they used the `sh` filetype.

closes: #19522

Signed-off-by: snelling-a <72226000+snelling-a@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 18:51:34 +00:00
glepnir 09ce70821b patch 9.2.0069: highlight: incorrect string length and redundant code
Problem:  The length passed to add_attr_and_value for " ctermfont=" is
          incorrect. In highlight_set_font(), sg_font_name is freed and
          updated in two separate branches, leading to redundant code.
Solution: Correct the length parameter in hlg_add_or_update().
          Refactor highlight_set_font() to update the font name string
          only once after a successful change is detected.

closes: #19512

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-27 18:39:56 +00:00
John Marriott 455d62e38a patch 9.2.0068: Inefficient use of list_append_string()
Problem:  Inefficient use of list_append_string()
Solution: Pass string length to list_append_string() where it is known
          (John Marriott).

closes: #19491

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-26 21:20:59 +00:00
Huihui Huang 8ba12766d1 patch 9.2.0067: memory leak in dict_extend_func()
Problem:  memory leak in dict_extend_func()
Solution: Free d1 on early return (Huihui Huang)

closes: #19518

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-26 21:13:40 +00:00
Huihui Huang c0740e046e patch 9.2.0066: memory leak in build_drop_cmd()
Problem:  memory leak in build_drop_cmd()
Solution: Free cdp.string on early return
          (Huihui Huang).

closes: #19517

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-26 21:08:50 +00:00
Huihui Huang ac28237e62 patch 9.2.0065: memory leak in invoke_sync_listeners()
Problem:  memory leak in invoke_sync_listeners()
Solution: Free the recorded_changes on early return
          (Huihui Huang).

closes: #19516

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-26 21:02:27 +00:00
Hirohito Higashi 97c5bed84b patch 9.2.0064: popup: opacity feature causes flickering
Problem:  popup: opacity feature causes flickering
          (after v9.2.0016)
Solution: Only skip the mask and enable the opacity context if
          w_popup_blend is greater than 0 (Hirohito Higashi).

fixes:  #19510
fixes:  #19499
closes: #19515

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-26 20:49:06 +00:00
Huihui Huang 5aa0860d0a patch 9.2.0063: memory leak in type_name_list_or_dict()
Problem:  memory leak in type_name_list_or_dict()
Solution: Free the variable member_free on early returns (Huihui Huang).

closes: #19513

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-26 20:46:00 +00:00
Foxe Chen cb031178c2 patch 9.2.0062: Using the wrong field with DAP channel mode
Problem:  Using the wrong field with DAP channel mode
          (after v9.2.0060)
Solution: Use request_seq instead of seq when handing DAP response
          (Foxe Chen).

closes: #19511

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 21:43:06 +00:00
Colin Kennedy 1c0d468d72 patch 9.2.0061: Not possible to know when a session will be loaded
Problem:  Not possible to know when a session will be loaded.
Solution: Add the SessionLoadPre autocommand (Colin Kennedy).

fixes:  #19084
closes: #19306

Signed-off-by: Colin Kennedy <colinvfx@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 21:08:15 +00:00
Foxe Chen b7eb0c2d38 patch 9.2.0060: No support for the DAP channel mode
Problem:  No support for the DAP channel mode
Solution: Add native channel support for the debug-adapter-protocol
          (Foxe Chen)

closes: #19432

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 20:53:21 +00:00
Huihui Huang e8432bc5d5 patch 9.2.0059: memory leak in fill_assert_error
Problem:  memory leak in fill_assert_error
Solution: Free the variables (Huihui Huang).

fixes:  #19502
closes: #19507

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 20:39:39 +00:00
John Marriott aa18b85df5 patch 9.2.0058: Compile error in did_set_previewpopup()
Problem:  Compile error in did_set_previewpopup() when quickfix
          feature is not included (John Marriott, after v9.2.0051)
Solution: Add ifdef FEAT_QUICKFIX (John Marriott)

related: #18873

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 20:26:45 +00:00
Huihui Huang 71ace8ba8c patch 9.2.0057: memory leak in exe_newdict()
Problem:  memory leak in exe_newdict()
Solution: Free the variable item (Huihui Huang).

closes: #PR

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 20:18:16 +00:00
Huihui Huang 6a239a1905 patch 9.2.0056: memory leak in ex_substitute
Problem:  memory leak in ex_substitute
Solution: Free the variable (Huihui Huang)

fixes:  #19501
closes: #19506

Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 20:10:07 +00:00
Huihui Huang 9c3279ddc3 patch 9.2.0055: memory leak in ExpandFromContext()
Problem:  memory leak in ExpandFromContext()
Solution: Free the variable (Huihui Huang).

fixes:  #19500
closes: #19505

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Huihui Huang <625173@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 20:04:07 +00:00
Yasuhiro Matsumoto c389ae8c44 patch 9.2.0054: eval_addblob() is inefficient
Problem:  eval_addblob() is inefficient
Solution: Replace per-byte ga_append() loop with a single ga_grow() and
          mch_memmove() for each source blob.  This eliminates N grow
          checks and function call overhead for blob concatenation
          (Yasuhiro Matsumoto).

closes: #19494

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 19:57:13 +00:00
Yasuhiro Matsumoto 048079f6da patch 9.2.0053: Vims list concatenation is inefficient
Problem:  Vims list concatenation is inefficient
Solution: Use a single allocation of len1 + len2 using
          list_alloc_with_items() (Yasuhiro Matsumoto).

Replace list_copy() + list_extend() (N+1 individual mallocs) with a
single list_alloc_with_items(len1+len2) call.  This reduces the number
of memory allocations from O(N) to O(1) for the list '+' operator.

closes: #19495

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-25 19:31:37 +00:00
Hirohito Higashi b834c3f23b patch 9.2.0052: Wayland: hiding lower half of command line in tiny vim
Problem:  Running gvim with a tiny build under a Wayland compositor
          hides the bottom half of the command line
          (dezza, after v9.1.1585).
Solution: When Wayland display protocol support is not compiled in
          (HAVE_WAYLAND not defined), force the X11 GDK backend to avoid
          display issues. This restores the gdk_set_allowed_backends("x11")
          call that was removed by patch 9.1.1585, but only for builds
          without Wayland support (e.g. tiny builds, see patch 9.1.1565)
          (Hirohito Higashi)

fixes:  #19483
closes: #19504

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 22:13:52 +00:00
Arkissa 6eb0bfd5bb patch 9.2.0051: 'previewpopup' is missing features available in 'completepopup'
Problem:  The 'previewpopup' option lacks several customization values
          that 'completepopup' supports, such as borders, shadows,
          and UI handles.
Solution: Add support for "border", "borderhighlight", "close",
          "resize", and "shadow" to 'previewpopup' (Arkissa)

closes: #18873

Signed-off-by: Arkissa <mrarkssac@gmail.com>
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 21:48:48 +00:00
Muraoka Taro c4a6fa3ead patch 9.2.0050: WM_SETFOCUS not handled immediately
Problem:  In gvim on Windows, a certain problem can occur when the
          WM_SETFOCUS event sent after an external command is not
          processed immediately.
Solution: After posting WM_SETFOCUS, run the message loop to process it
          as quickly as possible (Muraoka Taro).

The problem is that Test_normal11_showcmd may fail when running the
test_normal.vim test.  Investigation revealed that the trigger was an
external command executed in the previous test,
Test_mouse_shape_after_failed_change, when two tests were executed
consecutively.  In gvim on Windows, a WM_SETFOCUS event will be sent
when an external command finishes executing.  This WM_SETFOCUS event is
not processed immediately, but rather by redraw, which is expected to
update showcmd. Because it is queued in typebuf at this time,
clear_showcmd(), which expects typebuf to be empty, cannot update
showcmd.

Also added a test that simulates the above problem.

closes: #19167

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 21:30:43 +00:00
Hirohito Higashi b1d4b03058 patch 9.2.0049: Vim9: typename() wrong for lists/dicts/tuples with shared references
Problem:  Vim9: typename() returns wrong type for lists/dicts/tuples
          with shared references (Mao-Yining).
Solution: Reset CopyID after processing the item so it can be
          re-inspected if encountered again via a different reference
          (Hirohito Higashi).

fixes:  #19490
closes: #19492

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 21:27:30 +00:00
bennyyip 71cc1b12cd patch 9.2.0048: MS-Windows: ConPTY not yet preferred
Problem:  MS-Windows: ConPTY not yet preferred
Solution: Mark ConPTY as stable starting with Windows 11 (build 22000).
          Vim will now prefer ConPTY over winpty on these systems.

fixes:  #19033
closes: #19037

Signed-off-by: bennyyip <yebenmy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 21:19:42 +00:00
Hirohito Higashi 1ec32291c7 patch 9.2.0047: Vim9: Comment parsing error with lambda
Problem:  Vim9: Comment parsing error with lambda (Mao-Yining)
Solution: Drop the skipwhite() (Hirohito Higashi)

fixes:  #19484
closes: #19487

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 20:56:06 +00:00
James Roberts-Thomson 29b5938d79 runtime(sshconfig): Add 3 additional keywords to syntax script
closes: #19488

Signed-off-by: James Roberts-Thomson <jamesrt@gmail.com>
Signed-off-by: Jakub Jelen <jakuje@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 20:51:47 +00:00
przepompownia ddd90672f2 patch 9.2.0046: filetype: neon files are not recoginzed
Problem:  filetype: neon files are not recoginzed
Solution: Detect *.neon files as neon filetype
          (przepompownia)

Reference:
https://doc.nette.org/en/neon/format
https://github.com/fpob/nette.vim

closes: #19496

Signed-off-by: przepompownia <przepompownia@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-24 20:33:55 +00:00
Yasuhiro Matsumoto 201562401b patch 9.2.0045: wrongly resetting the foreground cterm color
Problem:  wrongly resetting the foreground cterm color
          (lilydjwg, after v9.2.0017)
Solution: Remove useless statement (Yasuhiro Matsumoto).

fixes:  #19485
closes: #19486

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-22 20:00:52 +00:00
Antonio Giovanni Colombo e44b418125 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-22 19:58:49 +00:00
Christoffer Aasted 00353b29c9 patch 9.2.0044: Wayland: still performance issues
Problem:  Wayland: still performance issues
          (lilydjwg, after v9.2.0010)
Solution: Revert another part of Patch v9.2.0010
          (Christoffer Aasted)

Revert "perf(gtk-wayland): avoid early redraws; compositor does redraw"

fixes:  #19471
fixes:  #19481
closes: #19482

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-22 19:04:35 +00:00
Aliaksei Budavei cb65fe17e9 tests(commondumps): Make mark-line-related optimisations
- Generate once (and inline) all alphabetical mark names.
- Allocate all markable "setpos" lists in advance.
- Continue tolerating redundant "setpos" calls that reset
  mark "`" for motions within a line or motions between
  paired lines (i.e. the lines for which mark "`" is made
  reciprocal) rather than making "getpos" calls that check
  the position of mark "`" before conditionally changing it
  with "setpos" since checking a mark position is slower
  than setting it according to profiling samples.
- Observe sparing use of empty lines.

closes: #19476

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-22 18:58:37 +00:00
Hirohito Higashi 9b16aa34b6 CI: Avoid referencing the unstable ddebs.ubuntu.com/noble-proposed mirror
closes: #19480

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 18:00:13 +00:00
Foxe Chen f622af0270 patch 9.2.0043: crypt: Crash when reading an encrypted UTF-8 file
Problem:  crypt: Crash when reading an encrypted  UTF-8 file.
          This happens because readfile() does not account for leftover
          conversion bytes (conv_restlen) when reallocating and moving
          the buffer after decryption (smss2022).
Solution: Include conv_restlen in the offset calculations and memmove
          operations within readfile() (Foxe Chen).

fixes:  #19425
closes: #19453

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 17:56:48 +00:00
Foxe Chen 16403b02a0 patch 9.2.0042: crypt: cannot decrypt empty file
Problem:  crypt: cannot decrypt empty file (smss2022)
Solution: Update wrong condition in check_for_cryptkey()
          (Foxe Chen)

fixes:  #19416
closes: #19455

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 17:34:20 +00:00
John Marriott fc90d8087a patch 9.2.0041: Not always using GA_CONCAT_LITERAL
Problem:  Not always using GA_CONCAT_LITERAL with string literals.
          (after: v9.2.0031)
Solution: Use the GA_CONCAT_LITERAL, instead of ga_concat_len.
          (John Marriott)

closes: #19468

Signed-off-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>
2026-02-21 17:24:47 +00:00
Mao-Yining 7b7a6f941b Add information for runtime files in the bug template.
closes: #19469

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 11:09:00 +00:00
Mao-Yining a99dcca177 Maintainers: Update MAINTAINERS file
closes: #19470

Co-Authored-By: Enno <Konfekt@users.noreply.github.com>
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 11:07:13 +00:00
Girish Palya 3684ad83d1 patch 9.2.0040: completion: preinsert wrong with register completion
Problem:  completion: preinsert wrong with register completion
Solution: Remove preinserted text during register content insertion
          (Girish Palya).

fixes:  #19329
closes: #19474

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:56:26 +00:00
Christian Brabandt 402eb5b5a6 patch 9.2.0039: potential integer underflow in screen_line()
Problem:  In screen_line(), there is a potential integer underflow when
          accessing ScreenAttrs[off_to - 1] if off_to is zero.
          (Coverity CID 1681430, after v9.2.0017)
Solution: Add a check to ensure off_to > 0 before accessing the
          previous attribute index.

related: #19272
closes:  #19479

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:53:25 +00:00
Ivan Pešić 82d33354d0 translation(sr): Update Serbian messages translation
closes: #19472

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:42:22 +00:00
Hirohito Higashi e998305ff2 patch 9.2.0038: Wayland: Not using bool type
Problem:  Wayland: Not using Boolean type (after v9.2.0010)
Solution: Use bool type instead of int (Hirohito Higashi).

closes: #19473

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:38:39 +00:00
Miguel Barro bd1dc5b1a6 patch 9.2.0037: netrw: need better tests for absolute paths
Problem:  netrw: need better tests for absolute paths
Solution: Use absolutepath(), instead of regex test (Miguel Barro).

closes: #19477

Signed-off-by: Guybrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:26:21 +00:00
Girish Palya 26a3f486cc patch 9.2.0036: completion: thesaurus completion incorrect with "longest/fuzzy"
Problem:  completion: thesaurus completion incorrect with
          "longest/fuzzy" (Mao-Yining)
Solution: Disable fuzzy matching and longest-match insertion
          specifically for thesaurus completion (Girish Palya).

fixes:  #19356
closes: #19475

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 10:19:35 +00:00
Yasuhiro Matsumoto 782345c9e6 patch 9.2.0035: syntax highlighting lost in popup with opacity
Problem:  syntax highlighting lost in popup with opacity lower than 100
          (after v9.2.0017)
Solution: Before blending, combine the popup's window color attribute
          with the character's own attribute using hl_combine_attr()
          (Yasuhiro Matsumoto).

related: #19272
closes:  #19478

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 09:55:18 +00:00
Christian Brabandt 2ab37c07a8 patch 9.2.0034: redundant code in hl_blend_attr()
Problem:  Redundant code in hl_blend_attr()
          (Coverity, after v9.2.0017)
Solution: Remove redundant if/else logic, remove redundant braces.

related: #19272

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-21 09:44:58 +00:00
DuckAfire d0fa375629 patch 9.2.0033: filetype: sh filetype used for env files
Problem:  filetype: sh filetype used for env files
Solution: Detect *.env and .env.* files as env filetype,
          detect .envrc and .envrc.* as sh filetype,
          include a simple env syntax script (DuckAfire)

Previously, .env files were handled by the shell syntax. While
functional, this limited the ability to support specific .env
implementations, such as CodeIgniter4 which allows dots in keys
(e.g., "foo.bar=0").

The new dedicated 'env' filetype and syntax script improves legibility
and prevents highlighting from breaking when encountering spaces.
Currently, the syntax does not support indentation; fields, variables,
and comments must start at the beginning of the line.

closes: #19260

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: DuckAfire <155199080+duckafire@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 18:09:09 +00:00
Ivan Pešić f26a33d3a7 runtime(typeset): enable localization for ConTeXt, METAFONT and MetaPost
This will enable localization of the messages that are displayed
by the ConTeXt support script.

closes: #19176

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 17:55:29 +00:00
Michael Osipov 4611f7b656 runtime(apache): Add 'SSLVHostSNIPolicy' declaration to syntax script
The declaration 'SSLVHostSNIPolicy' has bee introduced in version 2.4.66.

closes: #19452

Signed-off-by: Michael Osipov <michael.osipov@innomotics.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 17:46:21 +00:00
Hirohito Higashi d8648f7279 patch 9.2.0032: completion: hang with line completion and fuzzy
Problem:  completion: hang with line completion and fuzzy (Jesse Pavel)
Solution: Only check the line number when wrapping around the file
          (Hirohito Higashi).

fixes:  #19434
closes: #19443

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 17:40:04 +00:00
John Marriott ed202035b1 patch 9.2.0031: Inefficient use of ga_concat()
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

closes: #19422

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 17:27:51 +00:00
Hirohito Higashi a04ae0210b patch 9.2.0030: completion: non-prefix matches shown when leader is NULL
Problem:  When 'autocomplete' fires before compl_leader is initialized,
          the prefix filter is bypassed. This allows non-prefix matches
          (e.g. from fuzzy omnifuncs) to be shown in the popup menu and
          incorrectly preinserted.
Solution: In get_leader_for_startcol(), if compl_leader.string is NULL,
          fall back to using compl_orig_text as a filter for matches
	  starting at or after the completion column (Hirohito Higashi).

When 'autocomplete' first fires, compl_leader is NULL because
ins_compl_start() has not set it yet.  This caused the prefix filter in
ins_compl_build_pum(), find_next_completion_match() and
find_common_prefix() to be bypassed, allowing non-prefix fuzzy omnifunc
matches to appear in the PUM and be preinserted.

Extend get_leader_for_startcol() to fall back to compl_orig_text when
compl_leader.string is NULL: if the match's cpt source startcol is less
than compl_col the match includes pre-compl_col text, so return
&compl_leader (NULL string) to signal "pass through"; otherwise return
&compl_orig_text so callers filter by the original text.  The compl_col
<= 0 guard is kept only for the prepend-text path to avoid it
interfering with the NULL-leader fallback when compl_col is zero.

With this change all callers of get_leader_for_startcol() automatically
receive the correct filter string without additional helpers.

Also update Test_autocomplete_trigger Test 9 to reflect the new
behavior: 'faberge' is no longer shown when completing 'foo' because
it does not start with the current prefix.

Add Test_autocomplete_preinsert_null_leader() to verify that only
prefix-matching candidates appear in the PUM and are preinserted.

fixes:  #19328
closes: #19447

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>
2026-02-19 17:06:43 +00:00
Yasuhiro Matsumoto d673411ff2 patch 9.2.0029: STRLEN() used for a string literal
Problem:  STRLEN() used for a string literal
Solution: Use STRLEN_LITERAL instead (Yasuhiro Matsumoto).

closes: #19450

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 16:55:39 +00:00
Daniel Smith 342ae5f8aa runtime(progress): Use setlocal for expandtab
The Progress syntax file gained `set expandtab` in 4c3f536f4 (updated
for version 7.0d01, 2006-04-11). The Progress language itself doesn't
distinguish between tabs and spaces for indentation, so this seems like
something that should be left to user preference; but the setting is
accompanied by the comment "The Progress editor doesn't cope with tabs
very well", so there may be reason to keep it.

However, using `set` means that any new buffers created after editing a
Progress file will also have `expandtab` turned on, which is likely
contrary to a user's expectations. We should use `setlocal` instead to
avoid this.

closes: #19458

Signed-off-by: Daniel Smith <daniel@rdnlsmith.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 16:44:45 +00:00
zeertzjq d01f234ec1 patch 9.2.0028: matchadd() conceal may use unrelated syntax cchar
Problem:  matchadd() conceal may use unrelated syntax cchar.
Solution: Only use syntax cchar when syntax_flags has HL_CONCEAL
          (zeertzjq).

closes: #19459

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 16:42:09 +00:00
Thomas Dupuy 7d93ae57f0 patch 9.2.0027: filetype: yara files are not recognized
Problem:  filetype: yara files are not recognized
Solution: Detect *.yara and *.yar files as yara filetype
          (Thomas Dupuy).

Reference:
- https://github.com/VirusTotal/yara
- https://github.com/VirusTotal/yara-x

closes: #19460

Signed-off-by: Thomas Dupuy <thom4s.d@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 16:12:06 +00:00
Foxe Chen e9e4e30ee4 patch 9.2.0026: The ss_pending_cmds variable is visible globally
Problem:  The ss_pending_cmds variable is visible globally
Solution: Make it static (Foxe Chen).

closes: #19461

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 16:06:47 +00:00
Shane Harper ac4ccb8e53 runtime(less.sh): Fix reading from stdin.
Problem:  less.sh can't read from stdin; it will try to read from a file named "-" instead (after 515da6ecdb).
Solution: Do not prepend "-" with "--" in the arguments list for vim.

The following were checked manually and worked as expected:
    echo Test | less.sh
    echo Test | less.sh -
    less.sh some_file
    less.sh --cmd some_file  # vim will try to load "--cmd" and "some_file".
    less.sh                  # script outputs "No input."
    # All of the above repeated with the output piped to 'cat'.

closes: #19462

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 22:28:21 +00:00
Mao-Yining 47eb32fc92 translation(zh): Update menu translation for changed "Sponsor" entry
closes: #19463

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 22:24:14 +00:00
Mao-Yining 405ba5010d runtime(doctags): remove unused header include file
closes: #19465

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 22:19:06 +00:00
Hirohito Higashi 70a9273dcc Filelist: Fix CI error caused by xdg.vim missing in Filelist
closes: #19466

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 22:15:13 +00:00
Christian Brabandt 2e9e7cb8e0 runtime(xdg): Move viminfofile storage to state dir
fixes: #19456

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 12:24:53 +01:00
Christian Brabandt b9897ec27e runtime(xdg): remove // from 'undo' and 'viwedir'
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-19 07:38:04 +01:00
tris203 68dbb58d51 patch 9.2.0025: filetype: cshtml incorrectly recognized
Problem:  filetype: cshtml incorrectly recognized, razor files are not
          recognized
Solution: Detect *.cshtml and *.razor files as razor filetype
          (tris203)

Reference:
https://learn.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-10.0

closes: #19207

Signed-off-by: tris203 <admin@snappeh.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 22:00:09 +00:00
Christian Brabandt 6cc291da06 patch 9.2.0024: Reading files with very long lines crashes with a segfault
Problem:  Reading files with lines approaching MAXCOL length crashes
          with segfault due to colnr_T overflow.
Solution: The split check 'linerest >= MAXCOL' fired too late because
          linerest could grow by up to 'size' bytes before the next
          check. Change threshold to 'linerest >= MAXCOL - size' to
          ensure the line passed to ml_append() stays within colnr_T
          range.

Note: supported by AI claude

fixes:   #17935
closes:  #18953
closes:  #19332

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:52:40 +00:00
Christian Brabandt 0ece393844 patch 9.2.0023: fix integer overflow in ml_append_int() for long lines
Problem:  ml_append_int() crashes when appending lines near MAXCOL
          length due to signed integer overflow in space_needed
          calculation.
Solution: Change 'space_needed' from int to long to handle the
          'len + INDEX_SIZE' computation without overflow. Update
          db_free comparison casts from (int) to (long) to match.

Note: supported by AI claude

related: #17935
related: #18953
related: #19332

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:49:58 +00:00
zeertzjq f06b3f529a patch 9.2.0022: bt_quickfix() is slow
Problem:  In order to prevent a use-after-free, bt_quickfix() added a
          call to buf_valid(), which slows it down, because Vim has to
          loop through many buffers all the time (v9.0.1859)
Solution: Patch v9.0.2010 fixed a similar problem, so that the call to
          buf_valid() is no longer required (zeertzjq)

fixes:  #19169
closes: #19183

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:42:25 +00:00
thinca dd989ec9ca patch 9.2.0021: channel: connection timeout fails to fall back to IPv4
Problem:  When ch_open() tries to connect to a hostname that resolves to
          multiple addresses (e.g., both IPv6 and IPv4), it uses a
          single waittime for all connection attempts. If the first IPv6
          connection attempt times out, it consumes almost all of the
          waittime, leaving insufficient time (often just 1ms) for the
          IPv4 attempt to succeed. (reporter)
Solution: Implement a simplified version of Happy Eyeballs (RFC 8305) to
          improve connection fallback behavior when IPv6 is unavailable
          or slow (thinca).

Distribute the waittime across multiple addresses:
- First address: use up to 250ms (RFC 8305 Connection Attempt Delay) or
  half of the total waittime, whichever is smaller
- Middle addresses: divide remaining time equally
- Last address: use all remaining time

This ensures that IPv4 fallback has sufficient time to succeed even when
IPv6 connection attempts fail or timeout.

closes: #19233

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:34:57 +00:00
zeertzjq f245e17ac7 patch 9.2.0020: Wrong shortened buffer after :cd with duplicate slashes
Problem:  Wrong shortened buffer name after :cd with duplicate slashes.
Solution: Skip over multiple consecutive path separators (zeertzjq).

related: neovim/neovim#37080
closes:  #19444

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:27:50 +00:00
Christian Brabandt 06a604dc8e runtime(doc): Mention xdg.vim in version9.txt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:24:40 +00:00
Andrey Butirsky 4f04efb760 patch 9.2.0019: Hard to configure Vim according to full XDG spec
Problem:  Hard to configure Vim according to full XDG spec
Solution: Include the $VIMRUNTIME/xdg.vim script as an example.
          (Andrey Butirsky).

closes: #19421

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Andrey Butirsky <butirsky@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 21:14:24 +00:00
Aliaksei Budavei dbd924f6a0 runtime(syntax-tests): Fail when executable syntax tests are found
The input files with syntax test cases are never compiled or
interpreted on behalf of test runners, just read, and their
parts are rendered in accordance with syntax definitions for
associated languages, to be compared with previously vetted
renderings.  Whether their arbitrary contents will be valid
programs, benign programs, etc., is left for test authors to
decide and verify in their own environments.  As executable
and non-executable files equally qualify for testing and yet
executability is never exercised, and since maintaining
executable files turns out to be a short-lived exception
than common practice, let us persist in keeping syntax files
non-executable and enforce it with a CI check.

closes: #19433

Co-authored-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 18:35:26 +00:00
Christoffer Aasted 472f46e231 README.md: mention r/vim and #vim libera
closes: #19440

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 18:29:16 +00:00
Christoffer Aasted 392ed90a9a patch 9.2.0018: high cpu usage with Wayland compositor
Problem:  High cpu usage with Wayland compositor
          (lilydjwg, after v9.2.0010).
Solution: Partly revert patch v9.2.0010 for now
          (Christoffer Aasted)

fixes:  #19448
closes: #19451

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 18:13:18 +00:00
Yasuhiro Matsumoto 95e8faa24f patch 9.2.0017: popup: cannot allow to specify transparency
Problem:  popup: Popup windows do not support a transparency setting.
Solution: Add the "opacity" option to popup windows to support
          transparency when using the GUI or 'termguicolors'
          (Yasuhiro Matsumoto).

closes: #19272

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 18:09:45 +00:00
Shane Harper 515da6ecdb runtime(less.sh): simplify the script and avoid startup messages
closes: #19445

Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 17:30:27 +00:00
Yasuhiro Matsumoto 6c203072fe patch 9.2.0016: popup border not redrawn correctly with wide chars
Problem:  When a popup window's border overwrites part of a wide
          character from another popup, the remaining half loses its
          original attribute (background color) because it is reset to 0.
Solution: Modify screen_line(), screen_puts_len(), and screen_fill() to
          preserve the existing ScreenAttrs value when clearing wide
          character boundaries. Also ensure background data is refreshed
          for transparent popup cells (Yasuhiro Matsumoto).

closes: #19299

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 17:19:42 +00:00
Christian Brabandt 89712b9f0e runtime(ccomplete): handle structs from tags file
fixes: #7292

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-18 17:39:01 +01:00
தமிழ் நேரம் b8b7df29c4 translation(ta): Update Tamil Translation
closes: #19435

Signed-off-by: தமிழ் நேரம் <67970539+TamilNeram@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-17 19:57:55 +00:00
Foxe Chen b3e5789521 patch 9.2.0015: Vim gets confused by OSC handling
Problem:  Vim gets confused by OSC handling, causing Vim to start in
          search mode (Shane Harper, after v9.1.1703)
Solution: In handle_mapping(), check if we are handling OSC sequences
          and if yes go straight to check_termcode() (Foxe Chen)

fixes:  #19426
closes: #19435

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 22:26:57 +00:00
Hirohito Higashi 823f4f12b8 proto: make proto doesn't handle bool type correctly
closes: #19436

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 22:20:50 +00:00
Andrey Butirsky 9ebb666b8c runtime(doc): Update runtimepath default locations
Stop mentioning "home directory" in the rtp search locations 1. and 5.,
which is incorrect in case of XDG scheme. $MYVIMDIR is correct, so use
this instead.

closes: #19438

Signed-off-by: Andrey Butirsky <butirsky@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 22:18:39 +00:00
Yasuhiro Matsumoto 46e3978f73 patch 9.2.0014: unsafe string functions may lead to buffer overflows
Problem:  Unsafe string functions may lead to buffer overflows
Solution: Use vim_strncpy() instead of strpcy(), replace sprintf() by
          vim_snprintf() (Yasuhiro Matsumoto)

closes: #19412

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 22:03:29 +00:00
Jan Palus c4b8783970 patch 9.2.0013: parallel make invocation may break Wayland header generation
Problem:  parallel make invocation may break Wayland header generation
Solution: Use single make target to generate Wayland protocol files.
          (Jan Palus)

$(WAYLAND_SRC) contains up to 4 files which, given right timing and
parallelization level, can spawn 4 independent `make` processes during
parallel build. Each process generates same set of files intermittently
leading to inconsistent results. Instead use one common target each
source file depends on.

fixes:  #19419
closes: #19420

Signed-off-by: Jan Palus <jpalus@fastmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 21:48:45 +00:00
Christoffer Aasted 4255ba7ff4 patch 9.2.0012: Build fails when wayland is not defined
Problem:  Build fails when wayland is not defined
          (fjaell, after v9.2.0010)
Solution: Add ifdef GDK_WINDOWING_WAYLAND
          (Christoffer Aasted)

fixes:  #19429
closes: #19428

Signed-off-by: Christoffer Aasted <chr.aasted@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 21:39:57 +00:00
Christian Brabandt 0e57151c18 patch 9.2.0011: A few double semicolons after statement
Problem:  A few double semicolons after statement
Solution: Remove those, add a codestyle test

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-16 21:32:29 +00:00
Hirohito Higashi 48677d7747 runtime(doc): Update version9.txt, update the description of getwininfo()
closes: #19424

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 18:11:45 +00:00
zeertzjq e2473fe438 Fix a few more typos in various files
closes: #19427

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 18:03:37 +00:00
Andrey Butirsky ac1d379f3b runtime(doc): correct XDG runtimepath
There is no `/after` directory.

closes: #19431

Signed-off-by: Andrey Butirsky <butirsky@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 18:01:29 +00:00
Christoffer Aasted ac9426bf54 patch 9.2.0010: Using Wayland compositor is still slow
Problem:  Using the Wayland backend in GTK, rendering remains slow due
          to per-line redraws, unnecessary Cairo push/pop groups, and
          scroll operations that allocate new surfaces repeatedly.
Solution: Improve rendering performance (Christoffer Aasted).

This commit does the following:
- Add gui.is_wayland to detect Wayland backend
- Avoid blocking the input loop
- Skip early redraws; let the compositor handle full-screen redraws
- Use CAIRO_OPERATOR_SOURCE to overwrite instead of blend
- Reuse scroll source region for destination scroll region
- Optimize fast scroll-up
- Remove cairo_push_group/pop_group and cairo_clip in scroll path
  to reduce allocations (~50MB saved on 4K fractional scale)

Since Wayland redraws the entire screen between updates (unlike X11),
further performance gains are possible by batching drawing in other code
paths, e.g.:
- message.c: batch lines to avoid scroll
- term.c: batch terminal redraws

These could be refactored later to deferred redraw with Wayland.

closes: #19062

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 17:27:24 +00:00
Christian Brabandt 9308c85a7e patch 9.2.0009: tests: test_cindent are not ordered
Problem:  tests: the tests test_cindent_* functions were numbered
          inconsistently, causing them to be executed in wrong order.
Solution: Rename the test_cindent functions with zero-padded numbers.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:41:34 +00:00
Mao-Yining abac1c1aa6 runtime(zip): use system() instead of :!
- ':!' is not stable, so use system() to get more consistent behaviour.
- Only warns when using 'pwsh'.
- Remove trailing spaces.

closes: #19370

Co-Authored-by: @lxhillwind
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:36:29 +00:00
Char 13223921e0 patch 9.2.0008: MS-Windows: font size calculation may be wrong
Problem:  MS-Windows: font size calculation may be wrong when font does
          not specify a valid ascent value. (Char, after v9.1.2129)
Solution: Calculate ascent as a ratio of ascent to total font height
          with a fallback if metrics are zero.

Fallback to default value when font does not specify ascent value.

As proposed in https://github.com/vim/vim/pull/19318#issuecomment-3864669253

related: #19318
closes:  #19367

Signed-off-by: Char <peacech@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:27:52 +00:00
Anttoni Erkkilä 9af18686c7 patch 9.2.0007: cindent: recognizing labels within commented lines
Problem:  Comment lines which start like a label are recognized as a
          label and indented based on that.
Solution: Check if the position is in a comment after recognizing a label
          in cin_islabel (Anttoni Erkkilä)

closes: #19397

Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:21:15 +00:00
Peter Lustig 20b2365c5f patch 9.2.0006: powershell commands wrongly wrapped when executed
Problem:  powershell commands wrongly wrapped when executed
Solution: Use &{ ... } to wrap commands when powershell/pwsh is in use
          (Peter Lustig).

Allow compound commands with 'system()' when 'shell' is 'pwsh'

When the 'shell' option was set to 'powershell' or 'pwsh' and the
'system()' vimscript function was called with an argument containing two
or more shell commands (delimited by ';' or '&'), the function would
always fail with 'E282'.

The cause of the error was that VIM would wrap the shell command string
with parentheses (to allow the entire output to be redirected to a
temporary file for capturing) before actually passing it to the
PowerShell process for execution.

Unlike the typical shell that uses parentheses to group commands (and
possibly spawn a subshell), PowerShell uses them to resolve a single
command (pipeline) to an expression. To group multiple commands with
PowerShell, you must instead wrap them with either the subexpression
operator '$(...)' or an immediately evaluated script block '& { ... }'.
The latter option may be more efficient since it does not buffer its
output like for the former one does.

closes: #19401

Signed-off-by: Peter Lustig <tiamatX18@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:14:11 +00:00
Christian Brabandt e0b10ce95a patch 9.2.0005: Coverity reports unreachable code
Problem:  Coverity reports unreachable code, CID: 1681310
Solution: Drop the ternary checking for non-NULL of from_encoding_raw.

closes: #19402

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:07:27 +00:00
Radu Dineiu 0435abfaa1 runtime(fstab): Add cgroup2 to valid device types
closes: #19403

Signed-off-by: Radu Dineiu <radu.dineiu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:05:41 +00:00
Amelia Clarke 4a5c1601bc runtime(hare): update syntax script for Hare 0.26.0
closes: #19398

Signed-off-by: Amelia Clarke <selene@perilune.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 16:04:14 +00:00
Peter Kenny 3794d9b33c runtime(vim): Error codes should not be highlighed with vim9CommentTitle
closes: #19390

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 15:59:36 +00:00
Miguel Barro a2d87ba615 runtime(netrw): Use right file system commands initialization for Windows
closes: #19287
fixes:  #12290

Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 15:51:27 +00:00
zeertzjq 8b81a6b6e1 patch 9.2.0004: Changing hidden prompt buffer cancels :startinsert/:stopinsert
Problem:  Changing hidden prompt buffer cancels :startinsert/:stopinsert
          (after 9.0.1439).
Solution: Don't change mode for a prompt buffer in an autocommand
          window (zeertzjq).

closes: #19410

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 15:38:19 +00:00
Christian Brabandt 9f76adeed8 patch 9.2.0003: tests: invalid indent in message.c
Problem:  tests: invalid indent in message.c
          (after: v9.2.0002)
Solution: Use tabs for indent

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 15:35:37 +00:00
Christian Brabandt 93f05b6d4c Makefile: dosrt target fails because of duplicate lang directories
Problem:  Makefile: dosrt target fails because of duplicate lang directories
Solution: Rename the parent lang/ directory to readme/

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 15:31:26 +00:00
Bozhidar Batsov c68e64dac3 runtime(sh): fix spurious nextgroup=shComment on shEscape
Remove `nextgroup=shComment` from the `shEscape` syntax pattern.
This was causing `#` characters after escape sequences inside
double-quoted strings to be misinterpreted as comments, breaking
highlighting for the rest of the file.

Add a test case for escaped characters followed by # in double quotes.

fixes:  #19053
closes: #19414

Signed-off-by: Bozhidar Batsov <bozhidar@batsov.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 14:53:55 +00:00
Yasuhiro Matsumoto 76826c24df patch 9.2.0002: str2specialbuf() can be improved
Problem:  str2specialbuf() can be improved
Solution: Optimize str2specialbuf function in message.c
          (Yasuhiro Matsumoto)

closes: #19415

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 14:50:35 +00:00
mikoto2000 4cae20c47a README: Updated version from 91 to 92 in various READMEs
closes: #19404

Signed-off-by: mikoto2000 <mikoto2000@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 14:30:07 +00:00
Christian Brabandt 73a6e8dd20 patch 9.1.0001: tests: Test_popup_setbuf() fails
Problem:  tests: Test_popup_setbuf fails, because the dump file contains
          a reference to Vim version 9.1 (after v9.2.0000)
Solution: Replace Version number by 9.1 always.

closes: #19406

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-15 14:22:29 +00:00
Yee Cheng Chin 4c57525b3b Merge remote-tracking branch 'vim/master' 2026-02-14 22:17:45 -08:00
Christian Brabandt e7e21018fc patch 9.2.0: Need a new Vim release
Problem:  Need a new Vim release
Solution: Release Vim 9.2 🎉

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-14 15:19:10 +00:00
Christian Brabandt 75541da4c7 runtime(doc): Update todo.txt and remove solved issues
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-14 10:19:14 +00:00
Christian Brabandt 48cee53615 runtime(doc): Clarify :bd behaviour
closes: #19389

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 20:53:49 +00:00
Christian Brabandt c5f312aad8 patch 9.1.2148: [security]: Buffer overflow in netbeans interface
Problem:  [security]: Buffer overflow in netbeans special_keys() handling
Solution: Limit writing to max KEYBUFLEN bytes to prevent writing out of
          bounds.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-9w5c-hwr9-hc68

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 18:53:44 +00:00
Bozhidar Batsov b8f58dd699 runtime(doc): Fix typos in version9.txt
closes: #19392

Signed-off-by: Bozhidar Batsov <bozhidar@batsov.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 16:17:22 +00:00
TG 10f5573672 runtime(systemverilog): use correct matchit pattern for the covergroup block
A covergroup start with the "covergroup" keyword and ends with the
"endgroup" keyword. "group" is not even a reserved keyword in systemverilog.

Reference:
https://www.chipverify.com/systemverilog/systemverilog-covergroup-coverpoint#covergroup
https://github.com/MikePopoloski/slang/blob/master/docs/grammar.md#covergroup_declaration

closes: #19393

Signed-off-by: TG <tarik.graba@telecom-paris.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 16:14:27 +00:00
Bozhidar Batsov b2d11a9de2 runtime(doc): Fix typos in markdown READMEs
closes: #19394

Signed-off-by: Bozhidar Batsov <bozhidar@batsov.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 16:08:24 +00:00
Doug Kearns dcc4175284 runtime(go,gleam): Remove 'formatprg' from ftplugins
Effective use of 'formatprg' requires both an understanding of the
specific capabilities of the formatting tool and Vim's formatting
commands.  This is overly burdensome for some users.

Rather than address each complaint on a filetype by filetype basis,
remove 'formatprg' settings from all ftplugins.

It is expected that formatter plugins will be available in the near
future as a better solution. See #17145 (Add "formatter" feature using
"compiler" as a template).

Note: 'formatprg' will be removed from older ftplugins after the release
of Vim 9.2. The setting was added to the go and gleam ftplugins during
the current development cycle and have not been included in a Vim
release.

See: #18650 (rust.vim: stop setting formatprg to rustfmt)

closes: #19108

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 16:05:17 +00:00
Bozhidar Batsov a39d7c2617 runtime(sudoers): highlight usernames with hyphens, digits, underscores
The username/group/netgroup patterns used \l\+ which only matched
lowercase letters. Linux usernames commonly contain hyphens, digits,
and underscores (e.g. www-data, deploy01, test_user).

Update the pattern to \l[-a-z0-9_]* to allow matching the additional
characters "-_" and numbers.

fixes:  #18963
closes: #19396

Signed-off-by: Bozhidar Batsov <bozhidar@batsov.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 15:49:02 +00:00
Doug Kearns 9fe5a1d552 runtime(doc): Use ellipses for overlength example comments at :help vim9.txt
Use ellipses, matching the file's general style, rather than hard
truncation of overlength tail comments in examples.

closes: #19298

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 15:42:42 +00:00
DuckAfire 1cf38bfebe runtime(css): Add missing numeric units
- Add missing numeric units to css syntax script
  (baseline 2015, 2020, 2022, 2023, 2026):
    dvb, dvh, dvi, dvmax, dvmin, dvw ic,
    lvb, lvh, lvi, lvmax, lvmin, lvw, svb, svh,
    svi, svmax, svmin, svw, vb, vi, x, cap, lh,
    rlh, rcap, rch, rex, ric

closes: #19325

Signed-off-by: DuckAfire <155199080+duckafire@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 09:04:21 +01:00
Julio B 776b070006 installman: Update the sed patterns in installman.sh
Problem: Installing man pages does not change the placeholder file paths
Solution: Update the sed patterns in installman.sh

Additionally we remove the sed command to update the path to the ps Vim
files for those reasons:
- All the postscript files were moved to the print/ subdirectory in
  Commit e37d50a
- the sed command was wrongly quoting $vimloc so would wrongly try to
  search for the literal value $vimloc instead of using the expanded
  value.

related: ce6fe84db2
closes:  #19382

Signed-off-by: Julio B <julio.bacel@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 08:50:52 +01:00
John Marriott 388654af27 patch 9.1.2147: Compile warning in strings.c
Problem:  Compile warning in strings.c
Solution: Use const qualifier (John Marriott).

closes: #19387

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 08:45:29 +01:00
Peter Kenny 9bf9d436ce runtime(doc): various netrw related corrections
closes: #19391

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 08:29:30 +01:00
Stefan VanBuren fb5777fa20 patch 9.1.2146: filetype: cel files are not recognized
Problem:  filetype: cel files are not recognized
Solution: Detect *.cel files as cel filetype (Stefan VanBuren).

Reference:
https://cel.dev/
https://github.com/google/cel-java/blob/e36c49febc36bcb16ef4f07274fcc8873c1eee59/testing/src/test/resources/expressions/coverage_test_case/simple_expression.cel
https://github.com/elastic/mito/blob/d0d2dbabae5c563dd943c61fd52992acb655942d/example.cel

closes: #19381

Signed-off-by: Stefan VanBuren <svanburen@buf.build>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-12 18:25:59 +01:00
Johnothan King 56033b9df3 runtime(sh): Fix some ksh-specific deficiencies in syntax script
- Amend syntax highlighting to allow for ksh93 discipline function names
  (e.g. 'foo.get()') and mksh's odd function naming idiosyncrasies
  (shNamespaceOne was introduced to enforce stricter naming rules for
  ksh93 namespaces).
- Remove 'bind' from ksh93 syntax (such a builtin has never been
  implemented in ksh93).
- 'xgrep' is only available in ksh93v- as an alternative way to
  invoke the builtin 'grep -X', so reflect that in the syntax
  highlighting.
- Forbid bash-style 'function name() {' syntax when highlighting
  ksh88 and ksh93 scripts.
- Fix bug causing ' ()' to be incorrectly validated in mksh scripts.
- Add the many ksh93/ksh2020 .sh.* variables to the list of special
  variables.
- Amend iskeyword to allow '.' so that '.sh.tilde.get' and such are
  valid function names/variable names. (For mksh functions starting
  with odd characters like '%' and '@' this would probably have too
  many bad side effects, so I've omitted such a change for that shell.)
- Add new syntax tests and regenerate syntax dump files

closes: #19383

Signed-off-by: Johnothan King <johnothanking@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-12 18:18:44 +01:00
Fionn Fitzmaurice 04c3c6871e runtime(sshdconfig): Update syntax
We add new key exchange algorithms and new enums for PubkeyAuthOptions.

We also add new keywords from sshd_config.5 not present here and remove
keywords present here that are not present in the official
documentation, with the exception of those patched in by Debian and
Fedora, as well as ChallengeResponseAuthentication which is deprecated
but still functional.

closes: #19347

Signed-off-by: Fionn Fitzmaurice <git@fionn.computer>
Signed-off-by: Jakub Jelen <jakuje@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-12 18:13:37 +01:00
Ross Burton 08c4a7faff patch 9.1.2145: intstalltutor Makefile target does not create the tutor/sv dir
Problem:  intstalltutor Makefile target does not create the tutor/sv dir
Solution: Add the missing mkdir() calls to the Makefile (Ross Burton)

The installtutor target doesn't explicitly create the Swedish directory
that it is going to put files into:

  make[1]: Entering directory 'vim-9.1.2128/src'
  /bin/sh install-sh -c -d DESTDIR/usr/share/vim/vim91
  chmod 755 DESTDIR/usr/share/vim/vim91
  /bin/sh install-sh -c -d DESTDIR/usr/share/vim/vim91/tutor/en
  chmod 755 DESTDIR/usr/share/vim/vim91/tutor/en
  /bin/sh install-sh -c -d DESTDIR/usr/share/vim/vim91/tutor/sr
  chmod 755 DESTDIR/usr/share/vim/vim91/tutor/sr
  /bin/sh install-sh -c -d DESTDIR/usr/share/vim/vim91/tutor/it
  chmod 755 DESTDIR/usr/share/vim/vim91/tutor/it
  /bin/sh install-sh -c -d DESTDIR/usr/share/vim/vim91/tutor/ru
  chmod 755 DESTDIR/usr/share/vim/vim91/tutor/ru
  cp ../runtime/tutor/README* ../runtime/tutor/tutor* DESTDIR/usr/share/vim/vim91/tutor
  cp ../runtime/tutor/en/* DESTDIR/usr/share/vim/vim91/tutor/en/
  cp ../runtime/tutor/it/* DESTDIR/usr/share/vim/vim91/tutor/it/
  cp ../runtime/tutor/ru/* DESTDIR/usr/share/vim/vim91/tutor/ru/
  cp ../runtime/tutor/sr/* DESTDIR/usr/share/vim/vim91/tutor/sr/
  cp ../runtime/tutor/sv/* DESTDIR/usr/share/vim/vim91/tutor/sv/
  cp: target 'DESTDIR/usr/share/vim/vim91/tutor/sv/': No such file or directory

Add the missing dependency on $(DEST_TUTOR)/sv to ensure this directory
is created.

closes: #19385

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-12 17:52:06 +01:00
tecis b27934bf8b runtime(django): add syntax support for partial
Add djangoStatement integrated in version 6. 'partialdef',
'endpartialdef', 'partial'.

[Template Reference: partial](https://docs.djangoproject.com/en/6.0/ref/templates/builtins/#partial)((introduced in Django 6.0)
and 'filter'.

closes: #19386

Signed-off-by: tecis <67809811+tecis@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-12 17:46:54 +01:00
Aliaksei Budavei 238b0b0587 tests(commondumps): Mark and fold lines in screendump views
- Dynamically set mark "`" to pair disparate lines and
  initially set marks "`a", "`b", etc. for as many lines in
  the difference part.  Note that users are free to delete
  or change any set alphabetic marks without it affecting
  the dynamic updating of mark "`"; alphabetic marks only
  serve to help with arriving at "summary" lines, e.g.
  "`a````".
- Create a fold for the difference part (but defer to users
  the closing of it) so that disparate lines that fit real
  estate can be viewed at the same time, as an alternative
  to the builtin "s" keystroke that swaps top and bottom
  parts in place.
- Fold and mark lines with the "git difftool" extension too.

closes: #19380

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-10 22:55:36 +01:00
thinca 92053449d4 runtime(vimgoto): Fix gf in Vim script
Problem: `gf` in Vim script fails if multiple target files exist.
Solution: Use globpath() which returns an array.

In a Vim script, `gf` on `some#func()` will jump to `autoload/some.vim`.
In this case, if there are multiple `autoload/foo.vim`s in
'runtimepath', `globpath(&runtimepath, path)` will return multiple
paths, separated by newlines.
As a result, the second and subsequent paths will be executed as
commands in `autoload/vimgoto.vim:195`, causing an error.
This change fixes this issue by making the result of `globpath()` an
array.

closes: #19379

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-10 22:52:58 +01:00
Aliaksei Budavei 36f4498710 runtime(java): Allow for org.TopLevelType<T>.NestedType return types
closes: #19349

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-10 22:48:57 +01:00
Hirohito Higashi 61e96c5a95 runtime(doc): Fix typo in runtime/doc/cmdline.txt
closes: #19378

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-10 22:46:22 +01:00
Doug Kearns 5ed37232bb runtime(ruby): Update for Vim 9.2 release
closes: #19316

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-10 14:12:22 +01:00
Christian Brabandt 9e456e52df runtime(doc): clarify the use of 'iskeyword' option value
In particular, also mention the difference between the regex atom \k and
what Vim considers for a word character.

closes: #18688

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 20:51:58 +00:00
Paul Ollis 55c12373f0 patch 9.1.2144: garbage collection may invalidate the recorded buffer changes
Problem:  When garbage collection runs, the list of recorded buffer
	  changes may be incorrectly freed (Sainnhe Park).
Solution: In garbage_collect(), iterate through all buffers and call
          set_ref_in_list() for b_recorded_changes to ensure the list
          and its contents are marked as reachable (Paul Ollis).

fixes:  #19300
closes: #19375

Signed-off-by: Paul Ollis <paul@cleversheep.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 19:32:51 +00:00
Christian Brabandt 52507a733f runtime(doc): Mark 'scrollfocus' as non-functional
related: #19368

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 19:21:47 +00:00
Yasuhiro Matsumoto 6ffe020b91 patch 9.1.2143: wrong rendering of popups when overlapping wide char
Problem:  When a popup window partially overlaps a wide character
          it results in truncated or garbage display.
Solution: When a wide character is partially blocked by a popup, clear both
          cells in the screen buffer to prevent garbage (Yasuhiro Matsumoto).

closes: #19271

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 19:08:24 +00:00
Mao-Yining 18dd63808c patch 9.1.2142: MS-Windows: mouse scroll events not handled for popups
Problem:  MS-Windows: mouse scroll events not handled for popups
Solution: Do not return early (Mao-Yining)

Ensure mouse wheel events on popup windows are properly processed by
sending the corresponding key messages. Previously, early returns
prevented normal event flow, causing popup windows to ignore scroll
input.

fixes:  #19353
closes: #19369

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 18:49:48 +00:00
Daniel Nylander 2e9db8fa9c runtime(doc): add Swedish entries to Make_all.mak, add conversion rule to Makefile
closes: #19373

Signed-off-by: Daniel Nylander <po@danielnylander.se>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-09 18:35:43 +00:00
Chris Aumann 4442ac53f7 runtime(nginx): Update nginx syntax script
closes: #19374

Signed-off-by: Chris Aumann <me@chr4.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-08 21:24:53 +00:00
Josef Schönberger e92998ea4d runtime(nginx): highlight Lua in set_by_lua_block in syntax script
The set_by_lua_block directive of the Lua module takes an additional
variable as an argument which currently breaks the detection of inline
Lua blocks. For example:

    set_by_lua_block $myvar {
        return tonumber(ngx.var.myothervar)-1
    }

closes: #19362

Signed-off-by: Josef Schönberger <josef.schoenberger@tum.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-08 21:19:20 +00:00
Yasuhiro Matsumoto 60e93b5de7 patch 9.1.2141: Truncation when serializing libsodium encryption parameters
Problem:  Truncation when serializing libsodium encryption parameters.
Solution: Correctly cast to long long type (Yasuhiro Matsumoto).

fixes:  #19248
closes: #19357

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-08 21:07:42 +00:00
Doug Kearns b422a33ac2 runtime(gdb): Update syntax and ftplugin
- Change syntax file maintainer.
- Add Guile and Python command highlighting.
- Update command list to version 12.
- Add foldable regions for the commands 'define', 'if' and 'while'
  multiline commands.
- Support documented partial command names.
- Add matchit, browsefilter, and comment formatting support.
- Support embedded C in compiler {code|print} commands.
- Add largely complete settings highlighting and folding.
- Add syntax tests (incomplete).

Thanks to Claudio Fleiner for many years of maintenance.

closes: #10649

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-08 20:51:47 +00:00
Anton Malinskiy 542d6ec4fb translation(ru): Update Russian translation and fix typos in tutor
closes: #19359

Signed-off-by: Anton Malinskiy <anton@malinskiy.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 22:00:32 +00:00
Aliaksei Budavei f0b8b2c32a Revert "CI: Manage multibyte characters in syntax tests"
This reverts commit 0fde6aebdd.

With "v9.1.2134" applied, arbitrary multibyte characters are
not replaced with spurious U+FFFD characters (typically when
the host system is under load); U+FFFD characters that are
intentionally written in an input file continue to remain
present for later output and comparison.  The workaround of
"v9.1.1592~3" is no longer necessary.

Also prefer "page_nr" to "nr" in syntax/testdir/runtest.vim

closes: #19348

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 15:48:33 +00:00
Christian Brabandt 35c428b02c patch 9.1.2140: tests: Test_wayland_protocol_error_overflow() fails
Problem:  tests: Test_wayland_protocol_error_overflow() fails
          (after v9.1.2139)
Solution: try/catch the expected error

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 15:44:10 +00:00
Mao-Yining 27630b28ad runtime(python3complete): remove trailing white space
related: #19354

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 15:30:19 +00:00
Mao-Yining d15c718038 runtime(compiler): fix space escape in pyright
closes: #19354

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 15:28:02 +00:00
Christian Brabandt 2498a460e2 patch 9.1.2139: Buffer overflow in :wlrestore command
Problem:  Buffer overflow in :wlrestore command, caused by assuming
          wrong buffer length in vwl_log_handler() (Seungyeon Park)
Solution: Use correct buffer size (512 bytes) in vim_vsnprintf()
          to properly truncate long messages.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 15:11:29 +00:00
Ingo Karkat abb4d74033 patch 9.1.2138: win_execute() and 'autochdir' can corrupt buffer name
Problem:  With 'autochdir' win_execute() can corrupt the buffer name,
          causing :write to use wrong path.
Solution: Save and restore b_fname when 'autochdir' is active
          (Ingo Karkat).

This is caused by a bad interaction of the 'autochdir' behavior,
overriding of the current directory via :lchdir, and the temporary
window switching done by win_execute(), manifesting when e.g. a custom
completion inspects other buffers:
1. In the initial state after the :lcd .. we have curbuf->b_fname =
   "Xsubdir/file".
2. do_autochdir() is invoked, temporarily undoing the :lcd .., changing
   back into the Xsubdir/ subdirectory.
3. win_execute() switches windows, triggering win_enter_ext() →
   win_fix_current_dir() → shorten_fnames(TRUE)
4. shorten_fnames() processes *all* buffers
5. shorten_buf_fname() makes the filename relative to the current
   (wrong) directory; b_fname becomes "file" instead of "Xsubdir/file"
6. Directory restoration correctly restores working directory via
   mch_chdir() (skipping a second do_autochdir() invocation because
   apply_acd is FALSE), but b_fname remains corrupted, with the
   "Xsubdir/" part missing.
7. expand("%:p") (and commands like :write) continue to use the
   corrupted filename, resolving to a wrong path that's missing the
   "Xsubdir/" part.

To fix the problem the short filename is saved if its in effect (i.e.
pointed to by curbuf->b_fname) and 'autochdir' happened. It's then
restored in case of a local cwd override. The conditions limit this
workaround to when 'autochdir' is active *and* overridden by a :lchdir.

closes: #19343

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Ingo Karkat <swdev@ingo-karkat.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 10:41:32 +00:00
Kevin Goodsell a24cb278bd patch 9.1.2137: test: Update tests for OpenBSD
Problem:  Some tests are not valid on OpenBSD.
Solution: Add CheckNotOpenBSD, use it to skip certain tests
          (Kevin Goodsell).

Test_readdirex_sort performs locale-dependent sorting. OpenBSD has
minimal locale support.

Test_stdin_no_newline hangs on OpenBSD and FreeBSD. I don't know exactly
why, but it may be due to bash not exiting at the end of the test. This
is skipped in the FreeBSD CI runs because bash is not installed.

Test_detect_fifo uses /dev/fd/ files (via process substitution) as
FIFOs. On OpenBSD the files in /dev/fd are not FIFOs.

closes: #19351

Signed-off-by: Kevin Goodsell <kevin-opensource@omegacrash.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 10:30:33 +00:00
zeertzjq 6da9f757c4 patch 9.1.2136: :tab sbuffer may close old tabpage
Problem:  :tab sbuffer may close old tabpage if BufLeave autocommand
          splits window (after 9.1.0143).
Solution: Only close other windows if the buffer will be unloaded
          (zeertzjq).

related: neovim/neovim#37749
closes: #19352

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 10:23:41 +00:00
Christian Brabandt 7ccb81bdb6 runtime(tar): Make the path traversal detection more robust
closes: #19341

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-07 10:12:34 +00:00
Kalin KOZHUHAROV f73bd2546e runtime(doc): clarify term_cols allowed range in terminal.txt
Patch 9.0.1527 (related issue: vim/vim#12362) introduced range checking
for `term_cols` parameter of the various terminal related functions, but
did not update the documentation. This is the fix, hopefully I found
everything that mentions is. Also improve the style for `term_rows` to
match.

Code reference ( https://github.com/vim/vim/blob/master/src/job.c#L456 ):
	if (opt->jo_term_cols < 0 || opt->jo_term_cols > 1000)

closes: #19346

Signed-off-by: Kalin Kozhuharov <kalin@thinrope.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 14:55:12 +00:00
Daniel Nylander db4ff9a407 runtime(doc): Add Swedish to help-translated list
Swedish Vim documentation is available at:
https://github.com/yeager/vimdoc-sv
https://www.vim.org/translations.php

Translated by Daniel Nylander.

closes: #19344

Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 14:44:18 +00:00
Christian Brabandt b677aded59 runtime(doc): Remove Swedish translation help.svx
The translation file should not be included with Vims runtime files.
Translated help files should be made available via a separate project,
like what has been mentioned here:
https://www.vim.org/translations.php

related: #19321

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 10:21:10 +00:00
Mao-Yining 422ef984b5 runtime(doc): fix pattern problem in cmdline.txt
closes: #19322

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 10:19:55 +00:00
Kevin Goodsell 18d844e365 patch 9.1.2135: tests: tar plugin does not consider 'nowrapscan'
Problem:  search() is used to check for the message from tar that
          indicates leading slashes found in the tar archive, or to
          check for the leading slashes themselves. However, if
          'nowrapscan' is in effect these searches are limited to the
          last line and don't find any results. This causes the warning
          message from tar to be seen in the buffer, the "Path Traversal
          Attack Detected" message to be omitted, and editing actions
          can fail. This can be seen, for example, when editing
          src/testdir/samples/evil.tar.
Solution: Use the 'w' flag for search() (Kevin Goodsell)

closes: #19333

Signed-off-by: Kevin Goodsell <kevin-opensource@omegacrash.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 10:08:22 +00:00
CatsDeservePets 56d470a008 runtime(lf): update syntax to support lf version r41
Also, mark @CatsDeservePets as maintainer.

closes: #18640

Signed-off-by: CatsDeservePets <145048791+CatsDeservePets@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 09:55:53 +00:00
zeertzjq b24a1d9291 patch 9.1.2134: Terminal doesn't handle split UTF-8 sequence after ASCII
Problem:  Terminal doesn't handle split UTF-8 sequence after ASCII.
Solution: Only use one UTF-8 encoding state per vterm state (zeertzjq).

fixes:  #16559
closes: #18640

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 09:48:20 +00:00
Amelia Clarke de5d100c2f runtime(hare): update to match upstream
closes: #18640

Signed-off-by: Amelia Clarke <selene@perilune.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 09:44:56 +00:00
zeertzjq 21d591fb12 patch 9.1.2133: Another case of buffer overflow with 'helpfile'
Problem:  Another case of buffer overflow with 'helpfile'.
Solution: Leave room for "tags" in the buffer (zeertzjq).

closes: #19340

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-06 09:37:58 +00:00
Christian Brabandt 0714b15940 patch 9.1.2132: [security]: buffer-overflow in 'helpfile' option handling
Problem:  [security]: buffer-overflow in 'helpfile' option handling by
          using strcpy without bound checks (Rahul Hoysala)
Solution: Limit strncpy to the length of the buffer (MAXPATHL)

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-5w93-4g67-mm43

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-05 19:01:12 +00:00
Emir SARI 8bd1b7c51e translation(tr): Update Turkish translations
closes: #19334

Signed-off-by: Emir SARI <emir_sari@icloud.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 17:24:53 +00:00
zeertzjq 91ec2c3ba8 CI: update FreeBSD runner to 15.0
closes: #19336

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 17:19:28 +00:00
zeertzjq 991434d8df patch 9.1.2131: tests: Test_diff_screen() fails on BSD
Problem:  tests: Test_diff_screen() fails on BSD
Solution: Use gdiff on BSD systems if available (zeertzjq).

related: #19336

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 17:18:29 +00:00
Christian Brabandt 1cac0a5755 translation(sv): Remove duplicates from [g]vim.desktop.in
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 16:44:49 +00:00
Lifepillar bf18b5eb7b runtime(context): fix issue with SyncTeX and update command
Remove `--nonstopmode` because (a) ConTeXt always stops anyway, and (b)
`--nonstopmode` disables SyncTeX unconditionally. Add `--paranoid`,
which prevents the command to descend to `..` and `../..`.

Pass the typesetting command only the name of the input file rather than
its full path, as that is more compatible with ConTeXt's syncing
mechanism.

closes: #19323

Signed-off-by: Lifepillar <lifepillar@lifepillar.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 16:31:05 +00:00
Mao-Yining 03b42b2926 runtime(doc): add note for -complete=shellcmdline
closes: #19330

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 16:21:40 +00:00
zeertzjq a8ce914db1 patch 9.1.2130: Page scrolling in Insert mode beeps
Problem:  Page scrolling in Insert mode beeps (after 9.1.0211).
Solution: Fix incorrect return value of pagescroll(). Also invert the
          return value of scroll_with_sms() to be less confusing and
          match comments (zeertzjq).

fixes:  #19326
closes: #19327

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 15:51:01 +00:00
Arkissa 61044eb536 runtime(haskellcomplete): fix Undefined variable b:completingLangExtension.
closes: #19259

Signed-off-by: Arkissa <mrarkssac@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 15:45:05 +00:00
Yasuhiro Matsumoto b46594eefb patch 9.1.2129: MS-Windows: font size calculation slightly wrong, causing line gaps
Problem:  MS-Windows: font size calculation slightly wrong, causing
          vertical line gaps (Maxim Kim, after v9.1.2127)
Solution: Update font size calculation when using DirectX
          (Yasuhiro Matsumoto).

Use pre-calculated font ascent from font metrics instead of fixed
formula (h * 0.83) to calculate text baseline. This prevents vertical
text shift when font fallback occurs with CJK characters.

closes: #19318

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 15:32:36 +00:00
Christian Brabandt 1ff963e15c runtime(doc): Update version9.txt with numbered patches
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-04 15:07:40 +00:00
Mateo Gjika 4b83d5ca76 runtimei(vim9): Always launch programs in background (linux)
closes: #19293

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 15:24:26 +00:00
தமிழ் நேரம் ac8e08c6aa translation(ta): Include Tamil Translation
closes: #19312

Signed-off-by: தமிழ் நேரம் <67970539+TamilNeram@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 15:21:41 +00:00
Sean Dewar 392b428d12 patch 9.1.2128: Heap use after free in buf_check_timestamp()
Problem:  heap UAF if autocommands from reloading a file changed outside
          of Vim wipe its buffer.
Solution: Validate the bufref after buf_reload (Sean Dewar)

closes: #19317

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 15:00:12 +00:00
Mao-Yining a2e76bb8fe runtime(c): only set keywordprg when there has 'man'
closes: #19319

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 14:51:24 +00:00
Mark Woods ac5af8ecd3 runtime(vim): Fix for :VimKeywordPrg when syntax does not match
When using vim9-syntax plugin, :VimKeywordPrg does not lookup functions
correctly, as it relies solely on syntax names to find the help topic.

The syntax keyword used for builtin function is vi9FuncNameBuiltin in
vim9-syntax plugin, not vimFuncName expected by :VimKeywordPrg, so the
fallback rules apply, and there is no fallback rule for function calls.

Fix by just checking if the first char after topic is '(', and if so
assume help topic is a function.

closes: #19320

Signed-off-by: Mark Woods <mwoods.online.ie@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 14:48:58 +00:00
Daniel Nylander 0eb8e4de49 translation(sv): Update tutor1.sv to version 1.7
Updated Swedish translation of the Vim tutor from version 1.5 to 1.7.

Added missing lessons:
- Lesson 1.1.5: TEXT EDITING - APPENDING
- Lesson 1.1.6: EDITING A FILE
- Lesson 1.1 SUMMARY
- Lesson 1.2.3: ON OPERATORS AND MOTIONS
- Lesson 1.2.4: USING A COUNT FOR A MOTION
- Lesson 1.2.5: USING A COUNT TO DELETE MORE
- Lesson 1.2 SUMMARY
- Lesson 1.3.2: THE REPLACE COMMAND
- Lesson 1.3 SUMMARY
- Lesson 1.5.3: SELECTING TEXT TO WRITE (visual mode)
- Lesson 1.6: OPEN, APPEND, REPLACE, COPY/PASTE, OPTIONS
- Lesson 1.7: ONLINE HELP
- Lesson 1.8: CREATE A STARTUP SCRIPT
- Lesson 1.9: CONCLUSION

Original Swedish translation by Johan Svedberg.
Updated by Daniel Nylander.

closes: #19321

Signed-off-by: Daniel Nylander <po@danielnylander.se>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 14:44:04 +00:00
Daniel Nylander a4ee225290 translation(sv): Add Swedish translation of tutor2
Translated by Daniel Nylander.

Covers:
- Text objects (iw, aw, i[, a[, etc.)
- Named registers (a-z)
- Expression register (=)
- Numbered registers (0-9)
- Special registers (+, *, _, -)
- Marks and mark motions

related: #19321

Signed-off-by: Daniel Nylander <po@danielnylander.se>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 14:41:08 +00:00
Daniel Nylander 5c93eae7c6 translation(sv): Fix typo and help.svx formatting
- Fix typo: paranteser -> parenteser (line 240)
- Fix h j k l navigation block being too wide
- Shorten Swedish text to fit proper column width

Closes feedback from PR #18849

related: #19321

Signed-off-by: Daniel Nylander <po@danielnylander.se>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-03 14:40:47 +00:00
Christian Brabandt 093d0cb1cf runtime(doc): Clarify the behaviour of command completion functions
closes: #19294

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-02 16:55:41 +00:00
Yasuhiro Matsumoto fccd6f9b14 patch 9.1.2127: MS-Windows: DirectX renders font too small
Problem:  MS-Windows: DirectX renders font too small in comparison to
          the GDI rendering (Linwei, after v9.1.2125)
Solution: Implement proper font clipping (Yasuhiro Matsumoto)

related: #19254
closes:  #19304

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-02 10:23:27 +00:00
Maxim Kim c50be218cd runtime(odin): update indent and syntax scripts
- fix indent of a closing } after another } on previous line
- fix indent of consequent #+feature lines
- highlight #+features

closes: #19310

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-02 10:16:36 +00:00
Mao-Yining f39e7a89f3 runtime(doc): update win_findbuf() return value
[] can also seen as `list<number>`

closes: #19311

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-02 10:15:04 +00:00
Hirohito Higashi 65c5b8e7d0 patch 9.1.2126: vim --version used single column for feature list
Problem:  vim --version used single column for feature list
          (Ben Knoble, after v9.1.1898)
Solution: Restore old behaviour and assume 80 columns, making sure
          the feature list is shown in several columns
          (Ben Knoble, Hirohito Higashi).

fixes:  #19309
closes: #19315

Co-authored-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-02 10:08:10 +00:00
Doug Kearns 2e4c98b6f3 runtime(vim): Update base syntax, match Vim9 :unlet command
closes: #19290

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-01 15:03:46 +00:00
Doug Kearns 079700ee45 runtime(doc): Improve the description at :help :cwindow
Describe the "height" argument when opening the quickfix window.

See: #19302 ("[cl]window" has different behaviour from "[cl]open" about
their argument [height])

related: #19302
closes:  #19305

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-01 14:57:50 +00:00
Yasuhiro Matsumoto b39b065d6f patch 9.1.2125: MS-Windows: DirectX rendering can be improved
Problem:  MS-Windows: DirectX rendering can be improved
Solution: Use lpDx advance, fix vertical text shift and correct
          font-size calculations (Yasuhiro Matsumoto).

This changes DirectWrite rendering to:
- Respect lpDx-provided advance widths instead of always adjusting to
  cell width.
- Use a fixed baseline derived from cell geometry to prevent vertical
  shifts when font fallback occurs (e.g. with CJK characters).
- Correctly convert LOGFONT lfHeight to DirectWrite font size using font
  metrics for closer GDI compatibility.

closes: #19254

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 16:23:28 +00:00
GX 01956225bc runtime(qf): Update quickfix syntax
closes: #19296

Signed-off-by: GX <59413576+gx089@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 16:19:36 +00:00
Doug Kearns dd9f7e6cbb runtime(doc): Fix some overlength lines
closes: #19286

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 16:13:39 +00:00
Maxim Kim c99aaf4c87 runtime(colors): improve catppuccin colorscheme
- fix readability issue with IncSearch/CurSearch
- add highlights to some of ftplugins distributed with vim

closes: #19295

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 16:08:51 +00:00
Yasuhiro Matsumoto 2b184d4b97 patch 9.1.2124: blob2str() does not handle UTF-16 encoding
Problem:  blob2str() does not handle UTF-16 encoding
          (Hirohito Higashi)
Solution: Refactor the code and fix remaining issues, see below
          (Yasuhiro Matsumoto).

blob2str() function did not properly handle UTF-16/UCS-2/UTF-32/UCS-4
encodings with endianness suffixes (e.g., utf-16le, utf-16be, ucs-2le).
The encoding name was canonicalized too aggressively, losing the
endianness information needed by iconv.

This change include few fixes:

- Preserve the raw encoding name with endianness suffix for iconv calls
- Normalize encoding names properly: "ucs2be" → "ucs-2be", "utf16le" →
  "utf-16le"
- For multi-byte encodings (UTF-16/32, UCS-2/4), convert the entire blob
  first, then split by newlines

convert_string() cannot handle UTF-16 because it uses string_convert()
which expects NUL-terminated strings. UTF-16 contains 0x00 bytes within
characters (e.g., "H" = 0x48 0x00), causing premature termination.
Therefore, for UTF-16/32 encodings, the fix uses string_convert_ext()
with an explicit input length to convert the entire blob at once.

The code appends two NUL bytes (ga_append(&blob_ga, NUL) twice) because
UTF-16 requires a 2-byte NUL terminator (0x00 0x00), not a single-byte
NUL.

- src/strings.c: Add from_encoding_raw to preserve endianness, special
  handling for UTF-16/32 and UCS-2/4
- src/mbyte.c: Fix convert_setup_ext() to use == ENC_UNICODE instead of
  & ENC_UNICODE. The bitwise AND was incorrectly treating UTF-16/UCS-2
  (which have ENC_UNICODE + ENC_2BYTE etc.) as UTF-8, causing iconv
  setup to be skipped.

fixes:  #19198
closes: #19246

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 15:59:01 +00:00
Yegappan Lakshmanan ecc3faef61 patch 9.1.2123: using NOT with a float returns a float in legacy script
Problem:  using NOT with a float returns a float in legacy vim script
          (kennypete)
Solution: Return a number instead of a float (Yegappan Lakshmanan)

fixes:  #19282
closes: #19289

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 10:29:01 +00:00
Yegappan Lakshmanan 3a5e57fc7e patch 9.1.2122: Vim9: Negating a float doesn't result in a bool
Problem:  Vim9: Negating a float doesn't result in a boolean
          (kennypete)
Solution: Make it return a boolean (Yegappan Lakshmanan).

related: #19282
related: #19289

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 10:25:50 +00:00
Yegappan Lakshmanan f5466b5a73 patch 9.1.2121: Vim9: type issue when modifying a variable using :legacy
Problem:  Vim9: type issue when modifying a variable using :legacy
          (kennypete)
Solution: In a vim9 script, when modifying a variable using the legacy
          command, check the type (Yegappan Lakshmanan).

fixes:  #18531
closes: #19292

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 10:07:02 +00:00
thinca 611d7e19f7 patch 9.1.2120: blob2str() does not restore trailing newline
Problem:  blob2str() does not restore trailing newline
Solution: Append empty string (thinca).

closes: #19288

Signed-off-by: thinca <thinca@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 09:52:00 +00:00
Doug Kearns 602e6042a3 runtime(doc): Reformat example at :h gui-w32-fullscreen
Use standard indent and remove unnecessary bang.

closes: #19285

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-31 09:42:05 +00:00
Kevin Goodsell 371583642a patch 9.1.2119: tests: Test_language_cmd fails on OpenBSD
Problem:  tests: Test_language_cmd fails on OpenBSD because the test
          uses an invalid locale name and expects the command to produce
          an error. OpenBSD accepts (almost) any locale name as valid by
          design, so the :lang command succeeds and the test fails.
Solution: Slightly update the "bad" locale name to make it something
          that OpenBSD considers invalid by adding a dot (but not ending
          with ".UTF-8"). Maintain the original two underscores in the
          name because that ensures Windows will also see it as invalid
          (Kevin Goodsell).

closes: #19280

Signed-off-by: Kevin Goodsell <kevin-opensource@omegacrash.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-30 10:00:27 +00:00
zeertzjq ce1e562fda patch 9.1.2118: 'cursorline' missing after :diffput to empty buf
Problem:  'cursorline' and part of 'statusline' are missing after
          :diffput to an empty buffer.
Solution: Make sure the cursor doesn't go beyond the last line after
          :diffput (zeertzjq)

related: neovim/neovim#37621
closes:  #19281

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-30 09:57:56 +00:00
Christian Brabandt cfe9d83a85 patch 9.1.2117: unnecessary braces in terminal.c
Problem:  unnecessary braces in terminal.c
          (Christ van Willegen, after v9.1.2113)
Solution: Remove braces

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-30 09:50:46 +00:00
Yasuhiro Matsumoto 57b577df32 patch 9.1.2116: crash when using 'tagfunc'
Problem:  crash when using 'tagfunc' (Rodrigo Queipo)
Solution: Do not add the user_data to the 'info' dictionary when called
          for insert mode completion (the TAG_INS_COMP flag is set).
          Completion should not depend on the state of a previous tag
          jump. (Yasuhiro Matsumoto)

fixes:  #19255
closes: #19284

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-30 09:45:55 +00:00
Yasuhiro Matsumoto a7c28bd1b9 patch 9.1.2115: CI: wrong preprocessor indentation
Problem:  CI: wrong preprocessor indentation
          (after v9.1.2114)
Solution: Update indentation (Yasuhiro Matsumoto)

closes: #19283

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-30 09:35:05 +00:00
Foxe Chen 0ac59be071 patch 9.1.2114: modeless selection not copied to * register
Problem:  modeless selection not copied to * register when P in
          guioptions (Coacher)
Solution: Make the "P" flag override the "a" and "A" flag
          (Foxe Chen)

fixes:  #19187
closes: #19244

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-29 19:18:10 +00:00
MuntasirSZN b817536b8f runtime(tera): update syntax files to support many more tera code
This includes macros, keys etc. which were not highlighted before.

closes: #19276

Signed-off-by: Muntasir Mahmud <muntasir.joypurhat@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-29 19:03:42 +00:00
Yasuhiro Matsumoto d0502fdb26 patch 9.1.2113: potential NULL pointer dereference issues
Problem:  potential NULL pointer dereference issues
          (EpheraXun)
Solution: Check returned pointer to be non NULL.
          (Yasuhiro Matsumoto)

fixes:  #19273
closes: #19274

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-29 18:43:12 +00:00
Christian Brabandt 7599a18997 runtime(doc): Mark the use of "\n" in the tabpanel as experimental
related: #19123

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 22:18:21 +00:00
taylor.fish 663d809194 runtime(rust): Fix Rust indentation when string contains "if"
indent/rust.vim behaves incorrectly when a string literal contains the
substring "if".

For example, in this code:

    let x = "
                motif
    ";
    struct X {
                }

indent/rust.vim thinks that the closing "}" should line up with "motif".

This patch fixes the issue by checking whether the "if" is in a string
literal or comment before considering it to be a match for a subsequent
brace (and also by requiring it to start on a word boundary).

Add an indent test to ensure this does not regress.

closes: #19265

Signed-off-by: taylor.fish <contact@taylor.fish>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 22:07:16 +00:00
Christian Brabandt 427fa3e1e4 runtime(doc): 'ignorecase' affects character classes in the old engine
fixes: #19230

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 21:58:28 +00:00
Peter Kenny 754fc64d2e runtime(helpcurwin): fix E121 error
closes: #19270

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 21:45:50 +00:00
zeertzjq 3f7be0d7e1 patch 9.1.2112: long statusline may crash if using singlebyte encoding
Problem:  long statusline may crash if using singlebyte encoding
          (fizz-is-on-the-way)
Solution: Drop the non-mbyte codepath and always use the mbyte code
          (zeertzjq)

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 21:42:40 +00:00
Hirohito Higashi 271a46811e patch 9.1.2111: Vim9: no error for elseif/else after else
Problem:  Vim9: no error for elseif/else after else
Solution: Report an error (Hirohito Higashi)

closes: #19263

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 19:21:10 +00:00
Roland Hieber b73565d89d runtime(make): Declare syntax file orphaned
closes: #19267

Signed-off-by: Roland Hieber <rohieb@rohieb.name>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 18:54:48 +00:00
Ron Aaron c979211675 runtime(8th): Update syntax script
closes: #19261

Signed-off-by: Ron Aaron <ron@aaron-tech.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-28 18:50:55 +00:00
zeertzjq 0f3b7d2563 runtime(doc): fix missing code block marker in ft-python-syntax
related: #18922
closes:  #19261

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-26 19:56:27 +00:00
Mateo Gjika b8efcc0202 runtime(vim): set 'path' to common Vim directories
closes: #19219

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-26 19:45:21 +00:00
Daniel Nylander b8c1ef5a64 translation(sv): Add Swedish translation
closes: #18849

Signed-off-by: Daniel Nylander <po@danielnylander.se>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-26 19:40:37 +00:00
Rob B 632fd8bb96 runtime(python): Highlight built-in constants in Python
Also add syntax tests for those newly constants.

closes: #17788
closes: #18922

Signed-off-by: Rob B <github@0x7e.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-26 18:52:04 +00:00
Mateo Gjika ca6726285c runtime(c): set 'keywordprg' to :CKeywordPrg in a GUI
closes: #19222

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-26 18:46:41 +00:00
zeertzjq 0f8c685a68 runtime(doc): fix inconsistent indent in ft_rust.txt
related: #19251
closes:  #19257

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 18:17:40 +00:00
Maxim Kim b42434915b runtime(colors): include new catppuccin colorscheme
closes: #19258

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 18:14:22 +00:00
Doug Kearns 17bba758fa runtime(doc): Fix overlength lines in :help {russian,vietnamese}.txt
closes: #19252

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 18:05:43 +00:00
Christian Brabandt c035f518c3 CI: check encoding of runtime files with utf-8 name
related: #19240
closes:  #19253

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 18:04:44 +00:00
Aman Verma dd3aa92ce6 runtime(toml): update syntax and ftplugin.
Add "-" to iskeyword. This required a change to the syntax files too
because they were using the word begin and end atoms.

closes: #17259

Co-authored-by: Teemu Ikonen <tpikonen@mailbox.org>
Co-authored-by: A4-Tacks <wdsjxhno1001@163.com>
Signed-off-by: Aman Verma <amanraoverma@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 18:01:31 +00:00
Christian Brabandt 5268b95150 runtime(doc): clarify the help style a bit
related: #19250

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 17:59:30 +00:00
Kiyoon Kim e5f61842b5 patch 9.1.2110: filetype: skhd files are not recognized
Problem:  filetype: skhd files are not recognized
Solution: Detect .skhdrc and skhdrc as skhd filetype,
          include a syntax and filetype plugin, add syntax tests
          (Kiyoon Kim)

Add syntax highlighting for skhd (simple hotkey daemon for macOS)
configuration files. Includes filetype detection for skhdrc and
.skhdrc files.

Reference:
- https://github.com/asmvik/skhd

closes: #19235

Signed-off-by: Kiyoon Kim <kiyoon@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 17:39:05 +00:00
ThanhNguyxn 5c855ce43d runtime: convert *_utf-8.vim files to actual UTF-8 encoding
Several runtime files with "_utf-8" in their filename are actually encoded
in latin1 or cp1255, not UTF-8. This causes errors when tools attempt to
read these files as UTF-8.

Files converted:
- esperanto_utf-8.vim: latin1 -> UTF-8, updated scriptencoding directive
- greek_utf-8.vim: latin1 -> UTF-8
- hebrewp_utf-8.vim: cp1255 (Windows Hebrew) -> UTF-8
- menu_ca.utf-8.vim: latin1 -> UTF-8
- menu_ca_es.utf-8.vim: latin1 -> UTF-8
- menu_pt_pt.utf-8.vim: latin1 -> UTF-8

The actual functionality remains unchanged - only the encoding was modified.

closes: #16390

Signed-off-by: ThanhNguyxn <thanhnguyentuan2007@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 15:58:33 +00:00
G. Branden Robinson e914ada323 runtime(doc): Fix erroneous *roff syntax examples
Problem dates back at least to commit 071d4279d6, Vim 7.0001 (2004).

The examples shown were of special character interpolation syntax, not
("number") register interpolation syntax.

Sources:
* https://www.gnu.org/software/groff/manual/groff.html.node/Built_002din-Registers.html
* https://github.com/mamccollum/troff-resources/blob/main/cstr-54.pdf

closes: #19243

Signed-off-by: G. Branden Robinson <g.branden.robinson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 15:55:20 +00:00
Hirohito Higashi a5ba252f08 runtime(doc): Tweak tag lines in vim9.txt
closes: #19250

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 15:52:46 +00:00
Arkissa ad0dd7cd1e runtime(rustfmt): Recover accidentally deleted code, don't hide rustfmt error
closes: #19251

Signed-off-by: Arkissa <mrarkssac@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 15:46:09 +00:00
Christian Brabandt 2def2a70a3 runtime(doc): mark a-a-p website as dead
fixes: #19247

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 15:23:07 +00:00
kb 6963e3b8bf patch 9.1.2109: filetype: NetLinx fires are not recognized
Problem:  filetype: NetLinx fires are not recognized
Solution: Detect *.axs and *.axi as netlinx filetype
          (kb).

Reference:
- https://www.amx.com/en/site_elements/amx-language-reference-guide-netlinx-programming-language
- https://kielthecoder.com/2021/06/11/netlinx-getting-started/

closes: #19249

Signed-off-by: kb <kim@simple.industries>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-25 14:59:49 +00:00
zeertzjq 4fcbc70fb1 patch 9.1.2108: tests: Test_foldtextresult_rightleft() does not restore 'columns'
Problem:  Test_foldtextresult_rightleft() does not restore 'columns'
          (after v9.1.2102)
Solution: Save and restore the value of 'columns' (zeertzjq).

related: #19220
closes:  #19234

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:26:33 +00:00
zeertzjq 85241020e8 patch 9.1.2107: :normal may change cmdline history
Problem:  :normal may change cmdline history if the keys don't
          explicitly leave Cmdline mode (after 9.1.1872).
Solution: Check ex_normal_busy (zeertzjq)

closes: #19237

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:21:42 +00:00
Yegappan Lakshmanan 7d22f84f0b patch 9.1.2106: Vim9: class, enum and type alias can be used as value
Problem:  Vim9: class, enum and type alias can be used as value in an
          expression (kennypete)
Solution: Abort expression evaluation if class, enum or type alias is
          used in an expression (Yegappan Lakshmanan)

related: #19173
closes:  #19238

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:17:29 +00:00
zeertzjq 2b6bdbc697 patch 9.1.2105: tests: not enough tests for using plain_vgetc()
Problem:  Not enough tests for using plain_vgetc().
Solution: Add tests for using plain_vgetc() during various commands.
          (zeertzjq)

closes: #19236

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:11:28 +00:00
Antoine Saez Dumas 3a324c83ab runtime(doc): Fix typo in syntax.txt
closes: #19239

Signed-off-by: Antoine Saez Dumas <antoine.saezdumas.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:09:32 +00:00
Doug Kearns 09a48056c7 runtime(csh): Update ftplugin, improve matchit behaviour
- Allow for an unparenthesised expression argument to the 'if',
  'if-then', and 'while' commands.  This is undocumented, and probably
  unintended, behaviour but is frequently seen in the wild.
- Allow for a continued-line expression argument to the 'if-then'
  command.

related: #19172 (csh: Support negated if in matchit)
closes:  #19190

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:07:21 +00:00
Yasuhiro Matsumoto e89d97aaea patch 9.1.2104: readdirex() might be slow
Problem:  readdirex() might be slow (Mao-Yining)
Solution: Avoid double slash in path concatenation in
          create_readdirex_item() (Yasuhiro Matsumoto)

On Cygwin and MSYS2, // has a special meaning: it is treated as a prefix
for accessing network computers.
For example, //wsl$/ is used to access WSL.

In the current Vim implementation, the directory path passed to
readdirex() and the file name found during traversal are concatenated
using "/".
When the directory path already ends with /, this results in paths like:

  "/" + "/" + "$Recycle.Bin"

which produces a //-prefixed path. Such paths are interpreted as network
paths, so Vim ends up trying to retrieve the file size of a network
computer named $Recycle.Bin, which is not intended.

From a correctness perspective on Windows, file size retrieval should be
skipped for paths of the following forms:

 //host
 //host/share

However, as a first step, we should avoid generating // paths caused by
redundant / concatenation in the first place.

This change addresses this by preventing unnecessary / insertion when
constructing paths.

fixes:  #19188
closes: #19241

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 20:29:53 +00:00
Doug Kearns 95bb4ef7d1 runtime(csh,tcsh): Update syntax files
- Adopt csh syntax file.
- Highlight tcsh strings with the String highlight group.
- Fix 'set' command highlighting with trailing comments. See
  https://github.com/vim/vim/pull/19172#issuecomment-3751574224
- Fix whitespace style in MAINTAINERS file

closes: #19191

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 20:23:06 +00:00
Anatolii Sakhnik d532b01c36 translation(ua): Update Ukrainian translation
closes: #19242

Signed-off-by: Anatolii Sakhnik <sakhnik@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 20:18:42 +00:00
Christian Brabandt 10b272c126 patch 9.1.2103: tests: test_fold.vim leaves swapfiles behind
Problem:  tests: test_fold.vim leaves swapfiles behind
Solution: Close open buffer using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:54:47 +00:00
Sergey Vlasov b51ac5e378 patch 9.1.2102: foldtext not reversed and cut off in 'rightleft' mode
Problem:  foldtext not reversed and cut off in 'rightleft' mode
          (bfredl)
Solution: Fix the rightleft redrawing logic (Sergey Vlasov)

fixes:  #2659
closes: #19220

Signed-off-by: Sergey Vlasov <sergey@vlasov.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:48:46 +00:00
Muraoka Taro 3456303430 check.vim: Use silent command modifier
Problem:  When checking a .po file (make -C src/po check), errors are not
          displayed.

Solution: Adding "silent" to some normal commands in check.vim
          suppresses unnecessary output (Muraoka Taro)

This is because the output of check.vim is redirected to /dev/null.
However, if you stop the redirection, check.vim generates a lot of
output and becomes very slow.

When these commands are run in ex mode, they output the contents of the
line the cursor is pointing to.  This caused a lot of output.

closes: #19227

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:41:58 +00:00
James McCoy 81f1c5d384 runtime(debcontrol): improve Debian syntax files
Changes to debcontrol:
- Only use debcontrolEmail for Maintainer/Uploaders
- Add Build-Driver to debcontrolField
- Add Protected to debcontrolStrictField
- Remove Uploaders from the more generic region
- Add explicit support for highlighting build profiles
- Add explicit support for highlighting architecture specifications
- Fix URL for sections.822

Changes to debversions:
- Move plucky to unsupported

closes: #19228

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:38:48 +00:00
Arvin Verain 87635dcb5a runtime(kitty): Add kitty ftplugin file
closes: #19232

Signed-off-by: Arvin Verain <arvinverain@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 20:48:41 +00:00
Yegappan Lakshmanan a7d195415b patch 9.1.2101: Vim9: more truthiness issues
Problem:  Vim9: more truthiness issues
          (kennypete)
Solution: Class, enum and typealias cannot be used with the falsy
          operator (Yegappan Lakshmanan)

related: #19213
fixes:   #19173
closes:  #19216

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:46:33 +00:00
Luis Davim ff0e5d994c patch 9.1.2100: filetype: tiltfiles are not recognized
Problem:  filetype: tiltfiles are not recognized
Solution: Detect Tiltfiles.* and *.tiltfiles as tiltfile  filetype.
          (Luis Davim)

Reference:
- https://docs.tilt.dev/api.html

fixes:  #19214
closes: #19218

Signed-off-by: Luis Davim <luis.davim@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:40:35 +00:00
Christian Brabandt 284f8669e6 CI: Reorder path in Windows CI runners and move Python3 before $PATH
Apparently, sometimes Vim tries to load python.dll from the Mercurial
directory. So let's move the $PYTHON3_DIR before $PATH, so that Vim can
pickup python3.dll from the right directory

https://github.com/vim/vim/actions/runs/21142024316/job/60798242826?pr=19215

closes: #19217

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:23:02 +00:00
G. Branden Robinson f338a2f1a6 runtime(doc): Update [gnt]roff information
Content:
* Refer to the formatter as "GNU troff".  Strictly, "groff" refers to
  several things.[1]  Since the context is the editing of input to the
  formatter, GNU's troff program is most relevant choice.
* Refer to groff as distributions' default "typesetting" rather than
  "text processing" package.  Many text processing tools exist, and some
  distributions (Alpine Linux, NetBSD, OpenBSD) have replaced groff with
  mandoc[2] as their man page formatter.
* Mention that Plan 9 still ships an AT&T-derived troff; they even
  maintain it.[3]
* Correct explanation of traditional `yr` register (1).  `\n(yr` is not
  a request, but an escape sequence.[4]
* Correct explanation of traditional `yr` register (2).  This register
  has not interpolated a "2-digit year" since the year 2000; it now
  interpolates a 3-digit one, because AT&T troff designed the `yr`
  register with a Y2K bug in it.[5]
* Fix scrambled terminology.  The phrase "macro request" confuses two
  separate things: macros and requests.[6]  Say instead "font, request,
  register, macro, and string names"; these are the formatter object
  types that people writing groff documents most often use.
* Refer to "groff's mm package" instead of "GNU mm".  Strictly, this
  package is in groff's "contrib" area, which implies that it's not
  official GNU product.  (To be fair, after shipping with groff for over
  34 years,[7] I'm not sure how much distinction anyone perceives.)
* Motivate the newly added advice preferring macro package facilities
  for paragraphing; this issue is distinct from aiding sentence boundary
  detection, which until recently[8] was the only advice offered here.

Style:
* Condense introductory paragraphs.
* Refer to "language syntax" rather than "language primitives".
* Use slightly more idiomatic English.

While these revisions convey more information, they leave the line count
unchanged.  I'll try to stop fooling with this material now.

Notes:
[1] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/man/groff.7.man?h=1.24.0.rc1#n303
[2] https://mandoc.bsd.lv/
[3] https://github.com/9fans/plan9port/pull/738
    https://github.com/9front/9front/commit/4f3a4d8b3da7e7f38b4bc392524944f6f9ccf21f
[4] https://www.gnu.org/software/groff/manual/groff.html.node/Formatter-Instructions.html
    https://github.com/mamccollum/troff-resources/blob/main/cstr-54.pdf
[5] Tellingly, groff added the `year` register in its 1.16 release,
    dated 2000-05-23.
    https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/NEWS?h=1.24.0.rc1#n3650
    https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/ChangeLog.116?h=1.24.0.rc1#n261
[6] https://www.gnu.org/software/groff/manual/groff.html.node/Requests-and-Macros.html
    https://www.gnu.org/software/groff/manual/groff.html.node/groff.html_fot.html#FOOT26
[7] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/NEWS?h=1.24.0.rc1#n4192
    https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/ChangeLog.old?h=1.24.0.rc1#n2714
[8] https://github.com/vim/vim/commit/638bbc57c151b0360d953e1e4ad372e3c9f0d3ce

closes: #19221

Signed-off-by: G. Branden Robinson <g.branden.robinson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:12:26 +00:00
Muraoka Taro cbb72e4216 patch 9.1.2099: different line endings in ja.sjis.po and ja.po
Problem:  Depending on the worker's environment, the line endings in
          ja.sjis.po may differ from those in the source ja.po.

Solution: By setting standard input and output to binary mode, the line
          endings for input and output will match (Muraoka Taro)

This occurs when using MINGW gcc on Windows and git with autocrlf=false.
In this case, the line endings in ja.po are LF, but because sjiscorr
compiled with MINGW gcc uses text mode for standard input and output,
the line endings in the output ja.sjis.po will be CRLF.

This mismatch in line endings confuses git, causing large differences to
occur when updating.

In addition, the comment style has been changed to // to match the rest
of Vim's code.

closes: #19226

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:07:02 +00:00
Christian Brabandt 4e2aafddbb runtime(netrw): Do not create swapfiles in netrw buffers
Problem:  When using netrw to navigate directories, vim immediately
          creates, then deletes a swap file in the entered directory,
          causing the lastModifiedTime of that directory to change.
Solution: Use the :noswapfile command modifier in s:NetrwEditFile()

fixes: #18854

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:26:09 +00:00
Mateo Gjika d829e10e0f runtime(sml): add 'include' setting to ftplugin
closes: #19156

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:10:41 +00:00
Mateo Gjika b1fa262960 runtime(asm): add '#' as comment symbol (GNU as)
closes: #19158

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:08:39 +00:00
zeertzjq d5f173cf90 runtime(menu): fix space before Tab and trailing space
closes: #19209

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:04:47 +00:00
zeertzjq 311b98d942 patch 9.1.2098: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A
Problem:  Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A
          (after 9.1.1714) (fizz-is-on-the-way).
Solution: Check if there are matches before applying one (zeertzjq).

closes: #19210

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:02:08 +00:00
zeertzjq 9168a04e0c patch 9.1.2097: TabClosedPre may be triggered twice for the same tab page
Problem:  TabClosedPre may be triggered twice for the same tab page when
          closing another tab page in BufWinLeave (after 9.1.1211).
Solution: Store whether TabClosedPre was triggered in tabpage_T
          (zeertzjq).

Also fix the inconsistency that :tabclose! triggers TabClosedPre after
a failed :tabclose, but :close! doesn't even if there is only one window
in the tab page.

closes: #19211

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:59:08 +00:00
Yegappan Lakshmanan 4a08c8b5d4 patch 9.1.2096: Vim9: truthiness issue with objects
Problem:  Vim9: truthiness issue with objects
          (kennypete)
Solution: Return true for an non-null object
          (Yegappan Lakshmanan)

related: #19173
closes:  #19213

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:21:12 +00:00
zeertzjq e803ad1c56 patch 9.1.2095: :wqall! doesn't quit when using :quit in BufWritePost
Problem:  :wqall! doesn't quit when using :quit in BufWritePost
          (after 8.0.1190).
Solution: Restore old value of "exiting" when calling not_exiting()
          instead of always resetting it to FALSE (zeertzjq).

related: #2205
closes:  #19212

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:15:51 +00:00
Muraoka Taro 7e585b6fa4 translation(jp): Update Japanese Translation for Vim 9.2 Release
I've updated the Japanese translation for the Vim 9.2 release.  The
content contained in this PR was created collaboratively by multiple
peoples in the vim-jp/lang-ja project, and I, koron (Muraoka Taro), am
submitting it as the project representative.

The PR used for this work is https://github.com/vim-jp/lang-ja/pull/171.
(Please note that the communication in this PR is in Japanese)

closes: #19215

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:07:28 +00:00
Mateo Gjika 0b103d6a7c runtime(haskell): add include-search and define support in ftplugin
closes: #19143

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 21:30:26 +00:00
G. Branden Robinson 638bbc57c1 runtime(doc): Update advice for [gnt]roff users
Content:
* Offer more specific guidance regarding input line breaks and sentence
  endings.
* Advise what to do when a line ends with sentence-ending punctuation
  but doesn't end a sentence.
* Advise against use of blanks lines and leading spaces for formatting
  when a macro package is in use.
* Advise how to achieve visual separation in the document without
  affecting formatting.
* Point out how the newline/end-of-sentence rules aid diffing.
* Distinguish the separate processes of inter-sentence space
  supplementation and filling.
* Use conventional (but accessible) terms from typography instead of
  more casual, approximate ones.
* Clarify what sort of extension the ms package's `XP` macro is.

Style:
* Fix comma splice with a semicolon.
* Use slightly more standard/idiomatic English.

Sources:
* https://rhodesmill.org/brandon/2012/one-sentence-per-line/
* https://www.ualberta.ca/en/computing-science/media-library/docs/unix-beginners.pdf
  (p. 20)
* https://www.gnu.org/software/groff/manual/groff.html.node/Input-Conventions.html
* https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/doc/ms.ms?h=1.23.0#n1131
* https://docs-archive.freebsd.org/44doc/usd/18.msdiffs/paper.pdf

closes: #19193

Signed-off-by: G. Branden Robinson <g.branden.robinson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 21:14:52 +00:00
Christian Clason eb53ed5de0 patch 9.1.2094: filetype: tiger files are not recognized
Problem:  filetype: tiger files are not recognized
Solution: Detect *.tig files as tiger filetype
          (Christian Clason).

Reference:
- https://www.cs.princeton.edu/~appel/modern/

closes: #19202

Signed-off-by: Christian Clason <c.clason@uni-graz.at>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 21:03:02 +00:00
zeertzjq 8fc7042b3d patch 9.1.2093: heap-use-after-free when wiping buffer in TabClosedPre
Problem:  heap-use-after-free when wiping buffer in TabClosedPre.
Solution: Check window_layout_locked() when closing window(s) in another
          tabpage (zeertzjq).

closes: #19196

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 20:52:48 +00:00
Hirohito Higashi 617bf466bb runtime(doc): Tweak documentation style in {ft_context,terminal}.txt
closes: #19199

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 20:50:11 +00:00
Muraoka Taro 658cc102f6 runtime: Changed old "Sponsor" menu item name to a new one
Problem:  There is an unavailable "Sponsor/Register" item in the Help
          menu.
Solution: The item name has been unified to "Sponsor".

The item names of tlmenu, which are only valid in terminal mode, were
not updated, so unnecessary items that were unavailable were displayed.

This item is also very confusing when creating menu translations.

In addition, the indentation of an item with the same name in the
regular menu has been corrected.

closes: #19201

Signed-off-by: MURAOKA Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 20:45:06 +00:00
Mateo Gjika 682f630a41 patch 9.1.2092: cannot detect kitty foreground/background color
Problem:  Cannot detect kitty foreground/background color
Solution: Update builtin termcap entries (Mateo Gjika)

closes: #19208

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 14:12:04 +00:00
Christian Brabandt 3b67993a64 patch 9.1.2091: Ruby integration does not work correctly
Problem:  Ruby headers define HAVE_FSYNC, which leaks into Vim sources
          on Windows and changes conditional compilation of buf_T. This
          causes struct layout mismatches in if_ruby.c and results in a
          different offset for the b_p_bl property, making Vim::Buffer
          access fail (after v9.1.2024)
Solution: Undefine HAVE_FSYNC after including the Ruby headers.

related: #19019
closes:  #19206

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 14:05:32 +00:00
zeertzjq 6c118afeaa patch 9.1.2090: Last buffer not freed with EXITFREE
Problem:  Last buffer not freed with EXITFREE (after 9.1.2087).
Solution: Free the last buffer when inside free_all_mem()
          (zeertzjq).

This isn't really a memory leak, as the last buffer's memory is still
reachable via pointers like firstbuf and lastbuf. But it's possible that
this may cause false ASAN warnings in the future, which is what EXITFREE
is supposed to prevent.

closes: #19194

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-17 10:13:57 +00:00
Mao-Yining 745335c876 runtime(doc): fix return type in getqflist() and getloclist()
Problem: `call getqflist({})` will return `{}`, which is type dict<any>
Solution: fix it in the document.

closes: #19197

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-17 10:03:52 +00:00
Christian Brabandt 8211f556df runtime(syntax-tests): tests: sh_10 fails on MacOS runners
Problem:  tests: sh_10 fails on MacOS runners (after 16c2279062)
          because dash does not exist on MacOS
Solution: Force the test to use bash shebang line

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:56:28 +00:00
Foxe Chen 8b8f10d3d8 patch 9.1.2089: Wayland: Clipboard not working with external programs
Problem:  Wayland: Clipboard not working with external programs on
          Wayland (devsnek)
Solution: Simplify the Wayland offer logic and drop offering the special
          mime type (Foxe Chen)

fixes:  #19050
closes: #19184

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:36:31 +00:00
zeertzjq ce394b13e9 patch 9.1.2088: Redundant NULL checks in find_pattern_in_path()
Problem:  Redundant NULL checks in find_pattern_in_path().
Solution: Remove the NULL checks. Also fix typos in test_diffmode.vim
          (zeertzjq).

After assigning to inc_opt on line 3461, it's dereferenced immediately,
and not assigned another value afterwards, so checking for NULL after
line 3462 is redundant.

closes: #19185

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:31:33 +00:00
zeertzjq fa64f92f6a patch 9.1.2087: Crash when using :tabonly in BufUnload
Problem:  Crash when using :tabonly in BufUnload.
Solution: Set curbuf when setting curwin->w_buffer. Don't wipe out a
          buffer if there are no other buffers. Don't decrement
          b_nwindows if it was 0 before buf_freeall() (zeertzjq).

fixes:  #19088#issuecomment-3710172769
closes: #19186

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:25:29 +00:00
Mao-Yining a1895b67b7 runtime(tutor): Add Chinese translation for chapter 1
closes: #19189

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:20:52 +00:00
Doug Kearns da44ef6a99 runtime(c,cpp): Add reference links to noreturn tests
Add links to the example page at cppreference.com used for these tests
as per their licensing requirements.

closes: #19192

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 13:27:24 +00:00
Christian Brabandt 16c2279062 runtime(sh): highlight single-dash short options containing digits
fixes: #19082

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 21:01:43 +00:00
Ivan Pešić 6aaf005c04 translation(sr): update Serbian messages translation
closes: #19177

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:42:01 +00:00
Wu Yongwei 5529b750a7 runtime(c): Do not highlight noreturn in C++ code
closes: #19170

Signed-off-by: Wu Yongwei <wuyongwei@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:37:14 +00:00
Simão Afonso f25c343b26 runtime(csh): Support negated if in matchit
Currently, the matchit configuration chokes on valid syntax like:

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

Make sure the negation syntax is supported.

closes: #19172

Signed-off-by: Simão Afonso <simao.afonso@powertools-tech.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:27:54 +00:00
Patrick Meiser-Knosowski f8cde69788 runtime(rapid): Update syntax file for ABB Rapid
Also remove trailing white spaces.

closes: #19175

Signed-off-by: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:21:23 +00:00
Sean Dewar b10a3e1a20 patch 9.1.2086: Memory leak when skipping invalid literal dict
Problem:  memory leak when not evaluating (just parsing) invalid literal
          dict.
Solution: Always clear the key's typval (Sean Dewar)

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

closes: #19178

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:14:08 +00:00
Mathis Bernadet 4969b8db4a runtime(mbsync): Add syntax highlighting for TLSVersions keyword
mbsync deprecated SSLVersions. Now use TLSVersions (we keep
computability with SSLVersions).

closes: #19179

Signed-off-by: Mathis Bernadet <matbernadet@emi.u-bordeaux.fr>
Signed-off-by: Pierrick Guillaume <pguillaume@fymyte.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:10:05 +00:00
Bjoern Foersterling af973d4018 runtime(yaml): fix indentation script
Problem:  The indentation of Ansible Playbooks gets messed up after
          gg=G (after 9179ddc060)
Solution: Remove one shiftwidth() that seems to be misplaced.

closes: #19180

Signed-off-by: Bjoern Foersterling <bjoern.foersterling@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:05:58 +00:00
Christian Brabandt ead1dda74a patch 9.1.2085: Use-after-free in winframe_remove()
Problem:  Use-after-free in winframe_remove() (henices)
Solution: Set window_layout_locked() inside winframe_remove()
          and check that writing diff files is disallowed when the
          window layout is locked.

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

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

closes: #19064

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:49:25 +00:00
Mateo Gjika 17d60cee55 runtime(compiler): add compiler plugin for cabal
closes: #19152

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:37:46 +00:00
John Marriott dc47097423 patch 9.1.2084: Compile error when build with job feature
Problem:  Compile error when build with job feature (after v9.1.2077)
Solution: Add ifdefs (John Marriott).

related: #19076

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:31:26 +00:00
Hirohito Higashi 1d4fe89054 CI: Add C preproc indentation check to CI
closes: #19165

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:22:27 +00:00
Hirohito Higashi 9fd2cae482 patch 9.1.2083: style: wrong indentation of nested ifdefs
Problem:  style: wrong indentation of nested ifdefs
Solution: Fix indentation
          (Hirohito Higashi)

related: #19165

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:14:33 +00:00
Foxe Chen 92ff4d615d patch 9.1.2082: modeless auto-select not working
Problem:  modeless auto-select not working
          (Coacher)
Solution: Add support for modeless autoselect
          (Foxe Chen)

fixes:  #19159
closes: #19168

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 20:15:07 +00:00
KnoP-01 c2f453f5f3 runtime(krl): Update syntax file for Kuka Robot Language
closes: #19171

Signed-off-by: KnoP-01 <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 20:11:51 +00:00
Jon Parise ec46b9d4f2 runtime(matchit): include minor improvement from chrisbra/matchit
In particular, documentation update from
related: chrisbra/matchit#55

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 19:40:40 +00:00
Yee Cheng Chin 78e8ec8055 MacVim r182.1 (prerelease)
Updated to Vim 9.1.2068
2026-01-11 16:58:15 -08:00
Yee Cheng Chin 2c26143a65 Merge pull request #1626 from ychin/ci-use-homebrew-libiconv
Build MacVim binary release with GNU iconv instead of Apple iconv
2026-01-11 16:41:52 -08:00
Yee Cheng Chin cdeaa647ae Build MacVim binary release with GNU iconv instead of Apple iconv
The builtin iconv in macOS has been quite buggy since macOS 14, when
Apple replaced GNU iconv with a bespoke version. It introduced
backwards-incompatible changes, and behaves oddly in certain character
substitutions.

As such, build the official binary release using GNU iconv instead of
system iconv. This means we have to compile/cache it manually in our CI
just like gettext/libsodium in order to have a universal x86/arm64
binary with the correct deployment target set. We also need to modify
gettext to be built against GNU iconv as well to avoid link-time errors.

Note that this does not affect the Homebrew release of MacVim. The
standard Homebrew gettext is still linked against system iconv, and as
such we can't make an unilateral change without modifying Homebrew's
gettext as well.

This will result in the Vim binary being larger by 2 MB. It's not ideal
but tolerable. If Apple fixes their implementation of iconv we could
revert this in the future.

Related: macvim-dev/macvim#1624
2026-01-11 16:22:23 -08:00
Muraoka Taro 47c84295bb patch 9.1.2081: MS-Windows: unnecessary "#ifdef FEAT_GUI" in os_win32.c
Problem:  MS-Windows: "#ifdef FEAT_GUI" exists within "ifdef
          FEAT_GUI_MSWIN", which is confusing when reading the code.
          FEAT_GUI is always defined if FEAT_GUI_MSWIN is defined (see
          vim.h).  Therefore, this check and the else block are
          unnecessary.
Solution: Removed unnecessary "#ifdef FEAT_GUI" (Muraoka Taro).

closes: #19164

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 19:44:06 +00:00
Foxe Chen f3961074fb patch 9.1.2080: W23/W24 messsage appears on :reg
Problem:  W23/W24 messsage appears on :reg
          (Coacher)
Solution: Silence message when using :reg command
          (Foxe Chen)

fixes:  #19161
closes: #19166

Co-authored-by: h_east <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 19:34:04 +00:00
Christian Brabandt 300ea1133f patch 9.1.2079: use-after-free with 'qftf' wiping buffer
Problem:  use-after-free with 'quickfixtextfunc' wiping buffer
          (henices)
Solution: Evaluate 'quickfixtextfunc' with textlock enabled.

closes: #19142

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 19:06:31 +00:00
zeertzjq 6a2b5b2246 patch 9.1.2078: A few more typos in various files
Problem:  A few more typos in various files
Solution: Fix those (zeertzjq, antonkesy)

related: neovim/neovim#37348
closes:  #19153

Co-authored-by: Anton Kesy <anton@kesy.de>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:59:51 +00:00
Doug Kearns f78629b9af runtime(doc): Fix typo at :help 'fsync'
closes: #19155

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:53:40 +00:00
Anakin Childerhose be6225976c runtime(rst): set suffixesadd for rst
Add .rst to suffixesadd. This allows gf and similar commands to work for
rst documentation such as in the linux kernel Documentation.

closes: #19149

Signed-off-by: Anakin Childerhose <anakin@childerhose.ca>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:50:13 +00:00
Lifepillar cb7cbfcc12 runtime: Update files for ConTeXt, METAFONT, and MetaPost.
This update is meant to be included in the upcoming 9.2 release.

**New**

- Support ConTeXt's convention to optionally specify an output directory
  in a comment line at the beginning of a source file.
- If a log file is not found, Vim does not create a new buffer.
- Removed `syntax/shared` files for the following reasons:
  - they are not necessary for the plugin to work (they only improve
    over existing syntax highlighting);
  - they are relative large;
  - they can be automatically (re)generated by users at any time using
    ConTeXt (explained in the doc);
  - since ConTeXt is updated frequently, they quickly become obsolete.

**Minor**

- Prefer `var` to `const` inside functions.
- Prefer `$`-interpolation to `printf()`.
- All revision dates set to the same date for consistency.
- Updated the error format.
- Various tweaks to the documentation, but nothing disruptive or new.

closes: #19148

Signed-off-by: Lifepillar <lifepillar@lifepillar.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:45:42 +00:00
Doug Kearns c4dc4d8f1e runtime(syntax-tests): Add :help command termination tests
Problem:  The :help command lacks command termination tests.
Solution: Add tests for command termination at "|", "^M" and "^J".

- Check special handling of "|" in arguments.
- Update the Vim syntax file.

closes: #18932

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:25:38 +00:00
Phạm Bình An 1e54023673 runtime(doc): clarify vim.eval behavior with Vim special variables
Problem:  The behavior of vim.eval() with Vim special variables is not
          clearly documented. It is (partly) the reason why Nvim
          Python's vim.eval gives different output when evaluating
          v:true and v:false
Solution: Document it (Phạm Bình An)

closes: #19157

Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:23:20 +00:00
Ubaldo Tiberi 69075d35be runtime(compiler): Do not set title in pandoc compiler
closes: #19048

Signed-off-by: Ubaldo Tiberi <ubaldo.tiberi@volvo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 18:23:16 +00:00
Yegappan Lakshmanan 949e3be916 patch 9.1.2077: Vim9: type issue when appending item to a list
Problem:  Vim9: type issue when appending item to a list
          (Peter Kenny)
Solution: When adding a new item at the end of a list in vim9script, use
          the proper item type (Yegappan Lakshmanan)

fixes:  #19045
closes: #19076

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 18:14:13 +00:00
Muraoka Taro 8ddbd31c18 patch 9.1.2076: tests: MinGW test fails midway and stops
Problem:  tests: When running the MinGW test, an error occurs after
          generating opt_test.vim.
Solution: Rewrite the error detection in cmd.exe syntax (Muraoka Taro).

The recipe section of src/testdir/Make_ming.mak must be written in
cmd.exe syntax.  This is because "SHELL = cmd.exe" is specified at the
beginning.  However, the error detection in the opt_test.vim recipe is
written in UNXI syntax, which caused the error.

closes: #19146

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 18:07:09 +00:00
Christian Brabandt 28fd7e7702 patch 9.1.2075: tests: wrong change to test_ins_complete.vim
Problem:  tests: wrong change to test_ins_complete.vim
          (zeertzjq, after v9.1.2071)
Solution: Revert unintentional changes

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 16:59:04 +00:00
Christian Brabandt b694561b4d patch 9.1.2074: Compile error with Motif GUI
Problem:  Compile error with Motif GUI
          (Tony Mechelynck, after v9.1.2072)
Solution: Add ifdef FEAT_GUI_GTK

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 16:43:43 +00:00
André-Patrick Bubel fc00006777 runtime(sieve): preserve existing line endings in ftplugin
Only set fileformat=dos for new files; preserve existing line endings
when editing. This satisfies RFC 5228 for new files while avoiding
issues with version control and existing workflows.

The previous change (3cb4148) unconditionally set fileformat=dos, which
converts existing files with LF line endings to CRLF on save. This
causes issues with version control (entire file appears changed) and
breaks workflows where sieve files are stored with unix line endings.

Dovecot Pigeonhole (the main sieve implementation) has explicitly
accepted LF line endings since 2008 (commit 97b967b5):
  /* Loose LF is allowed (non-standard) and converted to CRLF */
This behavior has remained unchanged for almost 18 years.

closes: #19144

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: André-Patrick Bubel <code@apb.name>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:44:04 +00:00
Christian Brabandt 4023bd270a patch 9.1.2073: auto/configure needs to be regenerated
Problem:  auto/configure needs to be regenerated
          (after v9.1.2072)
Solution: Run make autoconf and update the configure script

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:36:30 +00:00
Foxe Chen a378c722a2 patch 9.1.2072: Socket server has a few minor issues
Problem:  Socket server has some small issues
Solution: Fix issues (see below)

- don't poll current vim instance when using serverlist()
- list the current vim instance in serverlist() (to match X11
  behaviour)
- don't make X11 feature disable socketserver feature
- refactor CheckSocketServer logic and update tests with remote server
  dependency

closes: #19118

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:30:50 +00:00
Aliaksei Budavei 5516fc534e runtime(syntax-tests): Adapt "runtime/syntax/testdir/vimcmd" for "src/testdir/util/shared.vim"
Problem:  When "util/shared.vim" is sourced and GetVimCommand is called on
          behalf of the syntax test runner, the "vimcmd" file will be searched
          in the current working directory, i.e. "src/testdir", whereas the
          desired file is in "runtime/syntax/testdir".
Solution: Temporarily copy "vimcmd" between test directories.

closes: #19127

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:19:18 +00:00
Christian Brabandt 0e0cb8520c patch 9.1.2071: tests: test_ins_complete.vim leaves swapfiles behind
Problem:  tests: test_ins_complete.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

closes: #19137

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:06:54 +00:00
Girish Palya a9711b5395 patch 9.1.2070: completion: autocomplete breaks with large dict
Problem:  Autocomplete breaks ":help" when 'dict' points to a large file
          (lxhillwind)
Solution: Reset autocompletion timer expiry flag (Girish Palya)

fixes:  #19130
closes: #19137

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 16:59:30 +00:00
glepnir ccb7b43365 patch 9.1.2069: Search wrap indicator not shown w/out 'shm-S'
Problem:  when shortmess doesn't have 'S', backward search wrap doesn't
          show the "W" before count. forward search works fine but
          backward fails because the position check logic is backwards -
          it checks if cursor < pos instead of using the existing
          wrapped flag.
Solution: Use sia->sa_wrapped flag that searchit() already sets
          correctly (glepnir).

fixes:  #5280
closes: #19138

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 16:52:10 +00:00
Doug Kearns 27e5d95edf runtime(lynx): Update syntax file
Update for Lynx version 2.9.2.

closes: #19141

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 16:49:32 +00:00
Yee Cheng Chin 21a41476f9 Merge pull request #1625 from ychin/ci-revert-use-ruby34
ci: Revert hard-coded Ruby 3.4 to use Ruby 4.0
2026-01-08 17:58:00 -08:00
Yee Cheng Chin 4a129cd077 ci: Revert hard-coded Ruby 3.4 to use Ruby 4.0
Ruby 4.0 integration has been fixed upstream (871d2cc2ef). Remove the
hard-coded 3.4 pin in CI so we can use the latest Ruby version.

This reverts commit b8ebacc9c9.
2026-01-08 17:29:25 -08:00
Yee Cheng Chin 0dd9730538 Merge remote-tracking branch 'vim/master' 2026-01-08 16:55:16 -08:00
Christian Brabandt cf8e378f4e runtime(doc): clarify the behaviour of 'fo-m'
fixes: #19095

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:39:15 +00:00
Christian Brabandt a3d4b895ae translation(de): update German message translation
While at it, update vim.pot with the current year.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:31:41 +00:00
Sean Dewar 63d53de72d patch 9.1.2068: :bd/bw may try to switch to a closing buffer
Problem:  :bdelete/bunload/bwipeout may attempt to switch to a closing
          buffer, which fails. (after 9.1.2058)
Solution: don't consider switching to closing buffers (Sean Dewar)

closes: #19107

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:27:55 +00:00
Dominique Pelle 335aecd98f runtime(cpp): Fix c++ float and integer literal syntax highlighting
closes: #8939

Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Dominique Pelle <dominique.pelle@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:24:23 +00:00
Christian Brabandt e80a4ed845 runtime(matchit): Update to Release 1.21
closes: #19109

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:53:40 +00:00
Christian Brabandt 8e079085d2 runtime(sh): Update indent script
closes: #19110

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:52:01 +00:00
John Marriott 4936e761a5 patch 9.1.2067: shadow variable warning in menu.c
Problem:  shadow variable warning in menu.c
Solution: Rename the variable (John Marriott).

closes: #19120

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:29:54 +00:00
D. Ben Knoble a71e52a0b1 runtime(racket): update Racket syntax file
This brings us to upstream commit f251a43 (Merge syntax based folding
for block comments, 2025-09-10). Note that not all upstream files are
included.

closes: #19126

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:26:23 +00:00
zeertzjq d8558fdf4f patch 9.1.2066: :wqall! doesn't close a terminal like :qall! does
Problem:  :wqall! doesn't close a terminal buffer like :qall! does
          (after 8.0.1525).
Solution: Check eap->forceit (zeertzjq).

Ref: https://github.com/vim/vim/issues/2654#issuecomment-366803932

related: #2654
related: neovim/neovim#14061
closes:  #19129

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:23:05 +00:00
Muraoka Taro 7d632a0a77 patch 9.1.2065: GvimExt cannot be linked statically using MinGW
Problem:  When building GvimExt with MinGW, some DLLs are still linked
          even if STATIC_STDCPLUS=yes is set.
Solution: Following the Vim core, make some libraries explicitly
          statically linked.  The order of libraries is important, and
          gcc_eh must be placed before winpthread (Muraoka Taro)

closes: #19131

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:12:58 +00:00
zeertzjq aa58f1fe44 CI: build failure in if_perl.xs
Problem:  CI: build failure in if_perl.xs.
Solution: Add -Wno-strict-prototypes to PERL_CFLAGS_EXTRA
          (zeertzjq).

closes: #19132

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:10:09 +00:00
Cezar Dimoiu 9179ddc060 runtime(yaml): update YAML indentation for mapping keys inside list items
When a list item contains a mapping key (e.g., '- element1:'), the
content under that key was incorrectly indented. The indent function
was not accounting for the '- ' prefix when calculating indentation
for nested content.

Example that now works correctly:
  list:
    - element1:
        foo: bar  # Now correctly at indent 6, not 4

The fix adds special handling in two places:
1. When previous line ends with ':' and starts with '- '
2. When looking up previous mapping key that is a list item

Fixes indentation to account for the 2-character '- ' prefix.

fixes:  #18943
closes: #19133

Signed-off-by: Cezar Dimoiu <cezar.dimoiu@keysight.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:07:18 +00:00
Girish Palya 4895ae8c0c patch 9.1.2064: completion: segfault during file name completion
Problem:  completion: segfault during file name completion
Solution: Initialize compl_num_bests (Girish Palya)

closes: #19134

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 19:56:40 +00:00
Christian Brabandt 0084e4bd16 gitattributes: mark test21.ok binary, drop test42.in
This change does 2 things:
1) Mark src/testdir/test21.ok as binary by git.

After 0ed8ba3079, test21.ok was treated by Git as a text file
using LF line endings. However, the test explicitly checks handling of
files with mixed line endings, so it must retain its literal LF and CR
endings and must not be modified by Git. Therefore, mark it explicitly
as binary.

2) Remove src/testdir/test42.in

This test was converted to the new-style test in v8.2.1316 and was
therefore deleted. There is no need to keep gitattributes rules for a
non-existing file.

related: #19086

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 19:51:53 +00:00
Phạm Bình An 536ee91189 runtime(doc): add termdebug tag, remove term "floating window"
Problem:
- When I type `:h termdebug`, I will expect to see the introduction of
  the termdebug plugin. But instead, it shows me document of
  `termdebug_wide`, and I have to scroll up quite much to find the
  introduction.
- `:h popup` says `floating-window`? Why? As I have tried both features
  (of Vim and Neovim), I think they are _very different_ things, even
  more different than job features in Vim and Neovim.

Solution:
- In `:h terminal.txt`, add tag `*termdebug*` to the introduction of
  termdebug plugin.
- In `:h popup.txt`, "floating window" -> "popup window".

closes: #19135

Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 19:35:38 +00:00
Christian Brabandt 4ba3dadd68 runtime(sqloracle): Update syntax script
closes: #19111

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:56:03 +00:00
Christian Brabandt 5eb10c5359 runtime(xml): update XML runtime files
closes: #19112

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:54:51 +00:00
Christian Brabandt c45e16a939 runtime(zsh): Update runtime files
closes: #19113

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:53:13 +00:00
Doug Kearns 46cc91ecbf runtime(privoxy): Update syntax file
Update to version 4.1.0.

closes: #19115

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:52:21 +00:00
zeertzjq 5e37e31496 runtime(tutor): fix wrong motion in instruction
related: neovim/neovim#37213
closes: #19117

Co-authored-by: DrNayak2306 <dhruvgnk.work@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:50:37 +00:00
zeertzjq da1c431309 patch 9.1.2063: A few typos in the code and runtime files
Problem:  A few typos in the code and runtime files
Solution: Fix those (zeertzjq).

closes: #19119

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:33:28 +00:00
Doug Kearns e7bb907c24 runtime(wget): Update syntax files
Update to versions Wget 1.25.0 and Wget2 2.2.1.

closes: #19122

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 20:34:19 +00:00
Yegappan Lakshmanan 08953f7113 runtime(doc): Minor updates to version9.txt
closes: #19124

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 20:32:22 +00:00
Christian Brabandt 6c30628392 runtime(cpp): Announce syntax file adoption
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 15:55:37 +00:00
Hoang Nguyen 8d0fcff002 patch 9.1.2062: filetype: djot files are not recognized
Problem:  filetype: djot files are not recognized
Solution: Detect *.dj and *.djot files as djot filetype
          (Hoang Nguyen).

Reference:
- https://djot.net/

closes: #19105

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 15:00:15 +00:00
Hoang Nguyen 969a4a0ba5 patch 9.1.2061: filetype: Koka files are not recognized
Problem:  filetype: Koka files are not recognized
Solution: Detect *.kk files as koka filetype (Hoang Nguyen).

Reference:
- https://koka-lang.github.io/koka/doc/index.html

closes: #19104

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 14:56:00 +00:00
Hoang Nguyen b084b8f1db patch 9.1.2060: filetype: Rasi include files are not recognized
Problem:  filetype: Rasi include files are not recognized
Solution: Detect *.rasinc as rasi filetype (Hoang Nguyen)

Reference:
- https://github.com/davatorium/rofi/blob/next/doc/rofi-theme.5.markdown#file-extension

closes: #19103

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 14:52:13 +00:00
Hoang Nguyen 88f3ac34ea patch 9.1.2059: filetype: Nickel files are not recognized
Problem:  filetype: Nickel files are not recognized
Solution: Detect *.ncl files as nickel filetype
          (Hoang Nguyen)

Reference:
- https://nickel-lang.org/getting-started/
- https://github.com/tweag/nickel/tree/master/examples

closes: #19102

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 14:49:51 +00:00
Sean Dewar ac5c8ab6cc patch 9.1.2058: b_locked_split is not checked for :sbuffer
Problem:  b_locked_split is not checked for :sbuffer, which allows
          autocommands to leave windows open to freed buffers.
Solution: In do_buffer_ext, check just before possibly splitting, after
          handling 'switchbuf'. Leave win_split to handle the check for
          curbuf. (needed even if curbuf is not the target, as setting
          the buffer after splitting may fail) (Sean Dewar)

closes: #19096

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:58:44 +00:00
Foxe Chen 4157787be8 patch 9.1.2057: copying to clipboard register broken with 'go-P'
Problem:  Copying to clipboard register broken with 'go-P'
          (Coacher)
Solution: Verify that clip_plus is available (Foxe Chen).

fixes:  #19072
closes: #19097

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:54:40 +00:00
zeertzjq 254f844dda patch 9.1.2056: tests: inconsistent indent and line breaking in Test_maparg()
Problem:  tests: inconsistent indent and line breaking in Test_maparg().
Solution: Consistently use spaces-only indent. Reorder fields to group
          similar ones together and break lines at consistent positions.
          Remove a mapping when it is no longer used (zeertzjq).

closes: #19099

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:22:42 +00:00
RestorerZ d5560fd395 translation(ru): Updated message file
closes: #19093

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:19:44 +00:00
RestorerZ 416d1a5e28 translation(ru): added a disclaimer to the license translation
closes: #19092

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:17:35 +00:00
RestorerZ a735e44b3c translation(ru): updated menu files according to the patch 9.1.1989
closes: #19091

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:16:11 +00:00
RestorerZ 3ac486b8a6 translation(ru): updated tutor files
closes: #19090

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:14:57 +00:00
zeertzjq 1aa5ca4ecb patch 9.1.2055: Division by zero in :file after failing to wipe buffer
Problem:  Division by zero in :file after failing to wipe buffer
          (after 8.2.4631).
Solution: Still call buf_clear_file() when failing to wipe buffer
          (zeertzjq).

closes: #19088

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:11:16 +00:00
Muraoka Taro 0ed8ba3079 Always force LF line endings in old test .ok files
Problem: When running tests on a source tree checked out with git for
Windows, the old tests fail.

The Git for Windows installer installs git with core.autocrlf=true by
default. If you check out, build, and run tests using such a git, the
old test .ok files will likely fail because they use CRLF line endings.
Tests on Windows assume that .ok files use LF line endings, and
appropriately convert the line endings of related files.  This
assumption breaks down when .ok files use CRLF.

Solution: Force LF line endings for old test .ok files in the
.gitattributes file.  Related to that, we've stopped explicitly
specifying line endings when checking out in CI, since this is no longer
necessary.

While at it, also fix a typo in the comment of the gitattributes file.

closes: #19086

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:36:03 +00:00
Neila 77a59be594 runtime(cangjie): Update syntax script
This commit updates `syntax/cangjie.vim` to match the latest `std.core`
library:

New Features:
* Documentation: Added highlighting for documentation keywords (e.g., `@param`, `@return`).
* Standard Library: Added highlighting for `std.core` functions, interfaces, and classes.
* Exceptions: Added highlighting for standard exception types.
* FFI Support: Added highlighting for C interoperability types (e.g., `CPointer`).

Improvements:
* Configuration: Added a unified switch (`s:enabled('builtin')`) for standard library highlighting.
* Type System: Updated `Int` and `UInt` aliases.
* Interpolation: Enabled standard library highlighting inside string interpolation.
* Cleanup: Removed non-core types like `ArrayList` and `HashMap`.

closes: #19085

Signed-off-by: Neila <wu.junkai@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:18:09 +00:00
Yegappan Lakshmanan eb577f9206 patch 9.1.2054: Can't unpack tuple from imported function
Problem:  Can't unpack tuple from imported function
          (Mao-Yining)
Solution: Support multi-variable assignment from a tuple returned by an
          imported function (Yegappan Lakshmanan)

fixes:  #19080
closes: #19083

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:13:02 +00:00
Muraoka Taro 2a3b608355 patch 9.1.2053: MS-Windows: May use wrong find command
Problem:  If another find.exe derived from findutils is installed on
          Windows, unintended behavior will occur. If MSYS2 is installed and
          prioritized over the system path, then find.exe derived from
          findutils will be launched during build, resulting in an
          unintended warning message.
Solution: Specify the absolute path including SYSTEMROOT to launch
          find.exe (Muraoka Taro)

closes: #19081

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:04:59 +00:00
Matthias Rader a5b19603e4 patch 9.1.2052: Compile error when disabling linebreak feature
Problem:  Compile error when disabling linebreak feature
Solution: Adjust ifdefs (Matthias Rader)

When compiling with all features except for linebreak, there were some
compiler errors. By slightly modifying some preprocessor conditions,
compiling without the linebreak feature should work as expected.

closes: #19068

Signed-off-by: Matthias Rader <matthias.rader@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 09:58:04 +00:00
Muraoka Taro 679c2c01fa patch 9.1.2051: tests: fix Test_cd_completion fails in Appveyor
Problem:  Test_cd_completion test fails in Appveyor. In Appveyor, a path
          containing spaces was selected as the test target. But the
          comparison failed because spaces were not taken into account
          (after v9.1.2050)
Solution: Escape spaces in paths for comparison (Muraoka Taro)

closes: #19087

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-05 08:13:18 +00:00
Muraoka Taro 6625ba359e patch 9.1.2050: tests: Test_cd_completion may fail
Problem:  tests: Test_cd_completion() may fail depending on the contents
          of the root directory of the current drive on Windows.
          readdir() may return a directory that cannot "cd" to, causing
          this test to fail. An example of such a directory is
          "System Volume Information" which only admin can "cd" to.
Solution: When determining the directory to use for testing, use the
          directory that we actually "cd" to successfully.
          In addition, directories with '$' in their names are also
          excluded, as they are considered environment variables during
          completion and do not work as expected.
          Example: "$RECYCLE.BIN" (Muraoka Taro).

closes: #19078

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 23:47:27 +00:00
Hirohito Higashi 4a9967bddf patch 9.1.2049: Vim9: unexpected E1209 error
Problem:  Vim9: unexpected E1209 error
Solution: Fix error message (Hirohito Higashi)

closes: #19067

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 17:16:23 +00:00
Muraoka Taro 997952a512 patch 9.1.2048: MS-Windows: backspace behavior wrong with ConPTY
Problem:  Pressing backspace in ConPTY on Windows deletes an entire
          word, not just a single character. This is the same as
          pressing Alt + backspace in cmd.exe.
Solution: When using ConPTY on Windows, the `VTERM_KEY_BACKSPACE` key is
          now sent when the Backspace key or Ctrl+H is detected.
          (Muraoka Taro)

Historically, Windows has assigned the code 0x7F (DEL) to backspace, and
it seems necessary to follow that behavior when using ConPTY.

closes: #19065

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 17:06:03 +00:00
Mao-Yining bfd4f75b5a patch 9.1.2047: MS-Windows: style issue in gui_w32.c
Problem:  MS-Windows: style issue in gui_w32.c
Solution: Fix indentation, drop unnecessary braces
          (Mao-Yining)

closes: #19073

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 17:00:09 +00:00
Mao-Yining 8be4610588 patch 9.1.2046: MS-Windows: compile warnings
Problem:  MS-Windows: compile warnings in os_win32.c,
          acp_to_enc() requires char_u* but others require char*
          (John Marriott, after v9.1.2013)
Solution: Cast the variables (Mao-Yining)

closes: #19074

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 16:51:47 +00:00
Larson, Eric 93eb081eee runtime(doc): Clarify visual mark behavior in getpos(), setpos()
Add documentation notes explaining that visual marks '< and '> have
different behaviors in getpos() and setpos().

Also fix a small typo.

closes: #19070

Signed-off-by: Larson, Eric <numeric.larson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 16:46:59 +00:00
Christian Brabandt 57352b279d runtime: mention subscription only ml, fix typo in maintainer email
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 16:29:07 +00:00
Muraoka Taro 0115da33b4 CI: Missing test of Vim with ConPTY on Windows
Problem:  Current CI Windows testing does not test Vim using ConPTY.

Solution: Added a configuration to enable ConPTY to the Windows matrix.
          This configuration suppresses the installation of winpty,
          allowing testing with ConPTY.

Since the fixes made at the end of last year, all tests now pass when
using ConPTY, just like when using winpty. ConPTY itself is stable on
recent versions of Windows, so there are no longer any reasons not to
test it.

closes: #19066

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 11:08:26 +00:00
Antonio Giovanni Colombo 5beb6b58c9 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:29:17 +00:00
Christian Brabandt bc12a938d9 patch 9.1.2045: Mac: Build failure with Mac OS X 10.6
Problem:  Mac: Build failure with Mac OS X 10.6
          (Sergey Fedorov, after: v9.1.1748)
Solution: Add ifdefs MAC_OS_X_VERSION_10_7 around the code that sets the
          scheduler priority.

fixes:   #19044
related: #18120
closes:  #19054

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:24:42 +00:00
John Marriott a7e671fbb9 patch 9.1.2044: Inefficient use of ga_concat()
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

Additionally the following changes are done:
os_unix.c:
- in function `socket_server_list_sockets()` use a `string_T` for the
  strings `buf` and `path` for use in `ga_concat_len()`
  and drop un-needed variable `dir`.

quickfix.c:
- in function `qf_jump_print_msg()` use a `string_T` for the string
  `IObuff` for use in `ga_concat_len()`.
- in function `qf_range_text()` use a `string_T` for the string `buf`
  for use in `ga_concat_len()`.

register.c:
- simplify function `execreg_line_continuation()`.

terminal.c:
- in function `read_dump_file()` use a `string_T` for the
  string `prev_char` for use in `ga_concat_len()`.

tuple.c:
- in function `tuple_join_inner()` use a `string_T` for the
  string `s` for use in `ga_concat_len()`. Also, change local struct
  `join_T` to use `string_T`.

vim9type.c:
- in functions `type_name_tuple()` and `type_name_func()`
  use a `string_T` for the string `arg_type` for use in
  `ga_concat_len()`.

closes: #19038

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:11:58 +00:00
Chris Dragan 96a1caac6b patch 9.1.2043: filetype: kos files are not reconized
Problem:  filetype: kos files are not reconized
Solution: Detect *.kos files as kos filetype
          (Chris Dragan)

Reference:
- https://github.com/kos-lang/kos

closes: #19056

Signed-off-by: Chris Dragan <chris@dragan.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:06:55 +00:00
Ac5000 0f93c988e9 patch 9.1.2042: filetype: systemd quadlet files are not recognized
Problem:  filetype: systemd quadlet files are not recognized
Solution: Detect additional patterns as systemd filetype
          (Ac5000)

Reference:
- https://docs.podman.io/en/latest/markdown/podman.1.html
- https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html
- https://docs.podman.io/en/latest/markdown/podman-quadlet.1.html

fixes:  #15078
closes: #19057

Signed-off-by: Ac5000 <15003210+Ac5000@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:58:30 +00:00
Christian Brabandt 7f5c60b31e patch 9.1.2041: tests: test_menu.vim leaves swapfiles behind
Problem:  tests: test_menu.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:49:18 +00:00
Doug Kearns 19442ad118 patch 9.1.2040: :tlunmenu incorrectly accepts a range
Problem:  :tlnumenu incorrectly accepts a range.
Solution: Remove EX_RANGE and EX_ZEROR from the command definition and
          use ADDR_NONE (Doug Kearns).

closes: #19055

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:45:46 +00:00
Paulo Moura cc71684ab0 runtime(logtalk): Update Logtalk runtime files for the latest language spec
closes: #19058

Signed-off-by: Paulo Moura <pmoura@logtalk.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:42:57 +00:00
Yee Cheng Chin 871d2cc2ef patch 9.1.2039: if_ruby: crash when using Ruby/dyn 4.0
Problem:  if_ruby: crash when using Ruby/dyn 4.0
          (after v9.1.2036)
Solution: Fix Ruby 4.0 dynamic builds correctly by inlining
          rb_check_typeddata (Yee Cheng Chin)

Ruby 4.0 broke Vim compilation in dynamic builds. That's because the
function `rb_check_typeddata` is now used in an inline function defined
in Ruby headers, which causes it to link against the lib statically
rather than using the one we load in dynamically
(`dll_rb_check_typeddata`) as we only remap it later (after the Ruby
header include).

A previous fix (v9.1.2036) did a wrong fix by stubbing in the actual
inline function `rbimpl_check_typeddata` instead. This does not work
because the inline function is not part of the dynamic lib and therefore
it's not possible to load it in dynamically (the patch also did not
actually attempt to load in the stub). With that patch, Vim would
crash when this function is used as the function pointer is null.

Fix this properly by reverting the previous change, and simply stub
`rb_check_typeddata` using similar mechanisms the file had already set
up for similar situations.

fixes:   #18884
related: #19051
closes:  #19060

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 16:25:10 +00:00
Christian Brabandt 4fe7301df9 patch 9.1.2038: tests: test_marks.vim leaves swapfiles behind
Problem:  tests: test_marks.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

closes: #19061

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 16:20:08 +00:00
Christian Brabandt 62d8f3dab5 runtime: Revert several "mark invalid contact addresses" commits
This reverts commits:
- 6b652a7850
- 2f689d5abd
- a025a46d41

Several email addresses that are known to be valid caused bounces
due to an issue with my email setup. The previous commits incorrectly
marked these addresses as invalid. So revert the whole thing again.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 15:14:14 +00:00
altermo a722da29c1 patch 9.1.2037: undo: cursor position not correctly restored
Problem:  undo: cursor position not correctly restored
Solution: Do not override the saved cursor position (altermo)

closes: #19052

Signed-off-by: altermo <107814000+altermo@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 14:32:50 +00:00
EnumDev eea85983cb patch 9.1.2036: if_ruby: build error with ruby 4.0
Problem:  if_ruby: build error with ruby 4.0
          (Mamoru Tasaka)
Solution: Always define rb_check_typeddata (EnumDev).

fixes:  #18884
closes: #19051

Signed-off-by: EnumDev <enumdev@enumerated.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 14:25:38 +00:00
Yee Cheng Chin 644db087e5 Merge remote-tracking branch 'vim/master' 2025-12-31 22:17:11 -08:00
Yee Cheng Chin f215fc007f Merge pull request #1623 from ychin/ci-use-ruby34
ci: Use Ruby 3.4 instead of the recently released 4.0 for now
2025-12-31 22:05:19 -08:00
Yee Cheng Chin b8ebacc9c9 ci: Use Ruby 3.4 instead of the recently released 4.0 for now
Ruby 4.0 is broken upstream in Vim. Once that's fixed, we can remove
this.

This should not be in a release build, as it's a temporary measure to
unblock CI.
2025-12-31 21:47:17 -08:00
Christian Brabandt a025a46d41 runtime: mark more invalid email addresses
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 17:18:13 +00:00
Christian Brabandt 2f689d5abd runtime: mark more invalid email addresses
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 16:38:08 +00:00
Christian Brabandt 6b652a7850 runtime: mark invalid contact addresses
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 12:03:36 +00:00
Christian Brabandt ea189a6f4d patch 9.1.2035: filetype: filetype: Fennel fnlm files are not recognized
Problem:  filetype: Fennel fnlm files are not recognized
          (Alexei Mozaidze, after v9.1.2034)
Solution: Detect *.fnlm files as fennel filetype, revert detecting
          *.fnml files

related: #19047

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 11:52:34 +00:00
Christian Brabandt 9c87af5c3c patch 9.1.2034: filetype: Fennel fnml files are not recognized
Problem:  filetype: Fennel fnml files are not recognized
          (Alexei Mozaidze)
Solution: Detect *.fnml files as fennel filetype

Reference:
- https://fennel-lang.org/changelog#160--2025-10-13

fixes: #19047

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:57:09 +00:00
Muraoka Taro 9d71fdaf3a patch 9.1.2033: tests: Test_terminal_cwd flaky when using ConPTY
Problem:  tests: Test_terminal_cwd in test_terminal.vim fails flaky
          in the Windows ConPTY terminal.
Solution: In ConPTY, the timeout is extended to 1msec when reading a
          channel associated with a job that is about to finish.  This
          allows Vim to read the last output of a process in a pseudo
          console. Add comments to make the reasoning clear.
          (Muraoka Taro)

Processes that terminate too quickly in the ConPTY terminal cause Vim to
miss their final output.

In my environment, the probability of the "cmd /D /c cd" used in
Test_terminal_cwd occurring is about 1/4.  For a simple statically
linked Hello World, the probability of it occurring is about 3/4.

closes: #19036

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:42:02 +00:00
Foxe Chen 83fc7c4d8e patch 9.1.2032: Vim9: error when using class member in Lambda
Problem:  Vim9: error when using class member in Lambda
Solution: Compare against uf_defclass variable
          (Foxe Chen)

closes: #19041

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:30:51 +00:00
Mao-Yining 10dc693ea0 translation(zh_CN): Update the Simplify Chinese translation
closes: #19034

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:28:45 +00:00
Brian Carbone 5c2b594d0e runtime(rust): Update indentation after nested array literal
fixes:  #18974
closes: #19042

Signed-off-by: Brian Carbone <brian@briancarbone.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:26:20 +00:00
Christian Brabandt d09be15847 runtime(doc): Update Contributing.md on the use of AI
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:20:37 +00:00
Christian Brabandt ce1636548d runtime(doc): Emphasize adding tests when contributing
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:07:18 +00:00
Christian Brabandt 7a6d9454c8 README.md: remove the warp ad again
related: #18153

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-30 10:35:10 +01:00
Christian Brabandt 1bc3610b0a runtime(rust): partly revert e426245b, it causes more issues than it solves
related: #18974

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-29 09:41:17 +01:00
Thomas Petazzoni 6df5360691 patch 9.1.2031: Makefile: cannot run make installinks twice
Problem:  Makefile: cannot run make installinks twice
Solution: Change "ln -s" to "ln -sf" to force creation of the symlinks
          (Thomas Petazzoni)

Running "make installlinks" twice towards the same destination
directory will fail, as symlink will already exist. This is not really
expected as "make install" is normally expected to work again and
again towards the same destination directory.

Fix this by using ln -sf.

closes: #19035

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:26:52 +00:00
John Marriott 32b801abc3 patch 9.1.2030: inefficient use of ga_concat()
Problem:  inefficient use of ga_concat()
Solution: Use ga_concat_len() when length is known.
          (John Marriott)

closes: #19027

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:14:41 +00:00
Yegappan Lakshmanan 1dd301a4b3 patch 9.1.2029: tests: the test_vim9_class.vim testfile is too long
Problem:  tests: the test_vim9_class.vim testfile is too long
Solution: Split out the interface related test cases into a new
          test file test_vim9_interface.vim (Yegappan Lakshmanan)

closes: #19032

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:08:21 +00:00
Victorhck e74e40dc43 runtime(tutor): Improve Spanish translation for chapter 2 after 757b42a
related: #18950
closes:  #19014

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:03:25 +00:00
Christian Brabandt ea2b98b9e9 runtime(indent-tests): Include a simple Rust indent test
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:00:44 +00:00
Christian Brabandt e426245bb3 runtime(rust): clean-up indent script, handle opening empty line correctly
fixes: #18974

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 13:57:33 +00:00
Christian Brabandt f99de42a9f patch 9.1.2028: [security]: Buffer-overflow with incomplete multi-byte chars
Problem:  Buffer overflow in buf_write() when converting incomplete
          multi-byte characters (Kevin Goodsell)
Solution: Make the buffer slightly larger

closes: #19007

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:46:44 +00:00
Stanislaw Gruszka ee3f10af87 runtime(bpftrace): add indention plugin
Problem:  No indention support when editing bpftrace files.
Solution: Add indention settings based on cindent with custom options.

closes: #19030

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:37:53 +00:00
Mao-Yining dab78ec4a2 translation(zh_CN): Update the Simplify Chinese translation
closes: #19031

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:33:21 +00:00
Mao-Yining a7f703c215 runtime(doc): improve :catch documentation
related: #18984
closes:  #19029

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:28:26 +00:00
Scott McKendry 4e722fdfdd patch 9.1.2027: filetype: bicep filetype used for 2 bicep file types
Problem:  filetype: bicep filetype used for 2 bicep file types
Solution: Detect *.bicepparam files as bicep-param filetype, include
          new bicep-params and bicep filetype plugin
          (Scott McKendry)

The bicep language server handles parameter files differently than
regular bicep files. Treating them the same at the editor level leads to
false positive diagnostics in the editor.

References:

Bicep Language Constants:
- https://github.com/Azure/bicep/blob/51392d32ca2c8b94b1bb7a255e78e1d559d12573/src/Bicep.Core/LanguageConstants.cs#L23
VS Code Extension definition:
- https://github.com/Azure/bicep/blob/51392d32ca2c8b94b1bb7a255e78e1d559d12573/src/vscode-bicep/package.json#L47

closes: #19026

Signed-off-by: Scott McKendry <me@scottmckendry.tech>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:20:39 +00:00
zeertzjq 78046cc539 patch 9.1.2026: tests: patch 9.1.2019 not tested properly
Problem:  tests: patch 9.1.2019 not tested properly.
Solution: Add missing :exe (zeertzjq).

closes: #19028

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:07:52 +00:00
Muraoka Taro 9f5b09ea1f patch 9.1.2025: conpty terminal process may not start
Problem:  Conpty terminal process may not start.
Solution: Do not close the input handle at EOF when conpty is in use.
          (Muraoka Taro)

It causes the following tests to fail in Windows conpty:

          - Test_terminal_duplicate_eof_arg()
          - Test_terminal_eof_arg()
          - Test_terminal_eof_arg_win32_ctrl_z()

To be precise, the process is launched, but immediately after it is
launched, the input handle to the console is closed with the EOF of the
input, and the console is terminated. When the console is terminated,
the associated process is also terminated.

In the Windows pseudo console, input and output handles are closed after
the process in the console has terminated.  This is not explicitly
stated in Microsoft's documentation.  However, looking at the code for
Windows Terminal, which is presented as a complete example of the pseudo
console, it is implemented exactly this way.

See the sample codes below:

- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/EchoCon/EchoCon/EchoCon.cpp
- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/GUIConsole/GUIConsole.ConPTY/Terminal.cs
- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/MiniTerm/MiniTerm/Terminal.cs

The handle that is not closed at EOF is closed when Vim detects the end
of the job, so there is no risk of them being forgotten and leaking.

`ch_anonymous_pipe`, which was used to determine whether a channel was
for conpty, was set to TRUE only when conpty was being used. The
definition also had the comment `// ConPTY` attached to it.  This name
is not very appropriate, but I felt it would be rude to add a new field
to `channel_T` just for this purpose, so I reused it.

closes: #19025

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:36:31 +00:00
glepnir 4d5b303726 patch 9.1.2024: 'fsync' option cannot be set per buffer
Problem:  'fsync' option cannot be set per buffer
Solution: Make 'fsync' option global-local
          (glepnir)

closes: #19019

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:32:47 +00:00
Christian Brabandt 9266a2a197 patch 9.1.2023: [security]: Use-after-free in alist_add() with nasty autocmd
Problem:  A BufAdd autocommand may cause alist_add() to use freed
          memory, this is caused by the w_locked variable unset too
          early (henices)
Solution: in trigger_undo_ftplugin() only set w_locked to false, if it
          was false when calling the function.

related: v9.1.0678
closes: #19023

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:10:37 +00:00
Konfekt 1ff2239053 runtime(compiler): add pyright Python type checker
closes: #19017

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:07:21 +00:00
Mao-Yining 08aaa7ae19 runtime(doc): remove some fixed items from todo.txt
closes: #19024

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 16:01:31 +00:00
Wei Tang 43b87938f5 patch 9.1.2022: using C++ keyword class as member variable name
Problem:  A recent commit introduced a member variable named `class` in
          the `exarg` structure, which conflicts with the C++ keyword
          `class`. This causes compilation issues on Windows when VIM
          is compiled with OLE enabled, as "if_ole.cpp" cannot compile
          due to the keyword conflict (after v9.1.2012).
Solution: Rename the member variable of `exarg` from `class` to `ea_class`.
          (Wei Tang)

related: #18949
closes:  #19016

Signed-off-by: Wei Tang <gauchyler@uestc.edu.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:54:46 +00:00
tao 538da34ad3 runtime(netrw): Fix reading UNC paths on windows
Problem:  When Vim is launched with a UNC directory, netrw treats it as a
          relative path and compose it again.
Solution: This is due to `exists("g:netrw_cygwin")` always being true.
          We can directly use `g:netrw_cygwin`.

closes: #19015

Signed-off-by: tao <2471314@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:51:32 +00:00
Konfekt ffd5c52d23 runtime(compiler): ignore 'Found' messages in ruff and ty compiler
while at it, also update the ty command line

closes: #19012

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:33:39 +00:00
ners b91b30643a patch 9.1.2021: filetype: fluent files are not recognized
Problem:  filetype: fluent files are not recognized
Solution: Detect *.ftl files as fluent filetype (ners)

References:
- https://projectfluent.org/

closes: #19011

Signed-off-by: ners <ners@gmx.ch>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:27:19 +00:00
Miguel Barro c721b69e88 runtime(termdebug): update v:shell_error condition test.
vim9 conditions only admit 0 or 1 integers, however the return value of
shells is not limited to either 0 or 1 (e.g. powershell)

closes: #19010

Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:19:41 +00:00
Christian Brabandt a8a0ee5004 patch 9.1.2020: tests: test_virtualedit.vim leaves swapfiles behind
Problem:  tests: test_virtualedit.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:16:46 +00:00
McAuley Penney 491f0fa457 patch 9.1.2019: inconsistent cursor encoding past EOL with ve=all
Problem:  When virtualedit is set to all, the cursor is supposed to be
          permitted to reside anywhere, including on the virtual space
          beyond the end of the buffer's text. Switching modes triggered
          a routine that "fixed" a cursor that was past the end of the
          line by shifting it back to the last actual character in the
          line and compensating with a virtual column offset. While
          visually identical, this re-encoding changed the underlying
          byte index, causing position-reporting functions to return
          inconsistent values after a mode change.
Solution: Skip this coordinate adjustment when virtual editing is fully
          enabled. By treating the line terminator as a valid, stable
          position, the cursor’s internal representation remains
          unchanged when entering or exiting Visual mode, ensuring
          consistent coordinate reporting. Add a regression test to
          check this functionality.
          (McAuley Penney)

fixes:  #16276
closes: #19009

Signed-off-by: McAuley Penney <jacobmpenney@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:10:01 +00:00
tao eb3007b417 patch 9.1.2018: proto: ops.pro outdated
Problem:  proto: ops.pro outdated (after v9.1.2017)
Solution: Regenerate the ops.pro proto file (Tao)

closes: #19018

Signed-off-by: tao <2471314@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:04:24 +00:00
Foxe Chen e6a11d45e5 runtime(osc52): A few minor fixes
- If g:osc52_disable_paste is enabled, then return an empty list instead
  of a list with a single empty string.
- use `echo` instead of `echom` when printing osc waiting message

closes: #19002

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 14:59:01 +00:00
Christian Brabandt 2006415016 runtime(doc): add reference to searchcount() function
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 22:22:38 +00:00
Christian Brabandt 6d211bc4f0 runtime(doc): Improve :catch documentation
fixes: #18984

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 21:58:57 +00:00
Beleswar Prasad Padhi 519dc391d8 runtime(make): Makefile highlighting breaks with ')' in string
Problem:  Makefile syntax highlighting incorrectly ends function calls
          when encountering ')' inside double or single quoted strings,
          causing incorrect highlighting for the remainder of the line.
Solution: Add makeDString and makeSString to the contains list for
          makeIdent regions. This allows strings to be recognized inside
          variable references and function calls.

fixes:  #18687
closes: #18818

Signed-off-by: Beleswar Prasad Padhi <beleswarprasad@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 21:32:10 +00:00
Yiyang Wu aded55463a runtime(make): Move target greedy match after $() to avoid region matching overflow
Partially revert 2a33b499a3, where all
syn match makeIdent are moved before syn region makeIdent to match $()
(reason: see https://github.com/vim/vim/pull/18403#issuecomment-3341161566)

However this results in https://github.com/vim/vim/issues/18890 ,
because lines like
`$(a) =`
will first start a region search beginning with `$(`
but then the whole target including `)` will be matched by
`syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1`
which leaves the region search for the never-found `)` and let the
region matching overflow.

Same for

`$(a) ::`
`$(a) +=`

The solution is to move those greedy target match back, so they take
priority and prevents region match from happening.

fixes:  #18890
closes: #18938

Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 21:25:04 +00:00
McAuley Penney 8ea0e7205c patch 9.1.2017: getregionpos() depends on 'linebreak' setting
Problem:  getregionpos() depends on 'linebreak' setting
Solution: Reset linebreak setting temporarily (McAuley Penney)

When a line is wrapped on word boundaries, getregionpos() may report a
different end column for a visual block than the cursor position used to
define the selection.

Update the blockwise calculation in getregionpos() to use the same
wrapping assumptions as visual block mode, so the reported region
matches the selection boundaries.

Add a regression test that forces wrapping and checks that the end
position stays consistent under "setlocal wrap" and "setlocal
linebreak".

closes: #19006

Signed-off-by: McAuley Penney <jacobmpenney@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:51:25 +00:00
Anttoni Erkkilä 9d661b057e patch 9.1.2016: cindent wrong indentation after do-while loop
Problem:  At "if(0) do if(0); while(0); else", else should be aligned
          with outer if, but is aligned with inner if.
Solution: In function find_match, ignore "if" and "else" inside a
          do-while loop, when looking for "if". (Anttoni Erkkilä)

closes: #19004

Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:42:57 +00:00
Foxe Chen 60c87056b4 patch 9.1.2015: blob2string() stopped after an empty line
Problem:  blob2string() stopped after an empty line
Solution: Specifically check for empty content (Foxe Chen)

closes: #19001

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:37:19 +00:00
Foxe Chen 11c3c62aa8 patch 9.1.2014: clipboard: clipboard register corrupted with clipboard provider
Problem:  clipboard: clipboard register corrupted with clipboard
          provider (Satoru Kitaguchi and mikoto2000 after v9.1.1972)
Solution: Only adjust clipboard register points to the unnamed register
          (Foxe Chen)

fixes:  #18983
fixes:  #18988
closes: #19000

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:29:08 +00:00
Muraoka Taro 90e17110c4 patch 9.1.2013: tests: Test_terminal_shell_option fails with conpty
Problem:  tests: When opening a conpty terminal, if process startup
          fails, it will silently exit.  As a result, the
          Test_terminal_shell_option in test_terminal3.vim failed in
          conpty.

          In a winpty terminal, the winpty-provided error message
          "CreateProcess failed" was displayed.  The test is designed to
          catch this error as an exception.

Solution: Make conpty fail with an error messages in the same way as winpty.
          (Muraoka Taro)

In addition, since the GetWin32Error() function can obtain more detailed
error messages, the format has been changed to "CreateProcess failed:
{localized message from the OS}" for conpty.

Also, since the GetWin32Error() function returns errors in ACP (Active
Code Page) encoding, these have been converted to Vim's internal
encoding, enc.  This will prevent messages from being garbled in
Japanese environments, etc.  The output of this function was basically
used by the semsg() function in other places, so this change also fixes
potential similar garbled characters.

The test now errors out immediately in places where it is expected not
to be reached, and comments have been added about the expected content
of the winpty and conpty error messages.

closes: #18998

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:22:54 +00:00
Foxe Chen cbcc5babba patch 9.1.2012: Vim9: cannot initialize class member with protected var
Problem:  Vim9: cannot initialize class member with protected var
Solution: Allow this to work if this happens within the same class
          (Foxe Chen)

closes: #18949

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:17:30 +00:00
Stanislaw Gruszka 5e577c7aa8 runtime(ftplugin): set different formatoptions for bpftrace
Problem:   Comment formatting does not work by default for bpftrace.
Solution:  Change default 'formatoptions' similarly as C and many other
           languages.

closes: #18996

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:15:14 +00:00
Christian Brabandt bb10f71402 patch 9.1.2011: crash when unreferencing gtk icon theme
Problem:  crash when unreferencing gtk icon theme
          (noamhalevy-wq, after v9.1.1583)
Solution: Remove the g_object_unref() call.

gtk_icon_theme_get_default() returns a singleton that should NOT be
unreferenced. From GTK documentation:

> A unique GtkIconTheme associated with the default screen. This icon
theme is associated with the screen and can be used as long as the
screen is open. Do not ref or unref it.

fixes: #18997

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:59:50 +00:00
John Marriott a90e80411a patch 9.1.2010: Missing out-of-memory checks in vim9class.c
Problem:  Missing out-of-memory checks in vim9class.c
          (after v9.1.2000)
Solution: Return FAIL early (John Marriott)

closes: #18991

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:49:43 +00:00
Stanislaw Gruszka 7982966f3e runtime(bpftrace): add base syntax plugin
Problem:  No syntax highlighting for bpftrace files.
Solution: Add basic syntax rules, which cover comments, keywords, strings,
          numbers, macros and probes (the bpftrace specific items).

closes: #18999

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:46:44 +00:00
Muraoka Taro de37e7430a patch 9.1.2009: tests: "Xm4" test directory may not be deleted
Problem:  tests: "Xm4" test directory may not be deleted
Solution: Use "R" flag with mkdir() call to have the directory
          recursively deleted at the end of function Test_m4_format()
          (Muraoka Taro)

Test_m4_format in test_filetype.vim creates the "Xm4" directory with the
'D' flag. Then it creates two files in the "Xm4" directory. One of them,
"alocal.m4," was created with the 'D' flag, so it will disappear after
the test is complete. However, the other, "configure.ac," was created
without any flags, so it will remain even after the test is complete.
Because the parent directory "Xm4" was created with the 'D' flag, the
latter "configure.ac" remains and is not empty, so it will not be
deleted.

This forces the directory to be deleted regardless of its contents. As a
result, the two files "alocal.m4" and "configure.ac" created in the
directory are no longer needed, so they have been deleted.

closes: #18995

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:33:50 +00:00
Ambrus Tóth 9c9982240a patch 9.1.2008: filetype: hylo files are not recognized
Problem:  filetype: hylo files are not recognized
Solution: Detect *.hylo files as hylo filetype (Ambrus Tóth)

References:
- https://hylo-lang.org/

closes: #18994

Signed-off-by: Ambrus Tóth <ping@ambrus.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:26:52 +00:00
Ivan Pešić b571034a8f translation(sr): Update Serbian message translation
closes: #18993

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:21:01 +00:00
Stanislaw Gruszka f2814754c0 patch 9.1.2007: filetype: bpftrace hashbang lines are not recognized
Problem:    bpftrace files are not recognized from the hashbang line.
Solution:   Add a hashbang check (Stanislaw Gruszka)

closes: #18992

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:17:36 +00:00
Muraoka Taro 86855ea8ee patch 9.1.2006: MS-Windows: ANSI colors not correct in terminal
Problem:  ANSI escape colors are not displayed correctly in
          non-termguicolors in vim (cli) on Windows. The red and blue
          channels seem to be swapped.
Cause:    When converting VTerm ANSI index colors to cterm colors in
          terminal.c, the Windows case equivalent to NR-16 (:help
          cterm-colors) is ignored.
Solution: Created and used a table to convert ANSI indexed colors to
          cterm's NR-16 representation (Windows only). This table
          corresponds to the inverse conversion of cterm_ansi_idx in
          term.c. The values in both tables are exactly the same, but
          the meanings are opposite, so they are separate tables
          (Muraoka Taro).

closes: #18931

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:45:02 +00:00
Doug Kearns 3913f13a7d runtime(doc): Improve :help builtin-function-list table formatting
- Start each field at the correct tabstop - on a new line if required.
- Use "Type1/Type2" for return types rather than "Type1 or Type2",
  matching the dominant style.
- Convert hyperlinked Ex commands to command markup, `:cmd`.
- Wrap overlong lines.

closes: #18438

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:37:10 +00:00
Mao-Yining 49e0f833dd patch 9.1.2005: MS-Windows: Missing fullscreen support for GUI version
Problem:  MS-Windows: Missing fullscreen support for GUI version
Solution: Add "s" flag to guioptions (Mao-Yining)

- Implement fullscreen mode controlled by the 'go-s' flag in 'guioptions'
- Update documentation with usage examples and platform-specific details

See :help 'go-s' and :help gui-w32-fullscreen for complete documentation.

closes: #18836

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:33:53 +00:00
Muraoka Taro bd686d85dc patch 9.1.2004: MS-Windows: executable() cannot find file in directory with single char
Problem:  MS-Windows: If a directory with a single character name is
          included in the PATH environment variable without a trailing
          path separator, executable() will not be able to find the
          executable file under it.
Solution: The second argument of the after_pathsep() function is now
          passed the next pointer where a path separator may exist
          (Muraoka Taro).

As a specific example, the default installation path for PowerShell v7
is "C:\Program Files\PowerShell\7", but if you set this as is in the
PATH environment variable, Vim will not be able to find the pwsh.exe
command. In this case, Vim will try to search for "C:\Program
Files\PowerShell\7pwsh.exe".

Cause: The after_pathsep() function determines whether the location
passed as its second argument immediately follows a path separator.
However, in the code where the problem occurred, the second argument was
passed a location that might contain a path separator. As a result, it
was mistakenly determined that a path separator was present in cases
where the final directory name was a single character and not followed
by a path separator, and the path to search was incorrect.

closes: #18979

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:19:39 +00:00
Konfekt e09ff34129 runtime(ty): include ty compiler plugin
closes: #18960

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:17:14 +00:00
Muraoka Taro fa2fca1ebf patch 9.1.2003: tests: Test_glob_symlinks may fail on Window
Problem:  tests: Test_glob_symlinks may fail on Windows with UCRT
          runtime
Solution: Comment out the code, do not use _wstat().
          (author)

For Test_glob_symlinks() to succeed, vim_stat() (which is actually
mswin_stat_impl()) must fail on empty symlinks.  When the dynamically
linked C runtime is linked, _wstat() succeeds even on empty symbolic
links. As a result, Test_glob_symlinks() fails.

For details, see here:
https://github.com/koron/vc-stat-behavior-verification

closes: #18962

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:09:20 +00:00
Yegappan Lakshmanan c1d77520b8 patch 9.1.2002: Vim9: heap-use-after-free when when accessing protect class member
Problem:  Vim9: heap-use-after-free when when accessing protect class
          member (Foxe Chen)
Solution: Set cl->class_type_list and return directly, add tests for
          using protected class method and variable from another class
          (Yegappan Lakshmanan).

closes: #18971

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:03:31 +00:00
Mao-Yining 8de7fd0c20 refactor(vim9): use 'start' open urls on win32
- Use `:!start` directly, discard the using of `explorer.exe`.
- Update the document in `eval.txt`.

closes: #18985

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 18:59:48 +00:00
Mao-Yining 3255b8a556 runtime(vim9): Reset pwsh and powershell in Open()
relates: #17995
closes:  #18986

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 18:45:26 +00:00
gagik d57b4a3681 translation(hy): Update Armenian language translation
closes: #18990

Signed-off-by: gagik <hakgagik@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 18:42:18 +00:00
Mateo Gjika 83fd754150 runtime(openPlugin): start :Launch process in the background in GUI mode
fixes:  #18977
closes: #18981

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 09:47:38 +00:00
Mao-Yining 2387c49f6e translation(zh_CN): Add license disclaimer
Added disclaimer to clarify that the Chinese translation is for
reference only and is not legally binding. The original English version
of the license is the sole authoritative text. No liability is accepted
for any ambiguities or errors arising from the translation.

closes: #18980

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 18:29:16 +00:00
Muraoka Taro 6ec7d40b7c runtime(getscript): GLVS plugin fails with wget.exe with PowerShell
Problem:  Only Windows: The GLVS plugin fails in a PowerShell Desktop if
          wget.exe is installed. The PowerShell Desktop has an alias
          called wget which hides wget.exe.
Solution: Force .exe extension if wget.exe is available.

closes: #18987

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 18:13:18 +00:00
Doug Kearns a820a4540d runtime(doc): Fix "Vim script" formatting at :help clipboard-providers
closes: #18966

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 17:39:32 +00:00
glepnir b43f9ded7e patch 9.1.2001: cursor may end up in wrong window after :botright copen
Problem:  After :botright copen and closing the quikfix window, the
          cursor ends up in the wrong window. The problem is fr_child
          always points to the first (leftmost for FR_ROW, topmost for
          FR_COL) child frame. When do :vsplit, the new window is
          created on the left, and frame_insert() updates the parent's
          fr_child to point to this new left window.
Solution: Create a snapshot before open the quickfix window and restore
          it when close it (glepnir).

closes: #18961

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 17:26:39 +00:00
Christian Brabandt 64799a5080 runtime(doc): clarify the behavior of CTRL-Z
fixes: #18975

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 16:54:07 +00:00
zoumi 1a4a1b9fa6 runtime(zip): Use :lcd instead of :cd in zip.vim
closes: #18967

Signed-off-by: zoumi <zoumi@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 16:25:16 +00:00
John Marriott 87c6eb804f patch 9.1.2000: Vim9: object member used char_u pointers
Problem:  Vim9: class and object member names are stored as char_u *
          pointer requiring repeated strlen() calls and making it harder
          to use length-aware string operations consistently.
Solution: Store ocm_name as a string_T instead of char_u *
          (John Marriott).

In addition in vim9class.c:
1: change some calls from ga_concat() to ga_concat_len() where the
   length is known.
2: in ex_class() remove unneeded variable name.
3. in intf_method_present() remove unneeded variable cl_name.
4: in update_member_method_lookup_table() move some assignments from
   inner loops into outer loops.
5: in member_lookup() remove unneeded else.
6: in is_duplicate_variable() and is_duplicate_enum() rearrange the
   string comparisons to first check the lengths match.

closes: #18973

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 16:00:17 +00:00
gagik 94097e0831 translation(hy): Update Armenian language translation
closes: #18969

Signed-off-by: gagik <hakgagik@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 15:55:40 +00:00
Mao-Yining 923fc09c81 translation(zh_CN): Update the Simplify Chinese translation
closes: #18978

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 15:45:36 +00:00
zeertzjq fe8c8b1e85 runtime(doc): fix outdated :function help
Since patch 7.4.264 a leading "g:" is skipped.

closes: #18976

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-20 15:24:57 +00:00
Foxe Chen 5fb29bb7e7 runtime(osc52): Update documentation, send DA1 query when loading package
closes: #18944

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-18 22:15:05 +01:00
Foxe Chen 96ce55331f patch 9.1.1999: clipboard provider does not respect 'clipboard' option
Problem:  clipboard provider does not respect 'clipboard' option
          (Satoru Kitaguchi, after v9.1.1972)
Solution: make clipboard provider register respect "unnamed/unnamedplus"
          from the 'clipboard' option value

fixes:  #18930
closes: #18952

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-18 21:47:34 +01:00
Christian Brabandt 757b42ab07 runtime(tutor): Chapter 2: consistently use upper case letter, fix typo after 1e3e1ba067
Chapter 2: Fix missing "R" after 1e3e1ba067 when using register from insert
mode. While at it, consistently use upper case letter for CTRL-R in the
new-tutor.

related: #18950

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-18 21:22:06 +01:00
yilisharcs fe0bafc728 runtime(compiler): improve rust errorformat
This commit adds match patterns for:
- warnings with error codes (warning[E0123]: foobar)
- valid nightly unicode entries

closes: #18957

Signed-off-by: yilisharcs <yilisharcs@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-18 21:14:12 +01:00
zeertzjq cedb1a3171 patch 9.1.1998: tests: not enough tests for :setlocal omnifunc
Problem:  Not enough tests for :setlocal omnifunc (after 9.1.1991).
Solution: Move the last :new after :setlocal. Also test with 'complete'
          (zeertzjq).

closes: #18958

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-18 21:02:48 +01:00
Christian Brabandt 93d9d196ed runtime(doc): use codepoint consistently
fixes: #18944

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 23:24:57 +01:00
Christian Brabandt 1e3e1ba067 runtime(tutor): Update Chapter 2, remove mentioning surround plugin
fixes: #18950

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 23:14:56 +01:00
John Marriott de701aee9f patch 9.1.1997: Missing out-of-memory check in vim9class.c
Problem:  Missing out-of-memory check in vim9class.c in calls to
          vim_strnsave().
Solution: Refactor is_duplicate_variable() and is_duplicate_enum() and
          make use of string_T struct instead (John Marriott).

closes: #18947

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 22:31:59 +01:00
yilisharcs bd5e882a91 runtime(compiler): Match gcc.vim make error format
Problem:  gcc.vim interprets "make: *** [Makefile" in the error message
          "make: *** [Makefile:2: all] Error 1" as a valid filename.
Solution: Add pattern to extract the filename correctly. Note that this
	  doesn't remove the dangling "]" from the output ("all]").

closes: #18956

Signed-off-by: yilisharcs <yilisharcs@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 22:29:24 +01:00
Christian Brabandt bf1b41e387 patch 9.1.1996: tests: test_cmdline.vim leaves swapfiles behind
Problem:  tests: test_cmdline.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 22:16:31 +01:00
Aliaksei Budavei 05531d0079 patch 9.1.1995: tests: flaky test_cmdline.vim causes test failures
Problem:  Data races between test buffers are currently addressed by
          relying on arbitrary execution delays or blissfully dismissed.
Solution: Prefer more deterministic synchronisation between test buffers
          for test cases that generate screendump files with expected
          results (Aliaksei Budavei)

closes: #18920

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 22:13:10 +01:00
Aliaksei Budavei 6ac778723b patch 9.1.1994: CI: slow cursor positioning may cause flaky test failures
Problem:  More deterministic synchronisation can be established between
          processes running test cases and collecting visual effects to
          a screendump file for future verification by anticipating
          the availability of known parts of such a file and asserting
          the location of the cursor.
Solution: Provide a convenience test function that waits a specified
          time for cursor positioning (Aliaksei Budavei)

related: #18920

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 22:13:00 +01:00
Christian Brabandt fdd21ca377 runtime(doc): fix wrong help tag reference in eval.txt
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 21:59:56 +01:00
Christian Brabandt 59a16f75b5 patch 9.1.1993: MS-Windows: compile error because of implicit type conversions
Problem:  MS-Windows: compile error because of implicit size conversions
          (after v9.1.1983)
Solution: Change type casts

closes: #18946

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 21:52:01 +01:00
Foxe Chen b74c86416e patch 9.1.1992: Vim9: heap buffer overflow with COMPAREANY instruction
Problem:  Vim9: heap buffer overflow with COMPAREANY instruction
Solution: Verify the type and error out in case of different types
          (Foxe Chen)

closes: #18945

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 21:47:53 +01:00
zeertzjq 3e82b0ebfe patch 9.1.1991: :setlocal changes effective global 'omnifunc'
Problem:  :setlocal changes effective global 'omnifunc' (Maxim Kim)
Solution: Don't change global callback when using :setlocal (zeertzjq).

fixes:  #18948
closes: #18951

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 21:34:23 +01:00
Muraoka Taro bbbc23ac2f patch 9.1.1990: tests: Test_term_gettty() fails when using conpty on Windows
Problem:  tests: Test_term_gettty() fails when using conpty on Windows,
          CI uses winpty, so this test passes.
Solution: Skip the test Test_term_gettty(). Since conpty communicates
          via anonymous pipes, there is no name that can be obtained
          with term_gettty() (Muraoka Taro)

closes: #18954

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-17 20:52:32 +01:00
Christian Brabandt ca12f62d0a patch 9.1.1989: Vim intro screen shows register message
Problem:  Vim intro screen shows register message (after v9.1.1893)
Solution: Remove the register message, registering is no longer useful
          and possible.

fixes:  #18933
closes: #18934

Signed-off-by:
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-16 20:39:31 +01:00
Foxe Chen b9e45e82ba patch 9.1.1988: osc52 package can be further improved
Problem:  osc52 package can be further improved (after v9.1.1984).
Solution: Improve plugin, update test and check for clipboard_provider
          feature (Foxe Chen).

closes: #18935

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-16 20:35:53 +01:00
zeertzjq c4b3aefd0d patch 9.1.1987: assert_equal() prepends unnecessary ':' when typed
Problem:  assert_equal() prepends unnecessary ':' when typed
          (after 9.0.1758).
Solution: Don't change a NULL stacktrace to an empty string (zeertzjq).

closes: #18936

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-16 20:07:27 +01:00
Foxe Chen beeea8a1ce patch 9.1.1986: clipboard provider does not work when redirecting messages
Problem:  clipboard provider does not work when redirecting messages
          (BenYip, after v9.1.1972)
Solution: Adjust ifdefs in ex_redir()

fixes:  #18937
closes: #18939

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-16 20:02:20 +01:00
Victorhck bbf616a9d6 runtime(tutor): Improve Spanish translations
This change does the following:
- fix lesson number in tutor 1
- added and explanation about how get vimtutor lesson 2
- fix credits to authors in lesson 2

closes: #18940

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-16 19:56:59 +01:00
Muraoka Taro 878d00bb3a patch 9.1.1985: tests: test_sound.vim fails on Windows
Problem:  tests: test_sound.vim fails when run locally on Windows
Solution: Skip Test_play_silent in Windows non-GUI environments.

Cause: There are two causes:

1) The global variable g:id is undefined, causing an undefined
   reference. Due to the execution order of test cases, g:id is defined in
   Test_play_event. However, on Windows, this test is skipped, so g:id is
   not defined. It is referenced in Test_play_silent's WaitForAssert()
   without being defined, resulting in an undefined error.

   Solution: Define g:id at the beginning of Test_play_silent.

2) In the non-GUI Windows version of vim, there is no message loop,
   so the callback when play file sound ends does not occur, and
   Test_play_silent's WaitForAssert times out and fails. In CI,
   sound_playfile() returns 0, so Test_play_silent is skipped. The
   reason for this is unknown, but it may be because CI is running on
   Windows Server or something like that.

   Solution: Skip Test_play_silent in Windows non-GUI environments.

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>

closes: #18941
2025-12-16 19:51:26 +01:00
Yee Cheng Chin 796ea69524 Merge pull request #1620 from macvim-dev/dependabot/github_actions/actions/upload-artifact-6
CI: Bump actions/upload-artifact from 5 to 6
2025-12-16 03:31:19 -05:00
dependabot[bot] 8b75ced2d5 CI: Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 08:30:18 +00:00
Yee Cheng Chin f758021961 Merge pull request #1621 from macvim-dev/dependabot/github_actions/actions/cache-5
CI: Bump actions/cache from 4 to 5
2025-12-16 03:29:25 -05:00
dependabot[bot] fa2e9aba1b CI: Bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 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/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 08:22:54 +00:00
Yee Cheng Chin 9f31a6a541 Merge pull request #1622 from ychin/ci-remove-macos13
ci: Remove macos-13 runner
2025-12-16 03:20:31 -05:00
Yee Cheng Chin 782279b1fc ci: Remove macos-13 runner
macOS-13 is retired from GitHub hosted runners, so we need to remove it.

With this change we also no longer have any x86 runners in the mix.
While GitHub Actions provides a macos-15-intel runner, it will be
deprecate in near future as well, so it's not really worth setting it
up. If we care to test MacVim on x86 machines we may have to find
alternative solutions, but for now it should be ok as we haven't seen
any issues with universal builds for a long time.
2025-12-15 22:20:33 -08:00
Foxe Chen 02b8ec7da5 patch 9.1.1984: terminal OSC52 support can be improved
Problem:  terminal OSC52 support to access the clipboard can be improved
Solution: Include and package the optional osc52 package, note: this
          requires a Vim with clipboard provider feature (Foxe Chen).

related: #14995
closes: #18575

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-15 21:52:32 +01:00
John Marriott 2019321e0b patch 9.1.1983: Vim9: class_name definition can be improved
Problem:  Vim9: class_name definition can be improved
Solution: Use string_T to store class_name, avoid using STRLEN() calls,
          simplify code, remove unused definition of struct
          oc_newmember_S (John Marriott)

Use struct string_T to store the field class_name in struct class_T,
which means we can just use the .length field in struct string_T
instead of measuring it.

In addition:
1. In eval.c use string_T to store class_name and s in function
   class_tv2string().
2. In vim9type.c change some calls from ga_concat() to ga_concat_len()
   where the length is known.
3. In vim9class.c remove unused struct definition oc_newmember_S.
   Change some calls from ga_concat() to ga_concat_len() where the
   length is known.
4. In scriptfile.c use string_T to store type_name, class_name and
   es_name in function estack_sfile().
5. In function estack_sfile() simplify construction of the grow array ga
   and change some calls from ga_concat() to ga_concat_len() when the
   length is known.

closes: #18925

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-15 21:09:29 +01:00
Foxe Chen eb5995a876 patch 9.1.1982: Use after free with redraw_listener_add()
Problem:  Use after free with redraw_listener_add() (after: v9.1.1976)
Solution: Copy Callbacks into listener struct (Foxe Chen)

closes: #18926

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-15 19:58:54 +01:00
MURAOKA Taro 35de719c0c patch 9.1.1981: tests: test suite may stop on error in gen_opt_test.vim
Problem:  tests: test suite may stop on error in gen_opt_test.vim
Solution: Use a different output file for log files (Muraoka Taro)

When running newtests, it may unexpectedly stop just before
test_options_all.

Cause: When generating the opt_test.vim file for test_options_all, the
failure is detected by the existence of test.log. Therefore, if a test
performed before test_options_all fails and test.log is created, it is
mistakenly thought that the generation of opt_tet.vim has failed, and
the test suite stops there.

So let's change the filename created when utils/gen_opt_test.vim fails
from test.log to gen_opt_test.log, so that it can be detected
independently from other test failures.

closes: #18928

Signed-off-by: MURAOKA Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-15 19:51:55 +01:00
dependabot[bot] e1ea10a0a1 CI: Bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 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/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

closes: #18927

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-15 19:49:29 +01:00
Ivan Pešić 6bfc468c9f translation(sr): Update the Serbian translation
closes: #18929

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-15 19:48:00 +01:00
Christian Brabandt 64eeff5784 runtime(fvwm): Update fvwm keywords
fixes: #18924

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-14 17:46:44 +01:00
Gordian Dziwis 6c027b25f1 patch 9.1.1980: filetype: N-Quads files are not recognized
Problem:  filetype: N-Quads files are not recognized
Solution: Detect *.nq files as nq filetype

Reference:
- https://www.w3.org/TR/n-quads/

closes: #18923

Signed-off-by: Gordian Dziwis <gordian@dziw.is>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-14 16:53:30 +01:00
Doug Kearns 4c141bae3b patch 9.1.1979: :helpclose allows range and counts
Problem:  :helpclose incorrectly accepts a range and a count.
Solution: Remove EX_COUNT and EX_RANGE from the command definition.
          (Doug Kearns)

closes: #18917

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-14 16:41:03 +01:00
Mao-Yining a2b45646ab runtime(doc): Update version9.txt for v9.1.1966
closes: #18919

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-14 16:35:04 +01:00
Hirohito Higashi 5193375b10 patch 9.1.1978: tests: Test_smoothscroll_number() may fail
Problem:  tests: Test_smoothscroll_number() may fail because of
          'showcmd'
Solution: Send redraw command (Hirohito Higashi)

closes: #18921

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-14 16:23:18 +01:00
Christian Brabandt b5cf53b8b1 patch 9.1.1977: MS-Windows: missing dependency on optiondefs.h in Make_cyg_ming.mak
Problem:  MS-Windows: missing dependency on optiondefs.h in Mingw and
          Cygwin Makefile (Mao-Yining)
Solution: Update $INCL variable

fixes: #18915

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-13 18:43:27 +01:00
Foxe Chen 4438b8e071 patch 9.1.1976: Cannot define callbacks for redraw events
Problem:  When using listeners, there is no way to run callbacks at
          specific points in the redraw cycle.
Solution: Add redraw_listener_add() and redraw_listener_remove() and
          allow specifying callbacks for redraw start and end
          (Foxe Chen).

closes: #18902

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-13 18:23:54 +01:00
Mao-Yining 3a113e04de nsis: add Chinese translation to nsis installer
closes: #18912

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-13 17:50:47 +01:00
Hirohito Higashi e9a9833263 runtime(doc): Tweak documentation style in eval.txt and options.txt
closes: #18914

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-13 17:45:36 +01:00
Gourmet ef7a577b27 runtime(doc): Remove outdated agide.org link
The agide.org domain no longer hosts Vim-related tools and now points to
unrelated content. Remove the outdated reference to avoid confusion.

closes: #18916

Signed-off-by: Gourmet <110063472+ItalianG0urmet@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-13 17:42:59 +01:00
Foxe Chen 3d06113c8c patch 9.1.1975: blob2str() may call STRNCPY() with a NULL pointer
Problem:  blob2str() may call strcpy with a NULL pointer
Solution: Check for NULL before calling STRNCPY()

closes: #18907

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-12 08:52:07 +01:00
zeertzjq 353103e59a patch 9.1.1974: tests: missing cleanup in Test_bwipe_during_save()
Problem:  tests: missing cleanup in Test_bwipe_during_save().
Solution: Reset &charconvert.

closes: #18908

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-12 08:47:18 +01:00
Foxe Chen 131d878aaa patch 9.1.1973: some minor problems with clipboard provider code
Problem:  some minor problems with clipboard provider code
          (after v9.1.1972)
Solution: Fix minor issues (Foxe Chen)

- allow empty register type for paste function to mean automatic
- fix internal inc_clip_provider() and dec_clip_provider() functions not
  setting the pause count correctly
- don't call paste function when yanking

closes: #18909

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-12 08:44:14 +01:00
Foxe Chen fcd3958dcb patch 9.1.1972: No way to access the clipboard without X11/Wayland
Problem:  No way to access the clipboard without X11/Wayland.
Solution: Add the clipboard provider feature (Foxe Chen).

closes: #18781

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 21:13:35 +01:00
Christian Brabandt 98a0cbf05b patch 9.1.1971: crash with invalid positional argument 0 in printf()
Problem:  crash with invalid positional argument 0 in printf()
Solution: Reject positional arguments <= 0.

closes: #18898

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 20:51:03 +01:00
glepnir fe1c57cd2c patch 9.1.1971: Crash when buffer gets deleted inside charconvert during save
Problem:  Crash when buffer gets deleted inside charconvert during save
Solution: Check for `b_saving` inside `can_unload_buffer()`, so we don’t try to
          unload a buffer while it’s still being saved (glepnir).

closes: #18901

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 20:48:43 +01:00
phanium fa3bdc2501 patch 9.1.1970: visual end column returns wrong value after block edit
Problem:  visual end column returns wrong value after block edit
Solution: update visual end column after block insert (phanium)

fixes:  #18900
closes: #18903

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: phanium <91544758+phanen@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 20:39:27 +01:00
Doug Kearns bfb9f5c40e runtime(doc): Rename NoDefaultCurrentDirectoryInExePath tag
- Add leading "$" to match other environment variable tags.
- Clarify :help $NoDefaultCurrentDirectoryInExePath.

closes: #18895

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 20:33:51 +01:00
zeertzjq 50325c3d59 patch 9.1.1969: Wrong cursor position after formatting with long 'formatprg'
Problem:  Wrong cursor position after formatting with long 'formatprg'.
Solution: Don't show hit-enter prompt when there are stuffed characters.

Previously a stuffed character at the hit-enter prompt will dismiss the
prompt immediately and be put in the typeahead buffer, which leads to
incorrect behavior as the typeahead buffer is processed after the stuff
buffers. Using vungetc() when KeyStuffed is TRUE can fix this problem,
but since the hit-enter prompt isn't visible anyway (and is likely not
desired here), just skip the prompt instead, which also avoids a wait
when using "wait" instead of "hit-enter" in 'messagesopt'.

fixes:  #18905
closes: #18906

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 20:28:48 +01:00
Christian Brabandt 44d480e0c3 patch 9.1.1968: tests: test_python3.vim leaves swapfiles behind
Problem:  tests: test_python3.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 20:26:06 +01:00
lsq a52b11d057 patch 9.1.1967: if_python: 64bit numbers truncated
Problem:  if_python: 64bit numbers truncated
Solution: cast python result to long long (lsq)

fixes:  #18899
closes: #18904

Signed-off-by: lsq <lsqypj@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-11 19:59:13 +01:00
Mao-Yining e758eac336 patch 9.1.1966: MS-Windows: dark mode in gui is not supported
Problem:  MS-Windows: dark mode in gui is not supported
Solution: Inplement the 'd' flag in 'guioptions'
          (Mao-Yining).

related: #12282
closes: #18877

Co-Authored-By: LemonBoy <thatlemon@gmail.com>
Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 15:23:39 +01:00
Doug Kearns 927ad166a4 runtime(vim): Update base syntax, match full :help command
closes: #18833

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 13:40:59 +01:00
Bjoern Foersterling ecce3497fa patch 9.1.1965: q can accidentally start recording at more prompt
Problem:  When exiting at the end of the more prompt (at the hit enter
          prompt) by hitting q the recording mode will be started.
          (Jakub Łuczyński)
Solution: Don't add the q key to the typeahead buffer
          in the function wait_return (Bjoern Foersterling)

fixes: #2589
closes: #18889

Signed-off-by: Bjoern Foersterling <bjoern.foersterling@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 13:27:00 +01:00
zeertzjq e72eacceab patch 9.1.1964: Wrong display when using setline() at hit-enter prompt
Problem:  Wrong display when using setline() at hit-enter prompt
          (after 8.2.3204).
Solution: Only skip scrolling for changed lines in top area if it's
          scrolled down due to w_topline change. Also add more testing
          for what 8.2.3204 fixed (zeertzjq).

closes: #18887

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 13:10:12 +01:00
Yee Cheng Chin 4af6d9755c patch 9.1.1963: diff: missing diff size limit for xdiff
Problem:  diff: missing diff size limit for xdiff
Solution: Impose file size limit for internal diff (xdiff)
          (Yee Cheng Chin).

Git imposes a hard cap on file size for content that it passes to xdiff
(added to Git in dcd1742e56e, defined in xdiff-interface.h), due to
integer overflow concerns in xdiff. Vim doesn't specify such a limit
right now, which means it's possible for a user to diff a large file
(1GB+) and trigger these overflow issues.

Add the same size limit (1GB minus 1MB) to Vim and simply throws an
error when Vim encounters files larger than said limit. For now, reuse
the same error message regarding internal diff failures. There is no
need to add the same limit for external diff as it's up to each tool to
error check their input to decide what is appropriate or not.

closes: #18891

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 13:05:17 +01:00
Sergio Alejandro Vargas f958d35723 runtime(julia): Update Julia runtime files
Port changes from JuliaEditorSupport/julia-vim made during 2022-2025.
Most notably:

- 88f178c Do not reset shiftwidth/expandtab at undo
- f17257a Allow else block in try/catch
- 7946ce3 Support public statements (added in Julia v1.11.0-DEV.469)

Signed-off-by: Sergio Alejandro Vargas <savargasqu+git@unal.edu.co>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 12:55:17 +01:00
Aaron Jacobs 98ef8433b6 runtime(rust): use textwidth=100 for the Rust recommended style
The help text here said 99 was the recommended style for the standard
library, but I can't find a citation for this anywhere. In contrast the
Rust Style Guide hosted on rust-lang.org
[says](https://doc.rust-lang.org/stable/style-guide/#indentation-and-line-width)
the maximum line width is 100, and rustfmt
[agrees](https://github.com/rust-lang/rust/blob/37aa2135b5d0936bd13aa699d941aaa94fbaa645/src/tools/rustfmt/src/config/options.rs#L570).

Having the two disagree causes an annoying off-by-one error in vim: if
you configure vim to highlight too-long lines then it will occasionally
complain about a line that rustfmt refuses to fix.

closes: #18892

Signed-off-by: Aaron Jacobs <jacobsa@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 12:43:39 +01:00
Christian Brabandt b22c145c22 runtime(doc): document change in Windows behavior for patch 9.1.1947
closes: #18886

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-09 12:36:15 +01:00
Doug Kearns cf5c255260 patch 9.1.1962: filetype: Erlang application resource files are not recognized
Problem:  filetype: Erlang application resource files are not recognized
Solution: Add content-based filetype detection for application resource
          files matching extension '*.app' (Doug Kearns)

related: #18835
closes:  #18842

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-07 19:12:33 +01:00
zeertzjq 2b3566d89e patch 9.1.1961: :0tab behaves like :tab for :stag when 'swb' contains "newtab"
Problem:  :0tab behaves like :tab for :stag when 'switchbuf' contains
          "newtab" (after 9.1.1949).
Solution: Don't override cmod_tab if it's already non-zero (zeertzjq).

closes: #18859

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-07 19:07:37 +01:00
glepnir 7a0d0a022a patch 9.1.1960: Wrong position of info popup
Problem:  When the popup menu is displayed above the cursor and the
          selected item has no room below for the info popup,
          popup_adjust_position() places the popup in the available
          space above. The calculation added some extra lines, causing
          the popup to be misaligned.
Solution: For info popups, undo that extra spacing so the popup stays
          aligned with the selected item (glepnir)

closes: #18860

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-07 19:06:20 +01:00
glepnir 826d10296f patch 9.1.1959: Wrong wrapping of long output using :echowindow
Problem:  Outputting long strings using :echowindow wraps one character
          per line and display in reverse order (Hirohito Higashi)
Solution: Use full width for :echowindow, reset msg_col after wrapping,
          and increment lnum correctly when creating new lines (glepnir)

fixes: #18750
closes: #18874

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-07 18:48:22 +01:00
zeertzjq 2da433cff7 patch 9.1.1958: Wrong display with sign_unplace() and setline() in CursorMoved
Problem:  Wrong display when scrolling with 'scrolloff' and calling
          sign_unplace() and setline() in CursorMoved (after 8.2.3204).
Solution: Still scroll for changed lines below the top area when the top
          is scrolled down (zeertzjq)

closes: #18878

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-07 18:45:19 +01:00
Stanislaw Gruszka b60b33a9dc patch 9.1.1957: filetype: bpftrace files are not recognized
Problem:  filetype: bpftrace files are not recognized
Solution: Detect *.bt files as btftrace filetype,
          include a btftrace filetype plugin (Stanislaw Gruszka)

closes: #18866

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:40:44 +01:00
Maxim Kim c7c16e4130 runtime(odin): support underscore-separated numeric literals
Add support for underscore-separated numeric literals in Odin syntax
highlighting. This allows proper highlighting of numbers like 1_000_000,
0xFF_AA_BB, and 0b1010_1111 as specified in the Odin language.

>  Numerical literals are written similar to most other programming
>  languages. A useful feature in Odin is that underscores are allowed
>  for better readability: 1_000_000_000 (one billion).
>  https://odin-lang.org/docs/overview/#numbers

closes: #18852

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:36:30 +01:00
Mao-Yining 911ecdcd0e runtime(doc): fix return value in 'exists' and 'exists_compiled()'
closes: #18867

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:33:45 +01:00
Christian Brabandt f8c550fea0 patch 9.1.1956: tests: test_sort.vim leaves swapfiles behind
Problem:  tests: test_sort.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:28:33 +01:00
Yegappan Lakshmanan 04794efe12 patch 9.1.1955: sort() does not handle large numbers correctly
Problem:  sort() does not handle large numbers correctly
          (Igbanam Ogbuluijah)
Solution: Don't truncate the return value of tv_get_number_chk()
          (Yegappan Lakshmanan)

closes: #18868

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:22:07 +01:00
Yegappan Lakshmanan f4a299700e patch 9.1.1954: Setting a byte in a blob, accepts values outside 0-255
Problem:  Setting a byte in a blob, accepts values outside 0-255
Solution: When setting a byte in a blob, check for valid values
          (Yegappan Lakshmanan)

closes: #18870

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:13:00 +01:00
Mao-Yining d30e76389c patch 9.1.1953: gui_mch_set_titlebar_colors() is excessively called
Problem:  gui_mch_set_titlebar_colors() doesn't need to be called when
          'go+=C' is not set.
Solution: Switch the default value to false.

closes: #18872

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-06 10:04:06 +01:00
Josef Litoš b46cbecb1d runtime(swayconfig): separate identifier groups + cleanup
- cleanup of PR for tearing and other output options
  - removed `allow_tearing` from global keywords (it's only an output option)
  - moved `...clockwise` directives from general to transform options
  - separated `icc` highlight to correctly detect and highlight paths
  - updated output bg to use the same approach as `icc` for file path
- separated all identifier-matchers into their own groups
- added support for bar identifiers

closes: #18851

Signed-off-by: Josef Litoš <54900518+litoj@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 21:10:02 +00:00
Josef Litoš 20d35f9eb9 runtime(i3config): highlight identifiers separately
- mapped all identifier-highlighting groups to a new group `i3ConfigIdent`
- i3config bar is now split into keyword and block matches
- support `xft:` namespace in fonts
- Update maintainer information in i3config.vim

related: #18851

Signed-off-by: Josef Litoš <54900518+litoj@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 21:09:19 +00:00
Christian Brabandt 23f23e611f patch 9.1.1952: tests: need better tests for tf files
Problem:  tests: need better tests for tf files
Solution: Add better filetype test for terraform/tf filetype

closes: #18339

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 21:01:37 +00:00
Doug Kearns 89f422df41 runtime(quarto): add missing loaded guard
closes: #18630

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 20:30:59 +00:00
Rob B 8d8c9074c3 runtime(python): Highlight t-strings
- Highlight t-strings
- Update comments
- Add tests

closes: #18679

Signed-off-by: Rob B <github@0x7e.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 20:25:41 +00:00
Doug Kearns 85fc83f849 runtime(sml): Update syntax, improve special constant matching
- Match \dE\d real literal form
- Match all string escape sequences
- Add related tests

closes: #18723

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 20:21:49 +00:00
D. Ben Knoble ffc7f8c9da runtime(hog): set undo_ftplugin correctly, delete trailing whitespace
closes: #18727

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 20:15:06 +00:00
zeertzjq 2c164f02c6 patch 9.1.1951: tests: Test_windows_external_cmd_in_cwd() only run in huge builds
Problem:  tests: Test_windows_external_cmd_in_cwd() is only run in huge
          builds (after 9.1.1947).
Solution: Move it to test_system.vim so that it is run in normal builds.

closes: #18853

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 20:10:07 +00:00
Christian Brabandt 05a56aabee patch 9.1.1950: tests: Test_tagjump.vim leaves swapfiles behind
Problem:  tests: Test_tagjump.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 19:27:08 +00:00
Yegappan Lakshmanan efc7509be2 patch 9.1.1949: :stag does not use 'swichtbuf' option
Problem:  :stag does not use 'swichtbuf' option, though the
          documentation states differently
          (Christian Brabandt)
Solution: Respect 'switchbuf' option (Yegappan Lakshmanan).

related: #18845
closes: #18856

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 19:22:13 +00:00
Peter Kenny 2d54d9934d runtime(doc): Update vim9.txt Section 1
closes: #18855

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-03 19:13:34 +00:00
Christian Brabandt 4d87c9742a patch 9.1.1948: Windows: Vim adds current directory to search path
Problem:  Windows: Vim always adds the current directory to search path.
          This should only happen when using cmd.exe as 'shell'. For
          example, powershell won't run binaries from the current
          directory.
Solution: Only add current directory to system path, when using cmd.exe
          as 'shell'.

related: #10341
related: 083ec6d9a3

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-02 21:46:34 +00:00
Christian Brabandt 083ec6d9a3 patch 9.1.1947: [security]: Windows: Vim may execute commands from current directory
Problem:  [security]: Windows: Vim may execute commands from current
          directory (Simon Zuckerbraun)
Solution: Set the $NoDefaultCurrentDirectoryInExePath before running
          external commands.

Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-g77q-xrww-p834

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-02 21:22:02 +00:00
Yee Cheng Chin f0e8b9eb93 Merge pull request #1619 from ychin/whatsnew-nonpersistentdatastore
Whats New page use non-persistent data store
2025-12-02 15:43:25 -05:00
Peter Kenny c0f2d2f140 patch 9.1.1946: Cannot open the help in the current window
Problem:  Cannot open the help in the current window
Solution: Promote the example from tips.txt to a proper package and
          include the helpcurwin package, add tests for it
          (Peter Kenny)

closes: #18840

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-02 20:42:53 +00:00
Yee Cheng Chin b6a2cd4eb0 Whats New page use non-persistent data store
This prevents leaving behind stale files in misc folders in ~/Library
(WebKit/org.vim.MacVim, Caches/org.vim.MacVim/WebKit,
HTTPStorages/org.vim.MacVim). In general we don't need to store any
persistent data or cookies for the What's New page and we want to make
it easy to uninstall MacVim.
2025-12-02 15:18:18 -05:00
Christian Brabandt 397ad21268 patch 9.1.1945: tests: Test_getbufwintabinfo() leaves swapfiles behind
Problem:  tests: Test_getbufwintabinfo() leaves swapfiles behind
Solution: Close all open buffers using %bw!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-02 19:59:54 +00:00
Hirohito Higashi a04ab5f04c patch 9.1.1944: getwininfo() does not return if statusline is visible
Problem:  gewininfo() does not return if statusline is visible
Solution: Add status_height to the dict items returned by
          getwininfo() (Hirohito Higashi)

closes: #18841

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-02 19:58:01 +00:00
Christian Brabandt c3cfdefdee runtime(doc): clarify the use of v:errormsg
fixes: #18825

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-01 20:02:10 +00:00
zeertzjq a474de64df patch 9.1.1943: Memory leak with :breakadd expr
Problem:  Memory leak with :breakadd expr
Solution: Free debug_oldval and debug_newval before assigning to them.
          Verify the existing (though confusing) :breakadd expr behavior
          (zeertzjq).

It seems that :breakadd expr doesn't work as documented at all. This PR
only fixes the memory leak. The tests are for the existing behavior.

closes: #18844

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-01 19:43:05 +00:00
CatsDeservePets cce452f52d runtime(lf): update syntax to support lf version r39
closes: #18846

Signed-off-by: CatsDeservePets <145048791+CatsDeservePets@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-01 18:49:24 +00:00
Doug Kearns a4c43a6cf5 runtime(vim): Update base syntax, match full :language command
closes: #18808

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:44:36 +00:00
Doug Kearns e5c5378cd2 patch 9.1.1942: Vim9: Assignment to read-only registers @: and @% is allowed
Problem:  Assignment to read-only registers @: and @% is allowed during
          compilation.
Solution: Abort compilation and emit an E354 error when assigning to
          these registers (Doug Kearns).

Fix the E354 error emitted when attempting to declare @: with :var so
that it references the correct register, @:,  rather than the garbage
string "^@".

closes: #18806

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:26:22 +00:00
Christian Brabandt 791478b30a patch 9.1.1941: tests: Test_execute_register() leaves swapfile behind
Problem:  tests: Test_execute_register() leaves swapfile behind
Solution: Use :bw instead of :close to close the buffer completely

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:22:40 +00:00
Corey Hickey aa133f8b3e patch 9.1.1940: clipboard registers "+" and "*" synced without "autoselect"
Problem:  clipboard registers "+" and "*" synced without "autoselect"
Solution: Remove code that explicitly syncs those clipboard registers
          (Corey Hickey)

Before this change, writes to '+' get copied to '*', but only under
certain conditions. By default, this does not happen, because clipboard
"autoselect" (via :set clipboard+=autoselect) is enabled. Disabling
"autoselect" (an option which should only apply to visual mode) results
in normal-mode writes such as "+yy also going to the '*' register.

This behavior is undocumented and untested; remove the behavior in order
to make Vim's handling of these two registers be consistent.

This frees up the did_star variable to be removed.

Add a test to check that the registers are independent.

fixes: #18830
closes: #18831

Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:16:16 +00:00
Christian Brabandt 6e9694df10 patch 9.1.1939: tests: test_matchfuzzy() leaves swapfiles behind
Problem:  tests: test_matchfuzzy() leaves swapfiles behind
Solution: Close loaded buffers using "%bw"

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:09:53 +00:00
Corey Hickey d4f9de889b patch 9.1.1938: tests: excessive wait in Test_matchfuzzy_initialized
Problem:  tests: excessive wait in Test_matchfuzzy_initialized
Solution: Use term_wait() instead of the TermWait() wrapper
          (Corey Hickey)

Test_matchfuzzy_initialized is a terminal test, which are specified to be
"flaky" and automatically retried. The TermWait wrapper multiplies the
specified wait time by higher values for later retries, maxing out at
10x the specified value. This makes tries #3 to #6 sleep for 20 seconds
each, which makes the test very slow to work with. The specified intent
of the test (as noted in a comment eight lines above here) is to
sleep for 2s.

closes: #18822

Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:07:40 +00:00
Corey Hickey a3925d783a patch 9.1.1937: tests: Test_matchfuzzy_initialized() fails
Problem:  tests: Test_matchfuzzy_initialized() fails
Solution: Send a dummy key (Corey Hickey)

Test_matchfuzzy_initialized seems to expect that the 'lvimgrep' will be
interrupted by sending a SIGINT. If the search finishes beforehand,
though, then the SIGINT triggers vim to tell the user how to quit.

Vim does not show this message immediately, though; instead, vim shows
the message next time it is active. When StopVimInTerminal() sends a key
sequence intended to cause vim to quit, this activates vim to show the
message instead of quitting.

I do not understand every detail of the problem fully--if I type the
characters from StopVimInTerminal() into a post-SIGTERM terminal
directly, that seems to work ok; there seems to be a timing issue due to
sending all the characters at once.

This fix does make the test work reliably for me, and the test still
works even if I limit my CPU frequency so that the search is interrupted
by the SIGINT.

fixes: #18821
related: #18822

Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 15:02:39 +00:00
Jon Parise b087c5452b patch 9.1.1936: filetype: Erlang lexical files are not recognized
Problem:  filetype: Erlang lexical files are not recognized
Solution: Detect *.xrl files as leex filetype, include syntax and
          filetype plugins (Jon Parise).

leex is the lexical analyzer generator for Erlang. Its input file format
follows a section-based structure and uses the `.xrl` file extension.

This initial work includes file detection, an ftplugin (which inherits
the Erlang configuration), and a syntax definition.

Reference:
-  https://www.erlang.org/doc/apps/parsetools/leex.html

related: #18819
closes: #18832

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Csaba Hoch <csaba.hoch@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 14:45:48 +00:00
Jon Parise 2b2580e61a patch 9.1.1935: filetype: not all Erlang files are recognized
Problem:  filetype: not all Erlang files are recognized
Solution: Detect *.app.src and rebar.config files as erlang filetype
          (John Parise).

*.app.src files contain Erlang application definitions. (There are also
*.app files, which are similar but more often build artifacts, and that
file extension is too ambiguous to be recognized by default.)

Reference:
- https://www.erlang.org/doc/system/applications.html

Rebar is the Erlang build tool. rebar.config uses Erlang syntax.

Reference:
- https://rebar3.org/docs/configuration/configuration/

closes: #18835

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 10:02:45 +00:00
Peter Kenny 8b9b422111 runtime(doc): Update and clarify vim9.txt Section 3
closes: #18779

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 09:40:04 +00:00
Doug Kearns 49f731d243 runtime(doc): Improve :help :catch command specification
The pattern argument is optional.  See :help :sort for another example.

closes: #18834

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-30 09:23:16 +00:00
Christian Brabandt ab090993ad runtime(netrw): fix undefined variable curwin in s:NetrwMenu()
fixes: #18829

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-28 22:37:06 +00:00
Bruno Belanyi 3ba6a97fea patch 9.1.1934: filetype: not all starlark files are recognized
Problem:  filetype: not all starlark files are recognized
Solution: Detect *.sky files as starlark filetype (Bruno Belanyi)

References:
- https://docs.bazel.build/versions/0.17.1/skylark/spec.html

closes: #18807

Signed-off-by: Bruno Belanyi <bruno@belanyi.fr>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-28 20:48:55 +00:00
Rochish Manda 4bb44b287c runtime(doc): Change termdebug_config debug value to v:true in terminal.txt
closes: #18820

Signed-off-by: Rochish Manda <28740792+Rochish-Manda@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-28 20:42:13 +00:00
Shin Rag afd46fd9c9 runtime(doc): Correct typo in usr_30.txt regarding softtabstop
Fix typo in explanation of softtabstop and shiftwidth.

closes: #18823

Signed-off-by: Shin Rag <62047911+aquanjsw@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-28 20:37:16 +00:00
Mao-Yining 7f60105cba runtime(doc): fix typo in "appendbufline()", builtin.txt
closes: #18824

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-28 20:34:38 +00:00
C.D. MacEachern bc1a82245c runtime(defaults): Update comment for reverting C comment strings
Add `g:` prefix, so the example works in vim9script as well (errors
without it).

closes: #18827

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: C.D. MacEachern <craig.daniel.maceachern@gmail.com>
2025-11-28 20:25:41 +00:00
Paul Ollis 9ade3f5894 runtime(doc): Clarification in listener_add() doc
Make it clear that the overall end value can be greater than
line('$') + 1.

fixes: #18664
closes: #18828

Signed-off-by: Paul Ollis <paul@cleversheep.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-28 20:21:29 +00:00
Yee Cheng Chin 53c1775029 Merge pull request #1617 from macvim-dev/dependabot/github_actions/actions/checkout-6
CI: Bump actions/checkout from 5 to 6
2025-11-27 17:09:17 -05:00
dependabot[bot] a0d60b6e8d CI: Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 21:32:45 +00:00
Girish Palya cbcbff8712 patch 9.1.1933: completion: complete_match() is not useful
Problem:  completion: complete_match() Vim script function and
          'isexpand' option are not that useful and confusing
          (after v9.1.1341)
Solution: Remove function and option and clean up code and documentation
          (Girish Palya).

complete_match() and 'isexpand' add no real functionality to Vim. They
duplicate what `strridx()` already does, yet pretend to be part of the
completion system. They have nothing to do with the completion mechanism.

* `f_complete_match()` in `insexpand.c` does not call any completion code.
   It’s just a `STRNCMP()` wrapper with fluff logic.
* `'isexpand'` exists only as a proxy argument to that function.
   It does nothing on its own and amounts to misuse of a new option.

The following Vim script function can be used to implement the same
functionality:

```vim
  func CompleteMatch(triggers, sep=',')
    let line = getline('.')->strpart(0, col('.') - 1)
    let result = []
    for trig in split(a:triggers, a:sep)
      let idx = strridx(line, trig)
      if l:idx >= 0
        call add(result, [idx + 1, trig])
      endif
    endfor
    return result
  endfunc
```

related: #16716
fixes: #18563
closes: #18790

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-27 21:28:05 +00:00
Yee Cheng Chin b48209638d Merge remote-tracking branch 'vim/master' 2025-11-27 16:11:39 -05:00
Foxe Chen c531501748 patch 9.1.1932: OSC terminal response hard to detect
Problem:  OSC terminal response hard to detect
Solution: Add the <OSC> and <xOSC> pseudo keys
          (Foxe Chen).

related: #18660
closes: #18799

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-27 20:53:36 +00:00
zeertzjq b217ffbef2 runtime(doc): remove outdated help about 'completeopt' "fuzzy"
closes: #18815

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-27 20:27:13 +00:00
Christian Brabandt 1b51fd5eb5 translation: regenerate po/vim.pot after v9.1.1930
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-27 20:25:22 +00:00
Girish Palya 057ea1232a patch 9.1.1931: completion: wrong item selected with fuzzy and noinsert
Problem:  completion: wrong item selected with fuzzy and noinsert
          (Evgeni Chasnovski)
Solution: Reset selected item after fuzzy sort
          (Girish Palya)

fixes: #18802
closes: #18816

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-27 20:20:38 +00:00
Girish Palya 33fbfe003c patch 9.1.1930: completion: 'completefuzzycollect' is too obscure
Problem:  completion: 'completefuzzycollect' option is too obscure
Solution: Deprecate the option, but don't error out for existing scripts,
          behave like 'completefuzzycollect' is set when fuzzy
          completion is enabled (Girish Palya).

fixes: #18498
closes: #18788

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-26 21:00:16 +00:00
Robertus Chris 25a736e323 runtime(i3config/swayconfig): add all option for i3config only
Since i3 version 4.24, popup_during_fullscreen has new
option `all`. So add the `all` option for popup_during_fullscreen to
prevent `all` option highlighted as error.

However, sway won't implement `all` option for popup_during_fullscreen,
so let's remove the extra options from the syntax cluster in swayconfig
syntax script after sourcing the i3config.

Reference:
- https://i3wm.org/docs/userguide.html#_popups_during_fullscreen_mode
- https://github.com/swaywm/sway/issues/8746

closes: #18760

Signed-off-by: Robertus Chris <robertusdchris@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-26 20:37:09 +00:00
Maxim Kim 0e1ab0adb8 patch 9.1.1929: completion: spell completion wrong with fuzzy
Problem:  completion: spell completion wrong with fuzzy
Solution: Disable fuzzy sort for spell completion
          (Maxim Kim)

fixes #18800
closes: #18809

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-26 20:23:44 +00:00
Brent Pappas 712b650332 runtime(doc): Fix typo in "Jumping to Changes", usr_08.txt
- Change "Prepended" (past tense) to "Prepend" (present tense,
  imperative).
- Add short examples clarifying the behavior of prepending a count to
  commands that jump to changes in diff mode.

closes: #18810

Signed-off-by: Brent Pappas <pappasbrent@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-26 20:12:28 +00:00
Foxe Chen ef8588f8ea CI: retire socketserver runner
closes: #18811

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-26 20:06:03 +00:00
Stefan Haubenthal 40699e3990 patch 9.1.1928: xxd: exit_with_usage() can be simplified
Problem:  xxd: exit_with_usage() can be simplified
Solution: Clean up exit_with_usage() formatting slightly
          (Stefan Haubenthal)

closes: #18813

Signed-off-by: Stefan Haubenthal <polluks@sdf.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-26 20:02:16 +00:00
Foxe Chen efa3b1f86d patch 9.1.1927: Wayland: clipboard code too complex
Problem:  Wayland: clipboard code too complex
Solution: Simplify clipboard related code around W23/W24
          (Foxe Chen).

Improve Wayland and clipboard related code:

- improve documentation
- remove unused code
- fix error handling
- remove warning per Clipboard_T

closes: #18794

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-25 22:04:58 +00:00
dependabot[bot] c11fbe51e6 CI: Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

closes: #18803

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-25 21:50:30 +00:00
Philip H. 23d4e496f6 Update link to XDG base specification in option.c comment
closes: #18789

Co-authored-by: dkearns <dougkearns@gmail.com>
Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-23 19:35:12 +00:00
Alex Plate 2190036c8c runtime(doc): Add environment variable expansion note to options
Add "Environment variables are expanded |:set_env|" documentation to
options that have the P_EXPAND flag but were missing this note.

Updated options:
- 'cdpath'
- 'dictionary'
- 'mkspellmem'
- 'packpath'
- 'runtimepath'
- 'spellfile'
- 'spellsuggest'
- 'thesaurus'
- 'ttytype'
- 'undodir'
- 'verbosefile'
- 'viewdir'
- 'viminfofile'

These options support environment variable expansion in their values
(e.g., $HOME, $USER) but the documentation didn't explicitly mention
this capability. This brings their documentation in line with other
options like backupdir, directory, and makeprg that already include
this note.

closes: #18791

Signed-off-by: Alex Plate <AlexPl292@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-23 19:30:19 +00:00
Yee Cheng Chin cf7c0038a4 patch 9.1.1926: xdiff: Coverity warning with MAX_CNT/UINT_MAX usage
Problem:  xdiff: Coverity warning with MAX_CNT/UINT_MAX usage
          (after v9.1.1921)
Solution: Replace XDL_MIN macro to a manual check.
          (Yee Cheng Chin)

In the recent xdiff upstream sync (#18765), MAX_CNT in xhistogram was
switched back to using UINT_MAX to match upstream. This exposed an issue
in xdiff that using using min() to compare against the max integer will
not work as the number will just overflow. Switch the check to be done
in a saturating add that respects integer overflow.

related: #18765
closes: #18792

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-23 19:24:10 +00:00
zeertzjq 898ac80be6 runtime(new-tutor): update vim-02-beginner following 48940d9
closes: #18793

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-23 19:19:35 +00:00
Hirohito Higashi 24af3eca68 patch 9.1.1925: make depend does not include osdef.h
Problem:  make depend does not add osdef.h for the dependencies
          (Drew Vogel)
Solution: Move ifdef PROTO (Hirohito Higashi).

fixes: #18777
closes: #18796

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-23 18:43:25 +00:00
Victorhck 48940d94f6 runtime(tutor): Improve style for chapter 2
closes: #18786

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-21 18:46:27 +00:00
Victorhck 58fafb6549 runtime(tutor): Add Spanish translation for chapter 2
related: #18786

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-21 18:45:21 +00:00
Victorhck 9cd512c7f5 runtime(tutor): Improve Spanish translation of chapter 1
related: #18786

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-21 18:43:43 +00:00
Doug Kearns ea14bb7df9 runtime(haskell): Add syntax test
Add a test for issue #18776 (allow spaces in backticked operators).

closes: #18783

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-21 18:22:37 +00:00
Doug Kearns 8da886269a runtime(vim): Update base syntax, match full :history command
closes: #18784

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-21 18:18:51 +00:00
Doug Kearns e5ab63a066 CI: Fix triage labelling of maintainer runtime files
A directory name alone does not generate matches for its contents.

closes: #18785

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-21 18:16:15 +00:00
Doug Kearns a08030c9f7 patch 9.1.1924: 'commentstring' requires +folding feature
Problem:  'commentstring' requires the +folding feature but is used in
	  contexts other than folding.
Solution: Remove the +folding feature guards from 'commentstring' and
          make it available in all builds (Doug Kearns).

closes: #18731

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 21:16:48 +00:00
Yee Cheng Chin 29c6584668 Merge remote-tracking branch 'vim/master' 2025-11-20 13:14:04 -08:00
Doug Kearns 2447131e00 patch 9.1.1923: wrong error when assigning to read-only register
Problem:  When assigning to @. in a :let command an incorrect "E15"
          error is emitted.
Solution: Emit the correct "E354" error. (Doug Kearns).

An incorrect "E488" error was also emitted in Vim9 script assignments.

It appears that the code deleted in this commit was added to work around
a limitation in the returned value from find_name_end() that no longer
exists.

See commit 76b92b2830 (tag: v7.0b).

closes: #18757

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:59:10 +00:00
Doug Kearns ea86e53c2b runtime(vim): Update base syntax, match :debug and :break* commands
Match full :debug, :breakadd, :breakdel and :breaklist commands.

closes: #18748

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:57:15 +00:00
Konfekt 74b4f9242e runtime(compiler): set errorformat where missing
As a matter of caution it sets it to the default gcc errorformat:

```
errorformat=%*[^"]"%f"%*\D%l: %m,"%f"%*\D%l: %m,%-Gg%\?make[%*\d]: *** [%f:%l:%m,%-Gg%\?make: *** [%f:%l:%m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,"%f"\, line %l%*\D%c%*[^ ] %m,%D%*\a[%*\d]: Entering directory %*[`']%f',%X%*\a[%*\d]: Leaving directory %*[`']%f',%D%*\a: Entering directory %*[`']%f',%X%*\a: Leaving directory %*[`']%f',%DMaking %*\a in %f,%f|%l| %m
```

so that the compiler keeps working after switching to others.

While likely only a subset is needed; such a subset has been proposed in
a commented errorformat;

checked to work for yamllint but ran out of steam for other compilers;

closes: #18754

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:54:31 +00:00
John Wellesz d1288503aa runtime(php): Update indent script to 1.76 (from 1.75)
fixes: #18739 (editor hang on mixed syntax style)
closes: #18758

Signed-off-by: John Wellesz <john.wellesz@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:50:54 +00:00
Mirek Kratochvil ddb88ab796 runtime(haskell): allow spaces in backticked operators in syntax script
This formatting (although rare) is actually accepted by GHC, but vim
does not highlight it. This patch adds the simplest possible regex to
support the behavior.

Inconveniently, this might trigger weird formatting on lines that
contain errors, e.g. if the first backtick is removed from:

    a `b` c `d` e

then `c` is going to be marked as an operator, which seems weird but is
valid.

closes: #18776

Signed-off-by: Mirek Kratochvil <exa.exa@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:47:01 +00:00
zeertzjq d434f6c2a5 patch 9.1.1922: Wrong virtcol('$') with virtual text at EOL
Problem:  Wrong virtcol('$') with virtual text at EOL (rickhowe).
Solution: Also add 1 to end virtcol when there is virtual text.
          (zeertzjq)

fixes: #18761
closes: #18762

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:35:12 +00:00
Yee Cheng Chin 6aac706232 patch 9.1.1921: xdiff: included xdiff code is outdated
Problem:  xdiff: included xdiff code is outdated because it is based on
          git 2.40.0
Solution: Sync with xdiff from git 2.52 (Yee Cheng Chin).

Git [v2.52](https://github.com/git/git/releases/tag/v2.52.0) has just been
released. Merge from upstream to get the latest version of xdiff. Vim's xdiff
was last updated in #12181 (Patch v9.0.1418) from Git v2.33 to v2.40.

I have refined the strategy for merging from upstream a bit compared to last
time. I use the following commands to create an orphaned branch that extracts
the before/after xdiff source code from the Git codebase, and then perform a
subtree merge. The commits in the orphaned branch are reproducible
deterministically so a reviewer can reproduce the steps and it should result in
identical commit hashes (63264f229d and d741f0e230). The commands are as
follows (you could run in a separate Vim repo to keep things clean):

```bash
git remote add --no-tags git https://github.com/git/git.git
git fetch git

git switch --orphan xdiff-orig
git read-tree --reset -u 73876f4861:xdiff/  # Git v2.40.0
git rm -f xmerge.c                          # Vim doesn't use xmerge
(GIT_COMMITTER_NAME="dummy" GIT_COMMITTER_EMAIL="dummy" GIT_COMMITTER_DATE="1600000000 +0000" \
  git commit --no-gpg-sign --reuse-message=73876f4861)

git switch -c xdiff-new
git read-tree --reset -u 9a2fb147f2:xdiff/  # Git v2.52.0
git rm -f xmerge.c
(GIT_COMMITTER_NAME="dummy" GIT_COMMITTER_EMAIL="dummy" GIT_COMMITTER_DATE="1600000000 +0000" \
  git commit --no-gpg-sign --reuse-message=9a2fb147f2)

git switch master
git switch -c xdiff-upstream-v2.52.0
git merge -s ours --no-edit --allow-unrelated-histories xdiff-orig
git merge -Xsubtree=xdiff xdiff-new
```

The commit graph looks like so:

```
* a005e268bd 2025-11-17 17:11:26 Yee Cheng Chin (HEAD -> xdiff-upstream-v2.52.0) Update xdiff README
*   d353c6f2c8 2025-11-17 16:26:15 Yee Cheng Chin Merge branch 'xdiff-new' into xdiff-upstream-v2.52.0
|\
| * d741f0e230 2025-11-17 07:35:33 Junio C Hamano (xdiff-new) Git 2.52
* | c4f8b15dd9 2025-11-17 16:22:30 Yee Cheng Chin Merge branch 'xdiff-orig' into xdiff-upstream-v2.52.0
|\|
| * 63264f229d 2023-03-12 14:34:41 Junio C Hamano (xdiff-orig) Git 2.40
* 6437997d83 2025-11-16 18:30:42 Girish Palya   (tag: v9.1.1918, origin/master, origin/HEAD, master) patch 9.1.1918: completion: crash with fuzzy completion
```

For reviewing I recommend using the following commands which simplifies the diff to only what we care about:
- `git show --remerge-diff d353c6f2c8`: This shows how my merge actually
  resolved the merge conflicts.
- `vimdiff <(git diff-tree -U0 63264f229d master:src/xdiff/) \
   <(git diff-tree -U0 d741f0e230 xdiff-upstream-v2.52.0:src/xdiff) \
   -c "silent windo %s/^index.*/index/" \
   -c "silent windo %s/^@@ [-+, 0-9]* @@/@@/"`:
This shows how the patch (downstream changes done in Vim on top of Git) has
changed. Note that some local changes for fixing compiler warnings are now gone
because they are fixed upstream.

- https://github.com/git/git/commit/d39e28e68c2b1bba25c5b1213fded95e525db15e
  added a dependency (`signed_add_overflows`) to Git code base. I replaced it
  with a custom one since it's not hard to implement.
- Upstream had fixed a lot of compiler warnings with signed/unsigned integers,
  so the compiler warning fixes that were done in Vim downstream were removed.
- Replace new `BUG()` calls with `xdl_bug()` where we use Vim's assertion
  mechanisms instead.

- Performance improvement due to optimizations in the line hashing function
  (https://github.com/git/git/commit/41d97837ab1e5a35fdcfd7f6af9b5d56af62e92a and
   https://github.com/git/git/commit/a4bbe8af0b48f9c80ccc2c4619309c4a81c1460a).
  - From personal unscientific testing (Apple M1 Max, macOS 15), when using the
    new xdiff, for simple/normal diff's this could result in **11%/29%** overall
    diff speed improvement. For larger more pathologically complicated diff this
    results in a more modest **4%/7%** improvement.
  - The two improvement numbers above are for compiling Vim with `-O3 -flto` vs
    `-O2`. The more optimized version of Vim results in lower performance
    improvement as it was already doing inlining via link-time-optimization
    before.
  - Just for reference, the command I used to test this was the following (use
    either test case and comment out the other one):
    ```bash
    # Simple/normal diff test case
    (COMMIT=0d9160e11ce; git show ${COMMIT}:src/diff.c > test1.txt; git show ${COMMIT}~:src/diff.c > test2.txt)
    # Larger diff test case
    (COMMIT=9670f61d468; git show ${COMMIT}:src/auto/configure > test1.txt; git show ${COMMIT}~:src/auto/configure > test2.txt)

    # Build Vim with old/new xdiff, then copy ./src/vim to ./src/vim_orig / ./src/vim_new respectively.
    hyperfine --warmup 4 --runs 20 -L vimcmd vim_orig,vim_new \
        "./src/{vimcmd} -u NONE -U NONE -es -V1 -c \"let g:f1=readfile('test1.txt')\" -c \"let g:f2=readfile('test2.txt')\" -c \"for i in range(1,200) | call diff(g:f1, g:f2) | endfor\" -c 'q'"
    ```

closes: #18765

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 20:21:49 +00:00
zeertzjq eb33c2eb28 patch 9.1.1920: tests: not enough testing for wildtrigger() pum redrawing
Problem:  tests: not enough testing for wildtrigger() pum redrawing.
Solution: Also test redrawing when leaving cmdline mode (zeertzjq).

closes: #18773

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 19:52:18 +00:00
Philip H. 55c65c3e40 CI: Switch to macOS 26 runner
closes: #18775

Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-20 19:50:00 +00:00
Harry 7fe4b8c1bd runtime(c): Update signal constants in syntax script
closes: #18763

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Harry <166658338+harrystevens4@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-18 20:50:39 +00:00
Hirohito Higashi ed4af756c2 patch 9.1.1919: tabpanel: cannot handle mouse clicks in command line
Problem:  tabpanel: cannot handle mouse clicks in command line
          (char101, after v9.1.1898)
Solution: Update the condition that checks if the mouse pointer is on
          the command line (Hirohito Higashi)

closes: #18771

Co-authored-by: Charles <char101@ui.ac.id>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-18 20:10:14 +00:00
Miguel Barro 040a47a470 runtime(netrw): Use proper UNC notation for temp files
closes: #18764

Signed-off-by: Guybrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-18 20:06:06 +00:00
Konfekt c2cc63ec7d runtime(compiler): expand errorformats in maven compiler
matches malformed POM error messages and tries to catch other tools
as well.

closes: #18768

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-18 19:49:01 +00:00
Doug Kearns d284277be9 runtime(doc): Remove :runtime completion (#11447) todo item
This was fixed in commit a6759381a5.

closes: #18769

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-18 19:44:16 +00:00
Girish Palya 6437997d83 patch 9.1.1918: completion: crash with fuzzy completion
Problem:  completion: crash with fuzzy completion
          (Christian Brabandt)
Solution: When completion candidates are gathered from a different
          window, and when completing `<c-p>`, linked list should be
          sorted only after all items are collected (Girish Palya).

fixes: #18752
closes: #18756

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-16 18:30:42 +00:00
Antonio Giovanni Colombo 4b4a893614 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-16 17:31:43 +00:00
Yegappan Lakshmanan a650485ed5 patch 9.1.1917: Vim9: incorrect type inference with mkdir()
Problem:  Vim9: incorrect type inference with mkdir()
          (dezza)
Solution: Before compiling a RHS expression in an assignment, save the
          new local variable contents (Yegappan Lakshmanan)

fixes: #18751
closes: #18751

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-15 17:41:28 +00:00
Christian Brabandt 61b73b89a3 patch 9.1.1916: WinEnter autocommand confuses Vim when closing tabpage
Problem:  WinEnter autocommand may confuse Vim when closing tabpage
          (hokorobi)
Solution: Verify that curwin did not change in close_others()

fixes: #18722
closes: #18733

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-15 17:32:50 +00:00
Konfekt fb8ebf1ee0 runtime(compiler): Remove version check in rustc compiler
closes: #18347

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-15 17:18:41 +00:00
Konfekt d0dd5614db runtime(compiler): add biome linter
closes: #18685

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-15 10:39:57 +00:00
Doug Kearns f46616f0c4 runtime(vim): Update base syntax and generator, match :cd commands
Match :cd commands explicitly.

fixes: #17964
closes: #18736

Reported by Maxim Kim.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-15 10:17:17 +00:00
Doug Kearns de7049ede1 patch 9.1.1915: :breaklist accepts unprocessed arguments.
Problem:  :breaklist accepts unprocessed arguments.
Solution: Remove EX_EXTRA flag from the Ex command definition.
          (Doug Kearns)

The command should emit an "E488: Trailing characters" error rather than
silently accept arguments.

closes: #18746

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-15 10:13:25 +00:00
Andrey Starodubtsev d5821638e2 runtime(new-tutor): escape tutor filename
If Vim is installed into the Windows "Program Files" directory the tutor
path name contains spaces and must therefore be quoted before passing to
:drop.

closes: #18742

Signed-off-by: Andrey Starodubtsev <andrey.starodubtsev@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-13 21:49:20 +00:00
Christian Brabandt 384685fade patch 9.1.1914: runtime(netrw): wipes unnamed buffers
Problem:  runtime(netrw): LocalBrowseCheck() wipes unnamed buffers when
          g:netrw_fastbrowse=0 (Carlos Falgueras García)
Solution: Check that bufname() is not empty

fixes: #18740
closes: #18741

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-13 21:11:51 +00:00
Christian Brabandt b8119920eb patch 9.1.1913: Error message with :unlet! and non-existing dictionary item
Problem:  Error message with :unlet! and non-existing dictionary item
          (Coacher)
Solution: Set GLV_QUIET when using unlet with bang attribute

fixes: #18516
closes: #18734

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-13 21:06:43 +00:00
Doug Kearns eb732ed26d runtime(doc): Wrap overlength lines in uganda.txt
Wrap overlength lines and normalise URL indentation.

closes: #18737

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-13 21:01:42 +00:00
Doug Kearns 8644c3b7e6 runtime(help): Update syntax, match tables at :help :digraph-table
Match the digraph tables to avoid false positive matches for helpSpecial
etc.  No syntax groups should match in these tables.

closes: #18738

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-13 20:59:44 +00:00
Yee Cheng Chin d34e7980df Merge remote-tracking branch 'vim/master' 2025-11-12 17:54:20 -08:00
Christian Brabandt 8cb4505ec6 patch 9.1.1912: tests: test_plugin_comment fails
Problem:  tests: test_plugin_comment fails, because it depends on nroff
          filetype for .mom file (after v9.1.1909)
Solution: Explicitly set filetype to nroff

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 21:34:52 +00:00
Christian Brabandt c44e5ae529 patch 9.1.1911: build failure on Solaris with gcc 5
Problem:  build failure on Solaris Sparc with gcc 5
          (idgn23, after v9.1.1736)
Solution: Correctly initialize the key_name variable.

fixes: #18693

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 20:04:18 +00:00
Aliaksei Budavei d667946928 patch 9.1.1910: tests: test failures in Test_term_gettitle() in CI
Problem:  tests: test failures in Test_term_gettitle() in CI
Solution: CI: Allow for title buffering in Test_term_gettitle()
          (Aliaksei Budavei)

closes: #18693

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 19:49:00 +00:00
Callum Andrew 23e12c0b7e patch 9.1.1909: filetype: .mom files recognized as nroff files
Problem:  filetype: .mom files recognized as nroff files
Solution: Detect *.mom files as groff filetype instead
          (Callum Andrew)

Reference:
- mom macros are written specifically for groff:
  https://www.schaffter.ca/mom/

closes: #18718

Signed-off-by: Callum Andrew <dev@candrew.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 19:45:41 +00:00
Vadim Yanitskiy e9d296e52a runtime(erlang): recognize -if/-elif as erlangPreCondit in syntax script
The -if(Condition)/-elif(Condition) are compiler macros that evaluate
the following lines only if Condition evaluates to true.  This patch
enables syntax highlighting for these macros.

https://www.erlang.org/doc/system/macros.html#conditional-compilation

closes: #18729

Signed-off-by: Vadim Yanitskiy <fixeria@osmocom.org>
Signed-off-by: Csaba Hoch <csaba.hoch@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 19:36:46 +00:00
Doug Kearns 9ab6a22c90 runtime(doc): Improve :help :ls description formatting
Quote the special buffer names for consistency (see :help bufname()) and
so that they're not incorrectly highlighted as optional command
arguments.

closes: #18730

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 19:33:01 +00:00
Doug Kearns 4f19d2768a runtime(vim): Update base syntax, match :prompt command args
closes: #18732

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-12 19:17:11 +00:00
Christian Brabandt 89f0a3a574 patch 9.1.1908: tests: test_crash.vim times out in CI ASAN builds
Problem:  tests: test_crash.vim times out in CI ASAN builds
Solution: Increase timeout for ASAN or Valgrind runs

closes: #18725

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 18:06:31 +00:00
Neil Lambert f85951fee0 runtime(css): improve cssBoxProp matches
closes: #18717

Signed-off-by: Neil Lambert <nlambert@pm.me>
Signed-off-by: Jay Sitter <jsit@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 18:01:31 +00:00
notuxic 7dd51d3542 patch 9.1.1907: xterm: no support for mouse buttons 8 and 9
Problem:  xterm: no support for mouse buttons 8 and 9
Solution: Add support for terminals with xterm-like mouse functionality
          (notuxic)

closes: #18719

Signed-off-by: notuxic <notuxic@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 17:52:45 +00:00
botantony efc3be77bb patch 9.1.1906: filetype: not all Ruby files are recognized
Problem:  filetype: not all Ruby files are recognized
Solution: Detect *.rbi and Brewfile as ruby filetype
          (botantony).

- `rbi` is a file extension used by Sorbet, typechecker for Ruby:
   https://sorbet.org/docs/rbi

- `Brewfile` is a bundler file for Homebrew package manager:
   https://docs.brew.sh/Brew-Bundle-and-Brewfile

closes: #18697

Signed-off-by: botantony <antonsm21@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 17:26:02 +00:00
Hirohito Higashi 1ff3e701e4 patch 9.1.1905: tabpanel: truncates terminal output
Problem:  tabpanel: truncates terminal output
          (hokorobi)
Solution: Use topframe->fr_width, not Columns (which includes the
          tabpanel width) (Hirohito Higashi)

related: #18678
closes: #18707

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 17:20:13 +00:00
Christian Brabandt b74ec159dd runtime(sqlcomplete): only set 'omnifunc' if dbext plugin was loaded
fixes: #18716

Co-authored-by: gcanat <72149218+gcanat@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 17:13:44 +00:00
Doug Kearns 97c37446e6 runtime(doc): Wrap some overlength lines in vim9{,class}.txt.
closes: #18724

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 16:47:24 +00:00
Doug Kearns fe24972139 runtime(vim): Update base syntax, refine object constructor matching
Match "object" and "<" ... ">" separately with dedicated syntax groups
to allow for highlighting distinct from that generally used for types.

closes: #18721

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-11 16:37:09 +00:00
Peter Kenny 54cc820129 runtime(doc): Update Section 4 of vim9.txt
closes: #18610

Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 20:29:08 +00:00
tocariimaa d3bef6cf3f runtime(sml): Fix number regex in syntax script
closes: #18690

Signed-off-by: tocariimaa <tocariimaa@pissmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 20:13:35 +00:00
Drew Vogel 1b92b278ba patch 9.1.1904: Code still supports GTK2 versions older than 2.4
Problem:  Code still supports GTK2 versions older than 2.4.
Solution: Drop support for GTK2 < 2.4 (Drew Vogel)

closes: #18708

Signed-off-by: Drew Vogel <dvogel@github>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 20:04:37 +00:00
Drew Vogel d32a26550b patch 9.1.1903: GTK naming still reflects GTK1 support
Problem:  GTK naming still reflects GTK1 support
Solution: Rename to avoid confusion (Drew Vogel)

related: #18708

Signed-off-by: Drew Vogel <dvogel@github>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 20:01:04 +00:00
Drew Vogel 20ccdc7e50 patch 9.1.1902: GTK fails to compile with !FEAT_PROP_POPUP
Problem:  GTK fails to compile with !FEAT_PROP_POPUP
Solution: Correct syntax under #ifdef
          (Drew Vogel)

related: #18708

Signed-off-by: Drew Vogel <dvogel@github>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 19:58:31 +00:00
Doug Kearns e1e347475e runtime(vim): Update base syntax, fix :augroup error matching
Only terminate the :augroup END argument at whitespace, comments and
trailing bars.

closes: #18711

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 19:50:57 +00:00
Doug Kearns acf928a33b runtime(doc): Improve windows.txt formatting
- Wrap some overlength lines
- Highlight the example at :help WinScrolled-event

closes: #18713

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-10 19:45:32 +00:00
Christian Brabandt aa9862a5b0 patch 9.1.1901: tests: test_vim9_generics fails without job feature
Problem:  tests: test_vim9_generics fails when built without the job or
          channel feature (lazypingu)
Solution: Skip test if job/channel feature is not available

fixes: #18702

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-09 19:39:22 +00:00
Doug Kearns 542746521f runtime(doc): Clean up file header whitespace
- :retab! line 1 and line 4 (main page heading).
- Use four columns whitespace before "by [Author]" in the user manual
  heading to match the reference manual formatting.
- double space headings.

closes: #18648

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-09 19:23:50 +00:00
Doug Kearns 8869800f70 runtime(vim): Update base syntax, match :*do command arg
Match the Ex command arg to all :*do commands.

closes: #18700

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-09 18:59:52 +00:00
Jesse Portnoy a795aab885 runtime(spec): Add support for more tags and distributions
- specMacroIdentifier: support macros starting with '?'; the most common
  example is `%{?dist}`
- specPreAmble: added some missing tags from:
  https://rpm.org/docs/4.19.x/manual/spec.html
- Added support for: `fedora`, `rhel`, `rocky`, `rhl`, `centos`, `el\d`
  and `fc\d`, see https://docs.fedoraproject.org/en-US/packaging-guidelines/DistTag

closes: #18703

Signed-off-by: Jesse Portnoy <jesse.portnoy@perforce.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-09 18:57:34 +00:00
Doug Kearns 59f0ea5b3e runtime(vim): Update base syntax, match Vim9 object type constructor
fixes: #18677.
closes: #18691

Reported by Aliaksei Budavei.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:23:47 +00:00
Hirohito Higashi 47c30bb03a patch 9.1.1900: tabpanel: wrong condition after v9.1.1898
Problem:  tabpanel: wrong condition after v9.1.1898
Solution: Update condition (Hirohito Higashi)

related: #18678
closes: #18692

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:20:55 +00:00
Doug Kearns 185cec2b09 runtime(doc): Rewrite some overlength lines
closes: #18695

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:19:34 +00:00
Doug Kearns a3063f2f90 runtime(doc): Wrap some overlength lines in the user manual
closes: #18696

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:18:16 +00:00
Doug Kearns c28b73d349 runtime(doc): Improve :help synconcealed() description
closes: #18698

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:16:41 +00:00
Hirohito Higashi ef02336915 patch 9.1.1899: tabpanel: getcmdscreenpos() wrong when tabpanel is shown
Problem:  tabpanel: getcmdscreenpos() wrong when tabpanel is shown
Solution: Adjust f_getcmdscreenpos() and add cmdline_col_off
          (Hirohito Higashi)

related: #18678
closes: #18699

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-08 17:12:57 +00:00
Hirohito Higashi cf4d9625c6 patch 9.1.1898: tabpanel: inconsistent use of cmdline with tabpanel
Problem:  tabpanel: inconsistent use of cmdline and message area with
          tabpanel
Solution: Reduce the cmdline and message area by the horizontal size of
          the tabpanel (Hirohito Higashi)

closes: #18678

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-06 20:23:36 +00:00
Luke Lollard 24e4fa1603 patch 9.1.1897: Mac: Build failure on Mac OS X 10.6
Problem:  Mac: Build failure on Mac OS X 10.6 due to the use of generics
          for the sound feature.
Solution: Use the simple, non-generic Objective-C version.
          (Luke Lollard)

fixes: #17678
closes: #18681

Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Luke Lollard <haihige@protonmail.ch>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-06 20:04:38 +00:00
Konfekt 84baba329a runtime(compiler): do not override &l:makeprg on :compiler!
closes: #18686

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-06 19:47:36 +00:00
tocariimaa 7dfdc7f6cb runtime(sml): add filetype plugin, move options from indent to ftplugin
closes: #18680

Signed-off-by: tocariimaa <tocariimaa@pissmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-05 20:51:35 +00:00
Christian Brabandt 461dd9aca6 runtime(vim): 'iskeyword' setting not correctly restored
fixes: #18673

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-04 18:13:55 +00:00
Christian Brabandt 1ead1b51e1 patch 9.1.1896: tests: patch v9.1.1895 breaks CI
Problem:  tests: patch v9.1.1895 breaks CI, by failing screen dump tests
          test_listlbr_utf8, test_diffmode and test_cmdline
Solution: Revert it

Revert "patch 9.1.1895: OSC terminal response hard to detect"
This reverts commit 8707b7a15b.

related: #18660

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-02 15:25:18 +00:00
Christian Brabandt 213109a999 runtime(doc): clarify W11 warning and possible options
fixes: #18589

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 17:07:16 +00:00
Foxe Chen 8707b7a15b patch 9.1.1895: OSC terminal response hard to detect
Problem:  OSC terminal response hard to detect
Solution: Add the <OSC> and <xOSC> pseudo keys
          (Foxe Chen)

closes: #18660

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 16:28:52 +00:00
Christian Brabandt 7c418c75a4 patch 9.1.1894: global_runtime_dir appends /after directory when using XDG
Problem:  global_runtime_dir appends /after directory when using XDG
          configuration directory (Marius Gedminas).
Solution: Do not append /after to RUNTIME_GLOBAL_AFTER.

closes: #18663
closes: #18665

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 16:20:10 +00:00
Christian Brabandt 0405665638 patch 9.1.1893: ICCF charity will dissolve
Problem:  ICCF charity will dissolve
Solution: Update references to Kuwasha

Since the ICCF[1] will be dissolved and handing over to the Kuwasha charity
to continue supporting the Kibaale Children Center in Uganda, update the
uganda.txt help file.

[1]: https://groups.google.com/g/vim_announce/c/pUNbNXBLbKw/m/-zFUd4JjAQAJ

fixes: #18584
closes: #18667

Signed-off-by:
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 16:15:39 +00:00
Evgeni Chasnovski 294bce21ee patch 9.1.1892: Not possible to know once Vim is done with sourcing vimrc
Problem:   A plugin does not know when startup scripts were already
           triggered. This is useful to determine if a function is
           called inside vimrc or after (like when sourcing 'plugin/'
           files).
Solution:  Add the v:vim_did_init variable (Evgeni Chasnovski)

closes: #18668

Signed-off-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 15:54:35 +00:00
Mohammad Reza Karimi fe71c56d8f runtime(netrw): NetrwChgPerm for files not in cwd
Problem:  Changing permissions fail when using `gp` if the file under
          the cursor is not in the current working directory.
Solution: Use the already available `a:curdir` argument and prepend it
          to the `<cfile>`, so that the path of the file is correct.

This commit also refactors some leftover `netrw#ErrorMsg` to
`netrw#msg#Notify` (the main refactoring was done in
f5e3b5c04f).

closes: #18674

Signed-off-by: Mohammad Reza Karimi <m.r.karimi.j@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 15:46:04 +00:00
Mao-Yining 28f7582c16 runtime(log): syntax file update
closes: #18675

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 15:42:32 +00:00
Hirohito Higashi 07da26710a runtime(doc): Fix a few typos
closes: #18676

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-11-01 15:24:12 +00:00
varsidry adc85151f3 patch 9.1.1891: g<End> does not move to last non-blank in visual mode
Problem:  In visual mode, g<End> does not move to the last non-blank
          character when the end of a line is on the same line as the
          cursor (after v9.0.1753)
Solution: Move the cursor back by one position if it lands after the
          line (varsidry)

fixes: #18657
closes: #18658

Signed-off-by: varsidry <240319857+varsidry@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-31 16:16:11 +00:00
Christian Brabandt 958393b0b4 translation: regenerate po/vim.pot after 73a0de4a04
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-31 09:16:19 +00:00
zeertzjq 73a0de4a04 patch 9.1.1890: %P in 'statusline' doesn't behave as documented
Problem:  %P in 'statusline' doesn't behave as documented
          (after 9.1.1479).
Solution: Make the percentage 3-chars wide when not translated.
          (zeertzjq)

fixes: #18669
closes: #18671

Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-31 09:10:05 +00:00
Samuel Huang 69dd5906fd patch 9.1.1889: filetype: not all AppleScript files are recognized
Problem:  filetype: not all AppleScript files are recognized
Solution: Detect *.applescript files as applescript filetype
          (Samuel Huang)

Reference:
https://en.wikipedia.org/wiki/AppleScript

closes: #18672

Signed-off-by: Samuel Huang <hi@sgh.ng>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-31 09:03:04 +00:00
Yee Cheng Chin e14eb0c410 Merge pull request #1613 from ychin/ci-more-concise-macvim-tests-output
ci: Build MacVim test binaries separately from running tests
2025-10-30 18:01:26 -07:00
Yee Cheng Chin 1faaa9bc3b ci: Build MacVim test binaries separately from running tests
Separate out the building step into a separate group. This makes the
tests output more concise to read when a test has failed and we want to
look at the logs.
2025-10-30 17:36:23 -07:00
Yee Cheng Chin 9c0d7794f4 Merge pull request #1612 from ychin/fix-failed-test-artifact-uploads
ci: Fix test artifact upload not working
2025-10-30 17:23:04 -07:00
Yee Cheng Chin 5d94afbe59 ci: Fix test artifact upload not working
The test_artifacts action (which we use to upload artifacts when a test
has failed) relies on parsing the CI matrix values to generate a unique
artifact name. However, in #1559 we switched to using a reusable
workflow instead, which no longer uses a matrix inside the composable
workflow. We could simply make a matrix with only one item in it to
satisfy the test_artifact action but that seems a bit overkill. Instead,
just modify it so we manually pass in the preferred artifact name
instead which also gives us more flexibility in the naming. It does mean
future upstream merges may cause conflicts.
2025-10-30 16:17:10 -07:00
Aliaksei Budavei 4105ef16e3 Drop superfluous execute permissions for readable files
- runtime/ftplugin/plsql.vim (42e498)
- runtime/pack/dist/opt/editorconfig/LICENSE.PSF (e5e043)
- src/po/check.vim (96dab9)
- src/po/it.po (bb0d3b)

closes: #18666

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-30 19:05:03 +00:00
Christian Brabandt 8f551a70ad runtime: regenerate helptags, update last-change header in tombi compiler
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-29 20:20:10 +00:00
zeertzjq 5c3e762631 patch 9.1.1888: Wrong display with cpo+=$, matchparen and wrapped line
Problem:  Wrong display with cpo+=$, matchparen and wrapped line.
Solution: Use old cursor line height when scrolling with cpo+=$. Also
          fix wrong redraw in non-current window. (zeertzjq)

fixes: #18647
closes: #18662

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-29 20:15:01 +00:00
Konfekt 14e7203713 runtime(compiler): Fix escaping in Windows shell command for tombi
As observed by Doug Kearns

related: #18590
closes: #18661

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-29 20:12:47 +00:00
1713 changed files with 104823 additions and 31317 deletions
+3 -3
View File
@@ -5,12 +5,12 @@ env:
freebsd_task:
name: FreeBSD
matrix:
- name: FreeBSD 14.3
- name: FreeBSD 15.0
freebsd_instance:
image_family: freebsd-14-3
image_family: freebsd-15-0-amd64-ufs
timeout_in: 20m
install_script:
- pkg install -y gettext
- pkg install -y gettext diffutils
build_script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=${FEATURES}
+14 -2
View File
@@ -1,4 +1,13 @@
src/testdir/test42.in diff
# The old test .ok files are expected to use LF line endings, even on Windows.
# In src/testdir/Make_mvc.mak and src/testdir/Make_ming.mak, the test result
# files .out are converted to LF line endings before being compared.
# Therefore, if the .ok files' line endings are not specified and are
# converted to CRLF, the comparison between .ok and .out will fail.
src/testdir/test*.ok text eol=lf
# This ok file contains literal CR LF endings. Should not be touched by git,
# so handle as binary
src/testdir/test21.ok -text
# `vim.pot` is updated every time any of the *.c files are modified. And as it
# contains line numbers for strings from *.c files, inserting a line into a
@@ -24,8 +33,11 @@ src/po/vim.pot -diff
src/po/vim.pot diff=ignore_vim_pot
# GitHub reacts to the `linguist-generated` attribute, by ignoring marked files
# for the repository's language statistics and hiddning changes in these files
# for the repository's language statistics and hiding changes in these files
# by default in diffs.
#
# https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
src/po/vim.pot linguist-generated=true
*.dump linguist-generated=true
runtime/syntax/testdir/input/vim_ex_help.vim -text diff linguist-language=vim linguist-detectable=true
+57 -7
View File
@@ -3,22 +3,26 @@
# You can use github users with @user or email addresses
# These owners will be the default owners for everything in the repo.
#* @brammool
#* @brammool
# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
nsis/lang/russian.nsi @RestorerZ
runtime/autoload/context.vim @lifepillar
runtime/autoload/freebasic.vim @dkearns
runtime/autoload/hare.vim @selenebun
runtime/autoload/hcl.vim @gpanders
runtime/autoload/javascriptcomplete.vim @jsit
runtime/autoload/modula2.vim @dkearns
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/rust.vim @lilyball
runtime/autoload/typeset.vim @lifepillar
runtime/autoload/xmlformat.vim @chrisbra
runtime/autoload/dist/json.vim @habamax
runtime/colors/blue.vim @habamax @romainl @neutaaaaan
runtime/colors/catppuccin.vim @mao-yining
runtime/colors/darkblue.vim @habamax @romainl @neutaaaaan
runtime/colors/default.vim @habamax @romainl @neutaaaaan
runtime/colors/delek.vim @habamax @romainl @neutaaaaan
@@ -44,8 +48,13 @@ runtime/colors/torte.vim @habamax @romainl @neutaaaaan
runtime/colors/wildcharm.vim @habamax @romainl @neutaaaaan
runtime/colors/zaibatsu.vim @habamax @romainl @neutaaaaan
runtime/colors/zellner.vim @habamax @romainl @neutaaaaan
runtime/compiler/bash.vim @Konfekt
runtime/compiler/biome.vim @Konfekt
runtime/compiler/cabal.vim @mateoxh
runtime/compiler/checkstyle.vim @dkearns
runtime/compiler/cm3.vim @dkearns
runtime/compiler/context.vim @lifepillar
runtime/compiler/cppcheck.vim @Konfekt
runtime/compiler/cucumber.vim @tpope
runtime/compiler/dart.vim @dkearns
runtime/compiler/dart2js.vim @dkearns
@@ -68,9 +77,12 @@ runtime/compiler/icon.vim @dkearns
runtime/compiler/javac.vim @dkearns
runtime/compiler/jest.vim @dkearns
runtime/compiler/jjs.vim @dkearns
runtime/compiler/jq.vim @vito-c
runtime/compiler/jshint.vim @dkearns
runtime/compiler/jsonlint.vim @dkearns
runtime/compiler/jq.vim @vito-c
runtime/compiler/just.vim @Alarcritty
runtime/compiler/make.vim @Konfekt
runtime/compiler/mypy.vim @Konfekt
runtime/compiler/pandoc.vim @Konfekt
runtime/compiler/perl.vim @petdance @heptite
runtime/compiler/perlcritic.vim @petdance @dkearns
@@ -78,6 +90,8 @@ runtime/compiler/php.vim @dkearns
runtime/compiler/phpstan.vim @dietrichm
runtime/compiler/podchecker.vim @petdance @dkearns
runtime/compiler/powershell.vim @heaths
runtime/compiler/pyright.vim @Konfekt
runtime/compiler/pytest.vim @Konfekt
runtime/compiler/raco.vim @benknoble
runtime/compiler/racomake.vim @benknoble
runtime/compiler/racosetup.vim @benknoble
@@ -93,12 +107,14 @@ runtime/compiler/se.vim @dkearns
runtime/compiler/shellcheck.vim @dkearns
runtime/compiler/sml.vim @dkearns
runtime/compiler/spectral.vim @romainl
runtime/compiler/svelte-check.vim @Konfekt
runtime/compiler/stylelint.vim @dkearns
runtime/compiler/svelte-check.vim @Konfekt
runtime/compiler/tcl.vim @dkearns
runtime/compiler/tidy.vim @dkearns
runtime/compiler/tombi.vim @Konfekt
runtime/compiler/ts-node.vim @dkearns
runtime/compiler/tsc.vim @dkearns
runtime/compiler/ty.vim @Konfekt
runtime/compiler/typedoc.vim @dkearns
runtime/compiler/xmllint.vim @dkearns
runtime/compiler/xo.vim @dkearns
@@ -125,9 +141,12 @@ runtime/ftplugin/asy.vim @avidseeker
runtime/ftplugin/autohotkey.vim @telemachus
runtime/ftplugin/awk.vim @dkearns
runtime/ftplugin/basic.vim @dkearns
runtime/ftplugin/bicep.vim @scottmckendry
runtime/ftplugin/bicep-params.vim @scottmckendry
runtime/ftplugin/brighterscript.vim @ribru17
runtime/ftplugin/brightscript.vim @ribru17
runtime/ftplugin/bst.vim @tpope
runtime/ftplugin/bpftrace.vim @sgruszka
runtime/ftplugin/c3.vim @ttytm
runtime/ftplugin/cabal.vim @ribru17
runtime/ftplugin/cedar.vim @ribru17
@@ -137,6 +156,7 @@ runtime/ftplugin/chicken.vim @evhan
runtime/ftplugin/clojure.vim @axvr
runtime/ftplugin/cmakecache.vim @ribru17
runtime/ftplugin/codeowners.vim @jparise
runtime/ftplugin/context.vim @lifepillar
runtime/ftplugin/cook.vim @ribru17
runtime/ftplugin/cs.vim @nickspoons
runtime/ftplugin/csh.vim @dkearns
@@ -214,16 +234,20 @@ runtime/ftplugin/julia.vim @carlobaldassi
runtime/ftplugin/just.vim @pbnj
runtime/ftplugin/kconfig.vim @chrisbra
runtime/ftplugin/kdl.vim @imsnif @jiangyinzuo
runtime/ftplugin/kerml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/kerml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/kitty.vim @rivenirvana
runtime/ftplugin/kivy.vim @ribru17
runtime/ftplugin/kotlin.vim @udalov
runtime/ftplugin/lc.vim @ribru17
runtime/ftplugin/ldapconf.vim @ribru17
runtime/ftplugin/leex.vim @jparise
runtime/ftplugin/leo.vim @ribru17
runtime/ftplugin/less.vim @genoma
runtime/ftplugin/lex.vim @ribru17
runtime/ftplugin/lf.vim @andis-sprinkis
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/logtalk.dict @pmoura
runtime/ftplugin/logtalk.vim @pmoura
runtime/ftplugin/lua.vim @dkearns
runtime/ftplugin/lynx.vim @dkearns
runtime/ftplugin/m17ndb.vim @dseomn
@@ -233,11 +257,14 @@ runtime/ftplugin/markdown.vim @tpope
runtime/ftplugin/mbsync.vim @fymyte
runtime/ftplugin/mediawiki.vim @avidseeker
runtime/ftplugin/meson.vim @Liambeguin
runtime/ftplugin/mf.vim @lifepillar
runtime/ftplugin/modula2.vim @dkearns
runtime/ftplugin/modula3.vim @dkearns
runtime/ftplugin/mojo.vim @ribru17
runtime/ftplugin/mp.vim @lifepillar
runtime/ftplugin/mss.vim @Freed-Wu
runtime/ftplugin/nginx.vim @chr4
runtime/ftplugin/nickel.vim @ribru17
runtime/ftplugin/nim.vim @ribru17
runtime/ftplugin/nroff.vim @averms
runtime/ftplugin/nsis.vim @k-takata
@@ -245,7 +272,7 @@ runtime/ftplugin/nu.vim @elkasztano
runtime/ftplugin/octave.vim @dkearns
runtime/ftplugin/ondir.vim @jparise
runtime/ftplugin/opencl.vim @Freed-Wu
runtime/ftplugin/openscad.vim @squibid
runtime/ftplugin/openscad.vim @squibid
runtime/ftplugin/openvpn.vim @ObserverOfTime
runtime/ftplugin/pascal.vim @dkearns
runtime/ftplugin/pbtxt.vim @lakshayg
@@ -286,6 +313,7 @@ runtime/ftplugin/sed.vim @dkearns
runtime/ftplugin/sh.vim @dkearns
runtime/ftplugin/shaderslang.vim @mTvare6
runtime/ftplugin/slint.vim @ribru17
runtime/ftplugin/sml.vim @tocariimaa
runtime/ftplugin/snakemake.vim @ribru17
runtime/ftplugin/solidity.vim @coti-z
runtime/ftplugin/solution.vim @dkearns
@@ -298,7 +326,7 @@ runtime/ftplugin/sshdconfig.vim @jiangyinzuo
runtime/ftplugin/svelte.vim @igorlfs
runtime/ftplugin/sway.vim @ribru17
runtime/ftplugin/swayconfig.vim @jamespeapen
runtime/ftplugin/sysml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/sysml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/systemverilog.vim @Kocha
runtime/ftplugin/swig.vim @jmarrec
runtime/ftplugin/tap.vim @petdance
@@ -322,6 +350,7 @@ runtime/ftplugin/vdf.vim @ObserverOfTime
runtime/ftplugin/vim.vim @dkearns
runtime/ftplugin/wget.vim @dkearns
runtime/ftplugin/wget2.vim @dkearns
runtime/ftplugin/wks.vim @anakin4747
runtime/ftplugin/xcompose.vim @ObserverOfTime
runtime/ftplugin/xml.vim @chrisbra
runtime/ftplugin/xs.vim @petdance
@@ -331,11 +360,13 @@ runtime/import/dist/vimhighlight.vim @lacygoill
runtime/indent/arduino.vim @k-takata
runtime/indent/astro.vim @wuelnerdotexe
runtime/indent/basic.vim @dkearns
runtime/indent/bpftrace.vim @sgruszka
runtime/indent/bst.vim @tpope
runtime/indent/cdl.vim @dkearns
runtime/indent/chatito.vim @ObserverOfTime
runtime/indent/clojure.vim @axvr
runtime/indent/config.vim @dkearns
runtime/indent/context.vim @lifepillar
runtime/indent/cs.vim @nickspoons
runtime/indent/css.vim @dkearns
runtime/indent/cucumber.vim @tpope
@@ -359,6 +390,7 @@ runtime/indent/go.vim @dbarnett
runtime/indent/graphql.vim @jparise
runtime/indent/gyp.vim @ObserverOfTime
runtime/indent/haml.vim @tpope
runtime/indent/handlebars.vim @sukima
runtime/indent/hare.vim @selenebun
runtime/indent/hcl.vim @gpanders
runtime/indent/hog.vim @wtfbbqhax
@@ -374,14 +406,18 @@ runtime/indent/kdl.vim @imsnif @jiangyinzuo
runtime/indent/kotlin.vim @udalov
runtime/indent/krl.vim @KnoP-01
runtime/indent/ld.vim @dkearns
runtime/indent/lf.vim @andis-sprinkis
runtime/indent/less.vim @genoma
runtime/indent/liquid.vim @tpope
runtime/indent/logtalk.vim @pmoura
runtime/indent/lua.vim @marcuscf
runtime/indent/m17ndb.vim @dseomn
runtime/indent/make.vim @dkearns
runtime/indent/meson.vim @Liambeguin
runtime/indent/mf.vim @lifepillar
runtime/indent/mma.vim @dkearns
runtime/indent/mojo.vim @ribru17
runtime/indent/mp.vim @lifepillar
runtime/indent/nginx.vim @chr4
runtime/indent/nsis.vim @k-takata
runtime/indent/nu.vim @elkasztano
@@ -436,6 +472,7 @@ runtime/syntax/shared/hgcommitDiff.vim @vegerot
runtime/syntax/abaqus.vim @costerwi
runtime/syntax/abnf.vim @A4-Tacks
runtime/syntax/aidl.vim @dpelle
runtime/syntax/amiga.vim @sodero
runtime/syntax/ant.vim @dkearns
runtime/syntax/antlr4.vim @jiangyinzuo
runtime/syntax/arduino.vim @johshoff
@@ -448,6 +485,7 @@ runtime/syntax/asy.vim @avidseeker
runtime/syntax/autohotkey.vim @mmikeww
runtime/syntax/awk.vim @dkearns
runtime/syntax/basic.vim @dkearns
runtime/syntax/bpftrace.vim @sgruszka
runtime/syntax/bst.vim @tpope
runtime/syntax/bzl.vim @dbarnett
runtime/syntax/bzr.vim @hdima
@@ -461,7 +499,10 @@ runtime/syntax/chicken.vim @evhan
runtime/syntax/chuck.vim @andreacfromtheapp
runtime/syntax/clojure.vim @axvr
runtime/syntax/codeowners.vim @jparise
runtime/syntax/context.vim @lifepillar
runtime/syntax/cs.vim @nickspoons
runtime/syntax/csh.vim @dkearns
runtime/syntax/css.vim @jsit
runtime/syntax/csv.vim @habamax
runtime/syntax/cucumber.vim @tpope
runtime/syntax/d.vim @JesseKPhillips
@@ -492,6 +533,7 @@ runtime/syntax/forth.vim @jkotlinski
runtime/syntax/fpcmake.vim @dkearns
runtime/syntax/freebasic.vim @dkearns
runtime/syntax/fstab.vim @rid9
runtime/syntax/gdb.vim @dkearns
runtime/syntax/gdresource.vim @habamax
runtime/syntax/gdscript.vim @habamax
runtime/syntax/gdshader.vim @habamax
@@ -503,6 +545,7 @@ runtime/syntax/gitignore.vim @ObserverOfTime
runtime/syntax/gitolite.vim @sitaramc
runtime/syntax/gitrebase.vim @tpope
runtime/syntax/gleam.vim @kirillmorozov
runtime/syntax/glimmer.vim @sukima
runtime/syntax/glsl.vim @gpanders
runtime/syntax/go.vim @bhcleek
runtime/syntax/goaccess.vim @meonkeys
@@ -513,6 +556,7 @@ runtime/syntax/graphql.vim @jparise
runtime/syntax/groff.vim @jmarshall
runtime/syntax/gyp.vim @ObserverOfTime
runtime/syntax/haml.vim @tpope
runtime/syntax/handlebars.vim @sukima
runtime/syntax/hare.vim @selenebun
runtime/syntax/haredoc.vim @selenebun
runtime/syntax/haskell.vim @coot
@@ -546,10 +590,12 @@ runtime/syntax/kivy.vim @prophittcorey
runtime/syntax/kotlin.vim @udalov
runtime/syntax/kdl.vim @imsnif @jiangyinzuo
runtime/syntax/krl.vim @KnoP-01
runtime/syntax/leex.vim @jparise
runtime/syntax/less.vim @genoma
runtime/syntax/lf.vim @andis-sprinkis
runtime/syntax/liquid.vim @tpope
runtime/syntax/log.vim @mao-yining
runtime/syntax/logtalk.vim @pmoura
runtime/syntax/lua.vim @marcuscf
runtime/syntax/lynx.vim @dkearns
runtime/syntax/lyrics.vim @ObserverOfTime
@@ -557,18 +603,19 @@ runtime/syntax/m17ndb.vim @dseomn
runtime/syntax/m3build.vim @dkearns
runtime/syntax/m3quake.vim @dkearns
runtime/syntax/mailcap.vim @dkearns
runtime/syntax/make.vim @rohieb
runtime/syntax/mallard.vim @jhradilek
runtime/syntax/markdown.vim @tpope
runtime/syntax/mbsync.vim @fymyte
runtime/syntax/mason.vim @petdance
runtime/syntax/mediawiki.vim @avidseeker
runtime/syntax/meson.vim @Liambeguin
runtime/syntax/mf.vim @lifepillar
runtime/syntax/modula2.vim @dkearns
runtime/syntax/modula2/opt/iso.vim @trijezdci
runtime/syntax/modula2/opt/pim.vim @trijezdci
runtime/syntax/modula2/opt/r10.vim @trijezdci
runtime/syntax/modula3.vim @dkearns
runtime/syntax/mp.vim @lifepillar
runtime/syntax/mss.vim @Freed-Wu
runtime/syntax/n1ql.vim @pr3d4t0r
runtime/syntax/nginx.vim @chr4
@@ -627,6 +674,7 @@ runtime/syntax/scss.vim @tpope
runtime/syntax/sed.vim @dkearns
runtime/syntax/shared/debversions.vim @jamessan
runtime/syntax/shaderslang.vim @mTvare6
runtime/syntax/skhd.vim @kiyoon
runtime/syntax/solidity.vim @coti-z
runtime/syntax/spajson.vim @dseomn
runtime/syntax/spec.vim @ignatenkobrain
@@ -664,6 +712,7 @@ runtime/syntax/vroom.vim @dbarnett
runtime/syntax/wdl.vim @zenmatic
runtime/syntax/wget.vim @dkearns
runtime/syntax/wget2.vim @dkearns
runtime/syntax/wks.vim @anakin4747
runtime/syntax/xbl.vim @dkearns
runtime/syntax/xcompose.vim @ObserverOfTime
runtime/syntax/xml.vim @chrisbra
@@ -671,6 +720,7 @@ runtime/syntax/xs.vim @petdance
runtime/syntax/xslt.vim @Boobies
runtime/syntax/zserio.vim @dpelle
runtime/syntax/zsh.vim @chrisbra
runtime/tools/preproc_indent.vim @h-east
runtime/tutor/tutor1.eo @dpelle
runtime/tutor/tutor1.fr @dpelle
runtime/tutor/tutor1.ru @RestorerZ
+35 -25
View File
@@ -1,33 +1,43 @@
name: 'test_artifacts'
description: "Upload failed test artifacts"
inputs:
artifact-name:
description: Name of the artifact
required: true
runs:
using: "composite"
steps:
- name: Collect matrix properties for naming
uses: actions/github-script@v8
id: matrix-props
env:
MATRIX_PROPS: ${{ toJSON(matrix) }}
with:
# An array-flattening-to-string JavaScript function.
script: |
const f = function (x) { return x.toString().length > 0; }
const g = function (x) {
return (Array.isArray(x))
? x.filter(f)
.map((function (h) { return function (y) { return h(y); }; })(g))
.join('-')
: x;
}
return Object.values(JSON.parse(process.env.MATRIX_PROPS))
.filter(f)
.map(g)
.join('-');
# By default, the JSON-encoded return value of the function is
# set as the "result".
result-encoding: string
# MacVim: We don't use a matrix within the reused
# workflow, and so would prefer to manually pass
# in the name of the artifact rather than deriving
# it from the matrix automatically like in Vim
# upstream.
# - name: Collect matrix properties for naming
# uses: actions/github-script@v8
# id: matrix-props
# env:
# MATRIX_PROPS: ${{ toJSON(inputs) }}
# with:
# # An array-flattening-to-string JavaScript function.
# script: |
# const f = function (x) { return x.toString().length > 0; }
# const g = function (x) {
# return (Array.isArray(x))
# ? x.filter(f)
# .map((function (h) { return function (y) { return h(y); }; })(g))
# .join('-')
# : x;
# }
# return Object.values(JSON.parse(process.env.MATRIX_PROPS))
# .filter(f)
# .map(g)
# .join('-');
# # By default, the JSON-encoded return value of the function is
# # set as the "result".
# result-encoding: string
- name: Upload failed tests
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
# Name of the artifact to upload.
name: ${{ format('GH-{0}-{1}-{2}-{3}-{4}-failed-tests',
@@ -35,7 +45,7 @@ runs:
github.run_attempt,
github.job,
strategy.job-index,
steps.matrix-props.outputs.result) }}
inputs.artifact-name) }}
# A file, directory or wildcard pattern that describes what
# to upload.
@@ -1,14 +1,27 @@
# This is a clone of test_artifacts for MacVim-specific files
# This should be almost identical to test_artifacts, other than the artifact
# name/path. In the future we could potentially combine the two, but for now
# it's simpler to keep them separate to ease upstream merging.
name: 'test_macvim_artifacts'
description: "Upload failed MacVim test artifacts"
inputs:
artifact-name:
description: Name of the artifact
required: true
runs:
using: "composite"
steps:
- name: Upload failed tests
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
# Name of the artifact to upload.
name: ${{ github.workflow }}-${{ github.job }}-${{ join(matrix.*, '-') }}-failed-macvim-tests
name: ${{ format('GH-{0}-{1}-{2}-{3}-{4}-failed-macvim-tests',
github.run_id,
github.run_attempt,
github.job,
strategy.job-index,
inputs.artifact-name) }}
# A file, directory or wildcard pattern that describes what
# to upload.
+26 -10
View File
@@ -7,15 +7,19 @@ description: Create universal Homebrew package which contains x86_64 and arm64
# that has both x86_64 and arm64 arch, as Homebrew's distributed bottles are thin binaries with only one arch.
#
# We still use Homebrew to manage the library because their formulas are up to date and have correct build instructions
# that will work. This way we don't have to manually configuring and building and updating the package info.
# that will work. This way we don't have to manually configure, build, and update the package info.
inputs:
formula:
description: Formura name
description: Formula name
required: true
contents:
description: Path for contents in package's keg
required: true
gnuiconv:
description: Use the Homebrew GNU libiconv instead of system one
type: boolean
required: false
runs:
using: 'composite'
steps:
@@ -31,14 +35,24 @@ runs:
# version and stomp what we have here.
brew update
brew cat ${formula} >${formula}.rb
if [[ "${{ inputs.gnuiconv }}" == "true" ]]; then
# Modify formula to build using Homebrew libiconv. Usually just adding "depends_on" is enough, but since we
# override "CC" to use vanilla system clang, we need to manually inject the compilation/link flags to specify
# the locations.
sed -i.bak '/^[[:blank:]]*def install$/i\'$'\n depends_on "libiconv"\n' ${formula}.rb
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["CFLAGS"] += " -I'$(brew --prefix)$'/opt/libiconv/include"\n' ${formula}.rb
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["LDFLAGS"] += " -L'$(brew --prefix)$'/opt/libiconv/lib"\n' ${formula}.rb
fi
# Patch the official Homebrew formula to explicitly build for min deployment target and a universal binary. We
# also need to explicitly use system Clang because Homebrew's bundled clang script tries to inject -march
# compiler flags that will cause universal builds to fail as Clang does not like that.
brew cat ${formula} | \
sed '/^[[:blank:]]*def install$/a\'$'\n ENV["MACOSX_DEPLOYMENT_TARGET"] = "'${MACOSX_DEPLOYMENT_TARGET}$'"\n' | \
sed '/^[[:blank:]]*def install$/a\'$'\n ENV["CC"] = "/usr/bin/clang"\n' | \
sed '/^[[:blank:]]*def install$/a\'$'\n ENV["CFLAGS"] = "-arch x86_64 -arch arm64"\n' | \
sed '/^[[:blank:]]*def install$/a\'$'\n ENV["LDFLAGS"] = "-arch x86_64 -arch arm64"\n' >${formula}.rb
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["MACOSX_DEPLOYMENT_TARGET"] = "'${MACOSX_DEPLOYMENT_TARGET}$'"\n' ${formula}.rb
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["CC"] = "/usr/bin/clang"\n' ${formula}.rb
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["CFLAGS"] = "-arch x86_64 -arch arm64"\n' ${formula}.rb
sed -i.bak '/^[[:blank:]]*def install$/a\'$'\n ENV["LDFLAGS"] = "-arch x86_64 -arch arm64"\n' ${formula}.rb
# Homebrew requires formula files to be placed in taps and disallows
# installing from raw paths, so we manually create a taps folder for a
@@ -62,7 +76,7 @@ runs:
- name: Restore keg cache
id: cache-keg-restore
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: ${{ steps.setup-formula.outputs.brew_prefix }}/Cellar/${{ inputs.formula }}
key: ${{ inputs.formula }}-homebrew-cache-custom-unified-prefix${{ steps.setup-formula.outputs.brew_prefix }}-xcode${{ steps.setup-formula.outputs.xcode_version }}-${{ hashFiles(format('{0}.rb', inputs.formula)) }}
@@ -85,7 +99,9 @@ runs:
brew list ${formula} &>/dev/null || brew install --quiet --formula -s macvim-dev/deps/${formula}
# If formula was cached, this step is necessary to relink it to brew prefix (e.g. /usr/local)
brew unlink ${formula} && brew link ${formula}
# The "-f" is there to force link keg-only formulas. Homebrew doesn't provide a command to just link in the
# optional /opt/homebrew/opt/... folders, so we have to resort to doing this.
brew unlink ${formula} && brew link -f ${formula}
echo '::endgroup::'
echo '::group::Verify built version'
@@ -104,7 +120,7 @@ runs:
- name: Save keg cache
id: cache-keg-save
uses: actions/cache/save@v4
uses: actions/cache/save@v5
# We always save the generated artifact even if the whole run
# fails due to other issues. This helps debugging build
# failure issues faster if the cache doesn't already exist as
+9 -1
View File
@@ -1,8 +1,16 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
directories:
- "/"
- "/.github/actions/**/*"
schedule:
interval: "weekly"
commit-message:
prefix: "CI"
cooldown:
default-days: 7
groups:
github-actions:
patterns:
- "*"
+6 -3
View File
@@ -128,9 +128,12 @@ runtime:
- all:
- changed-files:
- any-glob-to-any-file:
- 'runtime/ftplugin'
- 'runtime/syntax'
- 'runtime/indent'
- 'runtime/autoload/**/*.vim'
- 'runtime/colors/**/*.vim'
- 'runtime/compiler/**/*.vim'
- 'runtime/ftplugin/**/*.vim'
- 'runtime/indent/**/*.vim'
- 'runtime/syntax/**/*.vim'
- 'runtime/pack/dist/opt/termdebug/plugin/termdebug.vim'
termdebug:
+3 -9
View File
@@ -29,20 +29,14 @@ jobs:
skip: ${{ ! startswith(github.ref, 'refs/tags/release') }}
legacy: true
- os: macos-13
xcode: '15.2'
- os: macos-14
xcode: '15.4'
testgui: true
extra: [vimtags, check-xcodeproj-compat]
# Below runners use Apple Silicon.
- os: macos-14
xcode: '15.4'
testgui: false
# Most up to date OS and Xcode. Used to publish release for the main build.
- os: macos-15
xcode: '16.4'
testgui: true
testgui: false
publish: true
optimized: true
+4 -4
View File
@@ -44,11 +44,11 @@ jobs:
steps:
- name: Checkout repository from github
uses: actions/checkout@v5
uses: actions/checkout@v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@v4.35.5
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -59,7 +59,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4
uses: github/codeql-action/autobuild@v4.35.5
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -73,4 +73,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@v4.35.5
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
steps:
- name: Checkout repository from github
if: env.TOKEN
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Download Coverity
if: env.TOKEN
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
lychee:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Run Lychee
uses: lycheeverse/lychee-action@v2
with:
+33 -3
View File
@@ -64,7 +64,7 @@ jobs:
runs-on: ${{ inputs.os }}
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Set up legacy build
if: inputs.legacy
@@ -89,6 +89,15 @@ jobs:
xcode-select -p
xcodebuild -version
# Set up, install, and cache GNU libiconv library to work around Apple iconv issues in newer macOS versions.
- name: Set up libiconv
if: inputs.publish && !inputs.legacy
uses: ./.github/actions/universal-package
with:
formula: libiconv
contents: opt/libiconv/lib/libiconv.a,opt/libiconv/lib/libiconv.dylib
# Set up, install, and cache gettext library for localization.
- name: Set up gettext
@@ -97,6 +106,7 @@ jobs:
with:
formula: gettext
contents: lib/libintl.a,lib/libintl.dylib
gnuiconv: ${{ inputs.legacy == false }} # gettext needs to match MacVim in using the same version of iconv
# Set up, install, and cache libsodium library for encryption.
@@ -125,7 +135,7 @@ jobs:
# Note: Legacy self-hosted runner already has this installed and doesn't need this.
- name: Cache Python 2
if: inputs.publish && !inputs.legacy
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: python27-cache
key: ${{ inputs.os }}-python27
@@ -222,6 +232,11 @@ jobs:
sed -i.bak -f ci/config.mk.optimized.sed src/auto/config.mk
fi
if ${{ inputs.publish == true && inputs.legacy == false }}; then
# Use Homebrew GNU libiconv since Apple iconv has been broken since macOS 14
sed -i.bak -f ci/config.mk.brew-libiconv.sed src/auto/config.mk
fi
- name: Modify configure result
if: inputs.publish
run: |
@@ -271,6 +286,13 @@ jobs:
echo 'Found external dynamic linkage!'; false
fi
if ${{ inputs.publish == true && inputs.legacy == false }}; then
# Make sure we are not using system iconv, which has been buggy since macOS 14.
if otool -L ${VIM_BIN} | grep '^\s*/usr/lib/libiconv'; then
echo 'Using system iconv! We should be linking against GNU iconv instead.'; false
fi
fi
# Make sure that --disable-sparkle flag will properly exclude all references to Sparkle symbols. This is
# necessary because we still use weak linking to Sparkle when that flag is set and so references to Sparkle
# wouldn't fail the build (we just remove Sparkle.framework from the built app after the fact).
@@ -348,11 +370,17 @@ jobs:
id: test_macvim
timeout-minutes: 10
run: |
echo '::group::Build MacVim test binaries'
# Build test binaries in a separate step to allow grouping in the CI output to make the output more concise.
make ${MAKE_BUILD_ARGS} -C src macvim-tests-binaries
echo '::endgroup::'
make ${MAKE_BUILD_ARGS} -C src macvim-tests
- name: Upload failed MacVim test results
if: ${{ !cancelled() && failure() && steps.test_macvim.conclusion == 'failure' }}
uses: ./.github/actions/test_macvim_artifacts
with:
artifact-name: ${{ format('{0}-{1}', inputs.os, inputs.xcode) }}
- name: Build Vim test binaries
run: |
@@ -385,6 +413,8 @@ jobs:
- name: Upload failed test files
if: ${{ !cancelled() && failure() }}
uses: ./.github/actions/test_artifacts
with:
artifact-name: ${{ format('{0}-{1}', inputs.os, inputs.xcode) }}
- name: Build MacVim dmg image
if: inputs.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
@@ -405,7 +435,7 @@ jobs:
# and add pictures to make them look nice.
- name: Upload MacVim image
if: inputs.publish && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: MacVim${{ inputs.publish_postfix }}.dmg
path: src/MacVim/build/Release/MacVim${{ inputs.publish_postfix }}.dmg
+18 -6
View File
@@ -12,10 +12,10 @@ A pull request has the advantage that it will trigger the Continuous
Integration tests, you will be warned of problems (you can ignore the coverage
warning, it's noisy).
Please consider adding a test. All new functionality should be tested and bug
fixes should be tested for regressions: the test should fail before the fix and
pass after the fix. Look through recent patches for examples and find help
with ":help testing". The tests are located under "src/testdir".
Please always add a test, if possible. All new functionality should be tested
and bug fixes should be tested for regressions: the test should fail before the
fix and pass after the fix. Look through recent patches for examples and find
help with ":help testing". The tests are located under "src/testdir".
Contributions will be distributed with Vim under the Vim license. Providing a
change to be included implies that you agree with this and your contribution
@@ -46,6 +46,15 @@ When merging PRs into Vim, the current maintainer @chrisbra usually adds missing
anybody that explicitly *ACK*s a pull request as a statement that those
approvers are happy with that particular change.
## Using AI
When using AI for contributions, please disclose this. Any AI-generated code
must follow the Vim code style. In particular, [test_codestyle.vim][18]
must not report any failures. Check the CI output for any test failures.
Ensure that changes are properly tested. Do not submit a single PR that
addresses multiple unrelated issues.
# Reporting issues
We use GitHub [issues][17], but that is not a requirement. Writing to the Vim
@@ -138,8 +147,9 @@ For the recommended documentation style, please check [helphelp.txt][16].
# I have a question
If you have some question on the style guide, please contact the [vim-dev][0]
mailing list. For other questions please use the [Vi Stack Exchange][8] website, the
[vim-use][9] mailing list or make use of the [discussion][10] feature here at github.
mailing list. For other questions you can join [`#vim`][19], use the
[Vi Stack Exchange][8] website, the [vim-use][9] mailing list or make use of the
[discussion][10] feature here at github.
[todo list]: https://github.com/vim/vim/blob/master/runtime/doc/todo.txt
[0]: http://www.vim.org/maillist.php#vim-dev
@@ -160,3 +170,5 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website,
[15]: https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin
[16]: https://github.com/vim/vim/blob/master/runtime/doc/helphelp.txt
[17]: https://github.com/vim/vim/issues
[18]: https://github.com/vim/vim/blob/master/src/testdir/test_codestyle.vim
[19]: https://web.libera.chat/#vim
+27 -7
View File
@@ -27,7 +27,6 @@ SRC_ALL = \
ci/if_feat_check.vim \
ci/lychee.toml \
ci/setup-xvfb.sh \
ci/setup-sway.sh \
ci/remove_snap.sh \
ci/ddebs.list \
ci/pinned-pkgs \
@@ -214,6 +213,7 @@ SRC_ALL = \
src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.po \
src/testdir/runtest.vim \
src/testdir/samples/*.html \
src/testdir/samples/*.swp \
src/testdir/samples/*.txt \
src/testdir/samples/*.vim \
src/testdir/samples/evil.zip \
@@ -224,6 +224,8 @@ SRC_ALL = \
src/testdir/samples/test000 \
src/testdir/samples/test_undo.txt.undo \
src/testdir/samples/testa.zip \
src/testdir/samples/crypt_utf8_test.txt \
src/testdir/samples/uncrypt_utf8_test.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/silent.wav \
src/testdir/test77a.com \
@@ -248,6 +250,7 @@ SRC_ALL = \
src/testdir/util/view_util.vim \
src/testdir/util/vim9.vim \
src/testdir/util/window_manager.vim \
src/testdir/util/socketserver.vim \
src/testdir/viewdumps.vim \
src/proto.h \
src/protodef.h \
@@ -540,7 +543,6 @@ SRC_UNIX = \
src/wayland.c \
src/wayland.h \
src/which.sh \
src/gen-wayland-protocols.sh \
src/xxd/Makefile \
# Source files for both MS Windows and Unix-like.
@@ -676,6 +678,7 @@ SRC_AMI = \
src/Make_ami.mak \
src/os_amiga.c \
src/os_amiga.h \
src/os_amiga_stubs.c \
src/proto/os_amiga.pro \
src/testdir/Make_amiga.mak \
src/testdir/util/amiga.vim \
@@ -804,6 +807,10 @@ RT_ALL = \
runtime/tutor/en/vim-01-beginner.tutor.json \
runtime/tutor/en/vim-02-beginner.tutor \
runtime/tutor/en/vim-02-beginner.tutor.json \
runtime/tutor/sv/vim-01-beginner.tutor \
runtime/tutor/sv/vim-01-beginner.tutor.json \
runtime/tutor/sv/vim-02-beginner.tutor \
runtime/tutor/sv/vim-02-beginner.tutor.json \
runtime/tutor/tutor.tutor \
runtime/tutor/tutor.tutor.json \
runtime/tutor/tutor.vim \
@@ -821,7 +828,6 @@ RT_ALL = \
runtime/pack/dist/opt/editorconfig/.editorconfig \
runtime/pack/dist/opt/editorconfig/CONTRIBUTORS \
runtime/pack/dist/opt/editorconfig/LICENSE* \
runtime/pack/dist/opt/editorconfig/mkzip.sh \
runtime/pack/dist/opt/editorconfig/README.md \
runtime/pack/dist/opt/editorconfig/autoload/*.vim \
runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/*.vim \
@@ -829,6 +835,10 @@ RT_ALL = \
runtime/pack/dist/opt/editorconfig/doc/editorconfig.txt \
runtime/pack/dist/opt/editorconfig/ftdetect/editorconfig.vim \
runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim \
runtime/pack/dist/opt/helpcurwin/autoload/helpcurwin.vim \
runtime/pack/dist/opt/helpcurwin/doc/helpcurwin.txt \
runtime/pack/dist/opt/helpcurwin/doc/tags \
runtime/pack/dist/opt/helpcurwin/plugin/helpcurwin.vim \
runtime/pack/dist/opt/helptoc/autoload/helptoc.vim \
runtime/pack/dist/opt/helptoc/doc/helptoc.txt \
runtime/pack/dist/opt/helptoc/doc/tags \
@@ -852,7 +862,12 @@ RT_ALL = \
runtime/pack/dist/opt/netrw/autoload/netrw_gitignore.vim \
runtime/pack/dist/opt/netrw/doc/netrw.txt \
runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim \
runtime/pack/dist/opt/netrw/syntax/netrw.vim
runtime/pack/dist/opt/netrw/syntax/netrw.vim \
runtime/pack/dist/opt/osc52/plugin/osc52.vim \
runtime/pack/dist/opt/osc52/autoload/osc52.vim \
runtime/pack/dist/opt/osc52/doc/osc52.txt \
runtime/pack/dist/opt/osc52/doc/tags \
runtime/xdg.vim
# Runtime files for all distributions without CR/LF translation.
RT_ALL_BIN = \
@@ -907,7 +922,6 @@ RT_SCRIPTS = \
runtime/syntax/testdir/input/selftestdir/* \
runtime/syntax/testdir/input/setup/*.* \
runtime/syntax/testdir/dumps/*.dump \
runtime/syntax/testdir/dumps/*.vim \
runtime/syntax/testdir/tools/* \
runtime/syntax/generator/Makefile \
runtime/syntax/generator/README.md \
@@ -928,12 +942,15 @@ RT_UNIX_DOS_BIN = \
runtime/vim16x16.gif \
runtime/vim16x16.png \
runtime/vim16x16.xpm \
runtime/vim16x16_png.h \
runtime/vim32x32.gif \
runtime/vim32x32.png \
runtime/vim32x32.xpm \
runtime/vim32x32_png.h \
runtime/vim48x48.gif \
runtime/vim48x48.png \
runtime/vim48x48.xpm \
runtime/vim48x48_png.h \
# Runtime not for Unix-like or extra.
RT_NO_UNIX = \
@@ -979,8 +996,7 @@ RT_AMI = \
runtime/macros/maze/*.info \
runtime/macros/urm/*.info \
runtime/tools.info \
runtime/tutor.info \
runtime/tutor/*.info \
runtime/tutor.info
# Runtime files in extra archive.
RT_EXTRA = \
@@ -1095,6 +1111,8 @@ LANG_GEN = \
runtime/doc/*-pl.UTF-8.1 \
runtime/doc/*-ru.1 \
runtime/doc/*-ru.UTF-8.1 \
runtime/doc/*-sv.1 \
runtime/doc/*-sv.UTF-8.1 \
runtime/doc/*-tr.1 \
runtime/doc/*-tr.UTF-8.1 \
runtime/lang/README.txt \
@@ -1114,6 +1132,8 @@ LANG_GEN = \
runtime/tutor/sr/vim-01-beginner.tutor.json \
runtime/tutor/sr/vim-02-beginner.tutor \
runtime/tutor/sr/vim-02-beginner.tutor.json \
runtime/tutor/zh/vim-01-beginner.tutor \
runtime/tutor/zh/vim-01-beginner.tutor.json \
runtime/tutor/tutor1.?? \
runtime/tutor/tutor1.??_?? \
runtime/tutor/tutor1.bar \
+2 -1
View File
@@ -98,7 +98,7 @@ syntaxtest:
# Before creating an archive first delete all backup files, *.orig, etc.
MAJOR = 9
MINOR = 1
MINOR = 2
# CHECKLIST for creating a new version:
#
@@ -460,6 +460,7 @@ dosrt_files: dist prepare
$(LANG_GEN_BIN) \
| (cd dist/vim/$(VIMRTDIR); tar xf -)
-rm $(IN_README_DIR)
mv dist/vim/$(VIMRTDIR)/lang/ dist/vim/$(VIMRTDIR)/readme/
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
rmdir dist/vim/$(VIMRTDIR)/runtime
# Add the message translations. Trick: skip ja.mo/ja.euc-jp.mo and use
+1 -1
View File
@@ -1,4 +1,4 @@
README.txt for version 9.1 of Vim: Vi IMproved.
README.txt for version 9.2 of Vim: Vi IMproved.
WHAT IS VIM?
+2 -2
View File
@@ -28,7 +28,7 @@ way:
* Local variables are not available in an l: dictionary.
* A few more things that slow us down, such as exception handling details.
I Implemented a "proof of concept" and measured the time to run a simple
I implemented a "proof of concept" and measured the time to run a simple
for loop with an addition (Justin used this example in his presentation,
full code is below):
@@ -224,7 +224,7 @@ Eventually this will lead to Vim 9!
## Code for sum time measurements
Vim was build with -O2.
Vim was built with -O2.
``` vim
func VimOld()
+4 -15
View File
@@ -1,16 +1,3 @@
<div align="center" markdown="1">
<sup>Special thanks for supporting Vim by donating to the <a href="https://iccf-holland.org/">ICCF</a>:</sup>
<br>
<br>
<a href="https://go.warp.dev/vim">
<img alt="Warp sponsorship" width="400" src="https://raw.githubusercontent.com/warpdotdev/brand-assets/refs/heads/main/Github/Sponsor/Warp-Github-LG-03.png">
</a>
### [Warp, built for coding with multiple AI agents.](https://www.warp.dev/vim)
[Available for MacOS, Linux, & Windows](https://www.warp.dev/vim)<br>
</div>
<hr>
# [![Vim The editor](https://github.com/vim/vim/raw/master/runtime/vimlogo.gif)](https://www.vim.org)
[![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)
@@ -25,7 +12,9 @@
If you find a bug or want to discuss the best way to add a new feature, please
[open an issue](https://github.com/vim/vim/issues/new/choose).
If you have a question or want to discuss the best way to do something with
Vim, you can use [StackExchange](https://vi.stackexchange.com/)
Vim, you can join [`#vim`](https://web.libera.chat/#vim),
[reddit.com/r/vim](https://reddit.com/r/vim),
use [StackExchange](https://vi.stackexchange.com/),
or one of the [Maillists](https://www.vim.org/community.php).
## What is Vim?
@@ -167,4 +156,4 @@ Most of Vim was created by Bram Moolenaar `<Bram@vim.org>`
Send any other comments, patches, flowers and suggestions to the vim-dev mailing list:
`<vim-dev@vim.org>`
This is `README.md` for version 9.1 of Vim: Vi IMproved.
This is `README.md` for version 9.2 of Vim: Vi IMproved.
+6 -6
View File
@@ -9,15 +9,15 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
messages, shows current file name in window title, on-line
help, rectangular cut/paste, etc., etc., etc...
Version 9.1. Also runs under UNIX, MS-Windows, Mac, etc.
vim91rt.tgz contains the documentation and syntax files.
vim91bin.tgz contains the binaries.
vim91src.tgz contains the sources.
Version 9.2. Also runs under UNIX, MS-Windows, Mac, etc.
vim92rt.tgz contains the documentation and syntax files.
vim92bin.tgz contains the binaries.
vim92src.tgz contains the sources.
Author: Bram Moolenaar et al.
Xxd Hex dumper and reader. Can be used to view files as hex, edit
them and write them back. Can also be used to patch files.
Version 2023 Oct 25
Author: Juergen Weigert
Version 2025 Nov 26
Author: Juergen Weigert et al.
+3 -3
View File
@@ -1,4 +1,4 @@
README_ami.txt for version 9.1 of Vim: Vi IMproved.
README_ami.txt for version 9.2 of Vim: Vi IMproved.
This file explains the installation of Vim on Amiga systems.
See README.txt for general information about Vim.
@@ -16,8 +16,8 @@ easily upgrade to a new version. For example:
You would then unpack the archives like this:
cd dh0:editors
tar xf t:vim91bin.tar
tar xf t:vim91rt.tar
tar xf t:vim92bin.tar
tar xf t:vim92rt.tar
Set the $VIM environment variable to point to the top directory of your Vim
files. For the above example:
+2 -2
View File
@@ -1,8 +1,8 @@
README_amibin.txt for version 9.1 of Vim: Vi IMproved.
README_amibin.txt for version 9.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga.
These files are in the runtime archive (vim91rt.tgz).
These files are in the runtime archive (vim92rt.tgz).
The Amiga "bin" archive contains the Vim executable for the Amiga. It was
+2 -2
View File
@@ -1,8 +1,8 @@
README_amisrc.txt for version 9.1 of Vim: Vi IMproved.
README_amisrc.txt for version 9.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga.
These files are in the runtime archive (vim91rt.tgz).
These files are in the runtime archive (vim92rt.tgz).
The Amiga source archive contains the files needed to compile Vim on the
+7 -7
View File
@@ -1,16 +1,16 @@
README_bindos.txt for version 9.1 of Vim: Vi IMproved.
README_bindos.txt for version 9.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
These files are in the runtime archive (vim91rt.zip).
These files are in the runtime archive (vim92rt.zip).
There are several binary distributions of Vim for the PC. You would normally
pick only one of them, but it's also possible to install several.
These ones are available (the version number may differ):
vim91w32.zip Windows console version
gvim91.zip Windows GUI version
gvim91ole.zip Windows GUI version with OLE
vim92w32.zip Windows console version
gvim92.zip Windows GUI version
gvim92ole.zip Windows GUI version with OLE
You MUST also get the runtime archive (vim91rt.zip).
The sources are also available (vim91src.zip).
You MUST also get the runtime archive (vim92rt.zip).
The sources are also available (vim92src.zip).
+16 -16
View File
@@ -1,4 +1,4 @@
README_dos.txt for version 9.1 of Vim: Vi IMproved.
README_dos.txt for version 9.2 of Vim: Vi IMproved.
This file explains the installation of Vim on MS-Windows systems.
See "README.txt" for general information about Vim.
@@ -41,19 +41,19 @@ These are the normal steps to install Vim from the .zip archives:
located. Check the $VIM setting to see where it points to:
set VIM
For example, if you have
C:\vim\vim91
C:\vim\vim92
do
cd C:\
Binary and runtime Vim archives are normally unpacked in the same location,
on top of each other.
2. Unpack the zip archives. This will create a new directory "vim\vim91",
2. Unpack the zip archives. This will create a new directory "vim\vim92",
in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite
existing files.
Examples:
pkunzip -d gvim91.zip
unzip vim91w32.zip
pkunzip -d gvim92.zip
unzip vim92w32.zip
You need to unpack the runtime archive and at least one of the binary
archives. When using more than one binary version, be careful not to
@@ -65,7 +65,7 @@ These are the normal steps to install Vim from the .zip archives:
won't move or copy the runtime files.
3. Change to the new directory:
cd vim\vim91
cd vim\vim92
Run the "install.exe" program. It will ask you a number of questions about
how you would like to have your Vim setup. Among these are:
- You can tell it to write a "_vimrc" file with your preferences in the
@@ -76,8 +76,8 @@ These are the normal steps to install Vim from the .zip archives:
console or in a shell. You can select one of the directories in your
$PATH. If you skip this, you can add Vim to the search path manually:
The simplest is to add a line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim91
set path=%path%;D:\editors\vim\vim91
set path=%path%;C:\vim\vim92
set path=%path%;D:\editors\vim\vim92
- Create entries for Vim on the desktop and in the Start menu.
That's it!
@@ -89,8 +89,8 @@ Remarks:
won't show a menubar. Then you need to set the $VIM environment variable to
point to the top directory of your Vim files. Example:
set VIM=C:\editors\vim
Vim version 9.1 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim91. See ":help $VIM" for more information.
Vim version 9.2 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim92. See ":help $VIM" for more information.
- To avoid confusion between distributed files of different versions and your
own modified vim scripts, it is recommended to use this directory layout:
@@ -101,14 +101,14 @@ Remarks:
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
C:\vim\... Other files you made.
Distributed files:
C:\vim\vim91\vim.exe The Vim version 9.1 executable.
C:\vim\vim91\doc\*.txt The version 9.1 documentation files.
C:\vim\vim91\bugreport.vim A Vim version 9.1 script.
C:\vim\vim91\... Other version 9.1 distributed files.
C:\vim\vim92\vim.exe The Vim version 9.2 executable.
C:\vim\vim92\doc\*.txt The version 9.2 documentation files.
C:\vim\vim92\bugreport.vim A Vim version 9.2 script.
C:\vim\vim92\... Other version 9.2 distributed files.
In this case the $VIM environment variable would be set like this:
set VIM=C:\vim
Then $VIMRUNTIME will automatically be set to "$VIM\vim91". Don't add
"vim91" to $VIM, that won't work.
Then $VIMRUNTIME will automatically be set to "$VIM\vim92". Don't add
"vim92" to $VIM, that won't work.
- You can put your Vim executable anywhere else. If the executable is not
with the other Vim files, you should set $VIM. The simplest is to add a line
+1 -1
View File
@@ -1,4 +1,4 @@
README_extra.txt for version 9.1 of Vim: Vi IMproved.
README_extra.txt for version 9.2 of Vim: Vi IMproved.
These extra files of Vim are for special purposes. This README explains what
the files are for. For general information about Vim, see the "README.txt"
+1 -1
View File
@@ -1,4 +1,4 @@
README_haiku.txt for version 9.1 of Vim: Vi IMproved.
README_haiku.txt for version 9.2 of Vim: Vi IMproved.
This file explains the installation of Vim on Haiku operating system.
See "README.txt" for general information about Vim.
+1 -1
View File
@@ -1,4 +1,4 @@
README_mac.txt for version 9.1 of Vim: Vi IMproved.
README_mac.txt for version 9.2 of Vim: Vi IMproved.
How to install MacVim?
========================
+1 -1
View File
@@ -1,4 +1,4 @@
README_ole.txt for version 9.1 of Vim: Vi IMproved.
README_ole.txt for version 9.2 of Vim: Vi IMproved.
This archive contains gvim.exe with OLE interface.
This version of gvim.exe can also load a number of interface dynamically (you
+1 -1
View File
@@ -1,4 +1,4 @@
README_os2.txt for version 9.1 of Vim: Vi IMproved.
README_os2.txt for version 9.2 of Vim: Vi IMproved.
This file used to explain the installation of Vim on OS/2 systems.
However, support for OS/2 has been removed in patch 7.4.1008.
+1 -1
View File
@@ -1,4 +1,4 @@
README_os390.txt for version 9.1 of Vim: Vi IMproved.
README_os390.txt for version 9.2 of Vim: Vi IMproved.
This readme explains how to build Vim on z/OS. Formerly called OS/390.
See "README.txt" for general information about Vim.
+2 -2
View File
@@ -1,8 +1,8 @@
README_src.txt for version 9.1 of Vim: Vi IMproved.
README_src.txt for version 9.2 of Vim: Vi IMproved.
The source archive contains the files needed to compile Vim on Unix systems.
It is packed for Unix systems (NL line separator).
For more information, see the README.txt file that comes with the runtime
archive (vim-9.1-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive (vim-9.2-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive too!
+2 -2
View File
@@ -1,8 +1,8 @@
README_srcdos.txt for version 9.1 of Vim: Vi IMproved.
README_srcdos.txt for version 9.2 of Vim: Vi IMproved.
See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-Windows.
These files are in the runtime archive (vim91rt.zip).
These files are in the runtime archive (vim92rt.zip).
The DOS source archive contains the files needed to compile Vim on MS-Windows.
+1 -1
View File
@@ -1,4 +1,4 @@
README_unix.txt for version 9.1 of Vim: Vi IMproved.
README_unix.txt for version 9.2 of Vim: Vi IMproved.
This file explains the installation of Vim on Unix systems.
See "README.txt" for general information about Vim.
+1 -1
View File
@@ -1,4 +1,4 @@
README_vms.txt for version 9.1 of Vim: Vi IMproved.
README_vms.txt for version 9.2 of Vim: Vi IMproved.
This file explains the installation of Vim on VMS systems.
See "README.txt" in the runtime archive for information about Vim.
+1 -1
View File
@@ -1,4 +1,4 @@
README_w32s.txt for version 9.1 of Vim: Vi IMproved.
README_w32s.txt for version 9.2 of Vim: Vi IMproved.
This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11
systems. However, support for MS-Windows 3.1 and 3.11 has been removed in
+11 -4
View File
@@ -2,9 +2,16 @@
## Reporting a vulnerability
If you want to report a security issue, please privately disclose the issue to the vim-security mailing list
vim-security@googlegroups.com
This is a private list, read only by the maintainers, but anybody can post, after moderation.
If you want to report a security issue, please privately disclose the issue either via:
- The vim-security mailing list: vim-security@googlegroups.com
This is a private list, read only by the maintainers, but anybody can post.
- [GitHub Security Advisories](https://github.com/vim/vim/security/advisories/new)
**Please don't publicly disclose the issue until it has been addressed by us.**
## Guidelines for reporting
- Clearly explain **why** the behaviour is a security issue, not just that a bug exists.
- Keep reports concise and focused.
- Do not flood us with a list of issues. Report them one by one to ensure to not overwhelm us with the work load.
- Do **not** submit AI-generated reports without carefully reviewing them first. Low-quality or
speculative reports waste maintainer time and will be closed without action, and repeat offenders **will be banned**.
+8
View File
@@ -0,0 +1,8 @@
# Use Homebrew GNU libiconv to work around broken Apple iconv. Use static
# linking as we don't want our binary releases to pull in third-party
# dependencies.
#
# If gettext is configured in the build, it also needs to be built against GNU
# libiconv. Otherwise we would get a link error from this.
/^CFLAGS[[:blank:]]*=/s/$/ -I\/opt\/homebrew\/opt\/libiconv\/include/
/^LIBS[[:blank:]]*=/s/-liconv/\/opt\/homebrew\/opt\/libiconv\/lib\/libiconv.a/
+1 -1
View File
@@ -1,3 +1,3 @@
/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Werror -Wno-deprecated-declarations/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-shadow/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-strict-prototypes -Wno-shadow/
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter -Wno-strict-prototypes/
-1
View File
@@ -1,3 +1,2 @@
deb http://ddebs.ubuntu.com noble main restricted universe multiverse
deb http://ddebs.ubuntu.com noble-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com noble-proposed main restricted universe multiverse
+1
View File
@@ -67,3 +67,4 @@ Visual
VisualNOS
WarningMsg
WildMenu
WinColor
+14 -9
View File
@@ -1,3 +1,8 @@
Примечание. Данный текст перевода лицензии Vim предоставляется с целью
ознакомления и не является юридически значимым. Переводчик не несёт
ответственности за возможные неточности и ошибки при переводе лицензии.
Единственно юридически значимым является текст лицензии Vim на английском языке.
ЛИЦЕНЗИЯ VIM
I) Неизменённые копии программы Vim могут распространяться без ограничения
@@ -29,15 +34,15 @@ II) Изменённую (или дополненную) версию прогр
будут распространяться на условиях настоящей лицензии или более
поздней её версии. Лица, в данное время являющиеся ответственными
за разработку, указаны в перечне, размещённом по адресу:
https://github.com/orgs/vim/people. В случае изменения этой
информации, актуальные данные будут опубликованы на
соответствующих ресурсах (вероятнее всего по интернет‐адресам
vim.sf.net, www.vim.org и/или comp.editors). В случае полной
невозможности установить контакт с ответственным разработчиком,
обязательства по отправке изменений утрачивают силу. После
передачи подтверждения о получении изменений от ответственного
разработчика, необходимость в повторной отправке копии изменённой
программы Vim неприменима.
https://github.com/orgs/vim/people.
При изменении этой информации, актуальные данные будут
опубликованы на соответствующих ресурсах (вероятнее всего
по интернет‐адресам vim.sf.net, www.vim.org и/или comp.editors).
В случае полной невозможности связаться с ответственным
разработчиком, обязательства по отправке изменений утрачивают
силу. После передачи подтверждения о получении изменений
от ответственного разработчика, необходимость в повторной
отправке копии изменённой программы Vim неприменима.
b) Если лицом получена изменённая версия программа Vim,
распространяющаяся на условиях, указанных в ч. II) п. 2) пп. а)
допускается дальнейшее её распространение этим лицом без внесения
+78
View File
@@ -0,0 +1,78 @@
VIM-LICENS
I) Det finns inga begränsningar för distribution av oförändrade kopior av Vim förutom
att de måste innehålla denna licenstext. Du kan också distribuera
oförändrade delar av Vim, likaså utan begränsningar förutom att de måste
innehålla denna licenstext. Du får också inkludera körbara filer
som du har skapat från de oförändrade Vim-källorna, samt dina egna användningsexempel
och Vim-skript.
II) Det är tillåtet att distribuera en modifierad (eller utökad) version av Vim,
inklusive körbara filer och/eller källkod, när följande fyra
villkor är uppfyllda:
1) Denna licenstext måste inkluderas oförändrad.
2) Den modifierade Vim måste distribueras på ett av följande fem sätt:
a) Om du själv gör ändringar i Vim måste du tydligt beskriva
distributionen hur man kan kontakta dig. När underhållaren ber dig
(på något sätt) om en kopia av den modifierade Vim du distribuerat, måste du
måste du göra dina ändringar, inklusive källkoden, tillgängliga för
underhållaren utan kostnad. Underhållaren förbehåller sig rätten att
inkludera dina ändringar i den officiella versionen av Vim. Vad
underhållaren kommer att göra med dina ändringar och under vilken licens de
kommer att distribueras är förhandlingsbart. Om ingen förhandling har ägt rum
gäller denna licens, eller en senare version, även för dina ändringar.
De nuvarande underhållarna finns listade här: https://github.com/orgs/vim/people.
Om detta ändras kommer det att meddelas på lämpliga platser (troligen
vim.sf.net, www.vim.org och/eller comp.editors). När det är helt
omöjligt att kontakta underhållaren upphör skyldigheten att skicka
dina ändringar upphör. När underhållaren har bekräftat att han har
mottagit dina ändringar behöver de inte skickas igen.
b) Om du har fått en modifierad Vim som distribuerats enligt
nämnts under a) får du distribuera den vidare
oförändrat, enligt vad som anges i I). Om du gör ytterligare ändringar gäller
gäller texten under a) för dessa ändringar.
c) Tillhandahåll alla ändringar, inklusive källkod, med varje kopia av
den modifierade Vim du distribuerar. Detta kan göras i form av en
kontextdiff. Du kan välja vilken licens du vill använda för ny kod som du
lägger till. Ändringarna och deras licens får inte hindra andra från att
göra egna ändringar i den officiella versionen av Vim.
d) När du har en modifierad Vim som innehåller ändringar enligt
under c), kan du distribuera den utan källkoden för
ändringarna om följande tre villkor är uppfyllda:
- Licensen som gäller för ändringarna tillåter dig att distribuera
ändringarna till Vim-underhållaren utan avgift eller begränsningar, och
tillåter Vim-underhållaren att inkludera ändringarna i den officiella
versionen av Vim utan avgift eller begränsningar.
- Du behåller ändringarna i minst tre år efter senaste
distribution av motsvarande modifierade Vim. När underhållaren
eller någon som du distribuerat den modifierade Vim till ber dig (på
något sätt) om ändringarna inom denna period måste du göra dem
tillgängliga för honom.
- Du beskriver tydligt i distributionen hur man kan kontakta dig. Denna
kontaktinformationen måste vara giltig i minst tre år
efter den sista distributionen av motsvarande modifierade Vim, eller så länge
som möjligt.
e) När GNU General Public License (GPL) gäller för ändringarna,
kan du distribuera den modifierade Vim under GNU GPL version 2 eller
någon senare version.
3) Ett meddelande måste läggas till, åtminstone i utdata från kommandot ":version"
och i introduktionsskärmen, så att användaren av den modifierade Vim
kan se att den har modifierats. Vid distribution enligt
under 2)e) krävs det endast att meddelandet läggs till i den mån detta
inte strider mot den licens som används för ändringarna.
4) Kontaktinformationen som krävs enligt 2)a) och 2)d) får inte
tas bort eller ändras, förutom att personen själv kan göra
korrigeringar.
III) Om du distribuerar en modifierad version av Vim uppmuntras du att använda
Vim-licensen för dina ändringar och göra dem tillgängliga för
underhållaren, inklusive källkoden. Det bästa sättet att göra detta är
via e-post eller genom att ladda upp filerna till en server och e-posta URL:en.
Om antalet ändringar är litet (t.ex. en modifierad Makefile) räcker det att skicka ett
kontextdiff. E-postadressen som ska användas är
<maintainer@vim.org>
IV) Det är inte tillåtet att ta bort denna licens från distributionen av Vim
källkoden, delar av den eller från en modifierad version. Du får använda denna
licensen för tidigare Vim-utgåvor istället för den licens som de levererades med
med, om du så önskar.
+60
View File
@@ -0,0 +1,60 @@
注意: 本译文仅供参考。若因译文错漏引发任何问题,译者概不承担责任。VIM 许可证的
完整英文版本为唯一法律依据。如有任何疑问,以英文原文为准。
VIM 许可证
I) 可以任意发布没有修改的 Vim 的拷贝,但是必须保证包含本许可证。您也可以发布
未经修改的部分 Vim,同样也必须包含这份许可证。发布由未经修改的 Vim 源代码
所编译出的 Vim 可执行文件,外加您自己的应用实例和 Vim 脚本也是允许的。
II) 在满足以下全部四个条件的前提下,您可以发布经过修改 (或扩充) 的 Vim 版本,
包括可执行文件 和/或 源代码:
1) 本许可证必须包含在内,并且不能被修改。
2) 经过修改的 Vim 必须以下述五种方式之一发布:
a) 如果您本人对 Vim 做了改动,您必须在发布版本里清楚地说明如何与您联系。
当 Vim 的维护者 (以任何方式) 向您索取您所发布的 Vim 时,您必须把所做
的改动包括源代码无偿地提供出来。维护者保留把这些改动加入 Vim 正式版本
的权利。至于维护者怎样处理这些改动,以及用什么许可证发布,可以协商。
如果没有协商,那么,本许可证,或者它更新的版本,同样适用于您做出的改
动。Vim 现在的几位维护者可见:
https://github.com/orgs/vim/people
如果维护者发生变动,会在合适的地方 (很可能是 vim.sf.net、www.vim.org
和/或 comp.editors) 公布,当完全不能与维护者联系时,发送变更的约定自
动终止。一旦维护者确认收到了您所做的修改,您就不必再次发送了。
b) 如果您得到的是一个修改过的 Vim,并且它是在条件 a) 下发布的,那么您可
以不加改动地在条件 I) 下发布它;如果您又做了额外的改动,则这些改动受
到 a) 款条文的约束。
c) 在您发布的经过修改的 Vim 的每一份拷贝里,提供所有的变更部分,包括源代
码。提供的形式可以采用上下文风格的差异比较记录 (context diff)。您可以
为添加的新代码选择许可证,但是这些更改和为其选择的许可证不能限制他人
对 Vim 正式版本作出自己的改动。
d) 在满足以下全部三个条件的前提下,您可以继续发布带有条件 c) 所提及之变
更的经过修改的 Vim,而不必在发布时提供更改部分的源代码:
- 这些变更所附带的许可证允许您把这些变更无偿地并且没有任何限制地提供
给 Vim 的维护者,而且允许 Vim 的维护者无偿地并且没有任何限制地把这
些更改加入到 Vim 的正式版本中。
- 从您最后一次发布更改的 Vim 之日起,您要保存这些改动至少三年时间。在
这期间,维护者或别人 (以任何方式) 向您要求提供这些变更时,您必须提
供给他。
- 您要在发布版本中清楚地说明如何与您联系,这个联系方式必须保证自最后
一次发布相应的经过修改的 Vim 之日起至少三年有效,或尽可能长。
e) 当这些变更以 GPL (GNU General Public LicenseGNU 通用公共许可证) 发
布时,您可以在 GPL 版本 2,或更高版本的 GPL 下发布修改过的 Vim。
3) 必须添加一条改动的信息。至少要放在 "version" 命令的输出和启动画面里,好
让用户知道自己用的是一个修改过的 Vim。当以 2)e) 条件发布时,只有不与变
更适用的许可证冲突,这个信息的添加才是必要的。
4) 在 2)a) 和 2)d) 条件里要求的联系方式不能随便更改或删除,除非是作者自己
作出的更正。
III) 如果您发布一个更改过的 Vim,强烈建议您对变更部分使用 Vim 的许可证,并且对
维护者提供变更部分并开放源代码。最好的方式是通过电子邮件或者把文件放到服
务器上,通过电子邮件传送 URL。如果只修改了很少的部分 (例如,只是一个修改
过的 Makefile),那么传送一个上下文风格的差异比较记录 (context diff) 就可
以了。电子邮件的地址是 <maintainer@vim.org>
IV) 不允许从 Vim 的源代码的发行版本或其中部分的源代码里删除本许可证,即使来自
更改过的版本也是如此。您可能想用这份许可证代替以前版本的 Vim 里的许可证,
这可以由您自行决定。
+22 -22
View File
@@ -1,4 +1,4 @@
README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
Краткое описание для версии 9.2 программы Vim — Vi IMproved.
ЧТО ТАКОЕ РЕДАКТОР VIM?
@@ -10,8 +10,8 @@ README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
наименований файлов и команд, операции с произвольными блоками текста,
встроенный язык программирования и т. д. Также доступен графический интерфейс
пользователя (GUI). И при этом сохраняется совместимость с редактором Vi,
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности о
различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности
о различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
Этот редактор очень удобен для работы с исходным кодом программ, а также
разного рода других текстовых файлов. Все команды вводятся набором обычных
@@ -25,9 +25,9 @@ README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
функционала (обычно называемый vim.tiny). Данная сборка чаще всего используется
во многих дистрибутивах Linux в качестве предустановленного редактора vi.
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS и
практически во всех UNIX-подобных системах. А перенос на другие платформы не
должен представлять особой сложности.
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS
и практически во всех UNIX-подобных системах. А перенос на другие платформы
не должен представлять особой сложности.
Предыдущие версии редактора Vim работают в операционных системах OS/2, MS-DOS,
MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
Но поддержка этих версий больше не осуществляется.
@@ -45,11 +45,11 @@ MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
программы. Этот архив включает в себя документацию, файлы подсветки синтаксиса
и другие файлы, которые используются редактором во время работы. Чтобы
запустить программу Vim, вы должны получить либо архив с исполняемыми файлами,
либо архив с исходным кодом. Какой из них вам нужен, зависит от того, на какой
системе вы хотите запустить редактор Vim, и есть ли для этой системы
либо архив с исходным кодом. Какой из них вам нужен, зависит от того,
на какой системе вы хотите запустить редактор Vim, и есть ли для этой системы
исполняемые файлы или вы должны компилировать программу самостоятельно.
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите на
веб‐странице https://www.vim.org/download.php.
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите
на веб‐странице https://www.vim.org/download.php.
Несколько полезных мест, где можно получить последнюю версию редактора Vim:
* Посмотрите в git-хранилище на GitHub: https://github.com/vim/vim.
@@ -61,8 +61,8 @@ https://github.com/vim/vim-win32-installer/releases.
КОМПИЛЯЦИЯ РЕДАКТОРА Vim
Если для вашей системы уже есть готовые исполняемые файлы, вам не нужно самому
компилировать редактор Vim. Если вы скачали архив с исходным кодом, то всё
необходимое для компиляции программы Vim находится в каталоге "src".
компилировать редактор Vim. Если вы скачали архив с исходным кодом,
то всё необходимое для компиляции программы Vim находится в каталоге "src".
Инструкции смотрите в файле src/INSTALL.
@@ -85,12 +85,12 @@ README_vms.txt VMS
ДОКУМЕНТАЦИЯ ПО РЕДАКТОРУ Vim
Учебник Vim — это часовой практический курс для начинающих. Как правило, для
работы с ним нужно набрать команду "vimtutor". Чтобы получить дополнительную
информацию, смотрите раздел документации ":help tutor".
Учебник Vim — это часовой практический курс для начинающих. Как правило,
для работы с ним нужно набрать команду "vimtutor". Чтобы получить
дополнительную информацию, смотрите раздел документации ":help tutor".
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас ещё
нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас
ещё нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
В нём содержатся отсылки на другие полезные файлы документации. Руководство
пользователя можно читать как книгу, и оно рекомендуется для обучения работе
с редактором Vim. Смотрите ":help user-manual".
@@ -100,7 +100,7 @@ README_vms.txt VMS
Редактор Vim является благотворительным программным обеспечением.
Использование и копирование программы Vim не ограничено, однако рекомендуется
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
подробности, прочитайте, пожалуйста, файл "runtime/doc/uganda.txt" (введите
команду ":help uganda" в редакторе Vim).
@@ -125,8 +125,8 @@ README_vms.txt VMS
будет способствовать повышению заинтересованности команды разработчиков
в продолжении работы над редактором Vim!
Самая свежая информация об оказании финансовой поддержки публикуется на
веб-сайте программы Vim:
Самая свежая информация об оказании финансовой поддержки публикуется
на веб-сайте программы Vim:
https://www.vim.org/sponsor/
@@ -142,8 +142,8 @@ README_vms.txt VMS
Последние новости о редакторе Vim можно найти на его домашней странице:
https://www.vim.org/
Если у вас возникли вопросы, посмотрите полезные советы или документацию по
редактору Vim:
Если у вас возникли вопросы, посмотрите полезные советы или документацию
по редактору Vim:
https://www.vim.org/docs.php
https://vim.fandom.com/wiki/Vim_Tips_Wiki
+139
View File
@@ -0,0 +1,139 @@
README.txt för version 9.1 av Vim: Vi IMproved.
VAD ÄR VIM?
Vim är en kraftigt förbättrad version av den gamla goda UNIX-editorn Vi. Många nya
funktioner har lagts till: ångra på flera nivåer, syntaxmarkering, kommandoradshistorik
historik, onlinehjälp, stavningskontroll, filnamns komplettering, blockoperationer,
skriptspråk etc. Det finns också ett grafiskt användargränssnitt (GUI) tillgängligt.
Vi-kompatibiliteten bibehålls dock, så de som har Vi "i fingrarna" kommer
känna sig som hemma. Se "runtime/doc/vi_diff.txt" för skillnader jämfört med Vi.
Denna editor är mycket användbar för att redigera program och andra vanliga textfiler.
Alla kommandon ges med vanliga tangentbordstecken, så de som kan skriva
med tio fingrar kan arbeta mycket snabbt. Dessutom kan funktionsknapparna
mappas till kommandon av användaren, och musen kan användas.
Vim syftar också till att tillhandahålla en (mestadels) POSIX-kompatibel vi-implementering när
kompileras med en minimal uppsättning funktioner (vanligtvis kallad vim.tiny), som används
av många Linux-distributioner som standardvi-redigerare.
Vim körs under MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS och nästan alla
varianter av UNIX. Det bör inte vara särskilt svårt att porta till andra system.
Äldre versioner av Vim körs på MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista,
Amiga DOS, Atari MiNT, BeOS, RISC OS och OS/2. Dessa underhålls inte längre.
DISTRIBUTION
Du kan ofta använda din favoritpakethanterare för att installera Vim. På Mac och
Linux är en liten version av Vim förinstallerad, men du behöver ändå installera Vim
om du vill ha fler funktioner.
Det finns separata distributioner för Unix, PC, Amiga och vissa andra system.
Denna README.txt-fil medföljer runtime-arkivet. Den innehåller
dokumentation, syntaxfiler och andra filer som används vid körning. För att köra
Vim måste du skaffa antingen ett av binärarkiven eller ett källarkiv.
Vilket du behöver beror på vilket system du vill köra det på och om du
vill eller måste kompilera det själv. Se "https://www.vim.org/download.php" för
en översikt över de distributioner som för närvarande finns tillgängliga.
Några populära ställen att hämta den senaste versionen av Vim:
* Kolla in git-arkivet från github: https://github.com/vim/vim.
* Hämta källkoden som ett arkiv: https://github.com/vim/vim/tags.
* Hämta en Windows-körbar fil från vim-win32-installer-arkivet:
https://github.com/vim/vim-win32-installer/releases.
KOMPILERING
Om du har skaffat en binär distribution behöver du inte kompilera Vim. Om du
har skaffat en källkodsdistribution finns allt du behöver för att kompilera Vim i
katalogen "src". Se src/INSTALL för instruktioner.
INSTALLATION
Se någon av dessa filer för systemspecifika instruktioner. Antingen i
READMEdir-katalogen (i arkivet) eller i toppkatalogen (om du packar upp en
arkiv):
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS och MS-Windows
README_mac.txt Macintosh
README_haiku.txt Haiku
README_vms.txt VMS
Det finns andra README_*.txt-filer, beroende på vilken distribution du använde.
DOKUMENTATION
Vim-tutorn är en timmes lång utbildningskurs för nybörjare. Ofta kan den
startas som "vimtutor". Se ":help tutor" för mer information.
Det bästa är att använda ":help" i Vim. Om du ännu inte har en körbar fil, läs
"runtime/doc/help.txt". Den innehåller hänvisningar till andra dokumentationsfiler.
Användarhandboken läses som en bok och rekommenderas för att lära sig använda Vim. Se
":help user-manual".
KOPIERING
Vim är Charityware. Du kan använda och kopiera det så mycket du vill, men du
uppmuntras att göra en donation för att hjälpa föräldralösa barn i Uganda. Läs filen
"runtime/doc/uganda.txt" för mer information (skriv ":help uganda" i Vim).
Sammanfattning av licensen: Det finns inga begränsningar för användning eller distribution av en
oförändrad kopia av Vim. Delar av Vim får också distribueras, men licenstexten
texten måste alltid inkluderas. För modifierade versioner gäller några begränsningar.
Licensen är GPL-kompatibel, du kan kompilera Vim med GPL-bibliotek och
distribuera det.
SPONSRING
Att fixa buggar och lägga till nya funktioner tar mycket tid och ansträngning. För att visa
din uppskattning för arbetet och motivera utvecklarna att fortsätta arbeta med
Vim, skicka gärna en donation.
Pengarna du donerar kommer huvudsakligen att användas för att hjälpa barn i Uganda. Se
"runtime/doc/uganda.txt". Men samtidigt ökar donationerna
utvecklingsteamets motivation att fortsätta arbeta med Vim!
För den senaste informationen om sponsring, se Vims webbplats:
https://www.vim.org/sponsor/
BIDRA
Om du vill hjälpa till att förbättra Vim, se filen CONTRIBUTING.md.
INFORMATION
Om du använder macOS kan du använda MacVim: https://macvim.org
De senaste nyheterna om Vim finns på Vims hemsida:
https://www.vim.org/
Om du har problem, ta en titt på Vims dokumentation eller tips:
https://www.vim.org/docs.php
https://vim.fandom.com/wiki/Vim_Tips_Wiki
Om du fortfarande har problem eller andra frågor, använd någon av mailinglistorna
för att diskutera dem med Vim-användare och utvecklare:
https://www.vim.org/maillist.php
Om inget annat fungerar, rapportera buggar direkt till vim-dev-maillistan:
<vim-dev@vim.org>
HUVUDFÖRFATTARE
Det mesta av Vim har skapats av Bram Moolenaar <Bram@vim.org>, ":help Bram-Moolenaar"
Skicka övriga kommentarer, patchar, blommor och förslag till vim-dev
: <vim-dev@vim.org>
+122
View File
@@ -0,0 +1,122 @@
Vim: Vi IMproved 9.1 版本的 README.txt 文件
什 么 是 VIM
Vim 是经典 UNIX 编辑器 Vi 的一个极大改进版本。它新增了许多功能:多级撤销、语法高
亮、命令行历史、在线帮助、拼写检查、文件名补全、块操作、脚本语言等。同时也提供了
图形用户界面(GUI)。尽管如此,Vi 兼容性依然得以保留,习惯使用 Vi 的用户操作时仍
会感到得心应手。与 Vi 的差异请参阅 "runtime/doc/vi_diff.txt"。
此编辑器对于编辑代码和其他纯文本文件非常有用。所有命令都通过常规键盘字符输入,因
此熟练盲打的用户能够高效工作。此外,用户可以将功能键映射到命令,并且可以使用鼠标。
Vim 也致力于提供一个(基本)符合 POSIX 标准的 vi 实现。当它以最小功能集(通常称
为 vim.tiny)编译时,被许多 Linux 发行版用作默认的 vi 编辑器。
Vim 可在 MS-Windows (7, 8, 10, 11)、macOS、Haiku、VMS 以及几乎所有 UNIX 变体上运
行。移植到其他系统应该不太困难。旧版本的 Vim 曾在 Amiga DOS、Atari MiNT、BeOS、
MS-DOS、MS-Windows 95/98/Me/NT/2000/XP/Vista、RISC OS 和 OS/2 上运行。这些版本的
维护现已终止。
获 取 途 径
通常你可以使用你喜欢的软件包管理器来安装 Vim。在 Mac 和 Linux 上,会预装一个简化
版的 Vim,如果你需要更多功能,仍需要安装完整的 Vim。
有针对 Unix、PC、Amiga 和其他一些系统的独立发行版。本 README.txt 文件随运行时存
档一起提供。该存档包含文档、语法文件以及其他运行时使用的文件。要运行 Vim,你必须
获取二进制存档或源代码存档之一。您需要哪一种取决于您想要运行 Vim 的系统以及您是
否希望或必须自行编译。请查阅 "https://www.vim.org/download.php" 以了解当前可用的
发行版概览。
获取最新版 Vim 的常见方式:
* 从 github 检出 git 仓库:https://github.com/vim/vim。
* 以存档形式获取源代码:https://github.com/vim/vim/tags。
* 从 vim-win32-installer 仓库获取 Windows 可执行文件:
https://github.com/vim/vim-win32-installer/releases。
编 译
如果你获得的是二进制发行版,则无需编译 Vim。如果你获得的是源代码发行版,编译 Vim
所需的所有内容都在 "src" 目录中。请参阅 src/INSTALL 文件中的说明。
安 装
请查阅以下文件之一以获取系统特定的安装说明。这些文件位于仓库中的 READMEdir 目录,
或者在你解压缩存档后的顶级目录中:
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS 和 MS-Windows
README_mac.txt Macintosh
README_haiku.txt Haiku
README_vms.txt VMS
根据你使用的发行版,可能还有其他 README_*.txt 文件。
文 档
Vim tutor 是为初学者设计的一小时培训课程。通常可以通过 "vimtutor" 命令启动。更多
信息请参阅 ":help tutor"。
最佳方式是在 Vim 中使用 ":help" 命令。如果您尚未安装可执行文件,请阅读
"runtime/doc/help.txt"。该文件包含指向其他文档文件的指引。用户手册采用书籍体例编
排,是学习使用 Vim 的推荐资料。具体请参阅 ":help user-manual"。
复 制 与 版 权
Vim 是慈善软件。您可以尽情使用和复制它,但鼓励您捐款以帮助乌干达的孤儿。请阅读
"runtime/doc/uganda.txt" 文件了解详情(在 Vim 中执行 ":help uganda")。
许可摘要:对于未经修改的 Vim 副本,其使用或分发不受任何限制。Vim 的部分内容亦可
分发,但必须始终包含许可文本。对于修改版本,则需遵循若干限制条款。本许可证与 GPL
兼容,您可使用 GPL 库编译 Vim 并进行分发。
赞 助
修复错误与增添新功能均需投入大量时间与精力。为支持开发工作并激励开发者持续完善
Vim,敬请通过捐赠表达您的认可。
您捐赠的资金将主要用于帮助乌干达的儿童。请参阅 "runtime/doc/uganda.txt"。但同时,
您的捐赠也将激励开发团队持续投入 Vim 的开发工作。
关于赞助的最新信息,请查看 Vim 网站:
https://www.vim.org/sponsor/
贡 献
如果您想帮助改进 Vim,请参阅 CONTRIBUTING.md 文件。
信 息 与 支 持
如果您在 macOS 上,可以使用 MacVimhttps://macvim.org
关于 Vim 的最新消息可以在 Vim 主页上找到:
https://www.vim.org/
如果您遇到问题,请查阅 Vim 文档或使用技巧:
https://www.vim.org/docs.php
https://vim.fandom.com/wiki/Vim_Tips_Wiki
如果您仍有问题或其他疑问,请使用其中一个邮件列表与 Vim 用户和开发者讨论:
https://www.vim.org/maillist.php
如果其他方法都无效,请直接将错误报告发送到 vim-dev 邮件列表:
<vim-dev@vim.org>
主 要 作 者
Vim 主要由 Bram Moolenaar <Bram@vim.org> 创建,可通过 ":help Bram-Moolenaar" 命
令了解更多信息。
请将任何其他评论、补丁、鲜花和建议发送到 vim-dev 邮件列表:<vim-dev@vim.org>
+3 -3
View File
@@ -35,7 +35,7 @@ Preparatory stage
and for the 64-bit version — "winpty.dll" from x64/bin to "winpty64.dll".
Put the renamed file and "winpty-agent.exe" in "../.." (above the "vim91"
directory). However, you can specify a different directory by specifying
the appropriate makefile value. How to do this is described below.
the appropriate makefile value. How to do this is described below.
6. To use stronger encryption, add the Sodium library. You can get it here:
https://github.com/jedisct1/libsodium/releases/download/1.0.19-RELEASE/libsodium-1.0.19-msvc.zip
@@ -64,7 +64,7 @@ Preparatory stage
The default <GETTEXT directory> is "../..". However, you can specify a
different directory by specifying the appropriate makefile value. How to do
this is described below.
this is described below.
8. Install NSIS if you didn't do that already.
Download Unicode version the ShellExecAsUser plug-in for NSIS from:
@@ -80,7 +80,7 @@ Installer assembly stage
After the installer is created and you copy it to the desired location, run
the following command in the "/nsis" directory
nmake.exe -lf Make_mvc.mak clean
On UNIX-like systems, go to the "/nsis" directory and type the command
make -f Makefile [variables] all
+1
View File
@@ -240,6 +240,7 @@ Page custom SetCustom ValidateCustom
!include "lang\russian.nsi"
!include "lang\serbian.nsi"
!include "lang\simpchinese.nsi"
!include "lang\swedish.nsi"
!include "lang\tradchinese.nsi"
!include "lang\turkish.nsi"
!endif
+2 -2
View File
@@ -32,14 +32,14 @@ LangString ^InstallBtn ${LANG_JAPANESE} \
##############################################################################
LicenseLangString page_lic_file 0 "..\lang\LICENSE.nsis.txt"
#LicenseLangString page_lic_file ${LANG_JAPANESE} "..\lang\LICENSE.ja.nsis.txt"
#LicenseLangString page_lic_file ${LANG_JAPANESE} "..\lang\LICENSE.ja.txt"
##############################################################################
# Translated README.txt file, which is opened after installation {{{1
##############################################################################
LangString vim_readme_file 0 "README.txt"
#LangString vim_readme_file ${LANG_JAPANESE} "README.ja.txt"
#LangString vim_readme_file ${LANG_JAPANESE} "README.jax.txt"
##############################################################################
# MUI Configuration Strings {{{1
+3 -5
View File
@@ -22,16 +22,14 @@ LangString ^UninstallCaption ${LANG_SIMPCHINESE} \
# Translated license file for the license page {{{1
##############################################################################
LicenseLangString page_lic_file 0 "..\lang\LICENSE.nsis.txt"
#LicenseLangString page_lic_file ${LANG_SIMPCHINESE} \
# "..\lang\LICENSE.zh_cn.nsis.txt"
LicenseLangString page_lic_file ${LANG_SIMPCHINESE} \
"..\lang\LICENSE.zh_cn.nsis.txt"
##############################################################################
# Translated README.txt file, which is opened after installation {{{1
##############################################################################
LangString vim_readme_file 0 "README.txt"
#LangString vim_readme_file ${LANG_SIMPCHINESE} "README.zh_cn.txt"
LangString vim_readme_file ${LANG_SIMPCHINESE} "README.zh_cn.txt"
##############################################################################
# MUI Configuration Strings {{{1
+288
View File
@@ -0,0 +1,288 @@
# vi:set ts=8 sts=4 sw=4 et fdm=marker:
#
# swedish.nsi: Svenska strängar för gvim NSIS-installationsprogram.
#
# Lokalisering-ID : 1053
# Lokalt namn : sv
# filkodning : UTF-8
# Översättare : Daniel Nylander
!insertmacro MUI_LANGUAGE "Swedish"
# Skriv över standardöversättningen.
# Dessa strängar ska alltid vara på engelska. Annars misslyckas dosinst.c.
LangString ^SetupCaption ${LANG_SWEDISH} \
"$(^Name) Setup"
LangString ^UninstallCaption ${LANG_SWEDISH} \
"$(^Name) Uninstall"
##############################################################################
# Licensfil för licenssidan {{{1
##############################################################################
LicenseLangString page_lic_file ${LANG_SWEDISH} "..\lang\LICENSE.sv.nsis.txt"
##############################################################################
# README.txt-fil, som öppnas efter installationen {{{1
##############################################################################
LangString vim_readme_file ${LANG_SWEDISH} "README.sv.txt"
##############################################################################
# MUI-konfigurationssträngar {{{1
##############################################################################
#LangString str_dest_folder ${LANG_SWEDISH} \
# "Målmapp (måste sluta med $\"vim$\")"
LangString str_show_readme ${LANG_SWEDISH} \
"Visa README efter avslutad installation"
# Installationstyper:
LangString str_type_typical ${LANG_SWEDISH} \
"Typisk"
LangString str_type_minimal ${LANG_SWEDISH} \
"Minimal"
LangString str_type_full ${LANG_SWEDISH} \
"Fullständig"
##############################################################################
# Avsnittstitlar och beskrivning {{{1
##############################################################################
LangString str_section_old_ver ${LANG_SWEDISH} \
"Avinstallera befintliga versioner"
LangString str_desc_old_ver ${LANG_SWEDISH} \
"Avinstallera befintliga Vim-versioner från ditt system."
LangString str_section_exe ${LANG_SWEDISH} \
"Vim GUI och runtime-filer"
LangString str_desc_exe ${LANG_SWEDISH} \
"Vim GUI-körbara filer och runtime-filer. Denna komponent krävs."
LangString str_section_console ${LANG_SWEDISH} \
"Vim-konsolprogram"
LangString str_desc_console ${LANG_SWEDISH} \
"Konsolversion av Vim (vim.exe)."
LangString str_section_batch ${LANG_SWEDISH} \
"Skapa .bat-filer"
LangString str_desc_batch ${LANG_SWEDISH} \
"Skapa .bat-filer för Vim-varianter i Windows-katalogen för \
kommandoradsanvändning."
LangString str_group_icons ${LANG_SWEDISH} \
"Skapa ikoner för Vim"
LangString str_desc_icons ${LANG_SWEDISH} \
"Skapa ikoner för Vim på olika platser för att underlätta åtkomsten."
LangString str_section_desktop ${LANG_SWEDISH} \
"På skrivbordet"
LangString str_desc_desktop ${LANG_SWEDISH} \
"Skapa ikoner för gVim-körbara filer på skrivbordet."
LangString str_section_start_menu ${LANG_SWEDISH} \
"I startmenyns programmapp"
LangString str_desc_start_menu ${LANG_SWEDISH} \
"Lägg till Vim i programmappen i startmenyn."
#LangString str_section_quick_launch ${LANG_SWEDISH} \
# "I snabbstartfältet"
#LangString str_desc_quick_launch ${LANG_SWEDISH} \
# "Lägg till Vim-genväg i snabbstartfältet."
LangString str_section_edit_with ${LANG_SWEDISH} \
"Lägg till Vim-kontextmeny"
LangString str_desc_edit_with ${LANG_SWEDISH} \
"Lägg till Vim i listan över snabbmenyn $\"Öppna med...$\"."
#LangString str_section_edit_with32 ${LANG_SWEDISH} \
# "32-bitarsversion"
#LangString str_desc_edit_with32 ${LANG_SWEDISH} \
# "Lägg till Vim i listan över snabbmenyn $\"Öppna med...$\" \
# för 32-bitarsprogram."
#LangString str_section_edit_with64 ${LANG_SWEDISH} \
# "64-bitarsversion"
#LangString str_desc_edit_with64 ${LANG_SWEDISH} \
# "Lägg till Vim i listan över kontextmenyn $\"Öppna med...$\" \
# för 64-bitarsprogram."
LangString str_section_vim_rc ${LANG_SWEDISH} \
"Skapa standardkonfiguration"
LangString str_desc_vim_rc ${LANG_SWEDISH} \
"Skapa en standardkonfigurationsfil (_vimrc) om det inte redan finns en."
LangString str_group_plugin ${LANG_SWEDISH} \
"Skapa plugin-kataloger"
LangString str_desc_plugin ${LANG_SWEDISH} \
"Skapa plugin-kataloger. Plugin-kataloger gör det möjligt att utöka Vim \
genom att släppa en fil i en katalog."
LangString str_section_plugin_home ${LANG_SWEDISH} \
"Privat"
LangString str_desc_plugin_home ${LANG_SWEDISH} \
"Skapa plugin-kataloger i HOME-katalogen."
LangString str_section_plugin_vim ${LANG_SWEDISH} \
"Delad"
LangString str_desc_plugin_vim ${LANG_SWEDISH} \
"Skapa plugin-kataloger i Vim-installationskatalogen, den används för \
alla på systemet."
LangString str_section_nls ${LANG_SWEDISH} \
"Stöd för modersmål"
LangString str_desc_nls ${LANG_SWEDISH} \
"Installera filer för stöd för modersmål."
LangString str_unsection_register ${LANG_SWEDISH} \
"Avregistrera Vim"
LangString str_desc_unregister ${LANG_SWEDISH} \
"Avregistrera Vim från systemet."
LangString str_unsection_exe ${LANG_SWEDISH} \
"Ta bort Vim-körbara filer/körningsfiler"
LangString str_desc_rm_exe ${LANG_SWEDISH} \
"Ta bort alla Vim-körbara filer och runtime-filer."
LangString str_ungroup_plugin ${LANG_SWEDISH} \
"Ta bort plugin-kataloger"
LangString str_desc_rm_plugin ${LANG_SWEDISH} \
"Ta bort plugin-katalogerna om de är tomma."
LangString str_unsection_plugin_home ${LANG_SWEDISH} \
"Privat"
LangString str_desc_rm_plugin_home ${LANG_SWEDISH} \
"Ta bort plugin-katalogerna från HOME-katalogen."
LangString str_unsection_plugin_vim ${LANG_SWEDISH} \
"Delad"
LangString str_desc_rm_plugin_vim ${LANG_SWEDISH} \
"Ta bort plugin-katalogerna från Vim-installationskatalogen."
LangString str_unsection_rootdir ${LANG_SWEDISH} \
"Ta bort Vim-rotkatalogen"
LangString str_desc_rm_rootdir ${LANG_SWEDISH} \
"Ta bort Vim-rotkatalogen. Den innehåller dina Vim-konfigurationsfiler!"
##############################################################################
# Meddelanden {{{1
##############################################################################
#LangString str_msg_too_many_ver ${LANG_SWEDISH} \
# "Hittade $vim_old_ver_count Vim-versioner på ditt system.$\r$\n\
# Denna installationsprogram kan endast hantera ${VIM_MAX_OLD_VER} versioner \
# .$\r$\n\
# Ta bort några versioner och börja om."
#LangString str_msg_invalid_root ${LANG_SWEDISH} \
# "Ogiltig installationsväg: $vim_install_root!$\r$\n\
# Den ska sluta med $\"vim$\"."
#LangString str_msg_bin_mismatch ${LANG_SWEDISH} \
# "Binär sökväg stämmer inte!$\r$\n$\r$\n\
# Förväntar mig att binärvägen är $\"$vim_bin_path$\",$\r$\n\
# men systemet anger att binärvägen är $\"$INSTDIR$\"."
#LangString str_msg_vim_running ${LANG_SWEDISH} \
# "Vim körs fortfarande på ditt system.$\r$\n\
# Stäng alla instanser av Vim innan du fortsätter."
#LangString str_msg_register_ole ${LANG_SWEDISH} \
# "Försöker registrera Vim med OLE. \
# Det finns inget meddelande som anger om detta fungerar eller inte."
#LangString str_msg_unreg_ole ${LANG_SWEDISH} \
# "Försöker avregistrera Vim från OLE. \
# Det finns inget meddelande som anger om detta fungerar eller inte."
#LangString str_msg_rm_start ${LANG_SWEDISH} \
# "Avinstallera följande version:"
#LangString str_msg_rm_fail ${LANG_SWEDISH} \
# "Det gick inte att avinstallera följande version:"
#LangString str_msg_no_rm_key ${LANG_SWEDISH} \
# "Kan inte hitta avinstallationsnyckeln i registret."
#LangString str_msg_no_rm_reg ${LANG_SWEDISH} \
# "Kan inte hitta avinstallationsprogrammet i registret."
#LangString str_msg_no_rm_exe ${LANG_SWEDISH} \
# "Kan inte komma åt avinstallationsprogrammet."
#LangString str_msg_rm_copy_fail ${LANG_SWEDISH} \
# "Det gick inte att kopiera avinstallationsprogrammet till den tillfälliga katalogen."
#LangString str_msg_rm_run_fail ${LANG_SWEDISH} \
# "Det gick inte att köra avinstallationsprogrammet."
#LangString str_msg_abort_install ${LANG_SWEDISH} \
# "Installationsprogrammet avbryts."
LangString str_msg_install_fail ${LANG_SWEDISH} \
"Installationen misslyckades. Bättre lycka nästa gång."
LangString str_msg_rm_exe_fail ${LANG_SWEDISH} \
"Vissa filer i $0 har inte raderats!$\r$\n\
Du måste göra det manuellt."
#LangString str_msg_rm_root_fail ${LANG_SWEDISH} \
# "VARNING: Kan inte ta bort $\"$vim_install_root$\", den är inte tom!"
LangString str_msg_uninstalling ${LANG_SWEDISH} \
"Avinstallerar den gamla versionen..."
LangString str_msg_registering ${LANG_SWEDISH} \
"Registrerar..."
LangString str_msg_unregistering ${LANG_SWEDISH} \
"Avregistrerar..."
##############################################################################
# Dialogruta {{{1
##############################################################################
LangString str_vimrc_page_title ${LANG_SWEDISH} \
"Välj _vimrc-inställningar"
LangString str_vimrc_page_subtitle ${LANG_SWEDISH} \
"Välj inställningar för förbättringar, tangentbord och mus."
LangString str_msg_compat_title ${LANG_SWEDISH} \
" Vi / Vim-beteende "
LangString str_msg_compat_desc ${LANG_SWEDISH} \
"&Kompatibilitet och förbättringar"
LangString str_msg_compat_vi ${LANG_SWEDISH} \
"Vi-kompatibel"
LangString str_msg_compat_vim ${LANG_SWEDISH} \
"Vim original"
LangString str_msg_compat_defaults ${LANG_SWEDISH} \
"Vim med vissa förbättringar (ladda defaults.vim)"
LangString str_msg_compat_all ${LANG_SWEDISH} \
"Vim med alla förbättringar (ladda vimrc_example.vim) (Standard)"
LangString str_msg_keymap_title ${LANG_SWEDISH} \
" Mappningar "
LangString str_msg_keymap_desc ${LANG_SWEDISH} \
"&Omkonfigurera några tangenter för Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
LangString str_msg_keymap_default ${LANG_SWEDISH} \
"Omkonfigurera inte tangenter (standard)"
LangString str_msg_keymap_windows ${LANG_SWEDISH} \
"Omkonfigurera några tangenter"
LangString str_msg_mouse_title ${LANG_SWEDISH} \
" Mus "
LangString str_msg_mouse_desc ${LANG_SWEDISH} \
"&Funktion för höger- och vänsterknapp"
LangString str_msg_mouse_default ${LANG_SWEDISH} \
"Höger: popup-meny, Vänster: visuellt läge (Standard)"
LangString str_msg_mouse_windows ${LANG_SWEDISH} \
"Höger: popup-meny, Vänster: välj läge (Windows)"
LangString str_msg_mouse_unix ${LANG_SWEDISH} \
"Höger: utökar valet, Vänster: visuellt läge (Unix)"
+10 -3
View File
@@ -3,7 +3,7 @@ vim9script noclear
# Vim completion script
# Language: C
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Jul 24
# Last Change: 2026 Feb 18
# Rewritten in Vim9 script by github user lacygoill
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
@@ -489,7 +489,7 @@ def Nextitem( # {{{1
continue
endif
# Use the tags file to find out if this is a typedef.
# Use the tags file to find out if this is a typedef or struct
var diclist: list<dict<any>> = taglist('^' .. tokens[tidx] .. '$')
for tagidx: number in len(diclist)->range()
@@ -509,6 +509,13 @@ def Nextitem( # {{{1
continue
endif
# handle struct
if item['kind'] == 's'
res = StructMembers('struct:' .. tokens[tidx], items, all)
break
endif
# Only handle typedefs here.
if item['kind'] != 't'
continue
@@ -733,4 +740,4 @@ def SearchMembers( # {{{1
enddef
#}}}1
# vim: noet sw=2 sts=2
# vim: et sw=2 sts=2
+14 -5
View File
@@ -3,13 +3,15 @@ vim9script
# Language: ConTeXt typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2023 Dec 26
# Latest Revision: 2026 Feb 03
# Last Change:
# 2026 Mar 30 by Vim project: Use fnameescape for the Log command
# Typesetting {{{
import autoload './typeset.vim'
export def ConTeXtCmd(path: string): list<string>
var cmd = ['mtxrun', '--script', 'context', '--nonstopmode', '--autogenerate']
var cmd = ['mtxrun', '--script', 'context', '--paranoid', '--autogenerate']
if !empty(get(g:, 'context_extra_options', ''))
cmd += g:context_extra_options
endif
@@ -30,14 +32,21 @@ export def StopJobs()
enddef
export def Log(bufname: string)
execute 'edit' typeset.LogPath(bufname)
var logpath = typeset.LogPath(bufname)
if filereadable(logpath)
execute 'edit' .. fnameescape(typeset.LogPath(bufname))
return
endif
echomsg $'[ConTeXt] No log file found ({logpath})'
enddef
# }}}
# Completion {{{
def BinarySearch(base: string, keywords: list<string>): list<string>
const pat = '^' .. base
const len = len(keywords)
var pat = '^' .. base
var len = len(keywords)
var res = []
var lft = 0
var rgt = len
+152 -10
View File
@@ -3,7 +3,7 @@ vim9script
# Vim functions for file type detection
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Oct 28
# Last Change: 2026 Apr 03
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
# These functions are moved here from runtime/filetype.vim to make startup
@@ -11,6 +11,18 @@ vim9script
var prolog_pattern = '^\s*\(:-\|%\+\(\s\|$\)\|\/\*\)\|\.\s*$'
def IsObjectScriptRoutine(): bool
var line1 = getline(1)
line1 = substitute(line1, '^\ufeff', '', '')
if line1 =~? '^\s*routine\>'
return true
endif
if line1 =~? '\<iris\>'
return true
endif
return join(getline(1, 3), '') =~# '%RO'
enddef
export def Check_inp()
if getline(1) =~ '%%'
setf tex
@@ -29,6 +41,28 @@ export def Check_inp()
endif
enddef
# Erlang Application Resource Files (*.app.src is matched by extension)
# See: https://erlang.org/doc/system/applications
export def FTapp()
if exists("g:filetype_app")
exe "setf " .. g:filetype_app
return
endif
const pat = '^\s*{\s*application\s*,\s*\(''\=\)' .. expand("%:t:r:r") .. '\1\s*,'
var line: string
for lnum in range(1, min([line("$"), 100]))
line = getline(lnum)
# skip Erlang comments, might be something else
if line =~ '^\s*%' || line =~ '^\s*$'
continue
elseif line =~ '^\s*{' &&
getline(lnum, lnum + 9)->filter((_, v) => v !~ '^\s*%')->join(' ') =~# pat
setf erlang
endif
return
endfor
enddef
# This function checks for the kind of assembly that is wanted by the user, or
# can be detected from the beginning of the file.
export def FTasm()
@@ -53,6 +87,18 @@ export def FTasm()
exe "setf " .. fnameescape(b:asmsyntax)
enddef
export def FTmac()
if exists("g:filetype_mac")
exe "setf " .. g:filetype_mac
else
if IsObjectScriptRoutine()
setf objectscript_routine
else
FTasm()
endif
endif
enddef
export def FTasmsyntax()
# see if the file contains any asmsyntax=foo overrides. If so, change
# b:asmsyntax appropriately
@@ -76,7 +122,7 @@ export def FTasmsyntax()
b:asmsyntax = "masm"
return
elseif line =~ 'Texas Instruments Incorporated' || (line =~ '^\*' && !is_slash_star_encountered)
# tiasm uses `* commment`, but detection is unreliable if '/*' is seen
# tiasm uses `* comment`, but detection is unreliable if '/*' is seen
b:asmsyntax = "tiasm"
return
elseif ((line =~? '\.title\>\|\.ident\>\|\.macro\>\|\.subtitle\>\|\.library\>'))
@@ -173,6 +219,7 @@ export def FTcl()
endif
enddef
# Determines whether a *.cls file is ObjectScript, TeX, Rexx, Visual Basic, or Smalltalk.
export def FTcls()
if exists("g:filetype_cls")
exe "setf " .. g:filetype_cls
@@ -189,7 +236,20 @@ export def FTcls()
endif
var nonblank1 = getline(nextnonblank(1))
if nonblank1 =~ '^\v%(\%|\\)'
var lnum = nextnonblank(1)
while lnum > 0 && lnum <= line("$")
var line = getline(lnum)
if line =~? '^\s*\%(import\|include\|includegenerator\)\>'
lnum = nextnonblank(lnum + 1)
else
nonblank1 = line
break
endif
endwhile
if nonblank1 =~? '^\s*class\>\s\+[%A-Za-z][%A-Za-z0-9_.]*\%(\s\+extends\>\|\s*\[\|\s*{\|$\)'
setf objectscript
elseif nonblank1 =~ '^\v%(\%|\\)'
setf tex
elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)'
setf rexx
@@ -451,12 +511,19 @@ def IsHareModule(dir: string, depth: number): bool
endif
# Check all files in the directory before recursing into subdirectories.
return glob(dir .. '/*', true, true)
const items = glob(dir .. '/*', true, true)
->sort((a, b) => isdirectory(a) - isdirectory(b))
->reduce((acc, n) => acc
|| n =~ '\.ha$'
|| isdirectory(n) && IsHareModule(n, depth - 1),
false)
for n in items
if isdirectory(n)
if IsHareModule(n, depth - 1)
return true
endif
elseif n =~ '\.ha$'
return true
endif
endfor
return false
enddef
# Determines whether a README file is inside a Hare module and should receive
@@ -828,6 +895,10 @@ export def FTinc()
if exists("g:filetype_inc")
exe "setf " .. g:filetype_inc
else
if IsObjectScriptRoutine()
setf objectscript_routine
return
endif
for lnum in range(1, min([line("$"), 20]))
var line = getline(lnum)
if line =~? "perlscript"
@@ -897,6 +968,16 @@ export def FTi()
setf progress
enddef
export def FTint()
if exists("g:filetype_int")
exe "setf " .. g:filetype_int
elseif IsObjectScriptRoutine()
setf objectscript_routine
else
setf hex
endif
enddef
var ft_pascal_comments = '^\s*\%({\|(\*\|//\)'
var ft_pascal_keywords = '^\s*\%(program\|unit\|library\|uses\|begin\|procedure\|function\|const\|type\|var\)\>'
@@ -1484,7 +1565,7 @@ export def FTdsp()
# Test the file contents
for line in getline(1, 200)
# Chech for comment style
# Check for comment style
if line =~ '^#.*'
setf make
return
@@ -1659,6 +1740,7 @@ const ft_from_ext = {
# XA65 MOS6510 cross assembler
"a65": "a65",
# Applescript
"applescript": "applescript",
"scpt": "applescript",
# Applix ELF
"am": "elf",
@@ -1723,7 +1805,7 @@ const ft_from_ext = {
"bst": "bst",
# Bicep
"bicep": "bicep",
"bicepparam": "bicep",
"bicepparam": "bicep-params",
# BIND zone
"zone": "bindzone",
# Blank
@@ -1735,6 +1817,8 @@ const ft_from_ext = {
# BSDL
"bsd": "bsdl",
"bsdl": "bsdl",
# Bpftrace
"bt": "bpftrace",
# C3
"c3": "c3",
"c3i": "c3",
@@ -1743,6 +1827,8 @@ const ft_from_ext = {
"cairo": "cairo",
# Cap'n Proto
"capnp": "capnp",
# Common Package Specification
"cps": "json",
# C#
"cs": "cs",
"csx": "cs",
@@ -1800,6 +1886,8 @@ const ft_from_ext = {
"tlh": "cpp",
# Cascading Style Sheets
"css": "css",
# Common Expression Language (CEL) - https://cel.dev
"cel": "cel",
# Century Term Command Scripts (*.cmd too)
"con": "cterm",
# ChordPro
@@ -1838,6 +1926,8 @@ const ft_from_ext = {
"cr": "crystal",
# CSV Files
"csv": "csv",
# Concertor
"cto": "concerto",
# CUDA Compute Unified Device Architecture
"cu": "cuda",
"cuh": "cuda",
@@ -1851,6 +1941,9 @@ const ft_from_ext = {
"elv": "elvish",
# Faust
"lib": "faust",
# Fennel
"fnl": "fennel",
"fnlm": "fennel",
# Libreoffice config files
"xcu": "xml",
"xlb": "xml",
@@ -1889,6 +1982,9 @@ const ft_from_ext = {
# Diff files
"diff": "diff",
"rej": "diff",
# Djot
"dj": "djot",
"djot": "djot",
# DOT
"dot": "dot",
"gv": "dot",
@@ -1951,6 +2047,8 @@ const ft_from_ext = {
"fish": "fish",
# Flix
"flix": "flix",
# Fluent
"ftl": "fluent",
# Focus Executable
"fex": "focexec",
"focexec": "focexec",
@@ -2093,6 +2191,8 @@ const ft_from_ext = {
"tmpl": "template",
# Hurl
"hurl": "hurl",
# Hylo
"hylo": "hylo",
# Hyper Builder
"hb": "hb",
# Httest
@@ -2202,6 +2302,10 @@ const ft_from_ext = {
"k": "kwt",
# Kivy
"kv": "kivy",
# Koka
"kk": "koka",
# Kos
"kos": "kos",
# Kotlin
"kt": "kotlin",
"ktm": "kotlin",
@@ -2225,6 +2329,8 @@ const ft_from_ext = {
"ldg": "ledger",
"ledger": "ledger",
"journal": "ledger",
# Leex
"xrl": "leex",
# Leo
"leo": "leo",
# Less
@@ -2332,6 +2438,13 @@ const ft_from_ext = {
# N1QL
"n1ql": "n1ql",
"nql": "n1ql",
# Neon
"neon": "neon",
# NetLinx
"axs": "netlinx",
"axi": "netlinx",
# Nickel
"ncl": "nickel",
# Nim file
"nim": "nim",
"nims": "nim",
@@ -2344,6 +2457,8 @@ const ft_from_ext = {
"norg": "norg",
# Novell netware batch files
"ncf": "ncf",
# N-Quads
"nq": "nq",
# Not Quite C
"nqc": "nqc",
# NSE - Nmap Script Engine - uses Lua syntax
@@ -2514,6 +2629,9 @@ const ft_from_ext = {
"rakumod": "raku",
"rakudoc": "raku",
"rakutest": "raku",
# Razor
"cshtml": "razor",
"razor": "razor",
# Renderman Interface Bytestream
"rib": "rib",
# Rego Policy Language
@@ -2557,6 +2675,8 @@ const ft_from_ext = {
"rst": "rst",
# RTF
"rtf": "rtf",
# ObjectScript Routine
"rtn": "objectscript_routine",
# Ruby
"rb": "ruby",
"rbw": "ruby",
@@ -2570,6 +2690,8 @@ const ft_from_ext = {
"builder": "ruby",
"rxml": "ruby",
"rjs": "ruby",
# Sorbet (Ruby typechecker)
"rbi": "ruby",
# Rust
"rs": "rust",
# S-lang
@@ -2702,6 +2824,7 @@ const ft_from_ext = {
"nut": "squirrel",
# Starlark
"ipd": "starlark",
"sky": "starlark",
"star": "starlark",
"starlark": "starlark",
# OpenVPN configuration
@@ -2779,6 +2902,8 @@ const ft_from_ext = {
"txi": "texinfo",
# Thrift (Apache)
"thrift": "thrift",
# Tiger
"tig": "tiger",
# TLA+
"tla": "tla",
# TPP - Text Presentation Program
@@ -2952,6 +3077,9 @@ const ft_from_ext = {
"raml": "raml",
# YANG
"yang": "yang",
# YARA, YARA-X
"yara": "yara",
"yar": "yara",
# Yuck
"yuck": "yuck",
# Zimbu
@@ -2968,6 +3096,7 @@ const ft_from_ext = {
"usd": "usd",
# Rofi stylesheet
"rasi": "rasi",
"rasinc": "rasi",
# Zsh module
# mdd: https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L285-L288
# mdh, pro: https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L268-L271
@@ -2982,6 +3111,9 @@ const ft_from_ext = {
"blp": "blueprint",
# Blueprint build system file
"bp": "bp",
# Tiltfile
"Tiltfile": "tiltfile",
"tiltfile": "tiltfile"
}
# Key: file name (the final path component, excluding the drive and root)
# Value: filetype
@@ -2998,6 +3130,8 @@ const ft_from_name = {
"apt.conf": "aptconf",
# BIND zone
"named.root": "bindzone",
# Brewfile (uses Ruby syntax)
"Brewfile": "ruby",
# Busted (Lua unit testing framework - configuration files)
".busted": "lua",
# Bun history
@@ -3066,6 +3200,8 @@ const ft_from_name = {
".editorconfig": "editorconfig",
# Elinks configuration
"elinks.conf": "elinks",
# Erlang
"rebar.config": "erlang",
# Exim
"exim.conf": "exim",
# Exports
@@ -3244,6 +3380,9 @@ const ft_from_name = {
# Screen RC
".screenrc": "screen",
"screenrc": "screen",
# skhd (simple hotkey daemon for macOS)
".skhdrc": "skhd",
"skhdrc": "skhd",
# SLRN
".slrnrc": "slrnrc",
# Squid
@@ -3264,6 +3403,9 @@ const ft_from_name = {
# TF (TinyFugue) mud client
".tfrc": "tf",
"tfrc": "tf",
# Tilefile
"Tiltfile": "tiltfile",
"tiltfile": "tiltfile",
# Trustees
"trustees.conf": "trustees",
# Vagrant (uses Ruby syntax)
+5 -1
View File
@@ -4,7 +4,7 @@ vim9script
# Invoked from "scripts.vim" in 'runtimepath'
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Aug 09
# Last Change: 2025 Dec 22
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
export def DetectFiletype()
@@ -233,6 +233,10 @@ export def Exe2filetype(name: string, line1: string): string
elseif name =~ '^execlineb\>'
return 'execline'
# Bpftrace
elseif name =~ '^bpftrace\>'
return 'bpftrace'
# Vim
elseif name =~ '^vim\>'
return 'vim'
+2 -2
View File
@@ -1,9 +1,9 @@
" Vim runtime support library,
" runs the Vim9 script version or legacy script version
" on demand (mostly for Neovim compatability)
" on demand (mostly for Neovim compatibility)
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2025 Apr 27
" Last Change: 2026 Jan 11
" enable the zip and gzip plugin by default, if not set
+20 -7
View File
@@ -3,7 +3,7 @@ vim9script
# Vim runtime support library
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Aug 15
# Last Change: 2026 Apr 06
export def IsSafeExecutable(filetype: string, executable: string): bool
if empty(exepath(executable))
@@ -60,15 +60,20 @@ if has('unix')
enddef
else
export def Launch(args: string)
const fork = has('gui_running') ? '' : '&'
execute $':silent ! nohup {args} {Redir()} {fork}' | redraw!
# Use job_start, because using !xdg-open is known not to work with zsh
# ignore signals on exit
job_start(['sh', '-c', args], {'stoponexit': '', 'in_io': 'null', 'out_io': 'null', 'err_io': 'null'})
enddef
endif
elseif has('win32')
export def Launch(args: string)
const shell = (&shell =~? '\<cmd\.exe\>') ? '' : 'cmd.exe /c'
const quotes = empty(shell) ? '' : '""'
execute $'silent ! {shell} start {quotes} /b {args} {Redir()}' | redraw!
try
execute ':silent !start' args | redraw!
catch /^Vim(!):E371:/
echohl ErrorMsg
echom "dist#vim9#Launch(): can not start" args
echohl None
endtry
enddef
else
export def Launch(dummy: string)
@@ -81,7 +86,10 @@ var os_viewer = null_string
if has('win32unix')
# (cyg)start suffices
os_viewer = ''
# Windows / WSL
# Windows
elseif has('win32')
os_viewer = '' # Use :!start
# WSL
elseif executable('explorer.exe')
os_viewer = 'explorer.exe'
# Linux / BSD
@@ -126,6 +134,11 @@ export def Open(file: string)
&shellslash = false
defer setbufvar('%', '&shellslash', true)
endif
if &shell == 'pwsh' || &shell == 'powershell'
const shell = &shell
setlocal shell&
defer setbufvar('%', '&shell', shell)
endif
Launch($"{Viewer()} {shellescape(file, 1)}")
enddef
+6 -2
View File
@@ -14,6 +14,7 @@
" 2024 Nov 12 by Vim Project: fix problems on Windows (#16036)
" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
" 2025 May 11 by Vim Project: check network connectivity (#17249)
" 2025 Dec 21 by Vim Project: make the wget check more robust (#18987)
" }}}
"
" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
@@ -58,7 +59,10 @@ endif
" wget vs curl {{{2
if !exists("g:GetLatestVimScripts_wget")
if executable("wget")
if executable("wget.exe")
" enforce extension: windows powershell desktop version has a wget alias that hides wget.exe
let g:GetLatestVimScripts_wget= "wget.exe"
elseif executable("wget")
let g:GetLatestVimScripts_wget= "wget"
elseif executable("curl.exe")
" enforce extension: windows powershell desktop version has a curl alias that hides curl.exe
@@ -73,7 +77,7 @@ endif
" options that wget and curl require:
if !exists("g:GetLatestVimScripts_options")
if g:GetLatestVimScripts_wget == "wget"
if g:GetLatestVimScripts_wget =~ "wget"
let g:GetLatestVimScripts_options= "-q -O"
elseif g:GetLatestVimScripts_wget =~ "curl"
let g:GetLatestVimScripts_options= "-s -o"
+1 -1
View File
@@ -3,7 +3,7 @@
" Language: Ada (GNAT)
" $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>k
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>
" Ned Okie <nokie@radford.edu>
" $Author: krischik $
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
+11 -28
View File
@@ -1,13 +1,13 @@
vim9script
# Helper functions for Hare.
# Language: Hare
# Maintainer: Amelia Clarke <selene@perilune.dev>
# Last Updated: 2025 Sep 06
# Upstream: https://git.sr.ht/~sircmpwn/hare.vim
# Language: Hare
# Maintainer: Amelia Clarke <selene@perilune.dev>
# Last Change: 2026 Jan 24
# Upstream: https://git.sr.ht/~sircmpwn/hare.vim
# Returns the value of HAREPATH, if it exists. Otherwise, returns a safe
# default.
# Returns the value of $HAREPATH, if it exists. Otherwise, returns a safe
# default value.
export def GetPath(): string
var path: list<string>
if !empty($HAREPATH)
@@ -18,24 +18,7 @@ export def GetPath(): string
return '/usr/src/hare/stdlib,/usr/src/hare/third-party'
endif
endif
return mapnew(path, (_, n) => escape(n, ' ,;'))->join(',')
enddef
# Converts a module identifier into a path.
export def IncludeExpr(): string
var path = trim(v:fname, ':', 2)->substitute('::', '/', 'g')
# If the module cannot be found, it might be a member instead. Try removing
# the final component until a directory is found.
while !finddir(path)
const head = fnamemodify(path, ':h')
if head == '.'
break
endif
path = head
endwhile
return path
return map(path, (_, n) => escape(n, ' ,;'))->join(',')
enddef
# Modifies quickfix or location list entries to refer to the correct paths after
@@ -61,14 +44,14 @@ export def QuickFixPaths()
SetList([], 'r', list)
enddef
# Attempts to parse the directories in $HAREPATH from the output of `hare
# version -v`. Otherwise, returns an empty list.
# Attempts to parse a list of directories from the output of `hare version -v`.
# Otherwise, returns an empty list.
def ParsePath(): list<string>
if !executable('hare')
return []
endif
silent const lines = systemlist('hare version -v')
silent final lines = systemlist('hare version -v')
const min = match(lines, '^HAREPATH') + 1
if min == 0
return []
@@ -76,7 +59,7 @@ def ParsePath(): list<string>
const max = match(lines, '^\S', min)
return (max < 0 ? slice(lines, min) : slice(lines, min, max))
->mapnew((_, n) => matchstr(n, '^\s*\zs.*'))
->map((_, n) => matchstr(n, '^\s*\zs.*'))
enddef
# vim: et sts=2 sw=2 ts=8 tw=80
+4 -11
View File
@@ -3,10 +3,9 @@
" Maintainer: Daniel Campoverde <alx@sillybytes.net>
" URL: https://github.com/alx741/haskellcomplete.vim
" Last Change: 2019 May 14
" 2026 Feb 04 by Vim project: fix undefined buffer variable: #19259
" Usage: setlocal omnifunc=haskellcomplete#Complete
" Language extensions from:
" https://hackage.haskell.org/package/Cabal-2.2.0.1/docs/Language-Haskell-Extension.html
"
@@ -15,12 +14,6 @@
" https://downloads.haskell.org/~ghc/8.4.3/docs/html/users_guide/flags.html
" Available completions
let b:completingLangExtension = 0
let b:completingOptionsGHC = 0
let b:completingModule = 0
function! haskellcomplete#Complete(findstart, base)
if a:findstart
let l:line = getline('.')
@@ -52,7 +45,7 @@ function! haskellcomplete#Complete(findstart, base)
return start
endif
if b:completingLangExtension
if get(b:, 'completingLangExtension', 0)
if a:base ==? ""
" Return all possible Lang extensions
return s:langExtensions
@@ -68,7 +61,7 @@ function! haskellcomplete#Complete(findstart, base)
endif
elseif b:completingOptionsGHC
elseif get(b:, 'completingOptionsGHC', 0)
if a:base ==? ""
" Return all possible GHC options
return s:optionsGHC
@@ -84,7 +77,7 @@ function! haskellcomplete#Complete(findstart, base)
endif
elseif b:completingModule
elseif get(b:, 'completingModule', 0)
if a:base ==? ""
" Return all possible modules
return s:commonModules
+3 -3
View File
@@ -448,7 +448,7 @@ class PyParser:
def _parseassignment(self):
assign=''
tokentype, token, indent = self.donext()
if tokentype == tokenize.STRING or token == 'str':
if tokentype == tokenize.STRING or token == 'str':
return '""'
elif token == '(' or token == 'tuple':
return '()'
@@ -556,7 +556,7 @@ class PyParser:
freshscope = True
dbg("new scope: class")
self.scope = self.scope.add(cls)
elif token == 'import':
imports = self._parseimportlist()
for mod, alias in imports:
@@ -578,7 +578,7 @@ class PyParser:
elif tokentype == STRING:
if freshscope: self.scope.doc(token)
elif tokentype == NAME:
name,token = self._parsedotname(token)
name,token = self._parsedotname(token)
if token == '=':
stmt = self._parseassignment()
dbg("parseassignment: %s = %s" % (name, stmt))
+15 -4
View File
@@ -1,8 +1,9 @@
" Author: Stephen Sugden <stephen@stephensugden.com>
" Last Modified: 2023-09-11
" Last Change:
" 2025 Oct 27 by Vim project don't use rustfmt as 'formatprg' by default
"
" 2025 Oct 27 by Vim project: don't use rustfmt as 'formatprg' by default
" 2026 Jan 25 by Vim project: don't hide rustfmt errors, restore default var
" 2026 Mar 30 by Vim project: use fnameescape for :chdir commands
"
" Adapted from https://github.com/fatih/vim-go
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
@@ -69,6 +70,12 @@ function! s:RustfmtWriteMode()
endfunction
function! s:RustfmtConfigOptions()
let default = '--edition 2018'
if !get(g:, 'rustfmt_find_toml', 0)
return default
endif
let l:rustfmt_toml = findfile('rustfmt.toml', expand('%:p:h') . ';')
if l:rustfmt_toml !=# ''
return '--config-path '.shellescape(fnamemodify(l:rustfmt_toml, ":p"))
@@ -128,7 +135,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
" chdir to the directory of the file
let l:has_lcd = haslocaldir()
let l:prev_cd = getcwd()
execute 'lchdir! '.expand('%:h')
execute 'lchdir! ' . fnameescape(expand('%:h'))
let l:buffer = getline(1, '$')
if exists("*systemlist")
@@ -199,7 +206,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
echo "rust.vim: was not able to parse rustfmt messages. Here is the raw output:"
echo "\n"
for l:line in l:stderr
echo l:line
echomsg l:line
endfor
endif
@@ -208,6 +215,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
endif
" Restore the current directory if needed
let l:prev_cd = fnameescape(l:prev_cd)
if a:tmpname ==# ''
if l:has_lcd
execute 'lchdir! '.l:prev_cd
@@ -218,7 +226,10 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
" Open lwindow after we have changed back to the previous directory
if l:open_lwindow == 1
try
lwindow
catch /^Vim\%((\S\+)\)\=:E776:/
endtry
endif
call winrestview(l:view)
+6 -6
View File
@@ -3,6 +3,7 @@
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Version: 16.0
" Last Change: 2017 Oct 15
" 2025 Nov 11 by Vim project: only set 'omnifunc' if dbext script was loaded #18716
" Homepage: http://www.vim.org/scripts/script.php?script_id=1572
" Usage: For detailed help
" ":help sql.txt"
@@ -98,12 +99,11 @@
" Set completion with CTRL-X CTRL-O to autoloaded function.
" This check is in place in case this script is
" sourced directly instead of using the autoload feature.
if exists('&omnifunc')
" Do not set the option if already set since this
" results in an E117 warning.
if &omnifunc == ""
setlocal omnifunc=sqlcomplete#Complete
endif
"
" Do not set the option if already set since this
" results in an E117 warning.
if exists('&omnifunc') && &omnifunc == "" && exists('g:loaded_dbext')
setlocal omnifunc=sqlcomplete#Complete
endif
if exists('g:loaded_sql_completion')
+12 -5
View File
@@ -18,6 +18,9 @@
" 2025 May 19 by Vim Project: restore working directory after read/write
" 2025 Jul 13 by Vim Project: warn with path traversal attacks
" 2025 Jul 16 by Vim Project: update minimum vim version
" 2026 Feb 06 by Vim Project: consider 'nowrapscan' (#19333)
" 2026 Feb 07 by Vim Project: make the path traversal detection more robust (#19341)
" 2026 Apr 06 by Vim Project: fix bugs with lz4 support (#19925)
"
" Contains many ideas from Michael Toren's <tar.vim>
"
@@ -110,7 +113,7 @@ if !exists("g:tar_shq")
endif
let g:tar_secure=' -- '
let g:tar_leading_pat='^\%([.]\{,2\}/\)\+'
let g:tar_leading_pat='\m^\%([.]\{,2\}/\)\+'
" ----------------
" Functions: {{{1
@@ -226,7 +229,7 @@ fun! tar#Browse(tarfile)
" remove tar: Removing leading '/' from member names
" Note: the message could be localized
if search('^tar: ') > 0 || search(g:tar_leading_pat) > 0
if search('\m^g\?tar: ', 'w') > 0 || search(g:tar_leading_pat, 'w') > 0
call append(3,'" Note: Path Traversal Attack detected!')
let b:leading_slash = 1
" remove the message output
@@ -702,7 +705,9 @@ fun! tar#Extract()
endif
elseif filereadable(tarbase.".tlz4")
let extractcmd= substitute(extractcmd,"-","-I lz4","")
if has("linux")
let extractcmd= substitute(extractcmd,"-","-I lz4 -","")
endif
call system(extractcmd." ".shellescape(tarbase).".tlz4 ".shellescape(fname))
if v:shell_error != 0
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tlz4 {fname}: failed!")
@@ -711,8 +716,10 @@ fun! tar#Extract()
endif
elseif filereadable(tarbase.".tar.lz4")
let extractcmd= substitute(extractcmd,"-","-I lz4","")
call system(extractcmd." ".shellescape(tarbase).".tar.lz4".shellescape(fname))
if has("linux")
let extractcmd= substitute(extractcmd,"-","-I lz4 -","")
endif
call system(extractcmd." ".shellescape(tarbase).".tar.lz4 ".shellescape(fname))
if v:shell_error != 0
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.lz4 {fname}: failed!")
else
+1 -1
View File
@@ -211,7 +211,7 @@ function! tutor#TutorCmd(tutor_name)
endif
call tutor#SetupVim()
exe "drop ".l:to_open
exe "drop ".fnameescape(l:to_open)
call tutor#EnableInteractive(v:true)
endfunction
+110 -51
View File
@@ -2,7 +2,9 @@ vim9script
# Language: Generic TeX typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Latest Revision: 2022 Aug 12
# Latest Revision: 2026 Feb 19
# Last Change:
# 2026 Mar 30 by Vim project: Use fnameescape for the ProcessOutput command
# Constants and helpers {{{
const SLASH = !exists("+shellslash") || &shellslash ? '/' : '\'
@@ -11,25 +13,25 @@ def Echo(msg: string, mode: string, label: string)
redraw
echo "\r"
execute 'echohl' mode
echomsg printf('[%s] %s', label, msg)
echomsg $'[{label}] {msg}'
echohl None
enddef
def EchoMsg(msg: string, label = 'Notice')
def EchoMsg(msg: string, label = gettext('Notice'))
Echo(msg, 'ModeMsg', label)
enddef
def EchoWarn(msg: string, label = 'Warning')
def EchoWarn(msg: string, label = gettext('Warning'))
Echo(msg, 'WarningMsg', label)
enddef
def EchoErr(msg: string, label = 'Error')
def EchoErr(msg: string, label = gettext('Error'))
Echo(msg, 'ErrorMsg', label)
enddef
# }}}
# Track jobs {{{
var running_jobs = {} # Dictionary of job IDs of jobs currently executing
var running_jobs: dict<list<job>> = {}
def AddJob(label: string, j: job)
if !has_key(running_jobs, label)
@@ -54,13 +56,13 @@ enddef
def ProcessOutput(qfid: number, wd: string, efm: string, ch: channel, msg: string)
# Make sure the quickfix list still exists
if getqflist({'id': qfid}).id != qfid
EchoErr("Quickfix list not found, stopping the job")
call job_stop(ch_getjob(ch))
EchoErr(gettext("Quickfix list not found, stopping the job"))
job_stop(ch_getjob(ch))
return
endif
# Make sure the working directory is correct
silent execute "lcd" wd
silent execute "lcd" .. fnameescape(wd)
setqflist([], 'a', {'id': qfid, 'lines': [msg], 'efm': efm})
silent lcd -
enddef
@@ -74,13 +76,13 @@ def ExitCb(label: string, jobid: job, exitStatus: number)
if exitStatus == 0
botright cwindow
EchoMsg('Success!', label)
EchoMsg(gettext('Success!'), label)
elseif exitStatus < 0
EchoWarn('Job terminated', label)
EchoWarn(gettext('Job terminated'), label)
else
botright copen
wincmd p
EchoWarn('There are errors.', label)
EchoWarn(gettext('There are errors.'), label)
endif
enddef
# }}}
@@ -106,31 +108,81 @@ enddef
#
# This function searches for the magic line in the first ten lines of the
# given buffer, and returns the full path of the root document.
#
# NOTE: the value of "% !TEX root" *must* be a relative path.
export def FindRootDocument(bufname: string = bufname("%")): string
const bufnr = bufnr(bufname)
var docpath = fnamemodify(bufname, ":p")
var bufnr = bufnr(bufname)
var header: list<string>
var rootpath = docpath
if !bufexists(bufnr)
return bufname
if bufexists(bufnr)
header = getbufline(bufnr, 1, 10)
elseif filereadable(bufname)
header = readfile(bufname, "", 10)
else
return simplify(rootpath)
endif
var rootpath = fnamemodify(bufname(bufnr), ':p')
# Search for magic line `% !TEX root = ...` in the first ten lines
const header = getbufline(bufnr, 1, 10)
const idx = match(header, '^\s*%\s\+!TEX\s\+root\s*=\s*\S')
var idx = match(header, '^\s*%\s\+!TEX\s\+root\s*=\s*\S')
if idx > -1
const main = matchstr(header[idx], '!TEX\s\+root\s*=\s*\zs.*$')
rootpath = simplify(fnamemodify(rootpath, ":h") .. SLASH .. main)
rootpath = matchstr(header[idx], '!TEX\s\+root\s*=\s*\zs.*$')
if !isabsolutepath(rootpath) # Path is relative to the buffer's path
rootpath = fnamemodify(docpath, ":h") .. SLASH .. rootpath
endif
endif
return rootpath
return simplify(rootpath)
enddef
# ConTeXt documents may specify an output directory in a comment using the
# following syntax:
#
# runpath=texruns:<output directory>
#
# This function looks for such a comment in the first ten lines of the given
# buffer, and returns the full path of the output directory. If the comment is
# not found then the output directory coincides with the directory of the
# buffer.
export def GetOutputDirectory(bufname: string = bufname("%")): string
var basedir = fnamemodify(bufname, ':p:h')
var bufnr = bufnr(bufname)
var header: list<string>
var outdir = basedir
if bufexists(bufnr)
header = getbufline(bufnr, 1, 10)
elseif filereadable(bufname)
header = readfile(bufname, "", 10)
else
return simplify(outdir)
endif
# Search for output path in the first ten lines
var idx = match(header, '^\s*%.*\<runpath\s*=\s*texruns\s*:\s*\S')
if idx > -1
outdir = matchstr(header[idx], '\<runpath\s*=\s*texruns\s*:\s*\zs.*$')
if !isabsolutepath(outdir) # Path is relative to the buffer's directory
outdir = basedir .. SLASH .. outdir
endif
endif
return simplify(outdir)
enddef
export def LogPath(bufname: string): string
const logfile = FindRootDocument(bufname)
return fnamemodify(logfile, ":r") .. ".log"
var rootdoc = FindRootDocument(bufname)
var docname = fnamemodify(rootdoc, ":t:r")
var outdir = GetOutputDirectory(rootdoc)
if empty(docname) # Set an arbitrary name to avoid returning a dotfile (.log)
docname = '[NotFound]'
endif
return $'{outdir}{SLASH}{docname}.log'
enddef
# Typeset the specified path
@@ -146,49 +198,56 @@ enddef
# true if the job is started successfully;
# false otherwise.
export def Typeset(
label: string,
Cmd: func(string): list<string>,
path: string,
efm: string,
env: dict<string> = {}
): bool
var fp = fnamemodify(path, ":p")
var wd = fnamemodify(fp, ":h")
label: string,
Cmd: func(string): list<string>,
path: string,
efm: string,
env: dict<string> = {}
): bool
var fp = fnamemodify(path, ':p')
var name = fnamemodify(fp, ':t')
var wd = fnamemodify(fp, ':h')
var qfid = NewQuickfixList(fp)
if qfid == -1
EchoErr('Could not create quickfix list', label)
EchoErr(gettext('Could not create quickfix list'), label)
return false
endif
if !filereadable(fp)
EchoErr(printf('File not readable: %s', fp), label)
var msg = gettext('File not readable:')
EchoErr($'{msg} {fp}', label)
return false
endif
var jobid = job_start(Cmd(path), {
# Make sure to pass only the base name of the path to Cmd as this usually
# works better with TeX commands (note that the command is executed inside
# the file's directory). For instance, ConTeXt writes the path in .synctex
# files, and full paths break syncing from the editor to the viewer.
var jobid = job_start(Cmd(name), {
env: env,
cwd: wd,
in_io: "null",
callback: (c, m) => ProcessOutput(qfid, wd, efm, c, m),
close_cb: CloseCb,
exit_cb: (j, e) => ExitCb(label, j, e),
})
})
if job_status(jobid) ==# "fail"
EchoErr("Failed to start job", label)
EchoErr(gettext("Failed to start job"), label)
return false
endif
AddJob(label, jobid)
EchoMsg('Typesetting...', label)
EchoMsg(gettext('Typesetting...'), label)
return true
enddef
export def JobStatus(label: string)
EchoMsg('Jobs still running: ' .. string(len(GetRunningJobs(label))), label)
var msg = gettext('Jobs still running:')
EchoMsg($'{msg} {len(GetRunningJobs(label))}', label)
enddef
export def StopJobs(label: string)
@@ -196,7 +255,7 @@ export def StopJobs(label: string)
job_stop(job)
endfor
EchoMsg('Done.', label)
EchoMsg(gettext('Done.'), label)
enddef
# Typeset the specified buffer
@@ -211,20 +270,20 @@ enddef
# true if the job is started successfully;
# false otherwise.
export def TypesetBuffer(
name: string,
Cmd: func(string): list<string>,
env = {},
label = 'Typeset'
): bool
const bufname = bufname(name)
name: string,
Cmd: func(string): list<string>,
env = {},
label = gettext('Typeset')
): bool
var bufname = bufname(name)
if empty(bufname)
EchoErr('Please save the buffer first.', label)
EchoErr(gettext('Please save the buffer first.'), label)
return false
endif
const efm = getbufvar(bufnr(bufname), "&efm")
const rootpath = FindRootDocument(bufname)
var efm = getbufvar(bufnr(bufname), "&efm")
var rootpath = FindRootDocument(bufname)
return Typeset('ConTeXt', Cmd, rootpath, efm, env)
enddef
+74 -192
View File
@@ -6,6 +6,7 @@
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Last Change:
" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
" 2026 Apr 05 by Vim Project: Detect Path Traversal Attacks
" Copyright: (c) 2004-2011 by Charles E. Campbell
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
" (see |copyright|) except use "Vimball" instead of "Vim".
@@ -18,15 +19,14 @@ if &cp || exists("g:loaded_vimball")
finish
endif
let g:loaded_vimball = "v37"
if v:version < 702
if v:version < 704
echohl WarningMsg
echo "***warning*** this version of vimball needs vim 7.2"
echo "***warning*** this version of vimball needs vim 7.4"
echohl Normal
finish
endif
let s:keepcpo= &cpo
set cpo&vim
"DechoTabOn
" =====================================================================
" Constants: {{{1
@@ -47,20 +47,6 @@ if !exists("s:USAGE")
let g:netrw_cygwin= 0
endif
endif
" set up g:vimball_mkdir if the mkdir() call isn't defined
if !exists("*mkdir")
if exists("g:netrw_local_mkdir")
let g:vimball_mkdir= g:netrw_local_mkdir
elseif executable("mkdir")
let g:vimball_mkdir= "mkdir"
elseif executable("makedir")
let g:vimball_mkdir= "makedir"
endif
if !exists(g:vimball_mkdir)
call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined")
endif
endif
endif
" =====================================================================
@@ -81,7 +67,6 @@ endif
" filesize
" [file]
fun! vimball#MkVimball(line1,line2,writelevel,...) range
" call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0)
if a:1 =~ '\.vim$' || a:1 =~ '\.txt$'
let vbname= substitute(a:1,'\.\a\{3}$','.vmb','')
else
@@ -90,15 +75,12 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
if vbname !~ '\.vmb$'
let vbname= vbname.'.vmb'
endif
" call Decho("vbname<".vbname.">")
if !a:writelevel && a:1 =~ '[\/]'
call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist")
" call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
return
endif
if !a:writelevel && filereadable(vbname)
call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist")
" call Dret("MkVimball : file<".vbname."> already exists; use ! to insist")
return
endif
@@ -120,17 +102,14 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
" record current tab, initialize while loop index
let curtabnr = tabpagenr()
let linenr = a:line1
" call Decho("curtabnr=".curtabnr)
while linenr <= a:line2
let svfile = getline(linenr)
" call Decho("svfile<".svfile.">")
if !filereadable(svfile)
call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">")
call s:ChgDir(curdir)
call vimball#RestoreSettings()
" call Dret("MkVimball")
call s:ChgDir(curdir)
call vimball#RestoreSettings()
return
endif
@@ -145,20 +124,18 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
let lastline= line("$") + 1
if lastline == 2 && getline("$") == ""
call setline(1,'" Vimball Archiver by Charles E. Campbell')
call setline(2,'UseVimball')
call setline(3,'finish')
let lastline= line("$") + 1
call setline(1,'" Vimball Archiver by Charles E. Campbell')
call setline(2,'UseVimball')
call setline(3,'finish')
let lastline= line("$") + 1
endif
call setline(lastline ,substitute(svfile,'$',' [[[1',''))
call setline(lastline+1,0)
" write the file from the tab
" call Decho("exe $r ".fnameescape(svfile))
exe "$r ".fnameescape(svfile)
call setline(lastline+1,line("$") - lastline - 1)
" call Decho("lastline=".lastline." line$=".line("$"))
" restore to normal tab
exe "tabn ".curtabnr
@@ -170,13 +147,10 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
call s:ChgDir(curdir)
setlocal ff=unix
if a:writelevel
" call Decho("exe w! ".fnameescape(vbname))
exe "w! ".fnameescape(vbname)
else
" call Decho("exe w ".fnameescape(vbname))
exe "w ".fnameescape(vbname)
endif
" call Decho("Vimball<".vbname."> created")
echo "Vimball<".vbname."> created"
" remove the evidence
@@ -187,7 +161,6 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
" restore options
call vimball#RestoreSettings()
" call Dret("MkVimball")
endfun
" ---------------------------------------------------------------------
@@ -195,17 +168,9 @@ endfun
" (invoked the the UseVimball command embedded in
" vimballs' prologue)
fun! vimball#Vimball(really,...)
" call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0)
if v:version < 701 || (v:version == 701 && !exists('*fnameescape'))
echoerr "your vim is missing the fnameescape() function (pls upgrade to vim 7.2 or later)"
" call Dret("vimball#Vimball : needs 7.1 with patch 299 or later")
return
endif
if getline(1) !~ '^" Vimball Archiver'
echoerr "(Vimball) The current file does not appear to be a Vimball!"
" call Dret("vimball#Vimball")
return
endif
@@ -215,7 +180,6 @@ fun! vimball#Vimball(really,...)
let vimballfile = expand("%:tr")
" set up vimball tab
" call Decho("setting up vimball tab")
tabnew
sil! file Vimball
let vbtabnr= tabpagenr()
@@ -227,21 +191,18 @@ fun! vimball#Vimball(really,...)
" If, however, the user did not specify a full path, set the home to be below the current directory
let home= expand(a:1)
if has("win32") || has("win95") || has("win64") || has("win16")
if home !~ '^\a:[/\\]'
let home= getcwd().'/'.a:1
endif
if home !~ '^\a:[/\\]'
let home= getcwd().'/'.a:1
endif
elseif home !~ '^/'
let home= getcwd().'/'.a:1
let home= getcwd().'/'.a:1
endif
else
let home= vimball#VimballHome()
endif
" call Decho("home<".home.">")
" save current directory and remove older same-named vimball, if any
let curdir = getcwd()
" call Decho("home<".home.">")
" call Decho("curdir<".curdir.">")
call s:ChgDir(home)
let s:ok_unablefind= 1
@@ -260,56 +221,48 @@ fun! vimball#Vimball(really,...)
endif
" apportion vimball contents to various files
" call Decho("exe tabn ".curtabnr)
exe "tabn ".curtabnr
" call Decho("linenr=".linenr." line$=".line("$"))
while 1 < linenr && linenr < line("$")
let fname = substitute(getline(linenr),'\t\[\[\[1$','','')
let fname = substitute(fname,'\\','/','g')
let fname = resolve(simplify(fname))
let fsize = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0
let fenc = substitute(getline(linenr+1),'^\d\+\s*\(\S\{-}\)$','\1','')
let filecnt = filecnt + 1
" call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt. " fenc=".fenc)
if fname =~ '\.\.'
echomsg "(Vimball) Path Traversal Attack detected, aborting..."
exe "tabn ".curtabnr
bw! Vimball
call s:ChgDir(curdir)
return
endif
if a:really
echomsg "extracted <".fname.">: ".fsize." lines"
else
echomsg "would extract <".fname.">: ".fsize." lines"
endif
" call Decho("using L#".linenr.": will extract file<".fname.">")
" call Decho("using L#".(linenr+1).": fsize=".fsize)
" Allow AsNeeded/ directory to take place of plugin/ directory
" when AsNeeded/filename is filereadable or was present in VimballRecord
if fname =~ '\<plugin/'
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
" call Decho("using anfname<".anfname."> instead of <".fname.">")
let fname= anfname
endif
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
let fname= anfname
endif
endif
" make directories if they don't exist yet
if a:really
" call Decho("making directories if they don't exist yet (fname<".fname.">)")
let fnamebuf= substitute(fname,'\\','/','g')
let dirpath = substitute(home,'\\','/','g')
" call Decho("init: fnamebuf<".fnamebuf.">")
" call Decho("init: dirpath <".dirpath.">")
let dirpath = substitute(home,'\\','/','g')
while fnamebuf =~ '/'
let dirname = dirpath."/".substitute(fnamebuf,'/.*$','','')
let dirpath = dirname
let dirpath = dirname
let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','')
" call Decho("dirname<".dirname.">")
" call Decho("dirpath<".dirpath.">")
if !isdirectory(dirname)
" call Decho("making <".dirname.">")
if exists("g:vimball_mkdir")
call system(g:vimball_mkdir." ".shellescape(dirname))
else
call mkdir(dirname)
endif
call s:RecordInVar(home,"rmdir('".dirname."')")
call mkdir(dirname)
call s:RecordInVar(home,"rmdir('".dirname."')")
endif
endwhile
endif
@@ -319,13 +272,11 @@ fun! vimball#Vimball(really,...)
" (skip over path/filename and qty-lines)
let linenr = linenr + 2
let lastline = linenr + fsize - 1
" call Decho("exe ".linenr.",".lastline."yank a")
" no point in handling a zero-length file
if lastline >= linenr
exe "silent ".linenr.",".lastline."yank a"
" copy "a" buffer into tab
" call Decho('copy "a buffer into tab#'.vbtabnr)
exe "tabn ".vbtabnr
setlocal ma
sil! %d
@@ -336,38 +287,31 @@ fun! vimball#Vimball(really,...)
" write tab to file
if a:really
let fnamepath= home."/".fname
" call Decho("exe w! ".fnameescape(fnamepath))
if fenc != ""
exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
else
exe "silent w! ".fnameescape(fnamepath)
endif
echo "wrote ".fnameescape(fnamepath)
call s:RecordInVar(home,"call delete('".fnamepath."')")
if fenc != ""
exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
else
exe "silent w! ".fnameescape(fnamepath)
endif
echo "wrote ".fnameescape(fnamepath)
call s:RecordInVar(home,"call delete('".fnamepath."')")
endif
" return to tab with vimball
" call Decho("exe tabn ".curtabnr)
exe "tabn ".curtabnr
" set up help if it's a doc/*.txt file
" call Decho("didhelp<".didhelp."> fname<".fname.">")
if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.\(txt\|..x\)$'
let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.\(txt\|..x\)$','\1','')
" call Decho("didhelp<".didhelp.">")
let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.\(txt\|..x\)$','\1','')
endif
endif
" update for next file
" call Decho("update linenr= [linenr=".linenr."] + [fsize=".fsize."] = ".(linenr+fsize))
let linenr= linenr + fsize
endwhile
" set up help
" call Decho("about to set up help: didhelp<".didhelp.">")
if didhelp != ""
let htpath= home."/".didhelp
" call Decho("exe helptags ".htpath)
exe "helptags ".fnameescape(htpath)
echo "did helptags"
endif
@@ -388,8 +332,6 @@ fun! vimball#Vimball(really,...)
exe "sil! tabc! ".vbtabnr
call vimball#RestoreSettings()
call s:ChgDir(curdir)
" call Dret("vimball#Vimball")
endfun
" ---------------------------------------------------------------------
@@ -399,23 +341,18 @@ endfun
" Usage: RmVimball (assume current file is a vimball; remove)
" RmVimball vimballname
fun! vimball#RmVimball(...)
" call Dfunc("vimball#RmVimball() a:0=".a:0)
if exists("g:vimball_norecord")
" call Dret("vimball#RmVimball : (g:vimball_norecord)")
return
endif
if a:0 == 0
let curfile= expand("%:tr")
" call Decho("case a:0=0: curfile<".curfile."> (used expand(%:tr))")
else
if a:1 =~ '[\/]'
call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]")
" call Dret("vimball#RmVimball : suspect a:1<".a:1.">")
return
endif
let curfile= a:1
" call Decho("case a:0=".a:0.": curfile<".curfile.">")
endif
if curfile =~ '\.vmb$'
let curfile= substitute(curfile,'\.vmb','','')
@@ -428,75 +365,60 @@ fun! vimball#RmVimball(...)
let home= vimball#VimballHome()
endif
let curdir = getcwd()
" call Decho("home <".home.">")
" call Decho("curfile<".curfile.">")
" call Decho("curdir <".curdir.">")
call s:ChgDir(home)
if filereadable(".VimballRecord")
" call Decho(".VimballRecord is readable")
" call Decho("curfile<".curfile.">")
keepalt keepjumps 1split
sil! keepalt keepjumps e .VimballRecord
let keepsrch= @/
" call Decho('search for ^\M'.curfile.'.\m: ')
" call Decho('search for ^\M'.curfile.'.\m{vba|vmb}: ')
" call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.{vba|vmb}: ')
if search('^\M'.curfile."\m: ".'cw')
let foundit= 1
let foundit= 1
elseif search('^\M'.curfile.".\mvmb: ",'cw')
let foundit= 2
let foundit= 2
elseif search('^\M'.curfile.'\m[-0-9.]*\.vmb: ','cw')
let foundit= 2
let foundit= 2
elseif search('^\M'.curfile.".\mvba: ",'cw')
let foundit= 1
let foundit= 1
elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw')
let foundit= 1
let foundit= 1
else
let foundit = 0
endif
if foundit
if foundit == 1
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
else
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vmb: ','','')
endif
if foundit == 1
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
else
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vmb: ','','')
endif
let s:VBRstring= substitute(exestring,'call delete(','','g')
let s:VBRstring= substitute(s:VBRstring,"[')]",'','g')
" call Decho("exe ".exestring)
sil! keepalt keepjumps exe exestring
sil! keepalt keepjumps d
let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g"))
" call Decho("exestring<".exestring.">")
echomsg "removed ".exestring." files"
sil! keepalt keepjumps exe exestring
sil! keepalt keepjumps d
let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g"))
echomsg "removed ".exestring." files"
else
let s:VBRstring= ''
let curfile = substitute(curfile,'\.vmb','','')
" call Decho("unable to find <".curfile."> in .VimballRecord")
if !exists("s:ok_unablefind")
let curfile = substitute(curfile,'\.vmb','','')
if !exists("s:ok_unablefind")
call vimball#ShowMesg(s:WARNING,"(RmVimball) unable to find <".curfile."> in .VimballRecord")
endif
endif
endif
sil! keepalt keepjumps g/^\s*$/d
sil! keepalt keepjumps wq!
let @/= keepsrch
endif
call s:ChgDir(curdir)
" call Dret("vimball#RmVimball")
endfun
" ---------------------------------------------------------------------
" vimball#Decompress: attempts to automatically decompress vimballs {{{2
fun! vimball#Decompress(fname,...)
" call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0)
" decompression:
if expand("%") =~ '.*\.gz' && executable("gunzip")
" handle *.gz with gunzip
silent exe "!gunzip ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
endif
let fname= substitute(a:fname,'\.gz$','','')
exe "e ".escape(fname,' \')
@@ -506,7 +428,7 @@ fun! vimball#Decompress(fname,...)
" handle *.gz with gzip -d
silent exe "!gzip -d ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
endif
let fname= substitute(a:fname,'\.gz$','','')
exe "e ".escape(fname,' \')
@@ -516,7 +438,7 @@ fun! vimball#Decompress(fname,...)
" handle *.bz2 with bunzip2
silent exe "!bunzip2 ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
endif
let fname= substitute(a:fname,'\.bz2$','','')
exe "e ".escape(fname,' \')
@@ -526,7 +448,7 @@ fun! vimball#Decompress(fname,...)
" handle *.bz2 with bzip2 -d
silent exe "!bzip2 -d ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
endif
let fname= substitute(a:fname,'\.bz2$','','')
exe "e ".escape(fname,' \')
@@ -536,7 +458,7 @@ fun! vimball#Decompress(fname,...)
" handle *.bz3 with bunzip3
silent exe "!bunzip3 ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip3 may have failed with <".a:fname.">")
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip3 may have failed with <".a:fname.">")
endif
let fname= substitute(a:fname,'\.bz3$','','')
exe "e ".escape(fname,' \')
@@ -546,7 +468,7 @@ fun! vimball#Decompress(fname,...)
" handle *.bz3 with bzip3 -d
silent exe "!bzip3 -d ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip3 -d" may have failed with <'.a:fname.">")
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip3 -d" may have failed with <'.a:fname.">")
endif
let fname= substitute(a:fname,'\.bz3$','','')
exe "e ".escape(fname,' \')
@@ -556,7 +478,7 @@ fun! vimball#Decompress(fname,...)
" handle *.zip with unzip
silent exe "!unzip ".shellescape(a:fname)
if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
endif
let fname= substitute(a:fname,'\.zip$','','')
exe "e ".escape(fname,' \')
@@ -564,14 +486,11 @@ fun! vimball#Decompress(fname,...)
endif
if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif
" call Dret("Decompress")
endfun
" ---------------------------------------------------------------------
" vimball#ShowMesg: {{{2
fun! vimball#ShowMesg(level,msg)
" call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
let rulerkeep = &ruler
let showcmdkeep = &showcmd
@@ -596,13 +515,10 @@ fun! vimball#ShowMesg(level,msg)
let &ruler = rulerkeep
let &showcmd = showcmdkeep
" call Dret("vimball#ShowMesg")
endfun
" =====================================================================
" s:ChgDir: change directory (in spite of Windoze) {{{2
fun! s:ChgDir(newdir)
" call Dfunc("ChgDir(newdir<".a:newdir.">)")
if (has("win32") || has("win95") || has("win64") || has("win16"))
try
exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g'))
@@ -618,33 +534,22 @@ fun! s:ChgDir(newdir)
exe 'silent cd '.fnameescape(a:newdir)
endtry
endif
" call Dret("ChgDir : curdir<".getcwd().">")
endfun
" ---------------------------------------------------------------------
" s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2
fun! s:RecordInVar(home,cmd)
" call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)")
if a:cmd =~ '^rmdir'
" if !exists("s:recorddir")
" let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
" else
" let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
" endif
elseif !exists("s:recordfile")
if !exists("s:recordfile")
let s:recordfile= a:cmd
else
let s:recordfile= s:recordfile."|".a:cmd
endif
" call Dret("RecordInVar : s:recordfile<".(exists("s:recordfile")? s:recordfile : "")."> s:recorddir<".(exists("s:recorddir")? s:recorddir : "").">")
endfun
" ---------------------------------------------------------------------
" s:RecordInFile: {{{2
fun! s:RecordInFile(home)
" call Dfunc("s:RecordInFile()")
if exists("g:vimball_norecord")
" call Dret("s:RecordInFile : g:vimball_norecord")
return
endif
@@ -654,22 +559,19 @@ fun! s:RecordInFile(home)
keepalt keepjumps 1split
let cmd= expand("%:tr").": "
" call Decho("cmd<".cmd.">")
sil! keepalt keepjumps e .VimballRecord
setlocal ma
$
if exists("s:recordfile") && exists("s:recorddir")
let cmd= cmd.s:recordfile."|".s:recorddir
let cmd= cmd.s:recordfile."|".s:recorddir
elseif exists("s:recorddir")
let cmd= cmd.s:recorddir
let cmd= cmd.s:recorddir
elseif exists("s:recordfile")
let cmd= cmd.s:recordfile
let cmd= cmd.s:recordfile
else
" call Dret("s:RecordInFile : neither recordfile nor recorddir exist")
return
return
endif
" call Decho("cmd<".cmd.">")
" put command into buffer, write .VimballRecord `file
keepalt keepjumps put=cmd
@@ -678,35 +580,28 @@ fun! s:RecordInFile(home)
call s:ChgDir(curdir)
if exists("s:recorddir")
" call Decho("unlet s:recorddir<".s:recorddir.">")
unlet s:recorddir
unlet s:recorddir
endif
if exists("s:recordfile")
" call Decho("unlet s:recordfile<".s:recordfile.">")
unlet s:recordfile
unlet s:recordfile
endif
else
" call Decho("s:record[file|dir] doesn't exist")
endif
" call Dret("s:RecordInFile")
endfun
" ---------------------------------------------------------------------
" vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2
fun! vimball#VimballHome()
" call Dfunc("vimball#VimballHome()")
if exists("g:vimball_home")
let home= g:vimball_home
else
" go to vim plugin home
for home in split(&rtp,',') + ['']
if isdirectory(home) && filewritable(home) | break | endif
let basehome= substitute(home,'[/\\]\.vim$','','')
let basehome= substitute(home,'[/\\]\.vim$','','')
if isdirectory(basehome) && filewritable(basehome)
let home= basehome."/.vim"
break
endif
let home= basehome."/.vim"
break
endif
endfor
if home == ""
" just pick the first directory
@@ -717,18 +612,9 @@ fun! vimball#VimballHome()
endif
endif
" insure that the home directory exists
" call Decho("picked home<".home.">")
if !isdirectory(home)
if exists("g:vimball_mkdir")
" call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">")
" call Decho("system(".g:vimball_mkdir." ".shellescape(home).")")
call system(g:vimball_mkdir." ".shellescape(home))
else
" call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
call mkdir(home)
endif
call mkdir(home)
endif
" call Dret("vimball#VimballHome <".home.">")
return home
endfun
@@ -758,13 +644,11 @@ fun! vimball#SaveSettings()
endif
" vimballs should be in unix format
setlocal ff=unix
" call Dret("SaveSettings")
endfun
" ---------------------------------------------------------------------
" vimball#RestoreSettings: {{{2
fun! vimball#RestoreSettings()
" call Dfunc("RestoreSettings()")
let @a = s:regakeep
if exists("+acd")
let &acd = s:acdkeep
@@ -780,14 +664,12 @@ fun! vimball#RestoreSettings()
let &l:ff = s:ffkeep
if s:makeep[0] != 0
" restore mark a
" call Decho("restore mark-a: makeep=".string(makeep))
call setpos("'a",s:makeep)
endif
if exists("+acd")
unlet s:acdkeep
endif
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep
" call Dret("RestoreSettings")
endfun
let &cpo = s:keepcpo
@@ -795,4 +677,4 @@ unlet s:keepcpo
" ---------------------------------------------------------------------
" Modelines: {{{1
" vim: fdm=marker
" vim: fdm=marker et
+6 -5
View File
@@ -4,7 +4,8 @@ vim9script
# Contributers: @lacygoill
# Shane-XB-Qian
# Andrew Radev
# Last Change: 2025 Oct 17
# thinca
# Last Change: 2026 Mar 30
#
# Vim script to handle jumping to the targets of several types of Vim commands
# (:import, :packadd, :runtime, :colorscheme), and to autoloaded functions of
@@ -41,9 +42,9 @@ export def Find(editcmd: string) #{{{2
if stridx(curfunc, '#') >= 0
var parts = split(curfunc, '#')
var path = $"autoload/{join(parts[0 : -2], '/')}.vim"
var resolved_path = globpath(&runtimepath, path)
var resolved_path = globpath(&runtimepath, path, 1, 1)
if resolved_path != ''
if !resolved_path->empty()
var function_pattern: string = $'^\s*\%(:\s*\)\=fun\%[ction]!\=\s\+\zs{curfunc}('
resolved_path->Open(editcmd, function_pattern)
endif
@@ -167,7 +168,7 @@ def HandleImportLine(editcmd: string, curline: string) #{{{2
"\<C-W>F": 'split',
"\<C-W>gF": 'tab split',
}[editcmd]
execute how_to_split .. ' ' .. filepath
execute how_to_split .. ' ' .. fnameescape(filepath)
enddef
def Open(target: any, editcmd: string, search_pattern: string = '') #{{{2
@@ -192,7 +193,7 @@ def Open(target: any, editcmd: string, search_pattern: string = '') #{{{2
cmd = $'+silent\ call\ search(''{escaped_pattern}'')'
endif
execute $'{split} {cmd} {fname}'
execute $'{split} {cmd} {fnameescape(fname)}'
# If there are several files to open, put them into an arglist.
if target->typename() == 'list<string>'
+17 -9
View File
@@ -1,5 +1,5 @@
" Vim plugin for formatting XML
" Last Change: 2020 Jan 06
" Last Change: 2023 March 15th
" Version: 0.3
" Author: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
@@ -37,13 +37,17 @@ func! xmlformat#Format() abort
" Keep empty input lines?
if empty(line)
call add(result, '')
let current += 1
continue
elseif line !~# '<[/]\?[^>]*>'
let nextmatch = match(list, '<[/]\?[^>]*>', current)
if nextmatch > -1
let line .= ' '. join(list[(current + 1):(nextmatch-1)], " ")
call remove(list, current+1, nextmatch-1)
let nextmatch = match(list, '^\s*$\|<[/]\?[^>]*>', current)
if nextmatch > -1
let lineEnd = nextmatch
else
let lineEnd = len(list)
endif
let line .= ' '. join(list[(current + 1):(lineEnd-1)], " ")
call remove(list, current+1, lineEnd-1)
endif
" split on `>`, but don't split on very first opening <
" this means, items can be like ['<tag>', 'tag content</tag>']
@@ -79,9 +83,13 @@ func! xmlformat#Format() abort
if s:EndTag(t[1])
call s:DecreaseIndent()
endif
"for y in t[1:]
let result+=s:FormatContent(t[1:])
"endfor
let result+=s:FormatContent(t[1:])
if s:IsTag(t[1])
let lastitem = t[1]
continue
endif
elseif s:IsComment(item)
let result+=s:FormatContent([item])
else
call add(result, s:Indent(item))
endif
@@ -94,7 +102,7 @@ func! xmlformat#Format() abort
if !empty(result)
let lastprevline = getline(v:lnum + count_orig)
let delete_lastline = v:lnum + count_orig - 1 == line('$')
exe v:lnum. ",". (v:lnum + count_orig - 1). 'd'
exe 'silent ' .. v:lnum. ",". (v:lnum + count_orig - 1). 'd'
call append(v:lnum - 1, result)
" Might need to remove the last line, if it became empty because of the
" append() call
+29 -11
View File
@@ -1,4 +1,4 @@
" zip.vim: Handles browsing zipfiles
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: 2024 Aug 21
" Version: 34
@@ -17,6 +17,11 @@
" 2025 Mar 11 by Vim Project: handle filenames with leading '-' correctly
" 2025 Jul 12 by Vim Project: drop ../ on write to prevent path traversal attacks
" 2025 Sep 22 by Vim Project: support PowerShell Core
" 2025 Dec 20 by Vim Project: use :lcd instead of :cd
" 2026 Feb 08 by Vim Project: use system() instead of :!
" 2026 Mar 08 by Vim Project: Make ZipUpdatePS() check for powershell
" 2026 Apr 01 by Vim Project: Detect more path traversal attacks
" 2026 Apr 05 by Vim Project: Detect more path traversal attacks
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
@@ -138,7 +143,7 @@ endfunction
function! s:ZipReadPS(zipfile, fname, tempfile)
" Read a filename within a zipped file to a temporary file.
" Equivalent to `unzip -p -- zipfile fname > tempfile`
if a:fname =~ '/'
if &shell =~ 'pwsh'
call s:Mess('WarningMsg', "***warning*** PowerShell can display, but cannot update, files in archive subfolders")
endif
let cmds = [
@@ -157,7 +162,7 @@ endfunction
function! s:ZipUpdatePS(zipfile, fname)
" Update a filename within a zipped file
" Equivalent to `zip -u zipfile fname`
if a:fname =~ '/'
if &shell =~ 'pwsh' && a:fname =~ '/'
call s:Mess('Error', "***error*** PowerShell cannot update files in archive subfolders")
return ':'
endif
@@ -334,7 +339,8 @@ fun! zip#Read(fname,mode)
let temp = tempname()
let fn = expand('%:p')
let gnu_cmd = 'sil !' . g:zip_unzipcmd . ' -p -- ' . s:Escape(zipfile, 1) . ' ' . s:Escape(fname, 1) . ' > ' . s:Escape(temp, 1)
let gnu_cmd = g:zip_unzipcmd . ' -p -- ' . s:Escape(zipfile, 0) . ' ' . s:Escape(fname, 0) . ' > ' . s:Escape(temp, 0)
let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')'
let ps_cmd = 'sil !' . s:ZipReadPS(zipfile, fname, temp)
call s:TryExecGnuFallBackToPs(g:zip_unzipcmd, gnu_cmd, ps_cmd)
@@ -363,6 +369,11 @@ fun! zip#Write(fname)
return
endif
if simplify(a:fname) =~ '\.\.[/\\]'
call s:Mess('Error', "***error*** (zip#Write) Path Traversal Attack detected, not writing!")
return
endif
let curdir= getcwd()
let tmpdir= tempname()
if tmpdir =~ '\.'
@@ -371,7 +382,7 @@ fun! zip#Write(fname)
call mkdir(tmpdir,"p")
" attempt to change to the indicated directory
if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot lcd to temporary directory")
return
endif
@@ -380,17 +391,24 @@ fun! zip#Write(fname)
call delete("_ZIPVIM_", "rf")
endif
call mkdir("_ZIPVIM_")
cd _ZIPVIM_
lcd _ZIPVIM_
if has("unix")
let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'zipfile://.\{-}::\([^\\].*\)$','\1','')
" fname should not start with a leading slash to avoid writing anywhere into the system
if fname =~ '^/'
call s:Mess('Error', "***error*** (zip#Write) Path Traversal Attack detected, not writing!")
call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
return
endif
else
let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
" TODO: what to check on MS-Windows to avoid writing absolute paths?
endif
if fname =~ '^[.]\{1,2}/'
let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')'
let ps_cmd = $"call system({s:Escape(s:ZipDeleteFilePS(zipfile, fname), 1)})"
call s:TryExecGnuFallBackToPs(g:zip_zipcmd, gnu_cmd, ps_cmd)
@@ -419,7 +437,7 @@ fun! zip#Write(fname)
let fname = substitute(fname, '[', '[[]', 'g')
endif
let gnu_cmd = g:zip_zipcmd . ' -u '. s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
let gnu_cmd = g:zip_zipcmd . ' -u '. s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')'
let ps_cmd = s:ZipUpdatePS(s:Escape(fnamemodify(zipfile, ':p'), 0), s:Escape(fname, 0))
let ps_cmd = 'call system(''' . substitute(ps_cmd, "'", "''", 'g') . ''')'
@@ -455,7 +473,7 @@ fun! zip#Write(fname)
endif
" cleanup and restore current directory
cd ..
lcd ..
call delete("_ZIPVIM_", "rf")
call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
call delete(tmpdir, "rf")
@@ -477,7 +495,7 @@ fun! zip#Extract()
if fname =~ '/$'
call s:Mess('Error', "***error*** (zip#Extract) Please specify a file, not a directory")
return
elseif fname =~ '^[.]\?[.]/'
elseif fname =~ '^[.]\?[.]/' || simplify(fname) =~ '\.\.[/\\]'
call s:Mess('Error', "***error*** (zip#Browse) Path Traversal Attack detected, not extracting!")
return
endif
@@ -536,7 +554,7 @@ endfun
" s:ChgDir: {{{2
fun! s:ChgDir(newdir,errlvl,errmsg)
try
exe "cd ".fnameescape(a:newdir)
exe "lcd ".fnameescape(a:newdir)
catch /^Vim\%((\a\+)\)\=:E344/
redraw!
if a:errlvl == s:NOTE
+808
View File
@@ -0,0 +1,808 @@
" Name: Catppuccin Latte (for light) and Mocha (for dark)
" Description: Soothing pastel theme for the high-spirited!
" Author: The Catppuccin Community <catppuccin.com>
" Maintainer: Mao-Yining <mao.yining@outlook.com>
" URL: https://www.github.com/vim/colorschemes
" Last Change: 2026 Jan 31
" Generated by Colortemplate v3.0.0-beta10
hi clear
let g:colors_name = 'catppuccin'
let s:t_Co = has('gui_running') ? 16777216 : str2nr(&t_Co)
let s:tgc = has('termguicolors') && &termguicolors
hi! link Boolean Constant
hi! link CursorLineFold FoldColumn
hi! link CursorLineSign SignColumn
hi! link Debug Special
hi! link Define PreProc
hi! link Float Constant
hi! link Ignore Comment
hi! link IncSearch CurSearch
hi! link LineNrAbove LineNr
hi! link LineNrBelow LineNr
hi! link Number Constant
hi! link PopupNotification WarningMsg
hi! link PreCondit PreProc
hi! link SpecialChar Special
hi! link SpecialComment Special
hi! link SpecialKey NonText
hi! link StatusLineTerm StatusLine
hi! link StatusLineTermNC StatusLineNC
hi! link Terminal Normal
hi! link Typedef Type
if &background == 'dark'
hi Normal guifg=#cdd6f4 guibg=#1e1e2e guisp=NONE gui=NONE ctermfg=189 ctermbg=233 cterm=NONE term=NONE
hi Added guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE
hi Bold guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold
hi Changed guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi Character guifg=#94e2d5 guibg=NONE guisp=NONE gui=NONE ctermfg=158 ctermbg=NONE cterm=NONE term=NONE
hi ColorColumn guifg=NONE guibg=#181825 guisp=NONE gui=NONE ctermfg=NONE ctermbg=232 cterm=NONE term=reverse
hi Comment guifg=#9399b2 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=bold
hi Conceal guifg=#7f849c guibg=NONE guisp=NONE gui=NONE ctermfg=102 ctermbg=NONE cterm=NONE term=NONE
hi Conditional guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi Constant guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE
hi CurSearch guifg=#cdd6f4 guibg=#89556b guisp=NONE gui=NONE ctermfg=189 ctermbg=126 cterm=NONE term=reverse
hi Cursor guifg=#1e1e2e guibg=#f5e0dc guisp=NONE gui=NONE ctermfg=233 ctermbg=224 cterm=NONE term=reverse
hi CursorColumn guifg=NONE guibg=#181825 guisp=NONE gui=NONE ctermfg=NONE ctermbg=232 cterm=NONE term=NONE
hi CursorIM guifg=#1e1e2e guibg=#cba6f7 guisp=NONE gui=NONE ctermfg=233 ctermbg=183 cterm=NONE term=NONE
hi CursorLine guifg=NONE guibg=#2a2b3c guisp=NONE gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE term=underline
hi CursorLineNr guifg=#b4befe guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE term=bold
hi Delimiter guifg=#9399b2 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE
hi DiffAdd guifg=NONE guibg=#364143 guisp=NONE gui=NONE ctermfg=NONE ctermbg=22 cterm=NONE term=reverse
hi DiffChange guifg=NONE guibg=#25293c guisp=NONE gui=NONE ctermfg=NONE ctermbg=235 cterm=NONE term=NONE
hi DiffDelete guifg=NONE guibg=#443244 guisp=NONE gui=NONE ctermfg=NONE ctermbg=52 cterm=NONE term=reverse
hi DiffText guifg=NONE guibg=#3e4b6b guisp=NONE gui=NONE ctermfg=NONE ctermbg=23 cterm=NONE term=reverse
hi Directory guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi EndOfBuffer guifg=#45475a guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE term=NONE
hi Error guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=bold,reverse
hi ErrorMsg guifg=#f38ba8 guibg=NONE guisp=NONE gui=bold ctermfg=211 ctermbg=NONE cterm=bold term=bold,reverse
hi Exception guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi FoldColumn guifg=#6c7086 guibg=NONE guisp=NONE gui=NONE ctermfg=59 ctermbg=NONE cterm=NONE term=NONE
hi Folded guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi Function guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi Identifier guifg=#f2cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=181 ctermbg=NONE cterm=NONE term=NONE
hi Include guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi Italic guifg=NONE guibg=NONE guisp=NONE gui=italic ctermfg=NONE ctermbg=NONE cterm=italic term=italic
hi Keyword guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi Label guifg=#74c7ec guibg=NONE guisp=NONE gui=NONE ctermfg=117 ctermbg=NONE cterm=NONE term=NONE
hi LineNr guifg=#45475a guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE term=NONE
hi Macro guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi MatchParen guifg=#fab387 guibg=NONE guisp=NONE gui=bold ctermfg=216 ctermbg=NONE cterm=bold term=bold,underline
hi ModeMsg guifg=#cdd6f4 guibg=NONE guisp=NONE gui=bold ctermfg=189 ctermbg=NONE cterm=bold term=bold
hi MoreMsg guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi NonText guifg=#6c7086 guibg=NONE guisp=NONE gui=NONE ctermfg=59 ctermbg=NONE cterm=NONE term=NONE
hi Operator guifg=#89dceb guibg=NONE guisp=NONE gui=NONE ctermfg=116 ctermbg=NONE cterm=NONE term=NONE
hi Pmenu guifg=#9399b2 guibg=#181825 guisp=NONE gui=NONE ctermfg=103 ctermbg=232 cterm=NONE term=reverse
hi PmenuExtra guifg=#6c7086 guibg=#181825 guisp=NONE gui=NONE ctermfg=59 ctermbg=232 cterm=NONE term=NONE
hi PmenuExtraSel guifg=#6c7086 guibg=#313244 guisp=NONE gui=bold ctermfg=59 ctermbg=236 cterm=bold term=bold
hi PmenuMatch guifg=#cdd6f4 guibg=NONE guisp=NONE gui=bold ctermfg=189 ctermbg=NONE cterm=bold term=bold
hi PmenuMatchSel guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold
hi PmenuSbar guifg=NONE guibg=#313244 guisp=NONE gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE term=reverse
hi PmenuSel guifg=NONE guibg=#313244 guisp=NONE gui=bold ctermfg=NONE ctermbg=236 cterm=bold term=bold
hi PmenuThumb guifg=NONE guibg=#6c7086 guisp=NONE gui=NONE ctermfg=NONE ctermbg=59 cterm=NONE term=NONE
hi PreInsert guifg=#9399b2 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE
hi PreProc guifg=#f5c2e7 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE term=NONE
hi Question guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=standout
hi QuickFixLine guifg=NONE guibg=#52476a guisp=NONE gui=bold ctermfg=189 ctermbg=60 cterm=bold term=NONE
hi Removed guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE
hi Repeat guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi Search guifg=#cdd6f4 guibg=#3e5767 guisp=NONE gui=NONE ctermfg=189 ctermbg=24 cterm=NONE term=reverse
hi SignColumn guifg=#45475a guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE term=reverse
hi Special guifg=#f5c2e7 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE term=NONE
hi SpellBad guifg=NONE guibg=NONE guisp=#f38ba8 gui=undercurl ctermfg=211 ctermbg=NONE cterm=underline term=underline
hi SpellCap guifg=NONE guibg=NONE guisp=#f9e2af gui=undercurl ctermfg=222 ctermbg=NONE cterm=underline term=underline
hi SpellLocal guifg=NONE guibg=NONE guisp=#89b4fa gui=undercurl ctermfg=111 ctermbg=NONE cterm=underline term=underline
hi SpellRare guifg=NONE guibg=NONE guisp=#a6e3a1 gui=undercurl ctermfg=114 ctermbg=NONE cterm=underline term=underline
hi Statement guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi StatusLine guifg=#cdd6f4 guibg=#11111b guisp=NONE gui=NONE ctermfg=189 ctermbg=16 cterm=NONE term=bold,reverse
hi StatusLineNC guifg=#45475a guibg=#181825 guisp=NONE gui=NONE ctermfg=240 ctermbg=232 cterm=NONE term=bold,underline
hi StorageClass guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
hi String guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE
hi Structure guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
hi TabLine guifg=#6c7086 guibg=#11111b guisp=NONE gui=NONE ctermfg=59 ctermbg=16 cterm=NONE term=bold,underline
hi TabLineFill guifg=NONE guibg=#181825 guisp=NONE gui=NONE ctermfg=NONE ctermbg=232 cterm=NONE term=NONE
hi TabLineSel guifg=#cdd6f4 guibg=#1e1e2e guisp=NONE gui=NONE ctermfg=189 ctermbg=233 cterm=NONE term=bold,reverse
hi Tag guifg=#b4befe guibg=NONE guisp=NONE gui=bold ctermfg=147 ctermbg=NONE cterm=bold term=bold
hi Title guifg=#89b4fa guibg=NONE guisp=NONE gui=bold ctermfg=111 ctermbg=NONE cterm=bold term=NONE
hi TitleBar guifg=#cdd6f4 guibg=#181825 guisp=NONE gui=NONE ctermfg=189 ctermbg=232 cterm=NONE term=NONE
hi TitleBarNC guifg=#6c7086 guibg=#11111b guisp=NONE gui=NONE ctermfg=59 ctermbg=16 cterm=NONE term=NONE
hi Todo guifg=#f2cdcd guibg=NONE guisp=NONE gui=bold ctermfg=181 ctermbg=NONE cterm=bold term=bold,reverse
hi ToolbarButton guifg=#f5e0dc guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE term=bold,reverse
hi ToolbarLine guifg=NONE guibg=NONE guisp=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE term=reverse
hi Type guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
hi Underlined guifg=NONE guibg=NONE guisp=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline term=underline
hi VertSplit guifg=#11111b guibg=NONE guisp=NONE gui=NONE ctermfg=16 ctermbg=NONE cterm=NONE term=NONE
hi Visual guifg=NONE guibg=#45475a guisp=NONE gui=NONE ctermfg=240 ctermbg=189 cterm=reverse term=reverse
hi VisualNOS guifg=NONE guibg=#45475a guisp=NONE gui=bold ctermfg=NONE ctermbg=240 cterm=bold term=NONE
hi WarningMsg guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=standout
hi WildMenu guifg=NONE guibg=#6c7086 guisp=NONE gui=NONE ctermfg=NONE ctermbg=59 cterm=NONE term=bold
hi csvCol0 guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE
hi csvCol1 guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE
hi csvCol2 guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
hi csvCol3 guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE
hi csvCol4 guifg=#89dceb guibg=NONE guisp=NONE gui=NONE ctermfg=116 ctermbg=NONE cterm=NONE term=NONE
hi csvCol5 guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi csvCol6 guifg=#b4befe guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE term=NONE
hi csvCol7 guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE
hi csvCol8 guifg=#f5c2e7 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE term=NONE
hi debugBreakpoint guifg=#6c7086 guibg=#1e1e2e guisp=NONE gui=NONE ctermfg=59 ctermbg=233 cterm=NONE term=NONE
hi debugPC guifg=NONE guibg=#11111b guisp=NONE gui=NONE ctermfg=NONE ctermbg=16 cterm=NONE term=NONE
hi diffAdded guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE
hi diffChanged guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi diffFile guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi diffIndexLine guifg=#94e2d5 guibg=NONE guisp=NONE gui=NONE ctermfg=158 ctermbg=NONE cterm=NONE term=NONE
hi diffLine guifg=#6c7086 guibg=NONE guisp=NONE gui=NONE ctermfg=59 ctermbg=NONE cterm=NONE term=NONE
hi diffNewFile guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE
hi diffOldFile guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
hi diffRemoved guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE
hi lCursor guifg=#1e1e2e guibg=#f38ba8 guisp=NONE gui=NONE ctermfg=233 ctermbg=211 cterm=NONE term=NONE
hi markdownCode guifg=#f2cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=181 ctermbg=NONE cterm=NONE term=NONE
hi markdownCodeBlock guifg=#f2cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=181 ctermbg=NONE cterm=NONE term=NONE
hi markdownH1 guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE
hi markdownH2 guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE
hi markdownH3 guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
hi markdownH4 guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE
hi markdownH5 guifg=#74c7ec guibg=NONE guisp=NONE gui=NONE ctermfg=117 ctermbg=NONE cterm=NONE term=NONE
hi markdownH6 guifg=#b4befe guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE term=NONE
hi markdownHeadingDelimiter guifg=#fab387 guibg=NONE guisp=NONE gui=bold ctermfg=216 ctermbg=NONE cterm=bold term=bold
hi markdownLinkText guifg=#89b4fa guibg=NONE guisp=NONE gui=underline ctermfg=111 ctermbg=NONE cterm=underline term=underline
hi qfFileName guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE
hi qfLineNr guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE
if s:tgc || s:t_Co >= 256
if s:tgc
hi QuickFixLine cterm=NONE
hi Visual cterm=NONE
endif
finish
endif
if s:t_Co >= 16
hi Normal ctermfg=White ctermbg=Black cterm=NONE
hi Added ctermfg=Green ctermbg=NONE cterm=NONE
hi Bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE
hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi Comment ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi CurSearch ctermfg=White ctermbg=Red cterm=NONE
hi Cursor ctermfg=Black ctermbg=Yellow cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi CursorIM ctermfg=Black ctermbg=DarkMagenta cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorLineNr ctermfg=White ctermbg=NONE cterm=NONE
hi Delimiter ctermfg=Grey ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=Black ctermbg=DarkGreen cterm=NONE
hi DiffChange ctermfg=Black ctermbg=DarkYellow cterm=NONE
hi DiffDelete ctermfg=Black ctermbg=DarkRed cterm=NONE
hi DiffText ctermfg=Black ctermbg=DarkCyan cterm=NONE
hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Error ctermfg=Red ctermbg=NONE cterm=NONE
hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold
hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=Grey ctermbg=NONE cterm=NONE
hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE
hi Function ctermfg=Blue ctermbg=NONE cterm=NONE
hi Identifier ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Italic ctermfg=NONE ctermbg=NONE cterm=italic
hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi LineNr ctermfg=Grey ctermbg=NONE cterm=NONE
hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi ModeMsg ctermfg=White ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE
hi NonText ctermfg=Grey ctermbg=NONE cterm=NONE
hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=Grey ctermbg=DarkGrey cterm=NONE
hi PmenuExtra ctermfg=Grey ctermbg=DarkGrey cterm=NONE
hi PmenuExtraSel ctermfg=Grey ctermbg=DarkYellow cterm=bold
hi PmenuMatch ctermfg=White ctermbg=NONE cterm=bold
hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuSbar ctermfg=NONE ctermbg=DarkYellow cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=DarkYellow cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=Grey cterm=NONE
hi PreInsert ctermfg=Grey ctermbg=NONE cterm=NONE
hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE
hi Question ctermfg=Blue ctermbg=NONE cterm=NONE
hi QuickFixLine ctermfg=Black ctermbg=Magenta cterm=bold
hi Removed ctermfg=Red ctermbg=NONE cterm=NONE
hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Search ctermfg=White ctermbg=DarkBlue cterm=NONE
hi SignColumn ctermfg=Black ctermbg=NONE cterm=NONE
hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE
hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline
hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline
hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline
hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=White ctermbg=DarkGrey cterm=bold,reverse
hi StatusLineNC ctermfg=Grey ctermbg=DarkGrey cterm=NONE
hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE
hi String ctermfg=Green ctermbg=NONE cterm=NONE
hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE
hi TabLine ctermfg=Grey ctermbg=Black cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi TabLineSel ctermfg=White ctermbg=Black cterm=NONE
hi Tag ctermfg=LightGrey ctermbg=NONE cterm=bold
hi Title ctermfg=Blue ctermbg=NONE cterm=bold
hi TitleBar ctermfg=White ctermbg=DarkGrey cterm=NONE
hi TitleBarNC ctermfg=Grey ctermbg=Black cterm=NONE
hi Todo ctermfg=Yellow ctermbg=NONE cterm=bold
hi ToolbarButton ctermfg=Yellow ctermbg=NONE cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi VertSplit ctermfg=Grey ctermbg=NONE cterm=NONE
hi Visual ctermfg=Blue ctermbg=Black cterm=bold,reverse
hi VisualNOS ctermfg=NONE ctermbg=Black cterm=bold
hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=NONE ctermbg=Grey cterm=NONE
hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE
hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE
hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE
hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE
hi csvCol6 ctermfg=LightGrey ctermbg=NONE cterm=NONE
hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=Grey ctermbg=Black cterm=NONE
hi debugPC ctermfg=NONE ctermbg=Black cterm=NONE
hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE
hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi diffLine ctermfg=Grey ctermbg=NONE cterm=NONE
hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE
hi lCursor ctermfg=Black ctermbg=Red cterm=NONE
hi markdownCode ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownCodeBlock ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE
hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE
hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi markdownH6 ctermfg=LightGrey ctermbg=NONE cterm=NONE
hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline
hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE
hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE
finish
endif
if s:t_Co >= 8
hi Normal ctermfg=White ctermbg=Black cterm=NONE
hi Added ctermfg=Green ctermbg=NONE cterm=NONE
hi Bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE
hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=Black ctermbg=Grey cterm=NONE
hi Comment ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi CurSearch ctermfg=White ctermbg=Red cterm=NONE
hi Cursor ctermfg=Black ctermbg=Yellow cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi CursorIM ctermfg=Black ctermbg=DarkMagenta cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorLineNr ctermfg=White ctermbg=NONE cterm=NONE
hi Delimiter ctermfg=Grey ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=Black ctermbg=DarkGreen cterm=NONE
hi DiffChange ctermfg=Black ctermbg=DarkYellow cterm=NONE
hi DiffDelete ctermfg=Black ctermbg=DarkRed cterm=NONE
hi DiffText ctermfg=Black ctermbg=DarkCyan cterm=NONE
hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=Grey ctermbg=NONE cterm=NONE
hi Error ctermfg=Red ctermbg=NONE cterm=NONE
hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold
hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=Grey ctermbg=NONE cterm=NONE
hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE
hi Function ctermfg=Blue ctermbg=NONE cterm=NONE
hi Identifier ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Italic ctermfg=NONE ctermbg=NONE cterm=italic
hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi LineNr ctermfg=Grey ctermbg=NONE cterm=NONE
hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi ModeMsg ctermfg=White ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE
hi NonText ctermfg=Grey ctermbg=NONE cterm=NONE
hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=Grey ctermbg=DarkGrey cterm=NONE
hi PmenuExtra ctermfg=Grey ctermbg=DarkGrey cterm=NONE
hi PmenuExtraSel ctermfg=Grey ctermbg=DarkYellow cterm=bold
hi PmenuMatch ctermfg=White ctermbg=NONE cterm=bold
hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuSbar ctermfg=NONE ctermbg=DarkYellow cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=DarkYellow cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=Grey cterm=NONE
hi PreInsert ctermfg=Grey ctermbg=NONE cterm=NONE
hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE
hi Question ctermfg=Blue ctermbg=NONE cterm=NONE
hi QuickFixLine ctermfg=White ctermbg=Magenta cterm=bold
hi Removed ctermfg=Red ctermbg=NONE cterm=NONE
hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Search ctermfg=White ctermbg=DarkBlue cterm=NONE
hi SignColumn ctermfg=Black ctermbg=NONE cterm=NONE
hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE
hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline
hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline
hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline
hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=White ctermbg=DarkGrey cterm=bold,reverse
hi StatusLineNC ctermfg=Grey ctermbg=DarkGrey cterm=reverse
hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE
hi String ctermfg=Green ctermbg=NONE cterm=NONE
hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE
hi TabLine ctermfg=Grey ctermbg=Black cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi TabLineSel ctermfg=White ctermbg=DarkGrey cterm=bold
hi Tag ctermfg=LightGrey ctermbg=NONE cterm=bold
hi Title ctermfg=Blue ctermbg=NONE cterm=bold
hi TitleBar ctermfg=White ctermbg=DarkGrey cterm=NONE
hi TitleBarNC ctermfg=Grey ctermbg=Black cterm=NONE
hi Todo ctermfg=Yellow ctermbg=NONE cterm=bold
hi ToolbarButton ctermfg=Yellow ctermbg=NONE cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi VertSplit ctermfg=Grey ctermbg=NONE cterm=NONE
hi Visual ctermfg=Blue ctermbg=Black cterm=bold,reverse
hi VisualNOS ctermfg=NONE ctermbg=Black cterm=bold
hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=NONE ctermbg=Grey cterm=NONE
hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE
hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE
hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE
hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE
hi csvCol6 ctermfg=LightGrey ctermbg=NONE cterm=NONE
hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=Grey ctermbg=Black cterm=NONE
hi debugPC ctermfg=NONE ctermbg=Black cterm=NONE
hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE
hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi diffLine ctermfg=Grey ctermbg=NONE cterm=NONE
hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE
hi lCursor ctermfg=Black ctermbg=Red cterm=NONE
hi markdownCode ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownCodeBlock ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE
hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE
hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi markdownH6 ctermfg=LightGrey ctermbg=NONE cterm=NONE
hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline
hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE
hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE
finish
endif
if s:t_Co >= 0
hi CursorLineFold term=underline
hi CursorLineSign term=underline
hi Float term=NONE
hi Ignore term=NONE
hi IncSearch term=bold,reverse,underline
hi Number term=NONE
hi SpecialKey term=bold
hi StatusLineTerm term=bold,reverse
hi StatusLineTermNC term=bold,underline
hi Terminal term=NONE
finish
endif
finish
endif
if &background == 'light'
hi Normal guifg=#4c4f69 guibg=#eff1f5 guisp=NONE gui=NONE ctermfg=236 ctermbg=231 cterm=NONE term=NONE
hi Added guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE
hi Bold guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold
hi Changed guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi Character guifg=#179299 guibg=NONE guisp=NONE gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE term=NONE
hi ColorColumn guifg=NONE guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=NONE ctermbg=255 cterm=NONE term=reverse
hi Comment guifg=#7c7f93 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=bold
hi Conceal guifg=#8c8fa1 guibg=NONE guisp=NONE gui=NONE ctermfg=246 ctermbg=NONE cterm=NONE term=NONE
hi Conditional guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi Constant guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE
hi CurSearch guifg=#4c4f69 guibg=#fc8fc3 guisp=NONE gui=NONE ctermfg=236 ctermbg=211 cterm=NONE term=reverse
hi Cursor guifg=#eff1f5 guibg=#dc8a78 guisp=NONE gui=NONE ctermfg=231 ctermbg=174 cterm=NONE term=reverse
hi CursorColumn guifg=NONE guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=NONE ctermbg=255 cterm=NONE term=NONE
hi CursorIM guifg=#eff1f5 guibg=#8839ef guisp=NONE gui=NONE ctermfg=231 ctermbg=93 cterm=NONE term=NONE
hi CursorLine guifg=NONE guibg=#e9ebf1 guisp=NONE gui=NONE ctermfg=NONE ctermbg=253 cterm=NONE term=underline
hi CursorLineNr guifg=#7287fd guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE term=bold
hi Delimiter guifg=#7c7f93 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE
hi DiffAdd guifg=NONE guibg=#d0e2d1 guisp=NONE gui=NONE ctermfg=NONE ctermbg=152 cterm=NONE term=reverse
hi DiffChange guifg=NONE guibg=#e0e7f5 guisp=NONE gui=NONE ctermfg=NONE ctermbg=254 cterm=NONE term=NONE
hi DiffDelete guifg=NONE guibg=#eac8d3 guisp=NONE gui=NONE ctermfg=NONE ctermbg=224 cterm=NONE term=reverse
hi DiffText guifg=NONE guibg=#b0c7f5 guisp=NONE gui=NONE ctermfg=NONE ctermbg=153 cterm=NONE term=reverse
hi Directory guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi EndOfBuffer guifg=#bcc0cc guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE term=NONE
hi Error guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=bold,reverse
hi ErrorMsg guifg=#d20f39 guibg=NONE guisp=NONE gui=bold ctermfg=161 ctermbg=NONE cterm=bold term=bold,reverse
hi Exception guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi FoldColumn guifg=#9ca0b0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE term=NONE
hi Folded guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi Function guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi Identifier guifg=#dd7878 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE term=NONE
hi Include guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi Italic guifg=NONE guibg=NONE guisp=NONE gui=italic ctermfg=NONE ctermbg=NONE cterm=italic term=italic
hi Keyword guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi Label guifg=#209fb5 guibg=NONE guisp=NONE gui=NONE ctermfg=38 ctermbg=NONE cterm=NONE term=NONE
hi LineNr guifg=#bcc0cc guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE term=NONE
hi Macro guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi MatchParen guifg=#fe640b guibg=NONE guisp=NONE gui=bold ctermfg=202 ctermbg=NONE cterm=bold term=bold,underline
hi ModeMsg guifg=#4c4f69 guibg=NONE guisp=NONE gui=bold ctermfg=236 ctermbg=NONE cterm=bold term=bold
hi MoreMsg guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi NonText guifg=#9ca0b0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE term=NONE
hi Operator guifg=#04a5e5 guibg=NONE guisp=NONE gui=NONE ctermfg=39 ctermbg=NONE cterm=NONE term=NONE
hi Pmenu guifg=#7c7f93 guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=103 ctermbg=255 cterm=NONE term=reverse
hi PmenuExtra guifg=#9ca0b0 guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=247 ctermbg=255 cterm=NONE term=NONE
hi PmenuExtraSel guifg=#9ca0b0 guibg=#ccd0da guisp=NONE gui=bold ctermfg=247 ctermbg=253 cterm=bold term=bold
hi PmenuMatch guifg=#4c4f69 guibg=NONE guisp=NONE gui=bold ctermfg=236 ctermbg=NONE cterm=bold term=bold
hi PmenuMatchSel guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold
hi PmenuSbar guifg=NONE guibg=#ccd0da guisp=NONE gui=NONE ctermfg=NONE ctermbg=253 cterm=NONE term=reverse
hi PmenuSel guifg=NONE guibg=#ccd0da guisp=NONE gui=bold ctermfg=NONE ctermbg=253 cterm=bold term=bold
hi PmenuThumb guifg=NONE guibg=#9ca0b0 guisp=NONE gui=NONE ctermfg=NONE ctermbg=247 cterm=NONE term=NONE
hi PreInsert guifg=#7c7f93 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE
hi PreProc guifg=#ea76cb guibg=NONE guisp=NONE gui=NONE ctermfg=206 ctermbg=NONE cterm=NONE term=NONE
hi Question guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=standout
hi QuickFixLine guifg=NONE guibg=#d0baf3 guisp=NONE gui=bold ctermfg=236 ctermbg=183 cterm=bold term=NONE
hi Removed guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE
hi Repeat guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi Search guifg=#4c4f69 guibg=#a8daf0 guisp=NONE gui=NONE ctermfg=236 ctermbg=117 cterm=NONE term=reverse
hi SignColumn guifg=#bcc0cc guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE term=reverse
hi Special guifg=#ea76cb guibg=NONE guisp=NONE gui=NONE ctermfg=206 ctermbg=NONE cterm=NONE term=NONE
hi SpellBad guifg=NONE guibg=NONE guisp=#d20f39 gui=undercurl ctermfg=161 ctermbg=NONE cterm=underline term=underline
hi SpellCap guifg=NONE guibg=NONE guisp=#df8e1d gui=undercurl ctermfg=172 ctermbg=NONE cterm=underline term=underline
hi SpellLocal guifg=NONE guibg=NONE guisp=#1e66f5 gui=undercurl ctermfg=27 ctermbg=NONE cterm=underline term=underline
hi SpellRare guifg=NONE guibg=NONE guisp=#40a02b gui=undercurl ctermfg=34 ctermbg=NONE cterm=underline term=underline
hi Statement guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi StatusLine guifg=#4c4f69 guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=236 ctermbg=254 cterm=NONE term=bold,reverse
hi StatusLineNC guifg=#bcc0cc guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=250 ctermbg=255 cterm=NONE term=bold,underline
hi StorageClass guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
hi String guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE
hi Structure guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
hi TabLine guifg=#9ca0b0 guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=247 ctermbg=254 cterm=NONE term=bold,underline
hi TabLineFill guifg=NONE guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=NONE ctermbg=255 cterm=NONE term=NONE
hi TabLineSel guifg=#4c4f69 guibg=#eff1f5 guisp=NONE gui=NONE ctermfg=236 ctermbg=231 cterm=NONE term=bold,reverse
hi Tag guifg=#7287fd guibg=NONE guisp=NONE gui=bold ctermfg=69 ctermbg=NONE cterm=bold term=bold
hi Title guifg=#1e66f5 guibg=NONE guisp=NONE gui=bold ctermfg=27 ctermbg=NONE cterm=bold term=NONE
hi TitleBar guifg=#4c4f69 guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=236 ctermbg=255 cterm=NONE term=NONE
hi TitleBarNC guifg=#9ca0b0 guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=247 ctermbg=254 cterm=NONE term=NONE
hi Todo guifg=#dd7878 guibg=NONE guisp=NONE gui=bold ctermfg=167 ctermbg=NONE cterm=bold term=bold,reverse
hi ToolbarButton guifg=#dc8a78 guibg=NONE guisp=NONE gui=NONE ctermfg=174 ctermbg=NONE cterm=NONE term=bold,reverse
hi ToolbarLine guifg=NONE guibg=NONE guisp=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE term=reverse
hi Type guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
hi Underlined guifg=NONE guibg=NONE guisp=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline term=underline
hi VertSplit guifg=#dce0e8 guibg=NONE guisp=NONE gui=NONE ctermfg=254 ctermbg=NONE cterm=NONE term=NONE
hi Visual guifg=NONE guibg=#bcc0cc guisp=NONE gui=NONE ctermfg=250 ctermbg=236 cterm=reverse term=reverse
hi VisualNOS guifg=NONE guibg=#bcc0cc guisp=NONE gui=bold ctermfg=NONE ctermbg=250 cterm=bold term=NONE
hi WarningMsg guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=standout
hi WildMenu guifg=NONE guibg=#9ca0b0 guisp=NONE gui=NONE ctermfg=NONE ctermbg=247 cterm=NONE term=bold
hi csvCol0 guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE
hi csvCol1 guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE
hi csvCol2 guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
hi csvCol3 guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE
hi csvCol4 guifg=#04a5e5 guibg=NONE guisp=NONE gui=NONE ctermfg=39 ctermbg=NONE cterm=NONE term=NONE
hi csvCol5 guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi csvCol6 guifg=#7287fd guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE term=NONE
hi csvCol7 guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE
hi csvCol8 guifg=#ea76cb guibg=NONE guisp=NONE gui=NONE ctermfg=206 ctermbg=NONE cterm=NONE term=NONE
hi debugBreakpoint guifg=#9ca0b0 guibg=#eff1f5 guisp=NONE gui=NONE ctermfg=247 ctermbg=231 cterm=NONE term=NONE
hi debugPC guifg=NONE guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=NONE ctermbg=254 cterm=NONE term=NONE
hi diffAdded guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE
hi diffChanged guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi diffFile guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi diffIndexLine guifg=#179299 guibg=NONE guisp=NONE gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE term=NONE
hi diffLine guifg=#9ca0b0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE term=NONE
hi diffNewFile guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE
hi diffOldFile guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
hi diffRemoved guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE
hi lCursor guifg=#eff1f5 guibg=#d20f39 guisp=NONE gui=NONE ctermfg=231 ctermbg=161 cterm=NONE term=NONE
hi markdownCode guifg=#dd7878 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE term=NONE
hi markdownCodeBlock guifg=#dd7878 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE term=NONE
hi markdownH1 guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE
hi markdownH2 guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE
hi markdownH3 guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
hi markdownH4 guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE
hi markdownH5 guifg=#209fb5 guibg=NONE guisp=NONE gui=NONE ctermfg=38 ctermbg=NONE cterm=NONE term=NONE
hi markdownH6 guifg=#7287fd guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE term=NONE
hi markdownHeadingDelimiter guifg=#fe640b guibg=NONE guisp=NONE gui=bold ctermfg=202 ctermbg=NONE cterm=bold term=bold
hi markdownLinkText guifg=#1e66f5 guibg=NONE guisp=NONE gui=underline ctermfg=27 ctermbg=NONE cterm=underline term=underline
hi qfFileName guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE
hi qfLineNr guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE
if s:tgc || s:t_Co >= 256
if s:tgc
hi QuickFixLine cterm=NONE
hi Visual cterm=NONE
endif
finish
endif
if s:t_Co >= 16
hi Normal ctermfg=Black ctermbg=White cterm=NONE
hi Added ctermfg=Green ctermbg=NONE cterm=NONE
hi Bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE
hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=NONE ctermbg=Grey cterm=NONE
hi Comment ctermfg=Black ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi CurSearch ctermfg=Black ctermbg=Red cterm=NONE
hi Cursor ctermfg=White ctermbg=Red cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=Grey cterm=NONE
hi CursorIM ctermfg=White ctermbg=DarkMagenta cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorLineNr ctermfg=Black ctermbg=NONE cterm=NONE
hi Delimiter ctermfg=Black ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=White ctermbg=Green cterm=NONE
hi DiffChange ctermfg=White ctermbg=Yellow cterm=NONE
hi DiffDelete ctermfg=White ctermbg=Red cterm=NONE
hi DiffText ctermfg=White ctermbg=Cyan cterm=NONE
hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Error ctermfg=Red ctermbg=NONE cterm=NONE
hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold
hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE
hi Function ctermfg=Blue ctermbg=NONE cterm=NONE
hi Identifier ctermfg=DarkRed ctermbg=NONE cterm=NONE
hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Italic ctermfg=NONE ctermbg=NONE cterm=italic
hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi LineNr ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi ModeMsg ctermfg=Black ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE
hi NonText ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=Black ctermbg=Grey cterm=NONE
hi PmenuExtra ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi PmenuExtraSel ctermfg=DarkGrey ctermbg=Grey cterm=bold
hi PmenuMatch ctermfg=Black ctermbg=NONE cterm=bold
hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuSbar ctermfg=NONE ctermbg=Grey cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=Grey cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi PreInsert ctermfg=Black ctermbg=NONE cterm=NONE
hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE
hi Question ctermfg=Blue ctermbg=NONE cterm=NONE
hi QuickFixLine ctermfg=White ctermbg=Magenta cterm=bold
hi Removed ctermfg=Red ctermbg=NONE cterm=NONE
hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Search ctermfg=Black ctermbg=Cyan cterm=NONE
hi SignColumn ctermfg=White ctermbg=NONE cterm=NONE
hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE
hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline
hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline
hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline
hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=Black ctermbg=Grey cterm=bold,reverse
hi StatusLineNC ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE
hi String ctermfg=Green ctermbg=NONE cterm=NONE
hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE
hi TabLine ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=Grey cterm=NONE
hi TabLineSel ctermfg=Black ctermbg=White cterm=NONE
hi Tag ctermfg=DarkBlue ctermbg=NONE cterm=bold
hi Title ctermfg=Blue ctermbg=NONE cterm=bold
hi TitleBar ctermfg=Black ctermbg=Grey cterm=NONE
hi TitleBarNC ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi Todo ctermfg=DarkRed ctermbg=NONE cterm=bold
hi ToolbarButton ctermfg=Red ctermbg=NONE cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi VertSplit ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Visual ctermfg=Blue ctermbg=White cterm=bold,reverse
hi VisualNOS ctermfg=NONE ctermbg=White cterm=bold
hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE
hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE
hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE
hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE
hi csvCol6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE
hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=DarkGrey ctermbg=White cterm=NONE
hi debugPC ctermfg=NONE ctermbg=Grey cterm=NONE
hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE
hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi diffLine ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE
hi lCursor ctermfg=White ctermbg=Red cterm=NONE
hi markdownCode ctermfg=DarkRed ctermbg=NONE cterm=NONE
hi markdownCodeBlock ctermfg=DarkRed ctermbg=NONE cterm=NONE
hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE
hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE
hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi markdownH6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE
hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline
hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE
hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE
finish
endif
if s:t_Co >= 8
hi Normal ctermfg=Black ctermbg=White cterm=NONE
hi Added ctermfg=Green ctermbg=NONE cterm=NONE
hi Bold ctermfg=NONE ctermbg=NONE cterm=bold
hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE
hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi ColorColumn ctermfg=White ctermbg=DarkGrey cterm=NONE
hi Comment ctermfg=Black ctermbg=NONE cterm=NONE
hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE
hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi CurSearch ctermfg=Black ctermbg=Red cterm=NONE
hi Cursor ctermfg=White ctermbg=Red cterm=NONE
hi CursorColumn ctermfg=NONE ctermbg=Grey cterm=NONE
hi CursorIM ctermfg=White ctermbg=DarkMagenta cterm=NONE
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
hi CursorLineNr ctermfg=Black ctermbg=NONE cterm=NONE
hi Delimiter ctermfg=Black ctermbg=NONE cterm=NONE
hi DiffAdd ctermfg=White ctermbg=Green cterm=NONE
hi DiffChange ctermfg=White ctermbg=Yellow cterm=NONE
hi DiffDelete ctermfg=White ctermbg=Red cterm=NONE
hi DiffText ctermfg=White ctermbg=Cyan cterm=NONE
hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE
hi EndOfBuffer ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Error ctermfg=Red ctermbg=NONE cterm=NONE
hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold
hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi FoldColumn ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE
hi Function ctermfg=Blue ctermbg=NONE cterm=NONE
hi Identifier ctermfg=DarkRed ctermbg=NONE cterm=NONE
hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Italic ctermfg=NONE ctermbg=NONE cterm=italic
hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi LineNr ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi ModeMsg ctermfg=Black ctermbg=NONE cterm=bold
hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE
hi NonText ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE
hi Pmenu ctermfg=Black ctermbg=Grey cterm=NONE
hi PmenuExtra ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi PmenuExtraSel ctermfg=DarkGrey ctermbg=Grey cterm=bold
hi PmenuMatch ctermfg=Black ctermbg=NONE cterm=bold
hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold
hi PmenuSbar ctermfg=NONE ctermbg=Grey cterm=NONE
hi PmenuSel ctermfg=NONE ctermbg=Grey cterm=bold
hi PmenuThumb ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi PreInsert ctermfg=Black ctermbg=NONE cterm=NONE
hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE
hi Question ctermfg=Blue ctermbg=NONE cterm=NONE
hi QuickFixLine ctermfg=Black ctermbg=Magenta cterm=bold
hi Removed ctermfg=Red ctermbg=NONE cterm=NONE
hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi Search ctermfg=Black ctermbg=Cyan cterm=NONE
hi SignColumn ctermfg=White ctermbg=NONE cterm=NONE
hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE
hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline
hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline
hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline
hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline
hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi StatusLine ctermfg=Black ctermbg=Grey cterm=bold,reverse
hi StatusLineNC ctermfg=DarkGrey ctermbg=Grey cterm=reverse
hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE
hi String ctermfg=Green ctermbg=NONE cterm=NONE
hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE
hi TabLine ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi TabLineFill ctermfg=NONE ctermbg=Grey cterm=NONE
hi TabLineSel ctermfg=Black ctermbg=Grey cterm=bold
hi Tag ctermfg=DarkBlue ctermbg=NONE cterm=bold
hi Title ctermfg=Blue ctermbg=NONE cterm=bold
hi TitleBar ctermfg=Black ctermbg=Grey cterm=NONE
hi TitleBarNC ctermfg=DarkGrey ctermbg=Grey cterm=NONE
hi Todo ctermfg=DarkRed ctermbg=NONE cterm=bold
hi ToolbarButton ctermfg=Red ctermbg=NONE cterm=NONE
hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE
hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline
hi VertSplit ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi Visual ctermfg=Blue ctermbg=White cterm=bold,reverse
hi VisualNOS ctermfg=NONE ctermbg=White cterm=bold
hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE
hi WildMenu ctermfg=NONE ctermbg=DarkGrey cterm=NONE
hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE
hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE
hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE
hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE
hi csvCol6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE
hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE
hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE
hi debugBreakpoint ctermfg=DarkGrey ctermbg=White cterm=NONE
hi debugPC ctermfg=NONE ctermbg=Grey cterm=NONE
hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE
hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE
hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE
hi diffLine ctermfg=DarkGrey ctermbg=NONE cterm=NONE
hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE
hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE
hi lCursor ctermfg=White ctermbg=Red cterm=NONE
hi markdownCode ctermfg=DarkRed ctermbg=NONE cterm=NONE
hi markdownCodeBlock ctermfg=DarkRed ctermbg=NONE cterm=NONE
hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE
hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE
hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE
hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE
hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE
hi markdownH6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE
hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold
hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline
hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE
hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE
finish
endif
if s:t_Co >= 0
hi CursorLineFold term=underline
hi CursorLineSign term=underline
hi Float term=NONE
hi Ignore term=NONE
hi IncSearch term=bold,reverse,underline
hi Number term=NONE
hi SpecialKey term=bold
hi StatusLineTerm term=bold,reverse
hi StatusLineTermNC term=bold,underline
hi Terminal term=NONE
finish
endif
endif
" vim: et ts=8 sw=2 sts=2
+23
View File
@@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: Biome (= linter for JavaScript, TypeScript, JSX, TSX, JSON,
" JSONC, HTML, Vue, Svelte, Astro, CSS, GraphQL and GritQL files)
" Maintainer: @Konfekt
" Last Change: 2025 Nov 12
if exists("current_compiler") | finish | endif
let current_compiler = "biome"
let s:cpo_save = &cpo
set cpo&vim
exe 'CompilerSet makeprg=' .. escape('biome check --linter-enabled=true --formatter-enabled=false --assist-enabled=false --reporter=github '
\ .. get(b:, 'biome_makeprg_params', get(g:, 'biome_makeprg_params', '')), ' \|"')
CompilerSet errorformat=::%trror%.%#file=%f\\,line=%l\\,%.%#col=%c\\,%.%#::%m
CompilerSet errorformat+=::%tarning%.%#file=%f\\,line=%l\\,%.%#col=%c\\,%.%#::%m
CompilerSet errorformat+=::%totice%.%#file=%f\\,line=%l\\,%.%#col=%c\\,%.%#::%m
CompilerSet errorformat+=%-G\\s%#
CompilerSet errorformat+=%-Gcheck\ %.%#
CompilerSet errorformat+=%-G%.%#Some\ errors\ were\ emitted\ while\ running\ checks%.
let &cpo = s:cpo_save
unlet s:cpo_save
+39
View File
@@ -0,0 +1,39 @@
" Vim compiler file
" Compiler: Haskell Cabal Build file
" Maintainer: Mateo Gjika <@mateoxh>
if exists('current_compiler')
finish
endif
let current_compiler = 'cabal'
let s:save_cpo = &cpo
set cpo&vim
CompilerSet makeprg=cabal\ build
CompilerSet errorformat=
\%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:\ [%.%#],
\%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:%m,
\%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:,
\%W%f:%l:%c-%k:\ %tarning:\ [%.%#],
\%W%f:%l:%c-%k:\ %tarning:%m,
\%W%f:%l:%c-%k:\ %tarning:,
\%W%f:%l:%c:\ %tarning:\ [%.%#],
\%W%f:%l:%c:\ %tarning:%m,
\%W%f:%l:%c:\ %tarning:,
\%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:\ [%.%#],
\%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:%m,
\%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:,
\%E%f:%l:%c-%k:\ %trror:\ [%.%#],
\%E%f:%l:%c-%k:\ %trror:%m,
\%E%f:%l:%c-%k:\ %trror:,
\%E%f:%l:%c:\ %trror:\ [%.%#],
\%E%f:%l:%c:\ %trror:%m,
\%E%f:%l:%c:\ %trror:,
\%Z\ %\\+\|%.%#,
\%C%m
let &cpo = s:save_cpo
unlet s:save_cpo
+4 -7
View File
@@ -4,9 +4,7 @@ vim9script
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Contributors: Enno Nagel
# Last Change: 2024 Mar 29
# 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
# 2025 Mar 11 by The Vim Project (add comment for Dispatch)
# Last Change: 2026 Jan 10
if exists("g:current_compiler")
finish
@@ -16,7 +14,6 @@ import autoload '../autoload/context.vim'
g:current_compiler = 'context'
# CompilerSet makeprg=context
if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) ||
(!filereadable('Makefile') && !filereadable('makefile'))
var makeprg = join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ')
@@ -30,14 +27,14 @@ const context_errorformat = join([
"%-Qclose source%.%#> %f",
"%-Popen source%.%#name '%f'",
"%-Qclose source%.%#name '%f'",
"tex %trror%.%#error on line %l in file %f: %m",
"%E! %m",
"%Ztex %trror%.%#error on line %l in file %f",
"%Elua %trror%.%#error on line %l in file %f:",
"%+Emetapost %#> error: %#",
"%Emetafun%.%#error: %m",
"! error: %#%m",
"%-C %#",
"%C! %m",
"%Z[ctxlua]%m",
"%Z%.%#[ctxlua]:%l:%m",
"%+C<*> %.%#",
"%-C%.%#",
"%Z...%m",
+4 -4
View File
@@ -1,7 +1,7 @@
" vim compiler file
" Compiler: cppcheck (C++ static checker)
" Maintainer: Vincent B. (twinside@free.fr)
" Last Change: 2024 Nov 19 by @Konfekt
" Last Change: 2025 Nov 06 by @Konfekt
if exists("current_compiler") | finish | endif
let current_compiler = "cppcheck"
@@ -18,14 +18,14 @@ if !exists('g:c_cppcheck_params')
let s:undo_compiler = 'unlet! g:c_cppcheck_params'
endif
let &l:makeprg = 'cppcheck --quiet'
exe 'CompilerSet makeprg=' .. escape('cppcheck --quiet'
\ ..' --template="{file}:{line}:{column}: {severity}: [{id}] {message} {callstack}"'
\ ..' '..get(b:, 'c_cppcheck_params', get(g:, 'c_cppcheck_params', (&filetype ==# 'cpp' ? ' --language=c++' : '')))
\ ..' '..get(b:, 'c_cppcheck_includes', get(g:, 'c_cppcheck_includes',
\ (filereadable('compile_commands.json') ? '--project=compile_commands.json' :
\ (!empty(glob('*'..s:slash..'compile_commands.json', 1, 1)) ? '--project='..glob('*'..s:slash..'compile_commands.json', 1, 1)[0] :
\ (empty(&path) ? '' : '-I')..join(map(filter(split(&path, ','), 'isdirectory(v:val)'),'shellescape(v:val)'), ' -I')))))
exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"')
\ (empty(&path) ? '' : '-I')..join(map(filter(split(&path, ','), 'isdirectory(v:val)'),'shellescape(v:val)'), ' -I'))))),
\ ' \|"')
CompilerSet errorformat=
\%f:%l:%c:\ %tarning:\ %m,
-1
View File
@@ -2,7 +2,6 @@
" Language: eRuby
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2024 Apr 03
if exists("current_compiler")
+2
View File
@@ -6,6 +6,7 @@
" by Daniel Hahler, 2019 Jul 12
" added line suggested by Anton Lindqvist 2016 Mar 31
" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
" 2025 Dec 17 by The Vim Project (correctly parse: 'make: *** [Makefile:2: all] Error 1')
if exists("current_compiler")
finish
@@ -16,6 +17,7 @@ let s:cpo_save = &cpo
set cpo&vim
CompilerSet errorformat=
\make:\ ***\ [%f:%l:\ %m,
\%*[^\"]\"%f\"%*\\D%l:%c:\ %m,
\%*[^\"]\"%f\"%*\\D%l:\ %m,
\\"%f\"%*\\D%l:%c:\ %m,
+1 -1
View File
@@ -3,7 +3,7 @@
" Language: Ada (GNAT)
" $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>k
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>
" Ned Okie <nokie@radford.edu>
" $Author: krischik $
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
+11 -8
View File
@@ -3,25 +3,30 @@ vim9script
# Vim compiler file.
# Compiler: Hare
# Maintainer: Amelia Clarke <selene@perilune.dev>
# Last Change: 2025 Sep 06
# Last Change: 2026 Jan 24
# Upstream: https://git.sr.ht/~sircmpwn/hare.vim
if exists('g:current_compiler')
finish
endif
g:current_compiler = 'hare'
if filereadable('Makefile') || filereadable('makefile')
CompilerSet makeprg=make
else
const makeprg = 'hare build '
.. get(b:, 'hare_makeprg_params', get(g:, 'hare_makeprg_params', '-q'))
const makeprg = 'hare build ' .. get(g:, 'hare_makeprg_params', '-q')
execute 'CompilerSet makeprg=' .. escape(makeprg, ' "\|')
endif
CompilerSet errorformat=
\%o:%l:%v:\ syntax\ error:\ %m,
\%o:%l:%v:\ error:\ %m,
\Error:\ %m,
\%E%o:%l:%v:\ error:\ %m,
\%E%o:%l:%v:\ syntax\ error:\ %m,
\%E%o:%l:%v:\ %\\%%(unexpected\ name\ %\\)%\\@=%m,
\%C,%C\ %.%#,%C%l\ %.%#,
\%trror:\ %o:\ %\\%%(%\\h%\\w%\\+%\\%%(::%\\h%\\w%\\+%\\)%#:\ %\\)%\\@=%m,
\%trror:\ %m,
\%+EAbort:\ %m%>,
\%C%.%#,
\%-G%.%#
augroup HareQuickFix
@@ -30,6 +35,4 @@ augroup HareQuickFix
autocmd QuickFixCmdPost lmake hare#QuickFixPaths()
augroup END
g:current_compiler = 'hare'
# vim: et sts=2 sw=2 ts=8 tw=80
+23
View File
@@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: Just
" Maintainer: Alarcritty
" Last Change: 2026 Mar 20
if exists("current_compiler")
finish
endif
let current_compiler = "just"
let s:cpo_save = &cpo
set cpo-=C
CompilerSet makeprg=just
CompilerSet errorformat=
\%Eerror:\ %m,
\%C%\\s%#——▶\ %f:%l:%c,
\%-C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+34 -2
View File
@@ -7,24 +7,54 @@
" Original Source: https://github.com/mikelue/vim-maven-plugin/blob/master/compiler/maven.vim
" (distributed under same terms as LICENSE per
" https://github.com/mikelue/vim-maven-plugin/issues/13)
" Last Change: 2024 Nov 12
" Last Change: 2025 Nov 18
if exists("current_compiler")
finish
endif
let current_compiler = "maven"
" CompilerSet makeprg=mvn
execute $'CompilerSet makeprg=mvn\ --batch-mode\ {escape(get(b:, 'maven_makeprg_params', get(g:, 'maven_makeprg_params', '')), ' \|"')}'
" Error message for POM
CompilerSet errorformat=[FATAL]\ Non-parseable\ POM\ %f:\ %m%\\s%\\+@%.%#line\ %l\\,\ column\ %c%.%#,
CompilerSet errorformat+=[%tRROR]\ Malformed\ POM\ %f:\ %m%\\s%\\+@%.%#line\ %l\\,\ column\ %c%.%#
" Handle Non-parseable POM with '@<line>:<col>' embedded in the 'position:' clause.
CompilerSet errorformat+=[FATAL]\ Non-parseable\ POM\ %f:\ %m%\\s%\\+%.%#@%l:%c%.%#,
CompilerSet errorformat+=[%tRROR]\ Malformed\ POM\ %f:\ %m%\\s%\\+%.%#@%l:%c%.%#,
" Java related build messages
" JavaC messages with paths relative to module root:
" With column:
CompilerSet errorformat+=[%tARNING]\ %f:[%l\\,%c]\ %m
CompilerSet errorformat+=[%tRROR]\ %f:[%l\\,%c]\ %m
CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:[%l\\,%c]\ %m,%Z
CompilerSet errorformat+=%A%f:[%l\\,%c]\ %m,%Z
" Without column:
CompilerSet errorformat+=[%tARNING]\ %f:[%l]\ %m
CompilerSet errorformat+=[%tRROR]\ %f:[%l]\ %m
CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:[%l]\ %m,%Z
CompilerSet errorformat+=%A%f:[%l]\ %m,%Z
" Plug-in messages with absolute paths:
" with column:
CompilerSet errorformat+=[%tARNING]\ %f:%l:%c:\ %m
CompilerSet errorformat+=[%tRROR]\ %f:%l:%c:\ %m
CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:%l:%c:\ %m,%Z
CompilerSet errorformat+=%A%f:%l:%c:\ %m,%Z
" without column:
CompilerSet errorformat+=[%tARNING]\ %f:%l:\ %m
CompilerSet errorformat+=[%tRROR]\ %f:%l:\ %m
CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:%l:\ %m,%Z
CompilerSet errorformat+=%A%f:%l:\ %m,%Z
" SpotBugs
CompilerSet errorformat+=[%tRROR]\ %m%\\s%\\+\[%*[^]]]%\\s%\\+In\ %f\ %.%#,
CompilerSet errorformat+=[%tARNING]\ %m%\\s%\\+\[%*[^]]]%\\s%\\+In\ %f\ %.%#,
CompilerSet errorformat+=[%tRROR]\ %.%#\ [aA]t\ %f:\[lines\ %l-%\\d\\+]\ %.%#,
CompilerSet errorformat+=[%tARNING]\ %.%#\ [aA]t\ %f:\[lines\ %l-%\\d\\+]\ %.%#,
CompilerSet errorformat+=[%tRROR]\ %.%#\ [aA]t\ %f:\[line\ %l]\ %.%#,
CompilerSet errorformat+=[%tARNING]\ %.%#\ [aA]t\ %f:\[line\ %l]\ %.%#,
" jUnit related build messages
CompilerSet errorformat+=%+E\ \ %#test%m,%Z
@@ -36,5 +66,7 @@ CompilerSet errorformat+=%+Z%\\s%#at\ %f(%\\f%\\+:%l),
CompilerSet errorformat+=%+C%.%#
" Misc message removal
" CompilerSet errorformat+=%-GPicked\ up\ _JAVA_OPTIONS\ %.%#,
CompilerSet errorformat+=%-GAudit\ done.,
CompilerSet errorformat+=%-G[INFO]\ %.%#,
CompilerSet errorformat+=%-G[debug]\ %.%#
+4 -4
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: Mypy (Python static checker)
" Maintainer: @Konfekt
" Last Change: 2024 Nov 19
" Last Change: 2025 Nov 06
if exists("current_compiler") | finish | endif
let current_compiler = "mypy"
@@ -10,9 +10,9 @@ let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=mypy
let &l:makeprg = 'mypy --show-column-numbers '
\ ..get(b:, 'mypy_makeprg_params', get(g:, 'mypy_makeprg_params', '--strict --ignore-missing-imports'))
exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"')
exe 'CompilerSet makeprg=' .. escape('mypy --show-column-numbers '
\ ..get(b:, 'mypy_makeprg_params', get(g:, 'mypy_makeprg_params', '--strict --ignore-missing-imports')),
\ ' \|"')
CompilerSet errorformat=%f:%l:%c:\ %t%*[^:]:\ %m
let &cpo = s:cpo_save
+2 -3
View File
@@ -2,7 +2,8 @@
" Compiler: Pandoc
" Maintainer: Konfekt
" Last Change: 2024 Nov 19
" 2025 May 15 Update the title regex for CompilerSet #17321
" 2025 May 15 by Vim Project: Update the title regex for CompilerSet #17321
" 2026 Jan 10 by Vim Project: Do not set the title #19048
"
" Expects output file extension, say `:make html` or `:make pdf`.
" Passes additional arguments to pandoc, say `:make html --self-contained`.
@@ -52,8 +53,6 @@ endfunction
execute 'CompilerSet makeprg=pandoc'..escape(
\ ' --standalone'..
\ (s:PandocFiletype(&filetype) ==# 'markdown' && (getline(1) =~# '^%\s\+\S\+' || (search('^title:\s\+\S\+', 'cnw') > 0)) ?
\ '' : ' --metadata title=%:t:r:S')..
\ ' '..s:PandocLang()..
\ ' --from='..s:PandocFiletype(&filetype)..
\ ' '..get(b:, 'pandoc_compiler_args', get(g:, 'pandoc_compiler_args', ''))..
+1 -1
View File
@@ -1,6 +1,6 @@
" Vim compiler file
" Compiler: Perl syntax checks (perl -Wc)
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Christian J. Robinson <heptite@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+1 -1
View File
@@ -1,6 +1,6 @@
" Vim compiler file
" Compiler: perlcritic
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Doug Kearns <dougkearns@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+1 -1
View File
@@ -1,6 +1,6 @@
" Vim compiler file
" Compiler: podchecker
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Doug Kearns <dougkearns@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+4 -3
View File
@@ -3,6 +3,7 @@
" Maintainer: Daniel Moch <daniel@danielmoch.com>
" Last Change: 2024 Nov 07 by The Vim Project (added params variable)
" 2024 Nov 19 by the Vim Project (properly escape makeprg setting)
" 2025 Nov 06 by the Vim Project (do not set buffer-local makeprg)
if exists("current_compiler") | finish | endif
let current_compiler = "pylint"
@@ -11,10 +12,10 @@ let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=ruff
let &l:makeprg = 'pylint ' .
exe 'CompilerSet makeprg=' .. escape('pylint ' .
\ '--output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no ' .
\ get(b:, "pylint_makeprg_params", get(g:, "pylint_makeprg_params", '--jobs=0'))
exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"')
\ get(b:, "pylint_makeprg_params", get(g:, "pylint_makeprg_params", '--jobs=0')),
\ ' \|"')
CompilerSet errorformat=%A%f:%l:%c:%t:\ %m,%A%f:%l:\ %m,%A%f:(%l):\ %m,%-Z%p^%.%#,%-G%.%#
let &cpo = s:cpo_save
+25
View File
@@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: Pyright (Python Type Checker)
" Maintainer: @konfekt
" Last Change: 2025 Feb 7
if exists("current_compiler") | finish | endif
let current_compiler = "pyright"
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=pyright
" CompilerSet makeprg=basedpyright
exe 'CompilerSet makeprg=' .. escape(
\ get(b:, 'pyright_makeprg', get(g:, 'pyright_makeprg', 'pyright')),
\ ' \|"')
CompilerSet errorformat=
\%E%f:%l:%c\ -\ error:\ %m,
\%W%f:%l:%c\ -\ warning:\ %m,
\%N%f:%l:%c\ -\ note:\ %m,
\%C[\ \t]\ %.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
-1
View File
@@ -2,7 +2,6 @@
" Language: Rake
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2018 Mar 02
" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
+3
View File
@@ -3,6 +3,7 @@
" Maintainer: Wu, Zhenyu <wuzhenyu@ustc.edu>
" URL: https://rime.im
" Latest Revision: 2024-04-09
" Last Change: 2025 Nov 16 by The Vim Project (set errorformat)
if exists('b:current_compiler')
finish
@@ -25,6 +26,8 @@ for s:shared_data_dir in ['/sdcard/rime-data', '/run/current-system/sw/share/rim
endfor
execute 'CompilerSet makeprg=rime_deployer\ --build\ %:p:h:S\' s:shared_data_dir
unlet s:prefix s:shared_data_dir
" CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m
CompilerSet errorformat&
let &cpoptions = s:save_cpoptions
unlet s:save_cpoptions
-1
View File
@@ -2,7 +2,6 @@
" Language: RSpec
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2018 Aug 07
" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
-1
View File
@@ -3,7 +3,6 @@
" Function: Syntax check and/or error reporting
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Jan 06
" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
-1
View File
@@ -2,7 +2,6 @@
" Language: Test::Unit - Ruby Unit Testing Framework
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2014 Mar 23
" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
+6 -3
View File
@@ -3,6 +3,8 @@
" Maintainer: @pbnj-dragon
" Last Change: 2024 Nov 07
" 2024 Nov 19 by the Vim Project (properly escape makeprg setting)
" 2025 Nov 06 by the Vim Project (do not set buffer-local makeprg)
" 2024 Dec 24 by the Vim Project (mute Found messages)
if exists("current_compiler") | finish | endif
let current_compiler = "ruff"
@@ -11,10 +13,11 @@ let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=ruff
let &l:makeprg= 'ruff check --output-format=concise '
\ ..get(b:, 'ruff_makeprg_params', get(g:, 'ruff_makeprg_params', '--preview'))
exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"')
exe 'CompilerSet makeprg=' .. escape('ruff check --output-format=concise '
\ ..get(b:, 'ruff_makeprg_params', get(g:, 'ruff_makeprg_params', '--preview')),
\ ' \|"')
CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f:
CompilerSet errorformat+=%-GFound\ %.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+5 -5
View File
@@ -2,6 +2,8 @@
" Compiler: Rust Compiler
" Maintainer: Chris Morgan <me@chrismorgan.info>
" Latest Revision: 2023-09-11
" 2025 Nov 15 by Vim project: remove test for Vim patch 7.4.191
" 2025 Dec 18 by Vim project: detect more errors #18957
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
if exists("current_compiler")
@@ -17,11 +19,7 @@ set cpo&vim
if get(g:, 'rustc_makeprg_no_percent', 0)
CompilerSet makeprg=rustc
else
if has('patch-7.4.191')
CompilerSet makeprg=rustc\ \%:S
else
CompilerSet makeprg=rustc\ \"%\"
endif
CompilerSet makeprg=rustc\ \%:S
endif
" New errorformat (after nightly 2016/08/10)
@@ -32,8 +30,10 @@ CompilerSet errorformat=
\%Eerror:\ %m,
\%Eerror[E%n]:\ %m,
\%Wwarning:\ %m,
\%Wwarning[E%n]:\ %m,
\%Inote:\ %m,
\%C\ %#-->\ %f:%l:%c,
\%C\ %#╭▸\ %f:%l:%c,
\%E\ \ left:%m,%C\ right:%m\ %f:%l:%c,%Z
" Old errorformat (before nightly 2016/08/10)
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Language: TOML
" Maintainer: Konfekt
" Last Change: 2025 Oct 28
" Last Change: 2025 Oct 29
if exists("current_compiler") | finish | endif
let current_compiler = "tombi"
@@ -44,7 +44,7 @@ if s:tombi_nocolor
if &shell =~# '\v<%(cmd|cmd)>'
CompilerSet makeprg=set\ NO_COLOR=1\ &&\ tombi\ lint
elseif &shell =~# '\v<%(powershell|pwsh)>'
CompilerSet makeprg=$env:NO_COLOR="1";\ tombi\ lint
CompilerSet makeprg=$env:NO_COLOR=\"1\";\ tombi\ lint
else
echoerr "tombi compiler: Unsupported shell for Windows"
endif
+20
View File
@@ -0,0 +1,20 @@
" Vim compiler file
" Compiler: Ty (Python Type Checker)
" Maintainer: @konfekt
" Last Change: 2024 Dec 24
if exists("current_compiler") | finish | endif
let current_compiler = "ty"
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=ty
exe 'CompilerSet makeprg=' .. escape(
\ get(b:, 'ty_makeprg', get(g:, 'ty_makeprg', 'ty check --no-progress --color=never'))
\ ..' --output-format=concise', ' \|"')
CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f:
CompilerSet errorformat+=%-GFound\ %.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+3
View File
@@ -2,6 +2,7 @@
" Language: vimdoc
" Maintainer: Wu, Zhenyu <wuzhenyu@ustc.edu>
" Latest Revision: 2024-04-13
" Last Change: 2025 Nov 16 by The Vim Project (set errorformat)
"
" If you can not find 'vimdoc' in the package manager of your distribution e.g
" 'pip', then you may need to build it from its source.
@@ -15,6 +16,8 @@ let s:save_cpoptions = &cpoptions
set cpoptions&vim
CompilerSet makeprg=vimdoc
" CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m
CompilerSet errorformat&
let &cpoptions = s:save_cpoptions
unlet s:save_cpoptions

Some files were not shown because too many files have changed in this diff Show More