Skip to content

Commit 99ebf04

Browse files
committed
updated for version 7.0d05
1 parent 8cacf35 commit 99ebf04

2 files changed

Lines changed: 100 additions & 23 deletions

File tree

runtime/compiler/rubyunit.vim

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
" Vim compiler file
2-
" Language: Test::Unit - Ruby Unit Testing Framework
3-
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
4-
" Info: $Id$
5-
" URL: http://vim-ruby.rubyforge.org
6-
" Anon CVS: See above site
7-
" ----------------------------------------------------------------------------
2+
" Language: Test::Unit - Ruby Unit Testing Framework
3+
" Maintainer: Doug Kearns <dougkearns@gmail.com>
4+
" Info: $Id$
5+
" URL: http://vim-ruby.rubyforge.org
6+
" Anon CVS: See above site
7+
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
88

99
if exists("current_compiler")
1010
finish

src/eval.c

Lines changed: 94 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,7 @@ static void f_getpos __ARGS((typval_T *argvars, typval_T *rettv));
528528
static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv));
529529
static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
530530
static void f_getregtype __ARGS((typval_T *argvars, typval_T *rettv));
531+
static void f_gettabwinvar __ARGS((typval_T *argvars, typval_T *rettv));
531532
static void f_getwinposx __ARGS((typval_T *argvars, typval_T *rettv));
532533
static void f_getwinposy __ARGS((typval_T *argvars, typval_T *rettv));
533534
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));
614615
static void f_setpos __ARGS((typval_T *argvars, typval_T *rettv));
615616
static void f_setqflist __ARGS((typval_T *argvars, typval_T *rettv));
616617
static void f_setreg __ARGS((typval_T *argvars, typval_T *rettv));
618+
static void f_settabwinvar __ARGS((typval_T *argvars, typval_T *rettv));
617619
static void f_setwinvar __ARGS((typval_T *argvars, typval_T *rettv));
618620
static void f_simplify __ARGS((typval_T *argvars, typval_T *rettv));
619621
static void f_sort __ARGS((typval_T *argvars, typval_T *rettv));
@@ -728,9 +730,11 @@ static void func_unref __ARGS((char_u *name));
728730
static void func_ref __ARGS((char_u *name));
729731
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));
730732
static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
731-
static win_T *find_win_by_nr __ARGS((typval_T *vp));
733+
static win_T *find_win_by_nr __ARGS((typval_T *vp, tabpage_T *tp));
734+
static void getwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
732735
static int searchpair_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
733736
static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp));
737+
static void setwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
734738

735739
/* Character used as separated in autoload function/variable names. */
736740
#define AUTOLOAD_CHAR '#'
@@ -7035,6 +7039,7 @@ static struct fst
70357039
{"getqflist", 0, 0, f_getqflist},
70367040
{"getreg", 0, 2, f_getreg},
70377041
{"getregtype", 0, 1, f_getregtype},
7042+
{"gettabwinvar", 3, 3, f_gettabwinvar},
70387043
{"getwinposx", 0, 0, f_getwinposx},
70397044
{"getwinposy", 0, 0, f_getwinposy},
70407045
{"getwinvar", 2, 2, f_getwinvar},
@@ -7123,6 +7128,7 @@ static struct fst
71237128
{"setpos", 2, 2, f_setpos},
71247129
{"setqflist", 1, 2, f_setqflist},
71257130
{"setreg", 2, 3, f_setreg},
7131+
{"settabwinvar", 4, 4, f_settabwinvar},
71267132
{"setwinvar", 3, 3, f_setwinvar},
71277133
{"simplify", 1, 1, f_simplify},
71287134
{"sort", 1, 2, f_sort},
@@ -10129,7 +10135,7 @@ f_getqflist(argvars, rettv)
1012910135
wp = NULL;
1013010136
if (argvars[0].v_type != VAR_UNKNOWN) /* getloclist() */
1013110137
{
10132-
wp = find_win_by_nr(&argvars[0]);
10138+
wp = find_win_by_nr(&argvars[0], NULL);
1013310139
if (wp == NULL)
1013410140
return;
1013510141
}
@@ -10218,6 +10224,17 @@ f_getregtype(argvars, rettv)
1021810224
rettv->vval.v_string = vim_strsave(buf);
1021910225
}
1022010226

