patch 8.2.5020: using 'imstatusfunc' and 'imactivatefunc' breaks 'foldopen'
Problem: Using 'imstatusfunc' and 'imactivatefunc' breaks 'foldopen'.
Solution: Save and restore the KeyTyped flag. (closes #10479)
diff --git a/src/gui_xim.c b/src/gui_xim.c
index 9f3181e..4d8706a 100644
--- a/src/gui_xim.c
+++ b/src/gui_xim.c
@@ -89,17 +89,21 @@
call_imactivatefunc(int active)
{
typval_T argv[2];
+ int save_KeyTyped = KeyTyped;
argv[0].v_type = VAR_NUMBER;
argv[0].vval.v_number = active ? 1 : 0;
argv[1].v_type = VAR_UNKNOWN;
(void)call_callback_retnr(&imaf_cb, 1, argv);
+
+ KeyTyped = save_KeyTyped;
}
static int
call_imstatusfunc(void)
{
int is_active;
+ int save_KeyTyped = KeyTyped;
// FIXME: Don't execute user function in unsafe situation.
if (exiting || is_autocmd_blocked())
@@ -109,6 +113,8 @@
++msg_silent;
is_active = call_callback_retnr(&imsf_cb, 0, NULL);
--msg_silent;
+
+ KeyTyped = save_KeyTyped;
return (is_active > 0);
}
#endif