diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 30 | ||||
-rw-r--r-- | src/nvim/testdir/test_eval.in | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_eval.ok | 2 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
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, |