Mercurial > vim
changeset 22675:ff29f22c93f7 v8.2.1886
patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Commit: https://github.com/vim/vim/commit/371806e1642bbe17792f1e0fc7abe2ae13794635
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Oct 22 13:44:54 2020 +0200
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 https://github.com/vim/vim/issues/7178)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 22 Oct 2020 14:00:04 +0200 |
parents | 9631fa0ff193 |
children | 9330690b80c8 |
files | src/popupwin.c src/testdir/test_popupwin.vim src/version.c |
diffstat | 3 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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