mirror of
https://github.com/neovim/neovim.git
synced 2025-09-12 22:38:16 +00:00
vim-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)
9d954207e2
This commit is contained in:
@@ -14854,7 +14854,10 @@ static void set_buffer_lines(buf_T *buf, linenr_T lnum, typval_T *lines,
|
||||
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;
|
||||
}
|
||||
|
@@ -190,12 +190,18 @@ func s:feedkeys(timer)
|
||||
endfunc
|
||||
|
||||
" Get the command to run Vim, with -u NONE and --headless arguments.
|
||||
" If there is an argument use it instead of "NONE".
|
||||
" Returns an empty string on error.
|
||||
func GetVimCommand()
|
||||
func GetVimCommand(...)
|
||||
if a:0 == 0
|
||||
let name = 'NONE'
|
||||
else
|
||||
let name = a:1
|
||||
endif
|
||||
let cmd = v:progpath
|
||||
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 .= ' --headless -i NONE'
|
||||
let cmd = substitute(cmd, 'VIMRUNTIME=.*VIMRUNTIME;', '', '')
|
||||
|
@@ -1,5 +1,7 @@
|
||||
" Tests for setbufline() and getbufline()
|
||||
|
||||
source shared.vim
|
||||
|
||||
func Test_setbufline_getbufline()
|
||||
new
|
||||
let b = bufnr('%')
|
||||
@@ -24,3 +26,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
|
||||
|
Reference in New Issue
Block a user