changeset 17482:6cf077f59152 v8.1.1739

patch 8.1.1739: deleted match highlighting not updated in other window commit https://github.com/vim/vim/commit/06029a857a3d4d90b3162090506c1e00dc84c60b Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 24 14:25:26 2019 +0200 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 https://github.com/vim/vim/issues/4720) Also fix that ambi-width check clears with wrong attributes.
author Bram Moolenaar <Bram@vim.org>
date Wed, 24 Jul 2019 14:30:08 +0200
parents 0cd89bb4dfa8
children 63ea3a9ba8cb
files src/highlight.c src/term.c src/testdir/dumps/Test_matchdelete_1.dump src/testdir/test_match.vim src/version.c
diffstat 5 files changed, 40 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -3912,7 +3912,7 @@ match_delete(win_T *wp, int id, int perr
 	rtype = VALID;
     }
     vim_free(cur);
-    redraw_later(rtype);
+    redraw_win_later(wp, rtype);
     return 0;
 }
 
--- a/src/term.c
+++ b/src/term.c
@@ -3718,6 +3718,7 @@ may_req_ambiguous_char_width(void)
 
 	/* 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);
new file mode 100644
--- /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
--- 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 @@ func Test_matchaddpos_using_negative_pri
   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
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1739,
+/**/
     1738,
 /**/
     1737,