Permalink
Browse files

patch 8.0.1053: setline() does not work on startup

Problem:    setline() does not work on startup. (Manuel Ortega)
Solution:   Do not check for ml_mfp to be set for the current buffer.
            (Christian Brabandt)
  • Loading branch information...
brammool committed Sep 4, 2017
1 parent e88fc7a commit 9d954207e2cc807b475bb04f8b59ef5bb3772d99
Showing with 31 additions and 7 deletions.
  1. +4 −1 src/evalfunc.c
  2. +10 −4 src/testdir/shared.vim
  3. +2 −0 src/testdir/test_alot.vim
  4. +13 −0 src/testdir/test_bufline.vim
  5. +0 −2 src/testdir/test_timers.vim
  6. +2 −0 src/version.c
View
@@ -9885,7 +9885,10 @@ set_buffer_lines(buf_T *buf, linenr_T lnum, typval_T *lines, typval_T *rettv)
buf_T *curbuf_save;
int is_curbuf = buf == curbuf;
if (buf == NULL || buf->b_ml.ml_mfp == NULL || lnum < 1)
/* When using the current buffer ml_mfp will be set if needed. Useful when
* setline() is used on startup. For other buffers the buffer must be
* loaded. */
if (buf == NULL || (!is_curbuf && buf->b_ml.ml_mfp == NULL) || lnum < 1)
{
rettv->vval.v_number = 1; /* FAIL */
return;
View
@@ -166,15 +166,21 @@ func s:feedkeys(timer)
endfunc
" Get the command to run Vim, with -u NONE and --not-a-term arguments.
" If there is an argument use it instead of "NONE".
" Returns an empty string on error.
func GetVimCommand()
func GetVimCommand(...)
if !filereadable('vimcmd')
return ''
endif
if a:0 == 0
let name = 'NONE'
else
let name = a:1
endif
let cmd = readfile('vimcmd')[0]
let cmd = substitute(cmd, '-u \f\+', '-u NONE', '')
if cmd !~ '-u NONE'
let cmd = cmd . ' -u NONE'
let cmd = substitute(cmd, '-u \f\+', '-u ' . name, '')
if cmd !~ '-u '. name
let cmd = cmd . ' -u ' . name
endif
let cmd .= ' --not-a-term'
let cmd = substitute(cmd, 'VIMRUNTIME=.*VIMRUNTIME;', '', '')
@@ -1,6 +1,8 @@
" A series of tests that can run in one Vim invocation.
" This makes testing go faster, since Vim doesn't need to restart.
source shared.vim
set belloff=all
source test_assign.vim
source test_bufline.vim
@@ -24,3 +24,16 @@ func Test_setbufline_getbufline()
call assert_equal([], getbufline(b, 6))
exe "bwipe! " . b
endfunc
func Test_setline_startup()
let cmd = GetVimCommand('Xscript')
if cmd == ''
return
endif
call writefile(['call setline(1, "Hello")', 'w Xtest', 'q!'], 'Xscript')
call system(cmd)
call assert_equal(['Hello'], readfile('Xtest'))
call delete('Xscript')
call delete('Xtest')
endfunc
@@ -1,7 +1,5 @@
" Test for timers
source shared.vim
if !has('timers')
finish
endif
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1053,
/**/
1052,
/**/

0 comments on commit 9d95420

Please sign in to comment.