updated for version 7.0-067
diff --git a/src/edit.c b/src/edit.c
index fb347b8..9caca85 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -8597,7 +8597,12 @@
tpos = curwin->w_cursor;
if (oneleft() == OK)
{
- start_arrow(&tpos);
+#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
+ /* Only call start_arrow() when not busy with preediting, it will
+ * break undo. K_LEFT is inserted in im_correct_cursor(). */
+ if (!im_is_preediting())
+#endif
+ start_arrow(&tpos);
#ifdef FEAT_RIGHTLEFT
/* If exit reversed string, position is fixed */
if (revins_scol != -1 && (int)curwin->w_cursor.col >= revins_scol)