patch 8.1.1739: deleted match highlighting not updated in other window
Problem: Deleted match highlighting not updated in other window.
Solution: Mark the window for refresh. (closes #4720) Also fix that
ambi-width check clears with wrong attributes.
diff --git a/src/highlight.c b/src/highlight.c
index 6eadcd1..d641703 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -3912,7 +3912,7 @@
rtype = VALID;
}
vim_free(cur);
- redraw_later(rtype);
+ redraw_win_later(wp, rtype);
return 0;
}
diff --git a/src/term.c b/src/term.c
index f1ccfcb..2dc6cbd 100644
--- a/src/term.c
+++ b/src/term.c
@@ -3718,6 +3718,7 @@
/* This overwrites a few characters on the screen, a redraw is needed
* after this. Clear them out for now. */
+ screen_stop_highlight();
term_windgoto(1, 0);
out_str((char_u *)" ");
term_windgoto(0, 0);
diff --git a/src/testdir/dumps/Test_matchdelete_1.dump b/src/testdir/dumps/Test_matchdelete_1.dump
new file mode 100644
index 0000000..06b16b5
--- /dev/null
+++ b/src/testdir/dumps/Test_matchdelete_1.dump
@@ -0,0 +1,12 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
+|H+0&&|e|l@1|o| |V|i|m| |w|o|r|l|d| @59
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1
+|:+0&&|c|a|l@1| |m|a|t|c|h|d|e|l|e|t|e|(|m|i|d|,| |w|i|n|i|d|)| @45
diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim
index 51c9016..07005b5 100644
--- a/src/testdir/test_match.vim
+++ b/src/testdir/test_match.vim
@@ -1,6 +1,8 @@
" Test for :match, :2match, :3match, clearmatches(), getmatches(), matchadd(),
" matchaddpos(), matcharg(), matchdelete(), and setmatches().
+source screendump.vim
+
function Test_match()
highlight MyGroup1 term=bold ctermbg=red guibg=red
highlight MyGroup2 term=italic ctermbg=green guibg=green
@@ -251,4 +253,26 @@
set hlsearch&
endfunc
+func Test_matchdelete_other_window()
+ if !CanRunVimInTerminal()
+ throw 'Skipped: cannot make screendumps'
+ endif
+
+ let lines =<< trim END
+ call setline(1, 'Hello Vim world')
+ let mid = matchadd('Error', 'world', 1)
+ let winid = win_getid()
+ new
+ END
+ call writefile(lines, 'XscriptMatchDelete')
+ let buf = RunVimInTerminal('-S XscriptMatchDelete', #{rows: 12})
+ call term_wait(buf)
+ call term_sendkeys(buf, ":call matchdelete(mid, winid)\<CR>")
+ call VerifyScreenDump(buf, 'Test_matchdelete_1', {})
+
+ call StopVimInTerminal(buf)
+ call delete('XscriptMatchDelete')
+endfunc
+
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 9eb1e13..cc86468 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1739,
+/**/
1738,
/**/
1737,