Mercurial > vim
diff src/window.c @ 6489:cba15023c403 v7.4.572
updated for version 7.4.572
Problem: Address type of :wincmd depends on the argument.
Solution: Check the argument.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 14 Jan 2015 15:47:36 +0100 |
parents | 84190359b979 |
children | 75444015837a |
line wrap: on
line diff
--- 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;