Mercurial > vim
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