diff --git a/src/edit.c b/src/edit.c
index 65c53f5..d960de3 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -516,7 +516,7 @@
      */
     if (curbuf->b_p_iminsert == B_IMODE_LMAP)
 	State |= LANGMAP;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
     im_set_active(curbuf->b_p_iminsert == B_IMODE_IM);
 #endif
 
@@ -8372,7 +8372,7 @@
     ++no_u_sync;
     if (regname == '=')
     {
-# ifdef USE_IM_CONTROL
+# ifdef FEAT_MBYTE
 	int	im_on = im_get_status();
 # endif
 	/* Sync undo when evaluating the expression calls setline() or
@@ -8380,7 +8380,7 @@
 	u_sync_once = 2;
 
 	regname = get_expr_register();
-# ifdef USE_IM_CONTROL
+# ifdef FEAT_MBYTE
 	/* Restore the Input Method. */
 	if (im_on)
 	    im_set_active(TRUE);
@@ -8509,12 +8509,12 @@
 	{
 	    curbuf->b_p_iminsert = B_IMODE_LMAP;
 	    State |= LANGMAP;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 	    im_set_active(FALSE);
 #endif
 	}
     }
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
     else
     {
 	/* There are no ":lmap" mappings, toggle IM */
@@ -8661,7 +8661,7 @@
 	}
     }
 
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
     /* Disable IM to allow typing English directly for Normal mode commands.
      * When ":lmap" is enabled don't change 'iminsert' (IM can be enabled as
      * well). */
diff --git a/src/ex_getln.c b/src/ex_getln.c
index f8a193d..02d03b4 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -359,11 +359,11 @@
 	    b_im_ptr = &curbuf->b_p_imsearch;
 	if (*b_im_ptr == B_IMODE_LMAP)
 	    State |= LANGMAP;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 	im_set_active(*b_im_ptr == B_IMODE_IM);
 #endif
     }
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
     else if (p_imcmdline)
 	im_set_active(TRUE);
 #endif
@@ -1119,7 +1119,7 @@
 		{
 		    /* ":lmap" mappings exists, toggle use of mappings. */
 		    State ^= LANGMAP;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 		    im_set_active(FALSE);	/* Disable input method */
 #endif
 		    if (b_im_ptr != NULL)
@@ -1130,7 +1130,7 @@
 			    *b_im_ptr = B_IMODE_NONE;
 		    }
 		}
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 		else
 		{
 		    /* There are no ":lmap" mappings, toggle IM.  When
@@ -2143,7 +2143,7 @@
 #endif
 
     State = save_State;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
     if (b_im_ptr != NULL && *b_im_ptr != B_IMODE_LMAP)
 	im_save_status(b_im_ptr);
     im_set_active(FALSE);
diff --git a/src/getchar.c b/src/getchar.c
index aa65a8c..18dc1a6 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2890,7 +2890,7 @@
 						     + typebuf.tb_len] != NUL)
 			typebuf.tb_noremap[typebuf.tb_off
 						 + typebuf.tb_len++] = RM_YES;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 		    /* Get IM status right after getting keys, not after the
 		     * timeout for a mapping (focus may be lost by then). */
 		    vgetc_im_active = im_get_status();
diff --git a/src/globals.h b/src/globals.h
index b479579..9f1864d 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1022,7 +1022,7 @@
 
 EXTERN int	KeyTyped;		/* TRUE if user typed current char */
 EXTERN int	KeyStuffed;		/* TRUE if current char from stuffbuf */
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 EXTERN int	vgetc_im_active;	/* Input Method was active for last
 					   character obtained from vgetc() */
 #endif
diff --git a/src/gui.c b/src/gui.c
index 8118ca1..4f03ed8 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -1078,7 +1078,7 @@
 	gui_undraw_cursor();
 	if (gui.row < 0)
 	    return;
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 	if (gui.row != gui.cursor_row || gui.col != gui.cursor_col)
 	    im_set_position(gui.row, gui.col);
 #endif
@@ -1136,7 +1136,7 @@
 	if (id > 0)
 	{
 	    cattr = syn_id2colors(id, &cfg, &cbg);
-#if defined(USE_IM_CONTROL) || defined(FEAT_HANGULIN)
+#if defined(FEAT_MBYTE) || defined(FEAT_HANGULIN)
 	    {
 		static int iid;
 		guicolor_T fg, bg;
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 93feabe..97cbf80 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -2024,15 +2024,15 @@
 	switch (eventKind)
 	{
 	    case kEventWindowActivated:
-#if defined(USE_IM_CONTROL)
+# if defined(FEAT_MBYTE)
 		im_on_window_switch(TRUE);
-#endif
+# endif
 		return noErr;
 
 	    case kEventWindowDeactivated:
-#if defined(USE_IM_CONTROL)
+# if defined(FEAT_MBYTE)
 		im_on_window_switch(FALSE);
-#endif
+# endif
 		return noErr;
 	}
     }
@@ -6230,7 +6230,7 @@
 #endif
 }
 
-#if (defined(USE_IM_CONTROL) || defined(PROTO)) && defined(USE_CARBONKEYHANDLER)
+#if (defined(FEAT_MBYTE) || defined(PROTO)) && defined(USE_CARBONKEYHANDLER)
 /*
  * Input Method Control functions.
  */
@@ -6317,7 +6317,7 @@
     ScriptLanguageRecord *slptr = NULL;
     OSStatus err;
 
-    if (! gui.in_use)
+    if (!gui.in_use)
 	return;
 
     if (im_initialized == 0)
@@ -6379,7 +6379,7 @@
     return im_is_active;
 }
 
