# HG changeset patch # User Bram Moolenaar # Date 1324648444 -3600 # Node ID 910eb66c97684b3c0511789e7655dce2c7ba254a # Parent 343a5861e267c325230c28d10a44dc9f51d744b8 updated for version 7.3.385 Problem: When using an expression mapping on the command line the cursor ends up in the wrong place. (Yasuhiro Matsumoto) Solution: Save and restore msg_col and msg_row when evaluating the expression. diff --git a/src/getchar.c b/src/getchar.c --- a/src/getchar.c +++ b/src/getchar.c @@ -4510,6 +4510,8 @@ eval_map_expr(str, c) char_u *expr; char_u *save_cmd; pos_T save_cursor; + int save_msg_col; + int save_msg_row; /* Remove escaping of CSI, because "str" is in a format to be used as * typeahead. */ @@ -4533,12 +4535,16 @@ eval_map_expr(str, c) #endif set_vim_var_char(c); /* set v:char to the typed character */ save_cursor = curwin->w_cursor; + save_msg_col = msg_col; + save_msg_row = msg_row; p = eval_to_string(expr, NULL, FALSE); --textlock; #ifdef FEAT_EX_EXTRA --ex_normal_lock; #endif curwin->w_cursor = save_cursor; + msg_col = save_msg_col; + msg_row = save_msg_row; restore_cmdline_alloc(save_cmd); vim_free(expr); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 385, +/**/ 384, /**/ 383,