aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/edit.c
diff options
context:
space:
mode:
authorShougo Matsushita <Shougo.Matsu@gmail.com>2018-02-11 22:37:14 +0900
committerchemzqm <chemzqm@gmail.com>2018-05-14 19:14:25 +0800
commit021c5875c13e0c4a5bab67e2e2ac50c4be653ad6 (patch)
treec109ca4837ca488fea961de395e42950e1756d05 /src/nvim/edit.c
parent36b2e3f743aaeb27531e67079d1a20bb4ac75e35 (diff)
downloadrneovim-021c5875c13e0c4a5bab67e2e2ac50c4be653ad6.tar.gz
rneovim-021c5875c13e0c4a5bab67e2e2ac50c4be653ad6.tar.bz2
rneovim-021c5875c13e0c4a5bab67e2e2ac50c4be653ad6.zip
vim-patch:8.0.1494: no autocmd triggered in Insert mode with visible popup menu
Problem: No autocmd triggered in Insert mode with visible popup menu. Solution: Add TextChangedP. (Prabir Shrestha, Christian Brabandt, closes vim/vim#2372, closes vim/vim#1691) Fix that the TextChanged autocommands are not always triggered when sourcing a script. https://github.com/vim/vim/commit/5a093437199001a0d60d8e18e2b9539b99a7757c
Diffstat (limited to 'src/nvim/edit.c')
-rw-r--r--src/nvim/edit.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index a1987cf2d5..4e0b868374 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -1387,13 +1387,20 @@ ins_redraw (
// Trigger TextChangedI if b_changedtick differs.
if (ready && has_event(EVENT_TEXTCHANGEDI)
- && last_changedtick != curbuf->b_changedtick
+ && curbuf->b_last_changedtick != curbuf->b_changedtick
&& !pum_visible()) {
- if (last_changedtick_buf == curbuf) {
apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, false, curbuf);
- }
- last_changedtick_buf = curbuf;
- last_changedtick = curbuf->b_changedtick;
+ curbuf->b_last_changedtick = curbuf->b_changedtick;
+ }
+
+ // 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_event(EVENT_TEXTCHANGEDP)
+ && curbuf->b_last_changedtick_pum != curbuf->b_changedtick
+ && pum_visible()) {
+ apply_autocmds(EVENT_TEXTCHANGEDP, NULL, NULL, false, curbuf);
+ curbuf->b_last_changedtick_pum = curbuf->b_changedtick;
}
if (must_redraw)
@@ -1415,6 +1422,7 @@ ins_redraw (
emsg_on_display = FALSE; /* may remove error message now */
}
+
/*
* Handle a CTRL-V or CTRL-Q typed in Insert mode.
*/