0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

updated for version 7.0202

This commit is contained in:
Bram Moolenaar
2006-02-20 21:37:40 +00:00
parent 70836c8ba8
commit faa959a870
26 changed files with 1273 additions and 641 deletions

View File

@@ -621,7 +621,9 @@ static void f_synID __ARGS((typval_T *argvars, typval_T *rettv));
static void f_synIDattr __ARGS((typval_T *argvars, typval_T *rettv));
static void f_synIDtrans __ARGS((typval_T *argvars, typval_T *rettv));
static void f_system __ARGS((typval_T *argvars, typval_T *rettv));
static void f_tabpagebuflist __ARGS((typval_T *argvars, typval_T *rettv));
static void f_tabpagenr __ARGS((typval_T *argvars, typval_T *rettv));
static void f_tabpagewinnr __ARGS((typval_T *argvars, typval_T *rettv));
static void f_taglist __ARGS((typval_T *argvars, typval_T *rettv));
static void f_tagfiles __ARGS((typval_T *argvars, typval_T *rettv));
static void f_tempname __ARGS((typval_T *argvars, typval_T *rettv));
@@ -6984,7 +6986,9 @@ static struct fst
{"synIDattr", 2, 3, f_synIDattr},
{"synIDtrans", 1, 1, f_synIDtrans},
{"system", 1, 2, f_system},
{"tabpagebuflist", 0, 1, f_tabpagebuflist},
{"tabpagenr", 0, 1, f_tabpagenr},
{"tabpagewinnr", 1, 2, f_tabpagewinnr},
{"tagfiles", 0, 0, f_tagfiles},
{"taglist", 1, 1, f_taglist},
{"tempname", 0, 0, f_tempname},
@@ -14869,6 +14873,52 @@ done:
rettv->vval.v_string = res;
}
/*
* "tabpagebuflist()" function
*/
/* ARGSUSED */
static void
f_tabpagebuflist(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
{
#ifndef FEAT_WINDOWS
rettv->vval.v_number = 0;
#else
tabpage_T *tp;
win_T *wp = NULL;
list_T *l;
if (argvars[0].v_type == VAR_UNKNOWN)
wp = firstwin;
else
{
tp = find_tabpage((int)get_tv_number(&argvars[0]));
if (tp != NULL)
wp = tp->tp_firstwin;
}
if (wp == NULL)
rettv->vval.v_number = 0;
else
{
l = list_alloc();
if (l == NULL)
rettv->vval.v_number = 0;
else
{
rettv->vval.v_list = l;
rettv->v_type = VAR_LIST;
++l->lv_refcount;
for (; wp != NULL; wp = wp->w_next)
if (list_append_number(l, wp->w_buffer->b_fnum) == FAIL)
break;
}
}
#endif
}
/*
* "tabpagenr()" function
*/
@@ -14903,6 +14953,75 @@ f_tabpagenr(argvars, rettv)
rettv->vval.v_number = nr;
}
#ifdef FEAT_WINDOWS
static int get_winnr __ARGS((tabpage_T *tp, typval_T *argvar));
/*
* Common code for tabpagewinnr() and winnr().
*/
static int
get_winnr(tp, argvar)
tabpage_T *tp;
typval_T *argvar;
{
win_T *twin;
int nr = 1;
win_T *wp;
char_u *arg;
twin = (tp == curtab) ? curwin : tp->tp_curwin;
if (argvar->v_type != VAR_UNKNOWN)
{
arg = get_tv_string_chk(argvar);
if (arg == NULL)
nr = 0; /* type error; errmsg already given */
else if (STRCMP(arg, "$") == 0)
twin = (tp == curtab) ? lastwin : tp->tp_lastwin;
else if (STRCMP(arg, "#") == 0)
{
twin = (tp == curtab) ? prevwin : tp->tp_prevwin;
if (twin == NULL)
nr = 0;
}
else
{
EMSG2(_(e_invexpr2), arg);
nr = 0;
}
}
if (nr > 0)
for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
wp != twin; wp = wp->w_next)
++nr;
return nr;
}
#endif
/*
* "tabpagewinnr()" function
*/
/* ARGSUSED */
static void
f_tabpagewinnr(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
{
int nr = 1;
#ifdef FEAT_WINDOWS
tabpage_T *tp;
tp = find_tabpage((int)get_tv_number(&argvars[0]));
if (tp == NULL)
nr = 0;
else
nr = get_winnr(tp, &argvars[1]);
#endif
rettv->vval.v_number = nr;
}
/*
* "tagfiles()" function
*/
@@ -15357,34 +15476,9 @@ f_winnr(argvars, rettv)
typval_T *rettv;
{
int nr = 1;
#ifdef FEAT_WINDOWS
win_T *wp;
win_T *twin = curwin;
char_u *arg;
if (argvars[0].v_type != VAR_UNKNOWN)
{
arg = get_tv_string_chk(&argvars[0]);
if (arg == NULL)
nr = 0; /* type error; errmsg already given */
else if (STRCMP(arg, "$") == 0)
twin = lastwin;
else if (STRCMP(arg, "#") == 0)
{
twin = prevwin;
if (prevwin == NULL)
nr = 0;
}
else
{
EMSG2(_(e_invexpr2), arg);
nr = 0;
}
}
if (nr > 0)
for (wp = firstwin; wp != twin; wp = wp->w_next)
++nr;
nr = get_winnr(curtab, &argvars[0]);
#endif
rettv->vval.v_number = nr;
}