diff options
author | Bram Moolenaar <Bram@vim.org> | 2015-01-14 15:47:36 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2015-01-14 15:47:36 +0100 |
commit | 84c8e5ab9cfb6826e880e8ae062ff3347bb6909e (patch) | |
tree | d8fde94422676bc61459e9cc66d367b9f567ee51 /src/window.c | |
parent | 435797304adc544562934f3ea1572fdc81f6dd92 (diff) | |
download | vim-git-7.4.572.tar.gz |
updated for version 7.4.572v7.4.572
Problem: Address type of :wincmd depends on the argument.
Solution: Check the argument.
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/window.c b/src/window.c index 79c97d8a9..6ca288ead 100644 --- a/src/window.c +++ b/src/window.c @@ -624,6 +624,110 @@ wingotofile: } } +/* + * Figure out the address type for ":wnncmd". + */ + void +get_wincmd_addr_type(arg, eap) + char_u *arg; + exarg_T *eap; +{ + switch (*arg) + { + case 'S': + case Ctrl_S: + case 's': + case Ctrl_N: + case 'n': + case 'j': + case Ctrl_J: + case 'k': + case Ctrl_K: + case 'T': + case Ctrl_R: + case 'r': + case 'R': + case 'K': + case 'J': + case '+': + case '-': + case Ctrl__: + case '_': + case '|': + case ']': + case Ctrl_RSB: + case 'g': + case Ctrl_G: +#ifdef FEAT_VERTSPLIT + case Ctrl_V: + case 'v': + case 'h': + case Ctrl_H: + case 'l': + case Ctrl_L: + case 'H': + case 'L': + case '>': + case '<': +#endif +#if defined(FEAT_QUICKFIX) + case '}': +#endif +#ifdef FEAT_SEARCHPATH + case 'f': + case 'F': + case Ctrl_F: +#endif +#ifdef FEAT_FIND_ID + case 'i': + case Ctrl_I: + case 'd': + case Ctrl_D: +#endif + /* window size or any count */ + eap->addr_type = ADDR_LINES; + break; + + case Ctrl_HAT: + case '^': + /* buffer number */ + eap->addr_type = ADDR_BUFFERS; + break; + + case Ctrl_Q: + case 'q': + case Ctrl_C: + case 'c': + case Ctrl_O: + case 'o': + case Ctrl_W: + case 'w': + case 'W': + case 'x': + case Ctrl_X: + /* window number */ + eap->addr_type = ADDR_WINDOWS; + break; + +#if defined(FEAT_QUICKFIX) + case Ctrl_Z: + case 'z': + case 'P': +#endif + case 't': + case Ctrl_T: + case 'b': + case Ctrl_B: + case 'p': + case Ctrl_P: + case '=': + case CAR: + /* no count */ + eap->addr_type = 0; + break; + } +} + static void cmd_with_count(cmd, bufp, bufsize, Prenum) char *cmd; |