From 03ec1b37d328dbbe47a161c79da873ee7add96c7 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 20 Aug 2026 20:55:48 -0400 Subject: [PATCH] fix(vim-patch): :redrawtabpanel regexp, delay grep on hunk Too many suggestions in https://github.com/neovim/neovim/commit/bcf116cc2f2f59e6c0f5ce5a644f832476f77384 Multi-line grep on the hunk contents before filtering by hunk header prevents vim-patch.sh from detecting v8.1.2195 and v8.1.2219 as N/A. Revisit multi-line parsing for `runtime/doc/*.txt` when Vim v9.2+ has new runtime/doc/ patches about features that require "has()/exists()" guards. --- scripts/vim-patch.sh | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/scripts/vim-patch.sh b/scripts/vim-patch.sh index de6ed4a6b6..add2e41c3f 100755 --- a/scripts/vim-patch.sh +++ b/scripts/vim-patch.sh @@ -928,11 +928,12 @@ is_na_patch() { for file in $FILES_REMAINING; do case ${file} in runtime/doc/*.txt | runtime/pack/dist/opt/*/doc/*.txt) + # TODO(@janlazo): ignore (multi-line) phrases based on regexp '{.\+ \(available\|compiled\) \(with\|without\) .\+}' HUNKS=$(git -c core.attributesfile="$NVIM_SOURCE_DIR"/.gitattributes -c 'diff.helphelp.xfuncname=^.*\*[^*]+\*$' -C "${VIM_SOURCE_DIR}" \ diff-tree --no-commit-id -r -b -U0 \ '-I^\s+$' \ '-I^=+$' \ - '-I^\|:redrawtabpanel|' \ + '-I^\|:redrawtabpanel\|' \ '-I^\|popup_[_a-z]+\(\)\|' \ '-I^popup_[_a-z]+\(' \ '-I\*\s+For Vim version [0-9]\.[0-9]\.\s+Last change: [0-9]+ [A-Z][a-z]+ [0-9]+' \ @@ -940,12 +941,9 @@ is_na_patch() { '-I\|popup-windows\|' \ '-I\|tabpanel\|' \ '-I\spopup window\s' \ - "$patch" -- "${file}" | - grep -v -e '{.\+ \(available\|compiled\) \(with\|without\) .\+}' | - grep -Pzo '(?<=\n)@@ -[0-9][^@\n]+\+[0-9][^@\n]* @@[^@\n]*\n(?=([-+][^\n]*\n)+(@|$))' | - tr '\0' '\n') + "$patch" -- "${file}") if test -n "$HUNKS"; then - HUNK_NUM_FINAL=$(echo "$HUNKS" | sed 's/^@@ .* @@ //' | grep -cv -f "$NA_HUNKS_VIM") + HUNK_NUM_FINAL=$(echo "$HUNKS" | grep '^@@ .* @@' | sed 's/^@@ .* @@ //' | grep -cv -f "$NA_HUNKS_VIM") test "$HUNK_NUM_FINAL" -ne 0 && return 1 fi ;; @@ -1001,10 +999,9 @@ is_na_patch() { '-I\slist_T\s+\*w_popup_mask;' \ '-I\spopclose_T\sw_popup_close;' \ '-I\s\*?w_popup_prop_[_a-z]+;' \ - "$patch" -- "${file}" | - grep '^@@ .* @@') + "$patch" -- "${file}") if test -n "$HUNKS"; then - HUNK_NUM_FINAL=$(echo "$HUNKS" | sed 's/^@@ .* @@ //' | grep -cv -f "$NA_HUNKS_H") + HUNK_NUM_FINAL=$(echo "$HUNKS" | grep '^@@ .* @@' | sed 's/^@@ .* @@ //' | grep -cv -f "$NA_HUNKS_H") test "$HUNK_NUM_FINAL" -ne 0 && return 1 fi ;; @@ -1031,10 +1028,9 @@ is_na_patch() { '-Icrypt_get_method_nr\(.+\)' \ '-I\spopup_set_firstline\(.+\);' \ '-I\svim_free\(.*w_popup_title\);' \ - "$patch" -- "${file}" | - grep '^@@ .* @@') + "$patch" -- "${file}") if test -n "$HUNKS"; then - HUNK_NUM_FINAL=$(echo "$HUNKS" | sed 's/^@@ .* @@ //' | grep -cv -f "$NA_HUNKS_C") + HUNK_NUM_FINAL=$(echo "$HUNKS" | grep '^@@ .* @@' | sed 's/^@@ .* @@ //' | grep -cv -f "$NA_HUNKS_C") test "$HUNK_NUM_FINAL" -ne 0 && return 1 fi ;;