Permalink
Browse files

updated for version 7.4.311

Problem:    Can't use winrestview to only restore part of the view.
Solution:   Handle missing items in the dict. (Christian Brabandt)
  • Loading branch information...
brammool committed May 28, 2014
1 parent 493c178 commit 82c2585eb840a84240ef927c09df28d5a04302b1
Showing with 34 additions and 10 deletions.
  1. +13 −1 runtime/doc/eval.txt
  2. +19 −9 src/eval.c
  3. +2 −0 src/version.c
View
@@ -6410,6 +6410,16 @@ winrestcmd() Returns a sequence of |:resize| commands that should restore
winrestview({dict})
Uses the |Dictionary| returned by |winsaveview()| to restore
the view of the current window.
Note: The {dict} does not have to contain all values, that are
returned by |winsaveview()|. If values are missing, those
settings won't be restored. So you can use: >
:call winrestview({'curswant': 4})
<
This will only set the curswant value (the column the cursor
wants to move on vertical movements) of the cursor to column 5
(yes, that is 5), while all other settings will remain the
same. This is useful, if you set the cursor position manually.
If you have changed the values the result is unpredictable.
If the window size changed the result won't be the same.
@@ -6424,7 +6434,9 @@ winsaveview() Returns a |Dictionary| that contains information to restore
not opened when moving around.
The return value includes:
lnum cursor line number
col cursor column
col cursor column (Note: the first column
zero, as opposed to what getpos()
returns)
coladd cursor column offset for 'virtualedit'
curswant column for vertical movement
topline first line in the window
View
@@ -19231,20 +19231,30 @@ f_winrestview(argvars, rettv)
EMSG(_(e_invarg));
else
{
curwin->w_cursor.lnum = get_dict_number(dict, (char_u *)"lnum");
curwin->w_cursor.col = get_dict_number(dict, (char_u *)"col");
if (dict_find(dict, (char_u *)"lnum", -1) != NULL)
curwin->w_cursor.lnum = get_dict_number(dict, (char_u *)"lnum");
if (dict_find(dict, (char_u *)"col", -1) != NULL)
curwin->w_cursor.col = get_dict_number(dict, (char_u *)"col");
#ifdef FEAT_VIRTUALEDIT
curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd");
if (dict_find(dict, (char_u *)"coladd", -1) != NULL)
curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd");
#endif
curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant");
curwin->w_set_curswant = FALSE;
if (dict_find(dict, (char_u *)"curswant", -1) != NULL)
{
curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant");
curwin->w_set_curswant = FALSE;
}
set_topline(curwin, get_dict_number(dict, (char_u *)"topline"));
if (dict_find(dict, (char_u *)"topline", -1) != NULL)
set_topline(curwin, get_dict_number(dict, (char_u *)"topline"));
#ifdef FEAT_DIFF
curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill");
if (dict_find(dict, (char_u *)"topfill", -1) != NULL)
curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill");
#endif
curwin->w_leftcol = get_dict_number(dict, (char_u *)"leftcol");
curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
if (dict_find(dict, (char_u *)"leftcol", -1) != NULL)
curwin->w_leftcol = get_dict_number(dict, (char_u *)"leftcol");
if (dict_find(dict, (char_u *)"skipcol", -1) != NULL)
curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
check_cursor();
win_new_height(curwin, curwin->w_height);
View
@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
311,
/**/
310,
/**/

0 comments on commit 82c2585

Please sign in to comment.