aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c30
-rw-r--r--src/nvim/testdir/test_eval.in4
-rw-r--r--src/nvim/testdir/test_eval.ok2
-rw-r--r--src/nvim/version.c2
4 files changed, 28 insertions, 10 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)
diff --git a/src/nvim/testdir/test_eval.in b/src/nvim/testdir/test_eval.in
index 3e5ca8e872..a29fefc3b6 100644
--- a/src/nvim/testdir/test_eval.in
+++ b/src/nvim/testdir/test_eval.in
@@ -49,9 +49,9 @@ STARTTEST
: $put =v:exception
:endtry
-:$put ='{{{1 setpos/getpos'
+:$put ='{{{1 getcurpos/setpos'
/^012345678
-6l:let sp = getpos('.')
+6l:let sp = getcurpos()
0:call setpos('.', sp)
jyl:$put
diff --git a/src/nvim/testdir/test_eval.ok b/src/nvim/testdir/test_eval.ok
index 7e847c1a57..63b9156442 100644
--- a/src/nvim/testdir/test_eval.ok
+++ b/src/nvim/testdir/test_eval.ok
@@ -9,5 +9,5 @@ func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
-{{{1 setpos/getpos
+{{{1 getcurpos/setpos
6
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 7e4729aaaf..1d0366f083 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -282,7 +282,7 @@ static int included_patches[] = {
//316 NA
315,
314,
- //313,
+ 313,
312,
//311,
310,