aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorDamián Silvani <munshkr@gmail.com>2014-08-03 10:39:56 -0300
committerDamián Silvani <munshkr@gmail.com>2014-09-16 23:35:12 -0300
commite32d338c87957e7fddcaa1c3393268663a171617 (patch)
treed7eea141a3e0025fa0382fd8cc469963e5d5c3cc /src/nvim/eval.c
parent27f423e734060e8bf00e62c2f95512c0b1511c80 (diff)
downloadrneovim-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.c30
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)