Skip to content

Commit d5d3753

Browse files
committed
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.
1 parent 980128c commit d5d3753

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

src/ex_docmd.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10361,6 +10361,7 @@ ex_normal(exarg_T *eap)
1036110361
{
1036210362
curwin->w_cursor.lnum = eap->line1++;
1036310363
curwin->w_cursor.col = 0;
10364+
check_cursor_moved(curwin);
1036410365
}
1036510366

1036610367
exec_normal_cmd(

src/move.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,9 @@ update_topline(void)
177177
int save_so = p_so;
178178
#endif
179179

180-
if (!screen_valid(TRUE))
181-
return;
182-
183-
/* If the window height is zero just use the cursor line. */
184-
if (curwin->w_height == 0)
180+
/* If there is no valid screen and when the window height is zero just use
181+
* the cursor line. */
182+
if (!screen_valid(TRUE) || curwin->w_height == 0)
185183
{
186184
curwin->w_topline = curwin->w_cursor.lnum;
187185
curwin->w_botline = curwin->w_topline;
@@ -2592,6 +2590,7 @@ halfpage(int flag, linenr_T Prenum)
25922590
n = (curwin->w_p_scr <= curwin->w_height) ?
25932591
curwin->w_p_scr : curwin->w_height;
25942592

2593+
update_topline();
25952594
validate_botline();
25962595
room = curwin->w_empty_rows;
25972596
#ifdef FEAT_DIFF

src/testdir/test_startup.vim

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,14 @@ func Test_progpath()
197197
" Only expect "vim" to appear in v:progname.
198198
call assert_match('vim\c', v:progname)
199199
endfunc
200+
201+
func Test_silent_ex_mode()
202+
if !has('unix') || has('gui_running')
203+
" can't get output of Vim.
204+
return
205+
endif
206+
207+
" This caused an ml_get error.
208+
let out = system(GetVimCommand() . '-u NONE -es -c''set verbose=1|h|exe "%norm\<c-y>\<c-d>"'' -c cq')
209+
call assert_notmatch('E315:', out)
210+
endfunc

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,8 @@ static char *(features[]) =
764764

765765
static int included_patches[] =
766766
{ /* Add new patch number below this line */
767+
/**/
768+
515,
767769
/**/
768770
514,
769771
/**/

0 commit comments

Comments
 (0)