diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-07-24 14:25:26 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-07-24 14:25:26 +0200 |
commit | 06029a857a3d4d90b3162090506c1e00dc84c60b (patch) | |
tree | d868ce4168d16c3521aa6bd16b6a81e358ebeb35 | |
parent | 9bc4dde45d45df732953491d0f2c3fd3b10a627e (diff) | |
download | vim-git-06029a857a3d4d90b3162090506c1e00dc84c60b.tar.gz |
patch 8.1.1739: deleted match highlighting not updated in other windowv8.1.1739
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.
-rw-r--r-- | src/highlight.c | 2 | ||||
-rw-r--r-- | src/term.c | 1 | ||||
-rw-r--r-- | src/testdir/dumps/Test_matchdelete_1.dump | 12 | ||||
-rw-r--r-- | src/testdir/test_match.vim | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 40 insertions, 1 deletions
diff --git a/src/highlight.c b/src/highlight.c index 6eadcd1d2..d6417038f 100644 --- 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; } diff --git a/src/term.c b/src/term.c index f1ccfcbfa..2dc6cbd9b 100644 --- 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); diff --git a/src/testdir/dumps/Test_matchdelete_1.dump b/src/testdir/dumps/Test_matchdelete_1.dump new file mode 100644 index 000000000..06b16b58e --- /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 51c901689..07005b52f 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 @@ 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 diff --git a/src/version.c b/src/version.c index 9eb1e1375..cc86468e6 100644 --- 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, |