aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-07-13 04:08:49 +0800
committerGitHub <noreply@github.com>2022-07-13 04:08:49 +0800
commit39d51c833aed7e2ab946cd51bfff8d981269a8ef (patch)
tree45f677120aeb74205f476f7b9ee7b1d1c93a8852 /src/nvim/eval.c
parentb1e0197a143b3cc04c6a6fe8f064671391f6c8b4 (diff)
downloadrneovim-39d51c833aed7e2ab946cd51bfff8d981269a8ef.tar.gz
rneovim-39d51c833aed7e2ab946cd51bfff8d981269a8ef.tar.bz2
rneovim-39d51c833aed7e2ab946cd51bfff8d981269a8ef.zip
vim-patch:8.2.0035: saving and restoring called_emsg is clumsy (#19335)
Problem: Saving and restoring called_emsg is clumsy. Solution: Count the number of error messages. https://github.com/vim/vim/commit/53989554a44caca0964376d60297f08ec257c53c
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index c7173c2078..4976bcc15d 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -7296,7 +7296,7 @@ void timer_due_cb(TimeWatcher *tw, void *data)
{
timer_T *timer = (timer_T *)data;
int save_did_emsg = did_emsg;
- int save_called_emsg = called_emsg;
+ const int called_emsg_before = called_emsg;
const bool save_ex_pressedreturn = get_pressedreturn();
if (timer->stopped || timer->paused) {
@@ -7313,19 +7313,17 @@ void timer_due_cb(TimeWatcher *tw, void *data)
argv[0].v_type = VAR_NUMBER;
argv[0].vval.v_number = timer->timer_id;
typval_T rettv = TV_INITIAL_VALUE;
- called_emsg = false;
callback_call(&timer->callback, 1, argv, &rettv);
// Handle error message
- if (called_emsg && did_emsg) {
+ if (called_emsg > called_emsg_before && did_emsg) {
timer->emsg_count++;
if (current_exception != NULL) {
discard_current_exception();
}
}
did_emsg = save_did_emsg;
- called_emsg = save_called_emsg;
set_pressedreturn(save_ex_pressedreturn);
if (timer->emsg_count >= 3) {