summaryrefslogtreecommitdiffstats
path: root/src/edit.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-02-10 18:15:19 +0100
committerBram Moolenaar <Bram@vim.org>2018-02-10 18:15:19 +0100
commit5a093437199001a0d60d8e18e2b9539b99a7757c (patch)
tree4897a21d58c38ac3adc0c3b309381a58f4bbde45 /src/edit.c
parent9b56a57cdae31f7a2c85d440392bf63d3253a158 (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.c21
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)