diff options
| author | Damián Silvani <munshkr@gmail.com> | 2014-08-03 10:39:56 -0300 | 
|---|---|---|
| committer | Damián Silvani <munshkr@gmail.com> | 2014-09-16 23:35:12 -0300 | 
| commit | e32d338c87957e7fddcaa1c3393268663a171617 (patch) | |
| tree | d7eea141a3e0025fa0382fd8cc469963e5d5c3cc /src/nvim/eval.c | |
| parent | 27f423e734060e8bf00e62c2f95512c0b1511c80 (diff) | |
| download | rneovim-e32d338c87957e7fddcaa1c3393268663a171617.tar.gz rneovim-e32d338c87957e7fddcaa1c3393268663a171617.tar.bz2 rneovim-e32d338c87957e7fddcaa1c3393268663a171617.zip  | |
vim-patch:7.4.313
Problem:    Changing the return value of getpos() causes an error.  (Jie Zhu)
Solution:   Revert getpos() and add getcurpos().
https://code.google.com/p/vim/source/detail?r=332a5c2b2956d9b18d85268a724d01deea27ec83
Diffstat (limited to 'src/nvim/eval.c')
| -rw-r--r-- | src/nvim/eval.c | 30 | 
1 files changed, 24 insertions, 6 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 991c43b842..e750da01f0 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -6387,6 +6387,7 @@ static struct fst {    {"getcmdline",      0, 0, f_getcmdline},    {"getcmdpos",       0, 0, f_getcmdpos},    {"getcmdtype",      0, 0, f_getcmdtype}, +  {"getcurpos",       0, 0, f_getcurpos},    {"getcwd",          0, 0, f_getcwd},    {"getfontname",     0, 1, f_getfontname},    {"getfperm",        1, 1, f_getfperm}, @@ -9378,10 +9379,7 @@ static void f_getpid(typval_T *argvars, typval_T *rettv)    rettv->vval.v_number = os_get_pid();  } -/* - * "getpos(string)" function - */ -static void f_getpos(typval_T *argvars, typval_T *rettv) +static void getpos_both(typval_T *argvars, typval_T *rettv, bool getcurpos)  {    pos_T *fp;    list_T *l; @@ -9389,7 +9387,11 @@ static void f_getpos(typval_T *argvars, typval_T *rettv)    rettv_list_alloc(rettv);    l = rettv->vval.v_list; -  fp = var2fpos(&argvars[0], TRUE, &fnum); +  if (getcurpos) { +    fp = &curwin->w_cursor; +  } else { +    fp = var2fpos(&argvars[0], true, &fnum); +  }    list_append_number(l, (fnum != -1) ? (varnumber_T)fnum : (varnumber_T)0);    list_append_number(l, (fp != NULL) ? (varnumber_T)fp->lnum : (varnumber_T)0);    list_append_number(l, @@ -9398,12 +9400,28 @@ static void f_getpos(typval_T *argvars, typval_T *rettv)                         : (varnumber_T)0);    list_append_number(l,                       (fp != NULL) ? (varnumber_T)fp->coladd : (varnumber_T)0); -  if (fp == &curwin->w_cursor) { +  if (getcurpos) {      list_append_number(l, (varnumber_T) curwin->w_curswant + 1);    }  }  /* + * "getcurpos(string)" function + */ +static void f_getcurpos(typval_T *argvars, typval_T *rettv) +{ +  getpos_both(argvars, rettv, true); +} + +/* + * "getpos(string)" function + */ +static void f_getpos(typval_T *argvars, typval_T *rettv) +{ +  getpos_both(argvars, rettv, false); +} + +/*   * "getqflist()" and "getloclist()" functions   */  static void f_getqflist(typval_T *argvars, typval_T *rettv)  | 
