Mercurial > vim
changeset 941:d95676480093 v7.0.067
updated for version 7.0-067
author | vimboss |
---|---|
date | Tue, 29 Aug 2006 14:07:36 +0000 |
parents | 306fc545fe2c |
children | 29bf49bad20d |
files | src/edit.c src/mbyte.c src/version.c |
diffstat | 3 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/edit.c +++ b/src/edit.c @@ -8597,7 +8597,12 @@ ins_left() 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)
--- a/src/mbyte.c +++ b/src/mbyte.c @@ -3514,6 +3514,11 @@ im_delete_preedit(void) add_to_input_buf(delkey, (int)sizeof(delkey)); } +/* + * Move the cursor left by "num_move_back" characters. + * Note that ins_left() checks im_is_preediting() to avoid breaking undo for + * these K_LEFT keys. + */ static void im_correct_cursor(int num_move_back) { @@ -3741,8 +3746,7 @@ im_preedit_changed_cb(GtkIMContext *cont } else if (cursor_index == 0 && preedit_string[0] == '\0') { - if (preedit_start_col == MAXCOL) - xim_has_preediting = FALSE; + xim_has_preediting = FALSE; /* If at the start position (after typing backspace) * preedit_start_col must be reset. */