]> granicus.if.org Git - vim/commitdiff
patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect v8.2.1886
authorBram Moolenaar <Bram@vim.org>
Thu, 22 Oct 2020 11:44:54 +0000 (13:44 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 22 Oct 2020 11:44:54 +0000 (13:44 +0200)
Problem:    Using ":silent!" in a popup filter has unexpected effect.
Solution:   Use did_emsg instead of called_emsg. (closes #7178)

src/popupwin.c
src/testdir/test_popupwin.vim
src/version.c

index 2868a9da39d8642735da2d4ddc35676ce6b40014..ed964568dce6e48179bee6b6e42ac66d08f55954 100644 (file)
@@ -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)
index 1524e7856321105869c5f9c4cef763e1fd439855..435873ec6adf5fb90da96fd8a8ad16814533870d 100644 (file)
@@ -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
index 0716ca1e91daa799a863c67eeb9b156cfd1c4c7a..0933697495c16bbaf455f7eba18878bad260c43f 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1886,
 /**/
     1885,
 /**/