1
0
forked from aniani/vim

updated for version 7.3.924

Problem:    Python interface can't easily access options.
Solution:   Add vim.options, vim.window.options and vim.buffer.options. (ZyX)
This commit is contained in:
Bram Moolenaar
2013-05-06 03:52:55 +02:00
parent d1864597a0
commit 84e0f6ca9a
14 changed files with 1299 additions and 18 deletions

View File

@@ -16643,9 +16643,48 @@ f_setwinvar(argvars, rettv)
setwinvar(argvars, rettv, 0);
}
int
switch_win(save_curwin, save_curtab, win, tp)
win_T **save_curwin;
tabpage_T **save_curtab;
win_T *win;
tabpage_T *tp;
{
#ifdef FEAT_WINDOWS
/* set curwin to be our win, temporarily */
*save_curwin = curwin;
*save_curtab = curtab;
goto_tabpage_tp(tp, TRUE);
if (!win_valid(win))
return FAIL;
curwin = win;
curbuf = curwin->w_buffer;
#endif
return OK;
}
void
restore_win(save_curwin, save_curtab)
win_T *save_curwin;
tabpage_T *save_curtab;
{
#ifdef FEAT_WINDOWS
/* Restore current tabpage and window, if still valid (autocomands can
* make them invalid). */
if (valid_tabpage(save_curtab))
goto_tabpage_tp(save_curtab, TRUE);
if (win_valid(save_curwin))
{
curwin = save_curwin;
curbuf = curwin->w_buffer;
}
#endif
}
/*
* "setwinvar()" and "settabwinvar()" functions
*/
static void
setwinvar(argvars, rettv, off)
typval_T *argvars;
@@ -16678,14 +16717,8 @@ setwinvar(argvars, rettv, off)
if (win != NULL && varname != NULL && varp != NULL)
{
#ifdef FEAT_WINDOWS
/* set curwin to be our win, temporarily */
save_curwin = curwin;
save_curtab = curtab;
goto_tabpage_tp(tp, TRUE);
if (!win_valid(win))
if (switch_win(&save_curwin, &save_curtab, win, tp) == FAIL)
return;
curwin = win;
curbuf = curwin->w_buffer;
#endif
if (*varname == '&')
@@ -16713,15 +16746,7 @@ setwinvar(argvars, rettv, off)
}
#ifdef FEAT_WINDOWS
/* Restore current tabpage and window, if still valid (autocomands can
* make them invalid). */
if (valid_tabpage(save_curtab))
goto_tabpage_tp(save_curtab, TRUE);
if (win_valid(save_curwin))
{
curwin = save_curwin;
curbuf = curwin->w_buffer;
}
restore_win(save_curwin, save_curtab);
#endif
}
}