From 9143da2a05f4f4c70bf4491639d415e8056d8f84 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 08:52:51 -0400 Subject: [PATCH 1/8] build(vim-patch): n/a vim9 patch 9.0.1821 --- scripts/vim-patch.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/vim-patch.sh b/scripts/vim-patch.sh index 8558e29f93..49b7e42fb4 100755 --- a/scripts/vim-patch.sh +++ b/scripts/vim-patch.sh @@ -962,7 +962,7 @@ is_na_patch() { HUNKS=$(git -C "${VIM_SOURCE_DIR}" diff-tree --no-commit-id -r -b -U0 \ '-I^\s+$' \ '-I^\s*/?\*/?$' \ - '-I^\s*(//|/?\*).*\s([vV]im9|channel|job|popup|sound|terminal)' \ + '-I^\s*(//|/?\*).*\s([vV]im9|E[0-9]{4} - |channel|job|popup|sound|terminal)' \ '-I^#\s*((ifdef|ifndef|undef)|(if|elif)\s.*defined\().*FEAT_' \ '-I^#\s*(else|endif)' \ '-I^#\s*define\s+(FEAT|POPUPWIN|XDG)_' \ @@ -979,6 +979,7 @@ is_na_patch() { '-I^EXTERN char e_.*enddef' \ '-I^EXTERN char e_.*vim9' \ '-I^EXTERN char e_cannot_declare_.*variable_str' \ + '-I^EXTERN char e_cannot_define_new_.+_as_static' \ '-I^EXTERN char e_dictionary_not_set' \ '-I^EXTERN char e_dictnull' \ '-I\sINIT\(= .+"E[0-9]+: (Abstract|Class|Enum|Interface|Type) ' \ @@ -987,6 +988,7 @@ is_na_patch() { '-I\sINIT\(= .+"E[0-9]+: .*[vV]im9' \ '-I\sINIT\(= .+"E1016: Cannot declare .* variable: ' \ '-I\s+INIT\(= .+"E1103: Dictionary not set' \ + '-I\s+INIT\(= .+"E1370: Cannot define a .+ as static' \ '-I\schar.*\s+\*w_popup_title;' \ '-I\sint\s+ch_[_a-zA-Z]+;' \ '-I\sint\s+w_(filter_mode|firstline|popup_drag|want_scrollbar);' \ From 5d1901b904401b929e11ff3c332d8097db66806c Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 10:39:03 -0400 Subject: [PATCH 2/8] build(vim-patch): v9.1.0349 is n/a --- scripts/vim-patch.sh | 7 ++++--- scripts/vim_na_hunks_h.txt | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/vim-patch.sh b/scripts/vim-patch.sh index 49b7e42fb4..0c0bce9d55 100755 --- a/scripts/vim-patch.sh +++ b/scripts/vim-patch.sh @@ -963,15 +963,16 @@ is_na_patch() { '-I^\s+$' \ '-I^\s*/?\*/?$' \ '-I^\s*(//|/?\*).*\s([vV]im9|E[0-9]{4} - |channel|job|popup|sound|terminal)' \ - '-I^#\s*((ifdef|ifndef|undef)|(if|elif)\s.*defined\().*FEAT_' \ + '-I^#\s*((ifdef|ifndef|undef)|(if|elif)\s.*defined\().*FEAT_[^_]' \ '-I^#\s*(else|endif)' \ - '-I^#\s*define\s+(FEAT|POPUPWIN|XDG)_' \ + '-I^#\s*define\s+(FEAT|POPUPWIN|XDG|t)_[^_]' \ '-IEVENT_TERMINALWINOPEN' \ '-I^#\s*define\s+POPF_CURSORLINE\s' \ '-I^typedef enum \{$' \ '-I^\s+POPCLOSE_[A-Z]+,?$' \ '-I^\} popclose_T;$' \ '-I^EXTERN\schar\s+\*popup_transparent' \ + '-I^EXTERN type_T static_types\[' \ '-I^EXTERN type_T t_.* INIT[2-9]\(' \ '-I^EXTERN\swin_T\s+\*popup_dragwin' \ '-I^EXTERN char e_(abstract|class|enum|interface|type)_' \ @@ -985,7 +986,7 @@ is_na_patch() { '-I\sINIT\(= .+"E[0-9]+: (Abstract|Class|Enum|Interface|Type) ' \ '-I\sINIT\(= .+"E[0-9]+: .*:def ' \ '-I\sINIT\(= .+"E[0-9]+: .*enddef"' \ - '-I\sINIT\(= .+"E[0-9]+: .*[vV]im9' \ + '-I\sINIT\(= .+"E[0-9]+: .*([vV]im9|interface)' \ '-I\sINIT\(= .+"E1016: Cannot declare .* variable: ' \ '-I\s+INIT\(= .+"E1103: Dictionary not set' \ '-I\s+INIT\(= .+"E1370: Cannot define a .+ as static' \ diff --git a/scripts/vim_na_hunks_h.txt b/scripts/vim_na_hunks_h.txt index 39cbe1e02d..abbd58a6e0 100644 --- a/scripts/vim_na_hunks_h.txt +++ b/scripts/vim_na_hunks_h.txt @@ -1,2 +1,3 @@ +^EXTERN type_T static_types\[ ^struct jobvar_S ^struct type_S { From fe5cf3259cabde7c66bbcb67fb5c2b317a038197 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 20:30:18 -0400 Subject: [PATCH 3/8] build(vim-patch): v9.1.2033 is n/a --- scripts/vim_na_hunks_h.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/vim_na_hunks_h.txt b/scripts/vim_na_hunks_h.txt index abbd58a6e0..1b1408e1c4 100644 --- a/scripts/vim_na_hunks_h.txt +++ b/scripts/vim_na_hunks_h.txt @@ -1,3 +1,3 @@ ^EXTERN type_T static_types\[ ^struct jobvar_S -^struct type_S { +^struct \(channel\|type\)_S { From 1e153b9a1c041feb329ff3004624cd6f2e13a157 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 20:52:24 -0400 Subject: [PATCH 4/8] build(vim-patch): v9.2.0026 is n/a --- scripts/vim_na_hunks_c.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/vim_na_hunks_c.txt b/scripts/vim_na_hunks_c.txt index 33d627a0f7..e6e81fb499 100644 --- a/scripts/vim_na_hunks_c.txt +++ b/scripts/vim_na_hunks_c.txt @@ -53,6 +53,7 @@ ^restore_buffer(bufref_T ^static int included_patches\[\] = ^switch_buffer(bufref_T +^typedef struct ss_pending_cmd_S ^vim_free( ^vim_isNormalIDc( ^vim_isalpha( From 833e58341c0e99e364c64c3cc59f15afbb8b3fb3 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 21:12:14 -0400 Subject: [PATCH 5/8] build(vim-patch): n/a ":terminal" opts Target v8.1.2195 . Nvim did not port Vim's ":terminal" opts. Incompatible implementations. Ex-command was ported from C to Lua. Vim needs them partly because of splitting the current window. I keep forgetting `++close` option so I either run ":qall!" or kill the parent process (ie. terminal emulator). Unsatisfied users should create their Ex-command that runs jobstart(). --- scripts/vim_na_hunks_vim.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/vim_na_hunks_vim.txt b/scripts/vim_na_hunks_vim.txt index d762fee07e..83efbbf5b1 100644 --- a/scripts/vim_na_hunks_vim.txt +++ b/scripts/vim_na_hunks_vim.txt @@ -104,6 +104,7 @@ \*popup-window-functions\* \*sound-functions\* \*sound_[a-zA-Z0-9]\+()\* +\*term++\(close\|open\)\* \*test_gui_[a-zA-Z0-9_]\+()\* \*v:none\* \*v:sizeof[a-z]\+\* From 19a7f26a9cad60a695839562e8a718fa60f7d4c3 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 22:12:42 -0400 Subject: [PATCH 6/8] build(vim-patch): n/a docs for v8.1.2219 Ignoring incompatible implementation, TerminalOpen and TermOpen events are not 1-1. "TerminalWinOpen" was accepted as N/A in commit c7ee6af777a9a0b1cd54817c646fe32fa7267c47 . I planned to not do this to have more test cases after manipulating the hunks header to filter out more hunks but Justin is eager to just mark these N/A to bump the Vim major.minor version. Time to move on from v8.1.x. --- scripts/vim_na_hunks_vim.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/vim_na_hunks_vim.txt b/scripts/vim_na_hunks_vim.txt index 83efbbf5b1..835f3f2909 100644 --- a/scripts/vim_na_hunks_vim.txt +++ b/scripts/vim_na_hunks_vim.txt @@ -95,6 +95,9 @@ \*HelpToc-mappings\* \*SafeStateAgain\* \*SigUSR1\* +\*TerminalOpen\* +\*TerminalWinOpen\* +\*autocommand-events\* \*builtin-function-list\* \*emacs[_-]tags\* \*help-toc-install\* From cd71a1358902ac640b0feeda649c335af7a983a8 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sat, 15 Aug 2026 22:28:08 -0400 Subject: [PATCH 7/8] build(vim-patch): auto-n/a refactor patch like v8.2.0514 Follow-up refactor patches, mixed with unrelated patches in the middle, is normal in vim-dev when the original patch is not fully tested across all builds via CI or reviewed by others. Unless core maintainers push "vim-patch:" directly to master/main branch without running the full test-suite, there is little reason to merge incomplete ports that will fail on Nvim's CI or code review. Relevant changes in patches like v8.2.0514 are either ported or (will) become N/A. --- scripts/vim-patch.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/vim-patch.sh b/scripts/vim-patch.sh index 0c0bce9d55..fea280656d 100755 --- a/scripts/vim-patch.sh +++ b/scripts/vim-patch.sh @@ -1014,8 +1014,8 @@ is_na_patch() { '-IEVENT_TERMINALWINOPEN' \ '-I^#\s*include\s+]sc_version = ' \ '-I[_.>]uf_script_ctx_version = ' \ From e96be45bba4e209629bcf053113287897fb02d5c Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 16 Aug 2026 23:28:43 -0400 Subject: [PATCH 8/8] build(vim-patch): v8.2.4153 is n/a --- scripts/vim-patch.sh | 10 ++++++---- scripts/vim_na_hunks_vim.txt | 2 ++ scripts/vim_na_regexp.txt | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/vim-patch.sh b/scripts/vim-patch.sh index fea280656d..e22e4701b0 100755 --- a/scripts/vim-patch.sh +++ b/scripts/vim-patch.sh @@ -962,10 +962,11 @@ is_na_patch() { HUNKS=$(git -C "${VIM_SOURCE_DIR}" diff-tree --no-commit-id -r -b -U0 \ '-I^\s+$' \ '-I^\s*/?\*/?$' \ - '-I^\s*(//|/?\*).*\s([vV]im9|E[0-9]{4} - |channel|job|popup|sound|terminal)' \ + '-I^\s*(//|/?\*).*\s([vV]im9|E[0-9]{4} - |FEAT_|channel|job|popup|sound|terminal)' \ '-I^#\s*((ifdef|ifndef|undef)|(if|elif)\s.*defined\().*FEAT_[^_]' \ '-I^#\s*(else|endif)' \ '-I^#\s*define\s+(FEAT|POPUPWIN|XDG|t)_[^_]' \ + '-I^\s+(&&|\|\|)\s.*defined\(.*FEAT_[^_]' \ '-IEVENT_TERMINALWINOPEN' \ '-I^#\s*define\s+POPF_CURSORLINE\s' \ '-I^typedef enum \{$' \ @@ -1007,10 +1008,11 @@ is_na_patch() { HUNKS=$(git -C "${VIM_SOURCE_DIR}" diff-tree --no-commit-id -r -b -U0 \ '-I^\s+$' \ '-I^\s*/?\*/?$' \ - '-I^\s*(//|/?\*).*\s([vV]im9|channel|job|popup|sound|terminal)' \ - '-I^#\s*((ifdef|ifndef|undef)|(if|elif)\s.*defined\().*FEAT_' \ + '-I^\s*(//|/?\*).*\s([vV]im9|E[0-9]{4} - |FEAT_|channel|job|popup|sound|terminal)' \ + '-I^#\s*((ifdef|ifndef|undef)|(if|elif)\s.*defined\().*FEAT_[^_]' \ '-I^#\s*(else|endif)' \ - '-I^#\s*define\s+(FEAT|POPUPWIN|XDG)_' \ + '-I^#\s*define\s+(FEAT|POPUPWIN|XDG|t)_[^_]' \ + '-I^\s+(&&|\|\|)\s.*defined\(.*FEAT_[^_]' \ '-IEVENT_TERMINALWINOPEN' \ '-I^#\s*include\s+