-#endif /* defined(USE_IM_CONTROL) || defined(PROTO) */
+#endif /* defined(FEAT_MBYTE) || defined(PROTO) */
 
 
 
diff --git a/src/gui_w32.c b/src/gui_w32.c
index d1c9605..598034d 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -485,12 +485,10 @@
  * These LOGFONT used for IME.
  */
 #ifdef FEAT_MBYTE
-# ifdef USE_IM_CONTROL
 /* holds LOGFONT for 'guifontwide' if available, otherwise 'guifont' */
 static LOGFONT norm_logfont;
 /* holds LOGFONT for 'guifont' always. */
 static LOGFONT sub_logfont;
-# endif
 #endif
 
 #ifdef FEAT_MBYTE_IME
diff --git a/src/mbyte.c b/src/mbyte.c
index 8bef7b8..b39dddd 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -4794,6 +4794,26 @@
 	argv[0] = (char_u *)"0";
     (void)call_func_retnr(p_imaf, 1, argv, FALSE);
 }
+
+    static int
+call_imstatusfunc(void)
+{
+    int is_active;
+
+    /* FIXME: Don't execute user function in unsafe situation. */
+    if (exiting
+#   ifdef FEAT_AUTOCMD
+	    || is_autocmd_blocked()
+#   endif
+	    )
+	return FALSE;
+    /* FIXME: :py print 'xxx' is shown duplicate result.
+     * Use silent to avoid it. */
+    ++msg_silent;
+    is_active = call_func_retnr(p_imsf, 0, NULL, FALSE);
+    --msg_silent;
+    return (is_active > 0);
+}
 #endif
 
 #if defined(FEAT_XIM) || defined(PROTO)
@@ -4838,14 +4858,7 @@
     im_is_active = (active && !p_imdisable);
 
     if (im_is_active != was_active)
-    {
-#ifdef FEAT_EVAL
-	if (p_imaf[0] != NUL)
-	    call_imactivatefunc(im_is_active);
-	else
-#endif
-	    xim_reset();
-    }
+	xim_reset();
 }
 
     void
