0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 8.2.0670: cannot change window when evaluating 'completefunc'

Problem:    Cannot change window when evaluating 'completefunc'.
Solution:   Make a difference between not changing text or buffers and also
            not changing window.
This commit is contained in:
Bram Moolenaar
2020-04-30 22:31:18 +02:00
parent 4e5534fab7
commit 6adb9ea0a6
18 changed files with 67 additions and 43 deletions

View File

@@ -176,9 +176,10 @@ edit(
// Don't allow changes in the buffer while editing the cmdline. The
// caller of getcmdline() may get confused.
// Don't allow recursive insert mode when busy with completion.
if (textlock != 0 || ins_compl_active() || compl_busy || pum_visible())
if (textwinlock != 0 || textlock != 0
|| ins_compl_active() || compl_busy || pum_visible())
{
emsg(_(e_textlock));
emsg(_(e_textwinlock));
return FALSE;
}
ins_compl_clear(); // clear stuff for CTRL-X mode
@@ -5944,7 +5945,7 @@ do_insert_char_pre(int c)
}
// Lock the text to avoid weird things from happening.
++textlock;
++textwinlock;
set_vim_var_string(VV_CHAR, buf, -1); // set v:char
res = NULL;
@@ -5958,7 +5959,7 @@ do_insert_char_pre(int c)
}
set_vim_var_string(VV_CHAR, NULL, -1); // clear v:char
--textlock;
--textwinlock;
// Restore the State, it may have been changed.
State = save_State;