]> granicus.if.org Git - vim/commitdiff
patch 8.1.1739: deleted match highlighting not updated in other window v8.1.1739
authorBram Moolenaar <Bram@vim.org>
Wed, 24 Jul 2019 12:25:26 +0000 (14:25 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 24 Jul 2019 12:25:26 +0000 (14:25 +0200)
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.

src/highlight.c
src/term.c
src/testdir/dumps/Test_matchdelete_1.dump [new file with mode: 0644]
src/testdir/test_match.vim
src/version.c

index 6eadcd1d25c36d0a15ee3493808cc976a1bef9ae..d6417038fc9983094ffb2be620055f1bed538af8 100644 (file)
@@ -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;
 }
 
index f1ccfcbfa3f8bfbb06e96587a3f9a09d2b71e8e2..2dc6cbd9b4a166ff84d0e3613545b7d592755340 100644 (file)
@@ -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);
diff --git a/src/testdir/dumps/Test_matchdelete_1.dump b/src/testdir/dumps/Test_matchdelete_1.dump
new file mode 100644 (file)
index 0000000..06b16b5
--- /dev/null
@@ -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
index 51c901689e6e0160d0de0ce42fa71507c05977d8..07005b52fdb2fc09864fd42c240e4adf7f395fa3 100644 (file)
@@ -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_priority()
   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
index 9eb1e13759db94612d35ab750dc2afade3113323..cc86468e6301ad9a1ca3221bc43a3fb7fa40e328 100644 (file)
@@ -777,6 +777,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1739,
 /**/
     1738,
 /**/