1
0
forked from aniani/vim

patch 8.0.0515: ml_get errors in silent Ex mode

Problem:    ml_get errors in silent Ex mode. (Dominique Pelle)
Solution:   Clear valid flags when setting the cursor.  Set the topline when
            not in full screen mode.
This commit is contained in:
Bram Moolenaar
2017-03-27 23:02:07 +02:00
parent 980128c369
commit d5d37537d1
4 changed files with 18 additions and 5 deletions

View File

@@ -10361,6 +10361,7 @@ ex_normal(exarg_T *eap)
{
curwin->w_cursor.lnum = eap->line1++;
curwin->w_cursor.col = 0;
check_cursor_moved(curwin);
}
exec_normal_cmd(

View File

@@ -177,11 +177,9 @@ update_topline(void)
int save_so = p_so;
#endif
if (!screen_valid(TRUE))
return;
/* If the window height is zero just use the cursor line. */
if (curwin->w_height == 0)
/* If there is no valid screen and when the window height is zero just use
* the cursor line. */
if (!screen_valid(TRUE) || curwin->w_height == 0)
{
curwin->w_topline = curwin->w_cursor.lnum;
curwin->w_botline = curwin->w_topline;
@@ -2592,6 +2590,7 @@ halfpage(int flag, linenr_T Prenum)
n = (curwin->w_p_scr <= curwin->w_height) ?
curwin->w_p_scr : curwin->w_height;
update_topline();
validate_botline();
room = curwin->w_empty_rows;
#ifdef FEAT_DIFF

View File

@@ -197,3 +197,14 @@ func Test_progpath()
" Only expect "vim" to appear in v:progname.
call assert_match('vim\c', v:progname)
endfunc
func Test_silent_ex_mode()
if !has('unix') || has('gui_running')
" can't get output of Vim.
return
endif
" This caused an ml_get error.
let out = system(GetVimCommand() . '-u NONE -es -c''set verbose=1|h|exe "%norm\<c-y>\<c-d>"'' -c cq')
call assert_notmatch('E315:', out)
endfunc

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
515,
/**/
514,
/**/