mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
updated for version 7.4.434
Problem: gettabvar() is not consistent with getwinvar() and getbufvar(). Solution: Return a dict with all variables when the varname is empty. (Yasuhiro Matsumoto)
This commit is contained in:
@@ -3575,6 +3575,8 @@ gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
|
||||
Get the value of a tab-local variable {varname} in tab page
|
||||
{tabnr}. |t:var|
|
||||
Tabs are numbered starting with one.
|
||||
When {varname} is empty a dictionary with all tab-local
|
||||
variables is returned.
|
||||
Note that the name without "t:" must be used.
|
||||
When the tab or variable doesn't exist {def} or an empty
|
||||
string is returned, there is no error message.
|
||||
|
13
src/eval.c
13
src/eval.c
@@ -12071,7 +12071,8 @@ f_gettabvar(argvars, rettv)
|
||||
typval_T *argvars;
|
||||
typval_T *rettv;
|
||||
{
|
||||
tabpage_T *tp;
|
||||
win_T *win, *oldcurwin;
|
||||
tabpage_T *tp, *oldtabpage;
|
||||
dictitem_T *v;
|
||||
char_u *varname;
|
||||
int done = FALSE;
|
||||
@@ -12083,13 +12084,21 @@ f_gettabvar(argvars, rettv)
|
||||
tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL));
|
||||
if (tp != NULL && varname != NULL)
|
||||
{
|
||||
/* Set curwin to be our win, temporarily. Also set the tabpage,
|
||||
* otherwise the window is not valid. */
|
||||
switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE);
|
||||
|
||||
/* look up the variable */
|
||||
v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE);
|
||||
/* Let gettabvar({nr}, "") return the "t:" dictionary. */
|
||||
v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 't', varname, FALSE);
|
||||
if (v != NULL)
|
||||
{
|
||||
copy_tv(&v->di_tv, rettv);
|
||||
done = TRUE;
|
||||
}
|
||||
|
||||
/* restore previous notion of curwin */
|
||||
restore_win(oldcurwin, oldtabpage, TRUE);
|
||||
}
|
||||
|
||||
if (!done && argvars[2].v_type != VAR_UNKNOWN)
|
||||
|
@@ -55,6 +55,7 @@ STARTTEST
|
||||
:tabnew
|
||||
:tabnew
|
||||
:let t:var_list = [1, 2, 3]
|
||||
:let t:other = 777
|
||||
:let def_list = [4, 5, 6, 7]
|
||||
:tabrewind
|
||||
:$put =string(gettabvar(3, 'var_list'))
|
||||
|
@@ -26,8 +26,8 @@ iso-8859-2
|
||||
0
|
||||
[1, 2, 3]
|
||||
[1, 2, 3]
|
||||
''
|
||||
[4, 5, 6, 7]
|
||||
{'var_list': [1, 2, 3], 'other': 777}
|
||||
{'var_list': [1, 2, 3], 'other': 777}
|
||||
[4, 5, 6, 7]
|
||||
''
|
||||
[4, 5, 6, 7]
|
||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
434,
|
||||
/**/
|
||||
433,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user