10227+
/*
10228+
* "gettabwinvar()" function
10229+
*/
10230+
static void
10231+
f_gettabwinvar(argvars, rettv)
10232+
typval_T *argvars;
10233+
typval_T *rettv;
10234+
{
10235+
getwinvar(argvars, rettv, 1);
10236+
}
10237+
1022110238
/*
1022210239
* "getwinposx()" function
1022310240
*/
@@ -10260,9 +10277,13 @@ f_getwinposy(argvars, rettv)
1026010277
#endif
1026110278
}
1026210279

10280+
/*
10281+
* Find window specifed by "vp" in tabpage "tp".
10282+
*/
1026310283
static win_T *
10264-
find_win_by_nr(vp)
10284+
find_win_by_nr(vp, tp)
1026510285
typval_T *vp;
10286+
tabpage_T *tp; /* NULL for current tab page */
1026610287
{
1026710288
#ifdef FEAT_WINDOWS
1026810289
win_T *wp;
@@ -10277,7 +10298,8 @@ find_win_by_nr(vp)
1027710298
if (nr == 0)
1027810299
return curwin;
1027910300

10280-
for (wp = firstwin; wp != NULL; wp = wp->w_next)
10301+
for (wp = (tp == NULL || tp == curtab) ? firstwin : tp->tp_firstwin;
10302+
wp != NULL; wp = wp->w_next)
1028110303
if (--nr <= 0)
1028210304
break;
1028310305
return wp;
@@ -10295,13 +10317,32 @@ find_win_by_nr(vp)
1029510317
f_getwinvar(argvars, rettv)
1029610318
typval_T *argvars;
1029710319
typval_T *rettv;
10320+
{
10321+
getwinvar(argvars, rettv, 0);
10322+
}
10323+
10324+
/*
10325+
* getwinvar() and gettabwinvar()
10326+
*/
10327+
static void
10328+
getwinvar(argvars, rettv, off)
10329+
typval_T *argvars;
10330+
typval_T *rettv;
10331+
int off; /* 1 for gettabwinvar() */
1029810332
{
1029910333
win_T *win, *oldcurwin;
1030010334
char_u *varname;
1030110335
dictitem_T *v;
10336+
tabpage_T *tp;
1030210337

10303-
win = find_win_by_nr(&argvars[0]);
10304-
varname = get_tv_string_chk(&argvars[1]);
10338+
#ifdef FEAT_WINDOWS
10339+
if (off == 1)
10340+
tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL));
10341+
else
10342+
tp = curtab;
10343+
#endif
10344+
win = find_win_by_nr(&argvars[off], tp);
10345+
varname = get_tv_string_chk(&argvars[off + 1]);
1030510346
++emsg_off;
1030610347

1030710348
rettv->v_type = VAR_STRING;
@@ -14245,7 +14286,7 @@ f_setloclist(argvars, rettv)
1424514286

1424614287
rettv->vval.v_number = -1;
1424714288

14248-
win = find_win_by_nr(&argvars[0]);
14289+
win = find_win_by_nr(&argvars[0], NULL);
1424914290
if (win != NULL)
1425014291
set_qf_ll_list(win, &argvars[1], &argvars[2], rettv);
1425114292
}
@@ -14368,37 +14409,71 @@ f_setreg(argvars, rettv)
1436814409
rettv->vval.v_number = 0;
1436914410
}
1437014411

14412+
/*
14413+
* "settabwinvar()" function
14414+
*/
14415+
static void
14416+
f_settabwinvar(argvars, rettv)
14417+
typval_T *argvars;
14418+
typval_T *rettv;
14419+
{
14420+
setwinvar(argvars, rettv, 1);
14421+
}
1437114422

