Mercurial > vim
diff src/eval.c @ 8485:675ec6cc9021 v7.4.1533
commit https://github.com/vim/vim/commit/74c5bbf13435a7ab1e3461078bbcb1200f0451e1
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Mar 10 22:19:53 2016 +0100
patch 7.4.1533
Problem: Using feedkeys() with an empty string disregards 'x' option.
Solution: Make 'x' work with an empty string. (Thinca)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 10 Mar 2016 22:30:05 +0100 |
parents | c08c6d19db4d |
children | ce789e3dc84d |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -11839,24 +11839,25 @@ f_feedkeys(typval_T *argvars, typval_T * return; keys = get_tv_string(&argvars[0]); - if (*keys != NUL) - { - if (argvars[1].v_type != VAR_UNKNOWN) - { - flags = get_tv_string_buf(&argvars[1], nbuf); - for ( ; *flags != NUL; ++flags) - { - switch (*flags) - { - case 'n': remap = FALSE; break; - case 'm': remap = TRUE; break; - case 't': typed = TRUE; break; - case 'i': insert = TRUE; break; - case 'x': execute = TRUE; break; - } - } - } - + + if (argvars[1].v_type != VAR_UNKNOWN) + { + flags = get_tv_string_buf(&argvars[1], nbuf); + for ( ; *flags != NUL; ++flags) + { + switch (*flags) + { + case 'n': remap = FALSE; break; + case 'm': remap = TRUE; break; + case 't': typed = TRUE; break; + case 'i': insert = TRUE; break; + case 'x': execute = TRUE; break; + } + } + } + + if (*keys != NUL || execute) + { /* Need to escape K_SPECIAL and CSI before putting the string in the * typeahead buffer. */ keys_esc = vim_strsave_escape_csi(keys);