1100 Commits
Author SHA1 Message Date
zeertzjqandzuloloxi 1332ed9027 vim-patch:9.2.1288: E110 "missing ')'" error does not say where the problem is (#42698)
Problem:  An invalid nested expression such as "echo (0!)" gives
          "E110: Missing ')'" although the ")" is there, and does not say
          where the expression is not valid.
Solution: When text follows the expression, add it to the E110 message, as
          E697 does for a List (zuloloxi).

Without parentheses "echo 0!" already gives E15 with the text "!".  When
nothing follows the expression the ")" is really missing and the message
is as before.

related: vim/vim#17602
closes:  vim/vim#21607

https://github.com/vim/vim/commit/d06691450ab0dc2ea72a997f8426002f66da2ac2

Co-authored-by: zuloloxi <10588750+zuloloxi@users.noreply.github.com>
2026-11-05 08:51:27 +08:00
Justin M. Keyes 06ac562766 fix(eval): leaks and Lua stack misuse on failed conversion #42643
Problem:
- `json_encode()` leaks the conversion stack if a dict key nested more
  than 8 levels deep is invalid UTF-8, and leaks the string of an
  invalid special string (`v:msgpack_types.string`).
- Lua conversion passes the total stack size to `lua_checkstack()`,
  which expects the extra slots, so it fails at half the real limit.
- If `nlua_push_typval()` fails, the Lua stack is not restored: e.g.
  `vim.g.x` returns part of the half-built value.

Solution:
- `encode_vim_to_*()` owns the conversion state, so converter macros
  may return at any point.
- Check the Lua stack once per value, for 3 extra slots.
- Restore the Lua stack and push nil on failure.
2026-11-01 20:31:29 -05:00
Jan Edmund Lazo e42390b8cb build(vim-patch): filter n/a files via pathspec #42455
"git" is not informed that all Vim files in vim_na_files.txt are N/A
to Neovim.
Git requires "exclude" pathspec (:^) to use vim_na_files.txt.

pathspec supports globs and character ranges.
Migrate regexs from vim_na_regexp.txt to optimize grep.

----

Some "*cp125[01]*" files from Vim remain applicable to Neovim.
Do not auto-N/A their patches.

----

https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-pathspec
2026-10-28 09:45:39 -04:00
Jan Edmund Lazo fc51aea475 build(vim-patch): n/a patches since v9.1.0500 #42320
* build(vim-patch): v9.1.0500 is n/a

* build(vim-patch): n/a change in src/po/Make*

Nvim uses "TARGET_FILE:nvim_bin" in CMake.

* build(vim-patch): runtime/doc/pi_netrw.txt should be n/a

Minor differences between netrw docs are not relevant to Neovim.
Vim keeps pi_netrw.txt to add/override few lines
but it is partly "behind" upstream netrw.

- runtime/doc/pi_netrw.txt
- runtime/pack/dist/opt/netrw/doc/netrw.txt

* build(vim-patch): track ':Tutor' patches

":Tutor" remains maintained based on recent Github issues
such that Neovim does not rely on Vim patches to fix its own
implementation.
Develepor may port Vim patches that fix Vim's implementation of ":Tutor"
but Vim and Neovim remain incompatible
after Neovim replace metadata JSON files with inline comments,
https://github.com/neovim/neovim/issues/38527 .
Vim and Neovim are not obligated to restrict their tutor files
in order to ensure 100% (backward) compatibility on both editors.
Both will use their exclusive and incompatible features to enhance
the user experience in ":Tutor".

Continue to track ":Tutor" patches to not discourage
contributors on both projects.

Target 6fa304f27d630f4c11c903a61d434f739230e8e1 .

* build(vim-patch): n/a tabpanel changes from v9.1.1391
2026-10-13 05:09:27 -04:00
Jan Edmund Lazo 39a740aaa7 build(vim-patch): v9.0.1572 is n/a #42224
defaults.vim is N/A since 2ef1b68751 .
Vim's "mch_libcall()" and Nvim's "os_libcall()" are incompatible
since Nvim relies on libuv.
2026-10-04 09:37:36 -04:00
Jan Edmund Lazo fb1f321b0e build(vim-patch.sh): -L,-l works for 1 file (#42227)
https://github.com/neovim/neovim/pull/42121 broke "-L" and "-l"
for commits specific to 1 file
because majority of Vim commits are tagged
and "git log --tags --no-walk" is inconsistent for 1-file queries.
"git log --stdin --no-walk" does work so it's always required
regardless of additional formatting.

----

Tags v9.0.0055 and v9.0.0056 are on the same commit.
Detecting 1 of the tags resolves the other for "-L" and "-l".
Patch 9.0.0056 is N/A based on
commit e15f79c659 .
vim-patch.sh can't auto-detect v9.0.0056 yet.

----

TODO
Prevent developer from overwriting essential "--format=" flags
else vim-patch.sh produces invalid Git refs.
2026-10-04 11:28:46 +08:00
Jan Edmund Lazo a94620498b build(vim-patch): n/a patches for translations #42222
* build(vim-patch): n/a hunks from v9.0.1410

Detect patches for N/A translations.
https://github.com/neovim/neovim/pull/5622 remove some
non-UTF8 "po" files.
Nvim has different process for "mo" files.

* build(vim-patch): tojavascript.vim is n/a

N/A since https://github.com/neovim/neovim/pull/36505 .

* build(vim-patch): v9.0.1537 is n/a

PO_VIM_ variables are only for N/A tasks: "first_time", "*.pot".
"first_time" task has similar/identical shell commands to "*.pot" task.
2026-10-03 13:56:09 -04:00
Jan Edmund Lazo 2fa65d5441 build(vim-patch): n/a patches for runtime/ #42206
* build(vim-patch): v8.2.5000 is n/a

Commit 36e3f4f4c4 removed the section
for "win32-compiling".
"$WSLENV" is defined outside of WSL based on my setup.
I never run Neovim on WSL beyond testing patches like this one.

* build(vim-patch): "--not-a-term" flag is n/a

Target v8.2.5084.
2026-10-03 11:53:54 -04:00
Jan Edmund Lazo ead69d9657 build(vim-patch): n/a patches for restricted mode, Vim9, popupwin #42184
* build(vim-patch): v8.2.4282 should be n/a

"restricted-mode" is N/A since https://github.com/neovim/neovim/pull/11996

* build(vim-patch): v8.2.1858 is n/a

Vim9 "ret_.*()" return type functions are N/A.

* build(vim-patch): n/a tags for encryption docs
2026-10-01 05:30:16 -04:00
zeertzjq 237f04ee46 build(vim-patch.sh): fix missing HEAD commit (#42157)
Instead of filtering out HEAD, use --decorate-refs='/ref/tags/*' so that
HEAD is not included in the ref name.
2026-09-30 13:38:57 +08:00
Jan Edmund Lazo 66881af488 fix(vim-patch): detect patch 0 for tags v8.2.0,v9.0.0 #42136
Commit title for those tags do not use the template "patch: vX.Y.Z"
compared to other tagged commits.
Instead of parsing the commmit title, check refs/tags/.
2026-09-29 06:46:06 -04:00
zeertzjq f262eaeb6c build(vim-patch.sh): make -l list in chronological order (#42123)
Combine the missing numbers and hashes (which are sorted separately),
and then use a single `git log` to list them in chronological order.
2026-09-28 18:49:42 +08:00
Jan Edmund Lazo ef3ae3d19d perf(vim-patch.sh): fast list_missing_vimpatches() #42121
Treating Bash associative array as Set/Map data structure
does not scale for fast lookups.
If I run vim-patch.sh before sleeping,
then it should complete after 5 hours of sleep.

"grep -v -f <()" allows vim-patch.sh to complete within minute(s)
and reuses "list_vimpatch_numbers()" which generates the
Vim patch numbers, merged to Neovim.
2026-09-27 19:18:47 -04:00
Christian Clason 378128aab9 build(deps): bump utf8proc to v2.12.0
* Update to Unicode 18.0
* Use upstreamed `build.zig`
2026-09-25 10:07:50 +02:00
Jan Edmund Lazo ebc4f234c2 build(vim-patch): misc n/a patches for runtime/ #42044
* build(vim-patch): 1b7fbe726a4e7ad117bace7e40f5e0a286a2cd5b is n/a

"X11" section removed in e099b545be .

* build(vim-patch): n/a links in version9.txt

Patch "vX.Y.0000" modifies Table-of-Contents (TOC) for
"runtime/doc/version.*\.txt"
N/A.
Those version doc files remain relevant for "news.txt",
not the Vim version bump.
2026-09-24 14:20:05 -04:00
Jan Edmund Lazo b424237b83 build(vim-patch): faster lookup for vim-patch: commits #42065
- no subshell just for git log
- start lookup for "missing vim-patch: commits" on
  commit 38fb835854
- remove "vim-patch:" prefix for keys in "$tokens" array
2026-09-24 11:38:57 -04:00
Jan Edmund Lazo 62324eaaec build(vim-patch): n/a patches from vim_na_regexp.txt #42017
* build(vim-patch): 06a604dc8ed0159773e0d6515a239f22e0cf0b5a is n/a

runtime/xdg.vim is always N/A.

* build(vim-patch): 07dc94023ca9e6cecb139d855814bda8a985d98c is n/a

GTK4 GUI is n/a.

* build(vim-patch): 3f53a2ce2fa96e865b9f4d2c818f34ccf9ff720f is n/a

server2client() is n/a.

* build(vim-patch): 44021be4852e665b06357d6739c4f00faa447b3d is n/a
2026-09-21 04:32:06 -04:00
Jan Edmund Lazo c81ad6a576 build(vim-patch): n/a patch since v9.2.0723 #41998
* build(vim-patch): n/a tags from bc2141d27d74823a12a8c0b94262583b45edfed1

Nvim kept docs for command ":TOhtml", not the section for "2html.vim".
Vim9script rewrite makes the plugin N/A.

* build(vim-patch): v9.2.0723 is n/a

* build(vim-patch): v9.2.0875 is n/a

Nvim does not compile GTK4 for its GUI.

* build(vim-patch): v9.2.0912 is n/a

":hardcopy" has been N/A since v0.9.
I can't auto-N/A v9.2.0898 because of OS #ifdefs.

* build(vim-patch): v9.2.1109 is n/a
2026-09-20 07:38:53 -04:00
Jan Edmund Lazo 60a613a997 build(vim-patch): n/a patches starting from v9.2.0198 #41952
* build(vim-patch): v9.2.0198 is n/a

* build(vim-patch): v9.2.0248 is almost auto n/a

Regex "[^\s]" does not work to detect hunk for js_decode() as N/A.
"[^[:space:]]" works as an improvement replacement
since Vim help files use tabs.

https://git-scm.com/docs/git-log#Documentation/git-log.txt---word-diff-regexregex

* build(vim-patch): v9.2.0316 is n/a

All "netbeans" files are N/A.

* build(vim-patch): add n/a tags from v9.2.0386

* build(vim-patch): v9.2.404 is n/a

* build(vim-patch): n/a tags from v9.2.0407

* build(vim-patch): v9.2.507 is n/a

Treat comments for unused error codes as N/A
because the rest of the patch can be N/A.
Vim9 keywords and error messages are N/A.
Automation can sort "src/errors.h"
and detect unused/unsupported error codes to sync with Vim's error.h .
2026-09-18 07:18:30 -04:00
Jan Edmund Lazo aaee64e008 build(vim-patch): fix xfuncname for runtime/doc/, detect n/a patches for Vimscript syntax #41898
* build(vim-patch): fix vimhelp xfuncname

cfa8f9a3f285060152ebbdbf86fbc7aecf1dd756 has changes near:

> - If the BufRead* events allow you to edit a compressed file, the FileRead*

Update git-diff "xfuncname" to skip the above line
when searching for nearest "hunk header".

* build(vim-patch): f27e80a6e183a617dd885311871fd4eaa6075d16 is n/a

Nvim generates "runtime/syntax/vim/generated.vim"
based on "src/nvim/*.lua",
specifically "src/nvim/ex_cmds.lua" for Ex commands,
since https://github.com/neovim/neovim/pull/2288 .

* build(vim-patch): ee865249b1edd56e297f12025e11defb6a4bf445 is n/a

* build(vim-patch): a44ced5763d377c71c96562b894c1c026ba89328 is n/a
2026-09-14 02:27:53 -04:00
Jan Edmund Lazo f15d85b924 build(vim-patch): n/a patches since v9.1.1564 #41772
* build(vim-patch): v9.1.1564 is n/a

* build(vim-patch): v9.1.1743 is n/a

* build(vim-patch): v9.1.1745 is n/a

* build(vim-patch): 39acad46fa7bce974f2bb036843009b8f4669ff8 is n/a

colorresp plugin is n/a.
Vim added it v9.1.1703 and then removed it in v9.1.1757.
Nvim does not rely on Vimscript (API) to set 'v:term.*' variables
for the end-users terminal.

* build(vim-patch): v9.1.1795 is n/a

* build(vim-patch): 93d9d196ed3a70174ba5e790d9e36e0478e84a09 is n/a

X11 fonts for multi-byte feature is N/A.

* build(vim-patch): v9.2.0060 is n/a

Vim's implementation/support of Debug Adapter Protocol is N/A,
especially if it relies on Vim channels, JSON, JSON-RPC, etc.

https://github.com/neovim/neovim/issues/11732 has discussion
and status updates for Nvim's implementation.

* build(vim-patch): v9.2.0153 is n/a

Vim channel is N/A.
Nvim generates "runtime/syntax/vim/generated.vim"
based on "src/nvim/*.lua"
since https://github.com/neovim/neovim/pull/2288 .
2026-09-12 18:36:06 -04:00
bfredl 623508dc06 Merge pull request #41751 from bfredl/stringly_nils
test(ci): non fatal errors for [NULL] safety in vim_snprintf
2026-09-08 17:12:26 +02:00
bfredl b6b190291d fix(api): do not pull a fast one for nvim_del_augroup_by_id
This is a bit more boilerplate because of painful impedance mismatch (is
augroup names the root source of truth? is ids the source of truth? who
knows? what does truth even mean?), but show an error reflecting what
the caller actually tried (they passed in an invalid id, not a null
string)
2026-09-08 14:04:10 +02:00
Jan Edmund Lazo cb81d878a2 build(vim-patch): de10c87bed5a79ed80f1bb428a391faefdff13c9 is almost n/a
Vim desktop files are N/A.
"src/po/zh_CN.UTF-8.po" is applicable.
2026-09-07 13:37:41 -04:00
Jan Edmund Lazo 53b372d443 build(vim-patch): n/a patches for src/po/
"vim.pot" file and tasks are N/A.
"clean" task is N/A after migrating to CMake.

N/A patches:
- 59bd74ed4c9ab366182c93bdc430b186729abbad
- 5d552d652b0197063565ab937d30f92a9ed28545
- 3c8d32e4fc17b4b38b17d7c039ee6203d1b01078
2026-09-07 13:37:34 -04:00
Jan Edmund Lazo e475939fcf build(vim-patch): 015c84ce541495fad568c66b0dd17faefe1c1389 is n/a 2026-09-07 13:37:34 -04:00
Jan Edmund Lazo 552fb90f74 build(vim-patch): v9.1.0681 should be auto-n/a
Vim screendump files and Vim9script screendump code are N/A.
vim-patch.sh cannot auto-N/A the entire patch
because of "src/testdir/README.txt".
2026-09-07 13:37:33 -04:00
Jan Edmund Lazo e034dbadec build(vim-patch): n/a 5400a5d4269874fe4f1c35dfdd3c039ea17dfd62
comment,editorconfig plugins in Vim's runtime/pack/, are N/A.
Editorconfig is unrelated but Vim did not fix the bundled version
from editorconfig-vim and did not port the upstream fix.

https://github.com/editorconfig/editorconfig-vim/commit/0d54ea863089fb13be423b4aed6cca35f3a5d778
2026-09-02 17:44:53 -04:00
Jan Edmund Lazo 9d51351218 build(vim-patch): 2ca7d5f4831ce3d86cdc3f0c844fc50ea0deb7e5 is n/a
v9.1.1029 removes runtime/doc/uganda.rux.
2026-09-02 17:44:52 -04:00
Jan Edmund Lazo bb3adbe52e build(vim-patch): v9.0.1994 is n/a 2026-09-02 17:44:52 -04:00
Jan Edmund Lazo 84f66fa687 build(vim-patch): v9.0.1557 is n/a
Global variables with "_for_testing" suffix are modified
in "f_test_override()", N/A to Nvim.
If a test needs them, then port the relevant code outside
"f_test_override()" via LuaJIT C FFI.
2026-09-02 17:44:52 -04:00
Jan Edmund Lazo 47ce0d1f87 build(vim-patch): v9.1.0578 is n/a #41585
Nvim implementation of ":TOhtml" fails on test_tohtml.vim
because they compare with the sample test files.
Customizing the sample files to pass Vim's test is maintenance burden.
Nvim has lua functional tests to skip Vim's tests.

Nvim's test Makefile computes NEW_TESTS, NEW_TESTS_RES, unlike Vim.
Likely N/A.

Following runtime/ files are N/A after Lua rewrite.

- runtime/autoload/tohtml.vim
- runtime/syntax/2html.vim
- runtime/plugin/tohtml.vim
2026-09-02 04:54:35 -04:00
Justin M. Keyes 97cf2041c1 Merge #41550 from janlazo/na-patch-channel
build(vim-patch): n/a channel,terminal,test,unicode patches
2026-08-30 08:45:06 -04:00
Christian Clason 752f4b944b build(deps): bump unibilium to v2.1.4
Build system adaptations to upstream changes:

* added `build.zig`
* `CMakeLists.txt` with (opt-out) support for docs, tests, tools
  (disabled)
2026-08-30 09:43:19 +02:00
Jan Edmund Lazo 97f06b936e build(vim-patch): v8.2.4535 is n/a
Nvim removed support for DOS 8.3 filename.
2026-08-29 20:26:12 -04:00
Jan Edmund Lazo c47a2fbf7b build(vim-patch): v8.2.3597 is n/a
Nvim already has 'scrollback' option.
2026-08-29 19:37:59 -04:00
Jan Edmund Lazo 063c76f500 build(vim-patch): v8.2.3068 is almost auto n/a
Nvim uses utf8proc or an older process involving "src/unicode/"
and "download-unicode-files.sh" to decouple unicode characters
from "mbyte.c".
These unicode patches should be auto N/A but the diff hunk xfuncname
is wrong for utf_char2cells().
Is it because of the `#ifdef`?
Need a volunteer to inspect if these patches still have relevant
changes

Nvim

```c
/// same as utf_composinglike but operating on UCS-4 values
bool utf_iscomposing(int c1, int c2, GraphemeState *state)
{
  return (!utf8proc_grapheme_break_stateful(c1, c2, state)
          || arabic_combine(c1, c2));
}
```

Vim

```c
/*
 * Return TRUE if "c" is a composing UTF-8 character.  This means it will be
 * drawn on top of the preceding character.
 * Based on code from Markus Kuhn.
 */
    int
utf_iscomposing(int c)
{
    // Sorted list of non-overlapping intervals.
    // Generated by ../runtime/tools/unicode.vim.
    static struct interval combining[] =
    {
	{0x0300, 0x036f},
	{0x0483, 0x0489},
	{0x0591, 0x05bd},
        // ...
	{0x0300, 0x036f},
	{0x0483, 0x0489},
	{0x0591, 0x05bd},
    };

    return intable(combining, sizeof(combining), c);
}
```
2026-08-29 14:49:56 -04:00
Jan Edmund Lazo ee19522048 build(vim-patch): v8.2.2872 is n/a 2026-08-29 14:49:56 -04:00
Jan Edmund Lazo 9e8f032f33 build(vim-patch): v9.2.0420 is n/a 2026-08-29 14:49:56 -04:00
Jan Edmund Lazo 985f834cc7 build(vim-patch): v8.2.4758 is n/a 2026-08-29 14:49:55 -04:00
Justin M. Keyes e28d725e46 refactor(scripts): drop download-unicode-files.sh #41528
Unused since 26be6446e5, which removed src/unicode/ in favor of
utf8proc.
2026-08-28 15:21:42 +00:00
Jan Edmund Lazo 19516b78b9 build(vim-patch): v9.2.0565 is n/a 2026-08-26 23:30:46 -04:00
Jan Edmund Lazo 0b52504cd8 build(vim-patch): v8.2.4157 is n/a 2026-08-26 20:42:55 -04:00
Jan Edmund Lazo 38039e639b build(vim-patch): v8.2.3761 is n/a 2026-08-26 20:37:43 -04:00
Jan Edmund Lazo 8ae46cbd81 build(vim-patch): v8.2.3589 is n/a
termopen() and term_start() are not 1-1 because of Windows.
See Vim's ":h job_start".

```
{command} can be a String.  This works best on MS-Windows.  On
Unix it is split up in white space separated parts to be
passed to execvp().  Arguments in double quotes can contain
white space.

{command} can be a List, where the first item is the
executable and further items are the arguments.  All items are
converted to String.  This works best on Unix.
```
2026-08-26 20:25:13 -04:00
Jan Edmund Lazo f88655b527 build(vim-patch): v8.2.0922 is n/a 2026-08-26 20:12:12 -04:00
Jan Edmund Lazo c6ba487b89 build(vim-patch): n/a ba43008a2d6788eeb8ff78ae39dedd28598ae658 2026-08-26 20:12:11 -04:00
Justin M. Keyes 7ecab736f5 ci: no AI advertisements #41492
Problem:
Claude and friends love to sprinkle advertisements in commit messages.

Solution:
Allow a generic "AI-assisted" token only.
Reject useless mentions of AI services, sessions, and other cringe.

Disclosure: This PR was authored by an sapient turnip 🫜, raised in
moist, fluffy soil, tilled by the blurry wings of a hummingbird.
2026-08-25 15:42:33 -04:00
Jan Edmund Lazo 5009467965 build(vim-patch): v9.0.1760 is n/a 2026-08-23 22:44:13 -04:00
Jan Edmund Lazo 15f6b7a7f5 build(vim-patch): vim9 uf_type_list is n/a
From v8.2.0149 .
Target v9.0.1605 .
2026-08-23 22:44:13 -04:00