diff src/gui_xim.c @ 28996:54247d52bee9 v8.2.5020

patch 8.2.5020: using 'imstatusfunc' and 'imactivatefunc' breaks 'foldopen' Commit: https://github.com/vim/vim/commit/c7e54efe4dc2bd8fd86feb4a26b4485b7b4c8578 Author: Milly <milly.ca@gmail.com> Date: Thu May 26 13:16:25 2022 +0100 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 https://github.com/vim/vim/issues/10479)
author Bram Moolenaar <Bram@vim.org>
date Thu, 26 May 2022 14:30:03 +0200
parents d770568e6c98
children 4291eb97e479
line wrap: on
line diff
--- a/src/gui_xim.c
+++ b/src/gui_xim.c
@@ -89,17 +89,21 @@ set_imstatusfunc_option(void)
 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 @@ call_imstatusfunc(void)
     ++msg_silent;
     is_active = call_callback_retnr(&imsf_cb, 0, NULL);
     --msg_silent;
+
+    KeyTyped = save_KeyTyped;
     return (is_active > 0);
 }
 #endif