diff --git a/src/mbyte.c b/src/mbyte.c
index d057266..9a10bd0 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -753,11 +753,6 @@
     apply_autocmds(EVENT_ENCODINGCHANGED, NULL, (char_u *)"", FALSE, curbuf);
 #endif
 
-#ifdef FEAT_GUI_KDE
-    if (gui.in_use)
-	gui_mch_update_codec();
-#endif
-
 #ifdef FEAT_SYN_HL
     /* Need to reload spell dictionaries */
     spell_reload();
@@ -4181,7 +4176,7 @@
 # endif
 #endif
 
-#if defined(FEAT_GUI_GTK) || defined(PROTO) || defined(FEAT_GUI_KDE)
+#if defined(FEAT_GUI_GTK) || defined(PROTO)
 static int	preedit_buf_len = 0;
 static int	xim_can_preediting INIT(= FALSE);	/* XIM in showmode() */
 static int	xim_input_style;
@@ -4317,7 +4312,7 @@
     /* If 'imdisable' is set, XIM is never active. */
     if (p_imdisable)
 	active = FALSE;
-#if !defined (FEAT_GUI_GTK) && !defined (FEAT_GUI_KDE)
+#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
@@ -4489,7 +4484,6 @@
     }
 }
 
-#ifndef FEAT_GUI_KDE
 /*ARGSUSED*/
     void
 im_set_position(row, col)
@@ -4498,7 +4492,6 @@
 {
     xim_set_preedit();
 }
-#endif
 
 /*
  * Set the XIM to the current cursor position.
@@ -4593,8 +4586,6 @@
 	    gdk_ic_set_attr(xic, attr, (GdkICAttributesType)attrmask);
     }
 #else /* FEAT_GUI_GTK */
-# ifdef FEAT_GUI_KDE
-# else
     {
 	XVaNestedList attr_list;
 	XRectangle spot_area;
@@ -4641,7 +4632,6 @@
 	    XFree(attr_list);
 	}
     }
-# endif /* FEAT_GUI_KDE */
 #endif /* FEAT_GUI_GTK */
 }
 
@@ -4695,8 +4685,6 @@
     }
 # endif
 #else
-# ifdef FEAT_GUI_KDE
-# else
     {
 	XVaNestedList preedit_list = 0, status_list = 0, list = 0;
 	XRectangle pre_area, status_area;
@@ -4788,11 +4776,10 @@
 	if (preedit_list)
 	    XFree(preedit_list);
     }
-# endif /* FEAT_GUI_KDE */
 #endif
 }
 
-#if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)
+#if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK)
 static char e_xim[] = N_("E285: Failed to create input context");
 #endif
 
@@ -5576,12 +5563,8 @@
     if (xim_input_style & (int)GDK_IM_STATUS_AREA)
 	return gui.char_height;
 #else
-# if defined FEAT_GUI_KDE
-    /* always return zero? */
-# else
     if (status_area_enabled)
 	return gui.char_height;
-# endif
 #endif
     return 0;
 }
@@ -5599,10 +5582,6 @@
     if (xim_input_style & (int)GDK_IM_PREEDIT_CALLBACKS)
 	return xim_can_preediting;
 #  endif
-#  ifdef FEAT_GUI_KDE
-    if (preedit_start_col != MAXCOL)
-	return TRUE;
-#  endif
     return xim_has_focus;
 }
 
