diff options
Diffstat (limited to 'src/nvim/edit.c')
| -rw-r--r-- | src/nvim/edit.c | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 0d99aa8fb2..7279110444 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -1390,7 +1390,12 @@ ins_redraw (    if (ready && has_event(EVENT_TEXTCHANGEDI)        && curbuf->b_last_changedtick != buf_get_changedtick(curbuf)        && !pum_visible()) { +    aco_save_T aco; + +    // save and restore curwin and curbuf, in case the autocmd changes them +    aucmd_prepbuf(&aco, curbuf);      apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, false, curbuf); +    aucmd_restbuf(&aco);      curbuf->b_last_changedtick = buf_get_changedtick(curbuf);    } @@ -1400,8 +1405,13 @@ ins_redraw (    if (ready && has_event(EVENT_TEXTCHANGEDP)        && curbuf->b_last_changedtick_pum != buf_get_changedtick(curbuf)        && pum_visible()) { -      apply_autocmds(EVENT_TEXTCHANGEDP, NULL, NULL, false, curbuf); -      curbuf->b_last_changedtick_pum = buf_get_changedtick(curbuf); +    aco_save_T aco; + +    // save and restore curwin and curbuf, in case the autocmd changes them +    aucmd_prepbuf(&aco, curbuf); +    apply_autocmds(EVENT_TEXTCHANGEDP, NULL, NULL, false, curbuf); +    aucmd_restbuf(&aco); +    curbuf->b_last_changedtick_pum = buf_get_changedtick(curbuf);    }    if (must_redraw) | 
