To: vim_dev@googlegroups.com Subject: Patch 7.4.311 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.311 Problem: Can't use winrestview to only restore part of the view. Solution: Handle missing items in the dict. (Christian Brabandt) Files: src/eval.c, runtime/doc/eval.txt *** ../vim-7.4.310/src/eval.c 2014-05-28 14:32:47.156104334 +0200 --- src/eval.c 2014-05-28 16:42:25.196172421 +0200 *************** *** 19231,19250 **** 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"); #ifdef FEAT_VIRTUALEDIT ! 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; ! set_topline(curwin, get_dict_number(dict, (char_u *)"topline")); #ifdef FEAT_DIFF ! 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"); check_cursor(); win_new_height(curwin, curwin->w_height); --- 19231,19260 ---- EMSG(_(e_invarg)); else { ! 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 ! if (dict_find(dict, (char_u *)"coladd", -1) != NULL) ! curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd"); #endif ! if (dict_find(dict, (char_u *)"curswant", -1) != NULL) ! { ! curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant"); ! curwin->w_set_curswant = FALSE; ! } ! if (dict_find(dict, (char_u *)"topline", -1) != NULL) ! set_topline(curwin, get_dict_number(dict, (char_u *)"topline")); #ifdef FEAT_DIFF ! if (dict_find(dict, (char_u *)"topfill", -1) != NULL) ! curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill"); #endif ! 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); *** ../vim-7.4.310/runtime/doc/eval.txt 2014-05-28 14:32:47.164104334 +0200 --- runtime/doc/eval.txt 2014-05-28 16:42:25.192172421 +0200 *************** *** 6404,6409 **** --- 6414,6429 ---- 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. *************** *** 6418,6424 **** not opened when moving around. The return value includes: lnum cursor line number ! col cursor column coladd cursor column offset for 'virtualedit' curswant column for vertical movement topline first line in the window --- 6438,6446 ---- not opened when moving around. The return value includes: lnum cursor line number ! 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 *** ../vim-7.4.310/src/version.c 2014-05-28 14:32:47.164104334 +0200 --- src/version.c 2014-05-28 16:45:19.200173944 +0200 *************** *** 736,737 **** --- 736,739 ---- { /* Add new patch number below this line */ + /**/ + 311, /**/ -- Your fault: core dumped /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///