@@ -5675,6 +5688,11 @@
     void
 xim_reset(void)
 {
+#ifdef FEAT_EVAL
+    if (p_imaf[0] != NUL)
+	call_imactivatefunc(im_is_active);
+    else
+#endif
     if (xic != NULL)
     {
 	gtk_im_context_reset(xic);
@@ -5685,12 +5703,7 @@
 	{
 	    xim_set_focus(gui.in_focus);
 
-#  ifdef FEAT_EVAL
-	    if (p_imaf[0] != NUL)
-		call_imactivatefunc(im_is_active);
-	    else
-#  endif
-		if (im_activatekey_keyval != GDK_VoidSymbol)
+	    if (im_activatekey_keyval != GDK_VoidSymbol)
 	    {
 		if (im_is_active)
 		{
@@ -5856,23 +5869,7 @@
 {
 #  ifdef FEAT_EVAL
     if (p_imsf[0] != NUL)
-    {
-	int is_active;
-
-	/* FIXME: Don't execute user function in unsafe situation. */
-	if (exiting
-#   ifdef FEAT_AUTOCMD
-		|| is_autocmd_blocked()
-#   endif
-		)
-	    return FALSE;
-	/* FIXME: :py print 'xxx' is shown duplicate result.
-	 * Use silent to avoid it. */
-	++msg_silent;
-	is_active = call_func_retnr(p_imsf, 0, NULL, FALSE);
-	--msg_silent;
-	return (is_active > 0);
-    }
+	return call_imstatusfunc();
 #  endif
     return im_is_active;
 }
@@ -5894,30 +5891,45 @@
 static int	xim_is_active = FALSE;  /* XIM should be active in the current
 					   mode */
 static int	xim_has_focus = FALSE;	/* XIM is really being used for Vim */
-#ifdef FEAT_GUI_X11
+#  ifdef FEAT_GUI_X11
 static XIMStyle	input_style;
 static int	status_area_enabled = TRUE;
-#endif
+#  endif
 
 /*
  * Switch using XIM on/off.  This is used by the code that changes "State".
+ * When 'imactivatefunc' is defined use that function instead.
  */
     void
-im_set_active(int active)
+im_set_active(int active_arg)
 {
-    if (xic == NULL)
-	return;
+    int active = active_arg;
 
     /* If 'imdisable' is set, XIM is never active. */
     if (p_imdisable)
 	active = FALSE;
-#if !defined(FEAT_GUI_GTK)
+#  if !defined(FEAT_GUI_GTK)
     else if (input_style & XIMPreeditPosition)
 	/* There is a problem in switching XIM off when preediting is used,
 	 * and it is not clear how this can be solved.  For now, keep XIM on
 	 * all the time, like it was done in Vim 5.8. */
 	active = TRUE;
-#endif
+#  endif
+
+#  if defined(FEAT_EVAL)
+    if (p_imaf[0] != NUL)
+    {
+	if (active != im_get_status())
+	{
+	    call_imactivatefunc(active);
+	    im_is_active = active;
+	}
+	return;
+    }
+#  endif
+
+    if (xic == NULL)
+	return;
 
     /* Remember the active state, it is needed when Vim gets keyboard focus. */
     xim_is_active = active;
@@ -6019,19 +6031,19 @@
     }
 }
 
-#if defined(FEAT_GUI_X11)
+#  if defined(FEAT_GUI_X11)
 static char e_xim[] = N_("E285: Failed to create input context");
-#endif
+#  endif
 
-#if defined(FEAT_GUI_X11) || defined(PROTO)
-# if defined(XtSpecificationRelease) && XtSpecificationRelease >= 6 && !defined(SUN_SYSTEM)
-#  define USE_X11R6_XIM
-# endif
+#  if defined(FEAT_GUI_X11) || defined(PROTO)
+#   if defined(XtSpecificationRelease) && XtSpecificationRelease >= 6 && !defined(SUN_SYSTEM)
+#    define USE_X11R6_XIM
+#   endif
 
 static int xim_real_init(Window x11_window, Display *x11_display);
 
 
-#ifdef USE_X11R6_XIM
+#  ifdef USE_X11R6_XIM
 static void xim_destroy_cb(XIM im, XPointer client_data, XPointer call_data);
 
     static void
@@ -6043,9 +6055,9 @@
     Window	x11_window;
     Display	*x11_display;
 
-#ifdef XIM_DEBUG
+#   ifdef XIM_DEBUG
     xim_log("xim_instantiate_cb()\n");
-#endif
+#   endif
 
     gui_get_x11_windis(&x11_window, &x11_display);
     if (display != x11_display)
@@ -6067,9 +6079,9 @@
     Window	x11_window;
     Display	*x11_display;
 
-#ifdef XIM_DEBUG
+#   ifdef XIM_DEBUG
     xim_log("xim_destroy_cb()\n");
-#endif
+   #endif
     gui_get_x11_windis(&x11_window, &x11_display);
 
     xic = NULL;
@@ -6080,7 +6092,7 @@
     XRegisterIMInstantiateCallback(x11_display, NULL, NULL, NULL,
 				   xim_instantiate_cb, NULL);
 }
-#endif
+#  endif
 
     void
 xim_init(void)
@@ -6088,9 +6100,9 @@
     Window	x11_window;
     Display	*x11_display;
 
-#ifdef XIM_DEBUG
+#  ifdef XIM_DEBUG
     xim_log("xim_init()\n");
-#endif
+#  endif
 
     gui_get_x11_windis(&x11_window, &x11_display);
 
@@ -6101,10 +6113,10 @@
 
     gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH);
 
-#ifdef USE_X11R6_XIM
+#  ifdef USE_X11R6_XIM
     XRegisterIMInstantiateCallback(x11_display, NULL, NULL, NULL,
 				   xim_instantiate_cb, NULL);
-#endif
+#  endif
 }
 
     static int
@@ -6116,7 +6128,7 @@
 		*ns,
 		*end,
 		tmp[1024];
-#define IMLEN_MAX 40
+#  define IMLEN_MAX 40
     char	buf[IMLEN_MAX + 7];
     XIM		xim = NULL;
     XIMStyles	*xim_styles;
@@ -6181,7 +6193,7 @@
 	return FALSE;
     }
 
