summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-05-28 16:47:16 +0200
committerBram Moolenaar <Bram@vim.org>2014-05-28 16:47:16 +0200
commit82c2585eb840a84240ef927c09df28d5a04302b1 (patch)
treedbe8f042b02eac6d5f8c2a61f2b741ce6b55098e /src/eval.c
parent493c178a2851587ca3f9deae3b41ae3acf5c900b (diff)
downloadvim-git-82c2585eb840a84240ef927c09df28d5a04302b1.tar.gz
updated for version 7.4.311v7.4.311
Problem: Can't use winrestview to only restore part of the view. Solution: Handle missing items in the dict. (Christian Brabandt)
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/eval.c b/src/eval.c
index 3d20d177b..d313c5d03 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -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);