diff options
author | Bram Moolenaar <Bram@vim.org> | 2011-12-23 14:54:04 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2011-12-23 14:54:04 +0100 |
commit | 637606413f3f67683a17286f1bb2d6ff01175dc8 (patch) | |
tree | cb3add566ec680fca555cd7dcc04790d91e6a1f3 /src/getchar.c | |
parent | bbd9fd7353187ab888d5cd222b11662fa3d26de0 (diff) | |
download | vim-git-637606413f3f67683a17286f1bb2d6ff01175dc8.tar.gz |
updated for version 7.3.385v7.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.
Diffstat (limited to 'src/getchar.c')
-rw-r--r-- | src/getchar.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/getchar.c b/src/getchar.c index a895483a4..c4457c4f0 100644 --- 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); |