-#ifdef USE_X11R6_XIM
+#  ifdef USE_X11R6_XIM
     {
 	XIMCallback destroy_cb;
 
@@ -6190,7 +6202,7 @@
 	if (XSetIMValues(xim, XNDestroyCallback, &destroy_cb, NULL))
 	    EMSG(_("E287: Warning: Could not set destroy callback to IM"));
     }
-#endif
+#  endif
 
     if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles)
     {
@@ -6266,7 +6278,7 @@
 
     /* A crash was reported when trying to pass gui.norm_font as XNFontSet,
      * thus that has been removed.  Hopefully the default works... */
-#ifdef FEAT_XFONTSET
+#  ifdef FEAT_XFONTSET
     if (gui.fontset != NOFONTSET)
     {
 	preedit_list = XVaCreateNestedList(0,
@@ -6282,7 +6294,7 @@
 				NULL);
     }
     else
-#endif
+#  endif
     {
 	preedit_list = XVaCreateNestedList(0,
 				XNSpotLocation, &over_spot,
@@ -6324,7 +6336,7 @@
     return TRUE;
 }
 
-#endif /* FEAT_GUI_X11 */
+#  endif /* FEAT_GUI_X11 */
 
 /*
  * Get IM status.  When IM is on, return TRUE.  Else return FALSE.
@@ -6335,6 +6347,10 @@
     int
 im_get_status(void)
 {
+#  ifdef FEAT_EVAL
+    if (p_imsf[0] != NUL)
+	return call_imstatusfunc();
+#  endif
     return xim_has_focus;
 }
 
@@ -6458,38 +6474,29 @@
 #else /* !defined(FEAT_XIM) */
 
 # ifndef FEAT_GUI_W32
+static int im_was_set_active = FALSE;
+
     int
 im_get_status()
 {
 #  ifdef FEAT_EVAL
     if (p_imsf[0] != NUL)
-    {
-	int is_active;
-
-	/* FIXME: Don't execute user function in unsafe situation. */
-	if (exiting
-#   ifdef FEAT_AUTOCMD
-		|| is_autocmd_blocked()
-#   endif
-		)
-	    return FALSE;
-	/* FIXME: :py print 'xxx' is shown duplicate result.
-	 * Use silent to avoid it. */
-	++msg_silent;
-	is_active = call_func_retnr(p_imsf, 0, NULL, FALSE);
-	--msg_silent;
-	return (is_active > 0);
-    }
+	return call_imstatusfunc();
 #  endif
-    return FALSE;
+    return im_was_set_active;
 }
 
     void
-im_set_active(int active)
+im_set_active(int active_arg)
 {
-#  if defined(USE_IM_CONTROL) && defined(FEAT_EVAL)
-    if (p_imaf[0] != NUL)
-	call_imactivatefunc(p_imdisable ? FALSE : active);
+#  if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
+    int	    active = !p_imdisable && active_arg;
+
+    if (p_imaf[0] != NUL && active != im_get_status())
+    {
+	call_imactivatefunc(active);
+	im_was_set_active = active;
+    }
 #  endif
 }
 # endif
diff --git a/src/normal.c b/src/normal.c
index fb0129a..76eb18a 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -892,7 +892,7 @@
 	int	lit = FALSE;	/* get extra character literally */
 	int	langmap_active = FALSE;    /* using :lmap mappings */
 	int	lang;		/* getting a text character */
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 	int	save_smd;	/* saved value of p_smd */
 #endif
 
@@ -957,7 +957,7 @@
 		    State = LANGMAP;
 		langmap_active = TRUE;
 	    }
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 	    save_smd = p_smd;
 	    p_smd = FALSE;	/* Don't let the IM code show the mode here */
 	    if (lang && curbuf->b_p_iminsert == B_IMODE_IM)
@@ -973,7 +973,7 @@
 		++allow_keys;
 		State = NORMAL_BUSY;
 	    }
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 	    if (lang)
 	    {
 		if (curbuf->b_p_iminsert != B_IMODE_LMAP)
diff --git a/src/option.c b/src/option.c
index ac0918d..a867608 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1539,7 +1539,7 @@
 			    (char_u *)&p_ic, PV_NONE,
 			    {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"imactivatefunc","imaf",P_STRING|P_VI_DEF|P_SECURE,
-#if defined(FEAT_EVAL) && defined(USE_IM_CONTROL)
+#if defined(FEAT_EVAL) && defined(FEAT_MBYTE)
 			    (char_u *)&p_imaf, PV_NONE,
 			    {(char_u *)"", (char_u *)NULL}
 # else
@@ -1555,14 +1555,14 @@
 #endif
 			    {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
     {"imcmdline",   "imc",  P_BOOL|P_VI_DEF,
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 			    (char_u *)&p_imcmdline, PV_NONE,
 #else
 			    (char_u *)NULL, PV_NONE,
 #endif
 			    {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"imdisable",   "imd",  P_BOOL|P_VI_DEF,
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 			    (char_u *)&p_imdisable, PV_NONE,
 #else
 			    (char_u *)NULL, PV_NONE,
@@ -1582,7 +1582,7 @@
 			    {(char_u *)B_IMODE_USE_INSERT, (char_u *)0L}
 			    SCRIPTID_INIT},
     {"imstatusfunc","imsf",P_STRING|P_VI_DEF|P_SECURE,
-#if defined(FEAT_EVAL) && defined(USE_IM_CONTROL)
+#if defined(FEAT_EVAL) && defined(FEAT_MBYTE)
 			    (char_u *)&p_imsf, PV_NONE,
 			    {(char_u *)"", (char_u *)NULL}
 #else
@@ -8469,7 +8469,7 @@
     }
 #endif
 
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
     /* 'imdisable' */
     else if ((int *)varp == &p_imdisable)
     {
diff --git a/src/option.h b/src/option.h
index 57126a3..c9fa4d3 100644
--- a/src/option.h
+++ b/src/option.h
@@ -585,11 +585,11 @@
 #define IM_OVER_THE_SPOT	1L
 EXTERN long	p_imst;		/* 'imstyle' */
 #endif
-#if defined(FEAT_EVAL) && defined(USE_IM_CONTROL)
+#if defined(FEAT_EVAL) && defined(FEAT_MBYTE)
 EXTERN char_u	*p_imaf;	/* 'imactivatefunc' */
 EXTERN char_u	*p_imsf;	/* 'imstatusfunc' */
 #endif
-#ifdef USE_IM_CONTROL
+#ifdef FEAT_MBYTE
 EXTERN int	p_imcmdline;	/* 'imcmdline' */
 EXTERN int	p_imdisable;	/* 'imdisable' */
 #endif
diff --git a/src/ui.c b/src/ui.c
index 1b2b3c5..7d969fe 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -3307,7 +3307,7 @@
 }
 #endif
 
-#if defined(USE_IM_CONTROL) || defined(PROTO)
+#if defined(FEAT_MBYTE) || defined(PROTO)
 /*
  * Save current Input Method status to specified place.
  */
diff --git a/src/version.c b/src/version.c
index 6a1162b..8cce078 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1338,
+/**/
     1337,
 /**/
     1336,
diff --git a/src/vim.h b/src/vim.h
index 1d481ca..1c2b795 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -534,13 +534,6 @@
 #endif
 
 /*
- * Check input method control.
- */
-#if defined(FEAT_MBYTE)
-# define USE_IM_CONTROL
-#endif
-
-/*
  * For dynamically loaded gettext library.  Currently, only for Win32.
  */
 #ifdef DYNAMIC_GETTEXT
