0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

updated for version 7.4.313

Problem:    Changing the return value of getpos() causes an error. (Jie Zhu)
Solution:   Revert getpos() and add getcurpos().
This commit is contained in:
Bram Moolenaar
2014-05-28 20:31:42 +02:00
parent 2d1fe05fc0
commit 6f6c0f8085
5 changed files with 59 additions and 18 deletions

View File

@@ -560,6 +560,7 @@ static void f_getftype __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getline __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getmatches __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getpid __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getcurpos __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getpos __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv));
static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
@@ -7967,6 +7968,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},
@@ -11780,6 +11782,19 @@ f_getpid(argvars, rettv)
rettv->vval.v_number = mch_get_pid();
}
static void getpos_both __ARGS((typval_T *argvars, typval_T *rettv, int getcurpos));
/*
* "getcurpos()" function
*/
static void
f_getcurpos(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
{
getpos_both(argvars, rettv, TRUE);
}
/*
* "getpos(string)" function
*/
@@ -11787,6 +11802,15 @@ f_getpid(argvars, rettv)
f_getpos(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
{
getpos_both(argvars, rettv, FALSE);
}
static void
getpos_both(argvars, rettv, getcurpos)
typval_T *argvars;
typval_T *rettv;
int getcurpos;
{
pos_T *fp;
list_T *l;
@@ -11795,7 +11819,10 @@ f_getpos(argvars, rettv)
if (rettv_list_alloc(rettv) == OK)
{
l = rettv->vval.v_list;
fp = var2fpos(&argvars[0], TRUE, &fnum);
if (getcurpos)
fp = &curwin->w_cursor;
else
fp = var2fpos(&argvars[0], TRUE, &fnum);
if (fnum != -1)
list_append_number(l, (varnumber_T)fnum);
else
@@ -11810,7 +11837,7 @@ f_getpos(argvars, rettv)
(fp != NULL) ? (varnumber_T)fp->coladd :
#endif
(varnumber_T)0);
if (fp == &curwin->w_cursor)
if (getcurpos)
list_append_number(l, (varnumber_T)curwin->w_curswant + 1);
}
else