mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
updated for version 7.0d05
This commit is contained in:
parent
8cacf35f0e
commit
99ebf04cf6
@ -1,10 +1,10 @@
|
|||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Language: Test::Unit - Ruby Unit Testing Framework
|
" Language: Test::Unit - Ruby Unit Testing Framework
|
||||||
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
|
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||||
" Info: $Id$
|
" Info: $Id$
|
||||||
" URL: http://vim-ruby.rubyforge.org
|
" URL: http://vim-ruby.rubyforge.org
|
||||||
" Anon CVS: See above site
|
" Anon CVS: See above site
|
||||||
" ----------------------------------------------------------------------------
|
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
|
||||||
|
|
||||||
if exists("current_compiler")
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
|
111
src/eval.c
111
src/eval.c
@ -528,6 +528,7 @@ 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_getqflist __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_getregtype __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_getregtype __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
|
static void f_gettabwinvar __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_getwinposx __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_getwinposx __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_getwinposy __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_getwinposy __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_getwinvar __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_getwinvar __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
@ -614,6 +615,7 @@ static void f_setloclist __ARGS((typval_T *argvars, typval_T *rettv));
|
|||||||
static void f_setpos __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_setpos __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_setqflist __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_setqflist __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_setreg __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_setreg __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
|
static void f_settabwinvar __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_setwinvar __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_setwinvar __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_simplify __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_simplify __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_sort __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_sort __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
@ -728,9 +730,11 @@ static void func_unref __ARGS((char_u *name));
|
|||||||
static void func_ref __ARGS((char_u *name));
|
static void func_ref __ARGS((char_u *name));
|
||||||
static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
|
static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
|
||||||
static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
|
static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
|
||||||
static win_T *find_win_by_nr __ARGS((typval_T *vp));
|
static win_T *find_win_by_nr __ARGS((typval_T *vp, tabpage_T *tp));
|
||||||
|
static void getwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
|
||||||
static int searchpair_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
|
static int searchpair_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
|
||||||
static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp));
|
static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp));
|
||||||
|
static void setwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
|
||||||
|
|
||||||
/* Character used as separated in autoload function/variable names. */
|
/* Character used as separated in autoload function/variable names. */
|
||||||
#define AUTOLOAD_CHAR '#'
|
#define AUTOLOAD_CHAR '#'
|
||||||
@ -7035,6 +7039,7 @@ static struct fst
|
|||||||
{"getqflist", 0, 0, f_getqflist},
|
{"getqflist", 0, 0, f_getqflist},
|
||||||
{"getreg", 0, 2, f_getreg},
|
{"getreg", 0, 2, f_getreg},
|
||||||
{"getregtype", 0, 1, f_getregtype},
|
{"getregtype", 0, 1, f_getregtype},
|
||||||
|
{"gettabwinvar", 3, 3, f_gettabwinvar},
|
||||||
{"getwinposx", 0, 0, f_getwinposx},
|
{"getwinposx", 0, 0, f_getwinposx},
|
||||||
{"getwinposy", 0, 0, f_getwinposy},
|
{"getwinposy", 0, 0, f_getwinposy},
|
||||||
{"getwinvar", 2, 2, f_getwinvar},
|
{"getwinvar", 2, 2, f_getwinvar},
|
||||||
@ -7123,6 +7128,7 @@ static struct fst
|
|||||||
{"setpos", 2, 2, f_setpos},
|
{"setpos", 2, 2, f_setpos},
|
||||||
{"setqflist", 1, 2, f_setqflist},
|
{"setqflist", 1, 2, f_setqflist},
|
||||||
{"setreg", 2, 3, f_setreg},
|
{"setreg", 2, 3, f_setreg},
|
||||||
|
{"settabwinvar", 4, 4, f_settabwinvar},
|
||||||
{"setwinvar", 3, 3, f_setwinvar},
|
{"setwinvar", 3, 3, f_setwinvar},
|
||||||
{"simplify", 1, 1, f_simplify},
|
{"simplify", 1, 1, f_simplify},
|
||||||
{"sort", 1, 2, f_sort},
|
{"sort", 1, 2, f_sort},
|
||||||
@ -10129,7 +10135,7 @@ f_getqflist(argvars, rettv)
|
|||||||
wp = NULL;
|
wp = NULL;
|
||||||
if (argvars[0].v_type != VAR_UNKNOWN) /* getloclist() */
|
if (argvars[0].v_type != VAR_UNKNOWN) /* getloclist() */
|
||||||
{
|
{
|
||||||
wp = find_win_by_nr(&argvars[0]);
|
wp = find_win_by_nr(&argvars[0], NULL);
|
||||||
if (wp == NULL)
|
if (wp == NULL)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -10218,6 +10224,17 @@ f_getregtype(argvars, rettv)
|
|||||||
rettv->vval.v_string = vim_strsave(buf);
|
rettv->vval.v_string = vim_strsave(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "gettabwinvar()" function
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
f_gettabwinvar(argvars, rettv)
|
||||||
|
typval_T *argvars;
|
||||||
|
typval_T *rettv;
|
||||||
|
{
|
||||||
|
getwinvar(argvars, rettv, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "getwinposx()" function
|
* "getwinposx()" function
|
||||||
*/
|
*/
|
||||||
@ -10260,9 +10277,13 @@ f_getwinposy(argvars, rettv)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find window specifed by "vp" in tabpage "tp".
|
||||||
|
*/
|
||||||
static win_T *
|
static win_T *
|
||||||
find_win_by_nr(vp)
|
find_win_by_nr(vp, tp)
|
||||||
typval_T *vp;
|
typval_T *vp;
|
||||||
|
tabpage_T *tp; /* NULL for current tab page */
|
||||||
{
|
{
|
||||||
#ifdef FEAT_WINDOWS
|
#ifdef FEAT_WINDOWS
|
||||||
win_T *wp;
|
win_T *wp;
|
||||||
@ -10277,7 +10298,8 @@ find_win_by_nr(vp)
|
|||||||
if (nr == 0)
|
if (nr == 0)
|
||||||
return curwin;
|
return curwin;
|
||||||
|
|
||||||
for (wp = firstwin; wp != NULL; wp = wp->w_next)
|
for (wp = (tp == NULL || tp == curtab) ? firstwin : tp->tp_firstwin;
|
||||||
|
wp != NULL; wp = wp->w_next)
|
||||||
if (--nr <= 0)
|
if (--nr <= 0)
|
||||||
break;
|
break;
|
||||||
return wp;
|
return wp;
|
||||||
@ -10295,13 +10317,32 @@ find_win_by_nr(vp)
|
|||||||
f_getwinvar(argvars, rettv)
|
f_getwinvar(argvars, rettv)
|
||||||
typval_T *argvars;
|
typval_T *argvars;
|
||||||
typval_T *rettv;
|
typval_T *rettv;
|
||||||
|
{
|
||||||
|
getwinvar(argvars, rettv, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* getwinvar() and gettabwinvar()
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
getwinvar(argvars, rettv, off)
|
||||||
|
typval_T *argvars;
|
||||||
|
typval_T *rettv;
|
||||||
|
int off; /* 1 for gettabwinvar() */
|
||||||
{
|
{
|
||||||
win_T *win, *oldcurwin;
|
win_T *win, *oldcurwin;
|
||||||
char_u *varname;
|
char_u *varname;
|
||||||
dictitem_T *v;
|
dictitem_T *v;
|
||||||
|
tabpage_T *tp;
|
||||||
|
|
||||||
win = find_win_by_nr(&argvars[0]);
|
#ifdef FEAT_WINDOWS
|
||||||
varname = get_tv_string_chk(&argvars[1]);
|
if (off == 1)
|
||||||
|
tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL));
|
||||||
|
else
|
||||||
|
tp = curtab;
|
||||||
|
#endif
|
||||||
|
win = find_win_by_nr(&argvars[off], tp);
|
||||||
|
varname = get_tv_string_chk(&argvars[off + 1]);
|
||||||
++emsg_off;
|
++emsg_off;
|
||||||
|
|
||||||
rettv->v_type = VAR_STRING;
|
rettv->v_type = VAR_STRING;
|
||||||
@ -14245,7 +14286,7 @@ f_setloclist(argvars, rettv)
|
|||||||
|
|
||||||
rettv->vval.v_number = -1;
|
rettv->vval.v_number = -1;
|
||||||
|
|
||||||
win = find_win_by_nr(&argvars[0]);
|
win = find_win_by_nr(&argvars[0], NULL);
|
||||||
if (win != NULL)
|
if (win != NULL)
|
||||||
set_qf_ll_list(win, &argvars[1], &argvars[2], rettv);
|
set_qf_ll_list(win, &argvars[1], &argvars[2], rettv);
|
||||||
}
|
}
|
||||||
@ -14368,37 +14409,71 @@ f_setreg(argvars, rettv)
|
|||||||
rettv->vval.v_number = 0;
|
rettv->vval.v_number = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "settabwinvar()" function
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
f_settabwinvar(argvars, rettv)
|
||||||
|
typval_T *argvars;
|
||||||
|
typval_T *rettv;
|
||||||
|
{
|
||||||
|
setwinvar(argvars, rettv, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "setwinvar(expr)" function
|
* "setwinvar()" function
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
|
||||||
static void
|
static void
|
||||||
f_setwinvar(argvars, rettv)
|
f_setwinvar(argvars, rettv)
|
||||||
typval_T *argvars;
|
typval_T *argvars;
|
||||||
typval_T *rettv;
|
typval_T *rettv;
|
||||||
|
{
|
||||||
|
setwinvar(argvars, rettv, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "setwinvar()" and "settabwinvar()" functions
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
setwinvar(argvars, rettv, off)
|
||||||
|
typval_T *argvars;
|
||||||
|
typval_T *rettv;
|
||||||
|
int off;
|
||||||
{
|
{
|
||||||
win_T *win;
|
win_T *win;
|
||||||
#ifdef FEAT_WINDOWS
|
#ifdef FEAT_WINDOWS
|
||||||
win_T *save_curwin;
|
win_T *save_curwin;
|
||||||
|
tabpage_T *save_curtab;
|
||||||
#endif
|
#endif
|
||||||
char_u *varname, *winvarname;
|
char_u *varname, *winvarname;
|
||||||
typval_T *varp;
|
typval_T *varp;
|
||||||
char_u nbuf[NUMBUFLEN];
|
char_u nbuf[NUMBUFLEN];
|
||||||
|
tabpage_T *tp;
|
||||||
|
|
||||||
rettv->vval.v_number = 0;
|
rettv->vval.v_number = 0;
|
||||||
|
|
||||||
if (check_restricted() || check_secure())
|
if (check_restricted() || check_secure())
|
||||||
return;
|
return;
|
||||||
win = find_win_by_nr(&argvars[0]);
|
|
||||||
varname = get_tv_string_chk(&argvars[1]);
|
#ifdef FEAT_WINDOWS
|
||||||
varp = &argvars[2];
|
if (off == 1)
|
||||||
|
tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL));
|
||||||
|
else
|
||||||
|
tp = curtab;
|
||||||
|
#endif
|
||||||
|
win = find_win_by_nr(&argvars[off], tp);
|
||||||
|
varname = get_tv_string_chk(&argvars[off + 1]);
|
||||||
|
varp = &argvars[off + 2];
|
||||||
|
|
||||||
if (win != NULL && varname != NULL && varp != NULL)
|
if (win != NULL && varname != NULL && varp != NULL)
|
||||||
{
|
{
|
||||||
#ifdef FEAT_WINDOWS
|
#ifdef FEAT_WINDOWS
|
||||||
/* set curwin to be our win, temporarily */
|
/* set curwin to be our win, temporarily */
|
||||||
save_curwin = curwin;
|
save_curwin = curwin;
|
||||||
|
save_curtab = curtab;
|
||||||
|
goto_tabpage_tp(tp);
|
||||||
|
if (!win_valid(win))
|
||||||
|
return;
|
||||||
curwin = win;
|
curwin = win;
|
||||||
curbuf = curwin->w_buffer;
|
curbuf = curwin->w_buffer;
|
||||||
#endif
|
#endif
|
||||||
@ -14428,8 +14503,10 @@ f_setwinvar(argvars, rettv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_WINDOWS
|
#ifdef FEAT_WINDOWS
|
||||||
/* Restore current window, if it's still valid (autocomands can make
|
/* Restore current tabpage and window, if still valid (autocomands can
|
||||||
* it invalid). */
|
* make them invalid). */
|
||||||
|
if (valid_tabpage(save_curtab))
|
||||||
|
goto_tabpage_tp(save_curtab);
|
||||||
if (win_valid(save_curwin))
|
if (win_valid(save_curwin))
|
||||||
{
|
{
|
||||||
curwin = save_curwin;
|
curwin = save_curwin;
|
||||||
@ -15901,7 +15978,7 @@ f_winbufnr(argvars, rettv)
|
|||||||
{
|
{
|
||||||
win_T *wp;
|
win_T *wp;
|
||||||
|
|
||||||
wp = find_win_by_nr(&argvars[0]);
|
wp = find_win_by_nr(&argvars[0], NULL);
|
||||||
if (wp == NULL)
|
if (wp == NULL)
|
||||||
rettv->vval.v_number = -1;
|
rettv->vval.v_number = -1;
|
||||||
else
|
else
|
||||||
@ -15931,7 +16008,7 @@ f_winheight(argvars, rettv)
|
|||||||
{
|
{
|
||||||
win_T *wp;
|
win_T *wp;
|
||||||
|
|
||||||
wp = find_win_by_nr(&argvars[0]);
|
wp = find_win_by_nr(&argvars[0], NULL);
|
||||||
if (wp == NULL)
|
if (wp == NULL)
|
||||||
rettv->vval.v_number = -1;
|
rettv->vval.v_number = -1;
|
||||||
else
|
else
|
||||||
@ -16092,7 +16169,7 @@ f_winwidth(argvars, rettv)
|
|||||||
{
|
{
|
||||||
win_T *wp;
|
win_T *wp;
|
||||||
|
|
||||||
wp = find_win_by_nr(&argvars[0]);
|
wp = find_win_by_nr(&argvars[0], NULL);
|
||||||
if (wp == NULL)
|
if (wp == NULL)
|
||||||
rettv->vval.v_number = -1;
|
rettv->vval.v_number = -1;
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user