diff --git a/src/eval.c b/src/eval.c index e895b997b9a579a568d097cbf604c96f4bf8695e..d66fe57f40027ea5f606e262d3697d568549539d 100644 --- a/src/eval.c +++ b/src/eval.c @@ -14397,7 +14397,8 @@ f_setline(argvars, rettv) if (u_savesub(lnum) == OK && ml_replace(lnum, line, TRUE) == OK) { changed_bytes(lnum, 0); - check_cursor_col(); + if (lnum == curwin->w_cursor.lnum) + check_cursor_col(); rettv->vval.v_number = 0; /* OK */ } } diff --git a/src/misc2.c b/src/misc2.c index 14c4784cf2f5e5757fd2080ef00d46e84d45c06f..cdff6abadae0b848890aa31d9c70dfa43a4fcbe8 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -516,7 +516,14 @@ check_cursor_col() || virtual_active()) curwin->w_cursor.col = len; else + { curwin->w_cursor.col = len - 1; +#ifdef FEAT_MBYTE + /* prevent cursor from moving on the trail byte */ + if (has_mbyte) + mb_adjust_cursor(); +#endif + } } #ifdef FEAT_VIRTUALEDIT diff --git a/src/version.c b/src/version.c index 3c8b1733e48293e7fcf92d1fcadc54915c0121ef..47f2f33def5a6dfa4525be489747fbd072faac68 100644 --- a/src/version.c +++ b/src/version.c @@ -666,6 +666,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 225, /**/ 224, /**/