1437214423
/*
14373-
* "setwinvar(expr)" function
14424+
* "setwinvar()" function
1437414425
*/
14375-
/*ARGSUSED*/
1437614426
static void
1437714427
f_setwinvar(argvars, rettv)
1437814428
typval_T *argvars;
1437914429
typval_T *rettv;
14430+
{
14431+
setwinvar(argvars, rettv, 0);
14432+
}
14433+
14434+
/*
14435+
* "setwinvar()" and "settabwinvar()" functions
14436+
*/
14437+
static void
14438+
setwinvar(argvars, rettv, off)
14439+
typval_T *argvars;
14440+
typval_T *rettv;
14441+
int off;
1438014442
{
1438114443
win_T *win;
1438214444
#ifdef FEAT_WINDOWS
1438314445
win_T *save_curwin;
14446+
tabpage_T *save_curtab;
1438414447
#endif
1438514448
char_u *varname, *winvarname;
1438614449
typval_T *varp;
1438714450
char_u nbuf[NUMBUFLEN];
14451+
tabpage_T *tp;
1438814452

1438914453
rettv->vval.v_number = 0;
1439014454

1439114455
if (check_restricted() || check_secure())
1439214456
return;
14393-
win = find_win_by_nr(&argvars[0]);
14394-
varname = get_tv_string_chk(&argvars[1]);
14395-
varp = &argvars[2];
14457+
14458+
#ifdef FEAT_WINDOWS
14459+
if (off == 1)
14460+
tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL));
14461+
else
14462+
tp = curtab;
14463+
#endif
14464+
win = find_win_by_nr(&argvars[off], tp);
14465+
varname = get_tv_string_chk(&argvars[off + 1]);
14466+
varp = &argvars[off + 2];
1439614467

1439714468
if (win != NULL && varname != NULL && varp != NULL)
1439814469
{
1439914470
#ifdef FEAT_WINDOWS
1440014471
/* set curwin to be our win, temporarily */
1440114472
save_curwin = curwin;
14473+
save_curtab = curtab;
14474+
goto_tabpage_tp(tp);
14475+
if (!win_valid(win))
14476+
return;
1440214477
curwin = win;
1440314478
curbuf = curwin->w_buffer;
1440414479
#endif
@@ -14428,8 +14503,10 @@ f_setwinvar(argvars, rettv)
1442814503
}
1442914504

1443014505
#ifdef FEAT_WINDOWS
14431-
/* Restore current window, if it's still valid (autocomands can make
14432-
* it invalid). */
14506+
/* Restore current tabpage and window, if still valid (autocomands can
14507+
* make them invalid). */
14508+
if (valid_tabpage(save_curtab))
14509+
goto_tabpage_tp(save_curtab);
1443314510
if (win_valid(save_curwin))
1443414511
{
1443514512
curwin = save_curwin;
@@ -15901,7 +15978,7 @@ f_winbufnr(argvars, rettv)
1590115978
{
1590215979
win_T *wp;
1590315980

15904-
wp = find_win_by_nr(&argvars[0]);
15981+
wp = find_win_by_nr(&argvars[0], NULL);
1590515982
if (wp == NULL)
1590615983
rettv->vval.v_number = -1;
1590715984
else
@@ -15931,7 +16008,7 @@ f_winheight(argvars, rettv)
1593116008
{
1593216009
win_T *wp;
1593316010

15934-
wp = find_win_by_nr(&argvars[0]);
16011+
wp = find_win_by_nr(&argvars[0], NULL);
1593516012
if (wp == NULL)
1593616013
rettv->vval.v_number = -1;
1593716014
else
@@ -16092,7 +16169,7 @@ f_winwidth(argvars, rettv)
1609216169
{
1609316170
win_T *wp;
1609416171

16095-
wp = find_win_by_nr(&argvars[0]);
16172+
wp = find_win_by_nr(&argvars[0], NULL);
1609616173
if (wp == NULL)
1609716174
rettv->vval.v_number = -1;
1609816175
else

0 commit comments

Comments
 (0)