From: Bram Moolenaar Date: Thu, 22 Oct 2020 11:44:54 +0000 (+0200) Subject: patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect X-Git-Tag: v8.2.1886 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=371806e1642bbe17792f1e0fc7abe2ae13794635;p=vim patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect Problem: Using ":silent!" in a popup filter has unexpected effect. Solution: Use did_emsg instead of called_emsg. (closes #7178) --- diff --git a/src/popupwin.c b/src/popupwin.c index 2868a9da3..ed964568d 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -3149,7 +3149,7 @@ invoke_popup_filter(win_T *wp, int c) typval_T argv[3]; char_u buf[NUMBUFLEN]; linenr_T old_lnum = wp->w_cursor.lnum; - int prev_called_emsg = called_emsg; + int prev_did_emsg = did_emsg; // Emergency exit: CTRL-C closes the popup. if (c == Ctrl_C) @@ -3193,12 +3193,12 @@ invoke_popup_filter(win_T *wp, int c) if (win_valid_popup(wp) && old_lnum != wp->w_cursor.lnum) popup_highlight_curline(wp); - // If an error was given always return FALSE, so that keys are not - // consumed and the user can type something. + // If an error message was given always return FALSE, so that keys are + // not consumed and the user can type something. // If we get three errors in a row then close the popup. Decrement the // error count by 1/10 if there are no errors, thus allowing up to 1 in // 10 calls to cause an error. - if (win_valid_popup(wp) && called_emsg > prev_called_emsg) + if (win_valid_popup(wp) && did_emsg > prev_did_emsg) { wp->w_filter_errors += 10; if (wp->w_filter_errors >= 30) diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index 1524e7856..435873ec6 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -2158,6 +2158,7 @@ func Test_popup_scrollbar() endfunc func Popup_filter(winid, key) if a:key == 'j' + silent! this_throws_an_error_but_is_ignored let line = popup_getoptions(a:winid).firstline let nlines = line('$', a:winid) let newline = line < nlines ? (line + 1) : nlines diff --git a/src/version.c b/src/version.c index 0716ca1e9..093369749 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1886, /**/ 1885, /**/