diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-02-10 18:15:19 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-02-10 18:15:19 +0100 |
commit | 5a093437199001a0d60d8e18e2b9539b99a7757c (patch) | |
tree | 4897a21d58c38ac3adc0c3b309381a58f4bbde45 /src/edit.c | |
parent | 9b56a57cdae31f7a2c85d440392bf63d3253a158 (diff) |
patch 8.0.1494: no autocmd triggered in Insert mode with visible popup menuv8.0.1494
Problem: No autocmd triggered in Insert mode with visible popup menu.
Solution: Add TextChangedP. (Prabir Shrestha, Christian Brabandt,
closes #2372, closes #1691)
Fix that the TextChanged autocommands are not always triggered
when sourcing a script.
Diffstat (limited to 'src/edit.c')
-rw-r--r-- | src/edit.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/edit.c b/src/edit.c index a9e6343a80..7074f26486 100644 --- a/src/edit.c +++ b/src/edit.c @@ -1682,17 +1682,28 @@ ins_redraw( #ifdef FEAT_AUTOCMD /* Trigger TextChangedI if b_changedtick differs. */ if (ready && has_textchangedI() - && last_changedtick != CHANGEDTICK(curbuf) + && curbuf->b_last_changedtick != CHANGEDTICK(curbuf) # ifdef FEAT_INS_EXPAND && !pum_visible() # endif ) { - if (last_changedtick_buf == curbuf) - apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf); - last_changedtick_buf = curbuf; - last_changedtick = CHANGEDTICK(curbuf); + apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf); + curbuf->b_last_changedtick = CHANGEDTICK(curbuf); } + +# ifdef FEAT_INS_EXPAND + /* Trigger TextChangedP if b_changedtick differs. When the popupmenu closes + * TextChangedI will need to trigger for backwards compatibility, thus use + * different b_last_changedtick* variables. */ + if (ready && has_textchangedP() + && curbuf->b_last_changedtick_pum != CHANGEDTICK(curbuf) + && pum_visible()) + { + apply_autocmds(EVENT_TEXTCHANGEDP, NULL, NULL, FALSE, curbuf); + curbuf->b_last_changedtick_pum = CHANGEDTICK(curbuf); + } +# endif #endif if (must_redraw) |