diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2018-02-11 22:37:14 +0900 |
---|---|---|
committer | chemzqm <chemzqm@gmail.com> | 2018-05-14 19:14:25 +0800 |
commit | 021c5875c13e0c4a5bab67e2e2ac50c4be653ad6 (patch) | |
tree | c109ca4837ca488fea961de395e42950e1756d05 /src/nvim/edit.c | |
parent | 36b2e3f743aaeb27531e67079d1a20bb4ac75e35 (diff) | |
download | rneovim-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.c | 18 |
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. */ |