fix: don't append newline when buffer is noeol and nofixeol
This commit is contained in:
parent
36e5337e30
commit
15d590ee5e
2 changed files with 50 additions and 1 deletions
|
@ -418,7 +418,10 @@ function! ale#util#Writefile(buffer, lines, filename) abort
|
||||||
\ ? map(copy(a:lines), 'substitute(v:val, ''\r*$'', ''\r'', '''')')
|
\ ? map(copy(a:lines), 'substitute(v:val, ''\r*$'', ''\r'', '''')')
|
||||||
\ : a:lines
|
\ : a:lines
|
||||||
|
|
||||||
call writefile(l:corrected_lines, a:filename, 'S') " no-custom-checks
|
" Set binary flag if buffer doesn't have eol and nofixeol to avoid appending newline
|
||||||
|
let l:flags = !getbufvar(a:buffer, '&eol') && exists('+fixeol') && !&fixeol ? 'bS' : 'S'
|
||||||
|
|
||||||
|
call writefile(l:corrected_lines, a:filename, l:flags) " no-custom-checks
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
if !exists('s:patial_timers')
|
if !exists('s:patial_timers')
|
||||||
|
|
|
@ -69,3 +69,49 @@ Execute(Unix file lines should be written as normal):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ ['first', 'second', 'third', ''],
|
\ ['first', 'second', 'third', ''],
|
||||||
\ readfile(g:new_line_test_file, 'b')
|
\ readfile(g:new_line_test_file, 'b')
|
||||||
|
|
||||||
|
Execute(Newline at end of file should be preserved even when nofixeol):
|
||||||
|
call ale#test#SetFilename(g:new_line_test_file)
|
||||||
|
|
||||||
|
setlocal buftype=
|
||||||
|
noautocmd :w
|
||||||
|
noautocmd :e! ++ff=unix
|
||||||
|
set eol
|
||||||
|
set nofixeol
|
||||||
|
|
||||||
|
call ale#util#Writefile(bufnr(''), getline(1, '$'), g:new_line_test_file)
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ ['first', 'second', 'third', ''],
|
||||||
|
\ readfile(g:new_line_test_file, 'b')
|
||||||
|
|
||||||
|
Execute(Newline should not be appended on write when noeol and nofixeol):
|
||||||
|
call ale#test#SetFilename(g:new_line_test_file)
|
||||||
|
|
||||||
|
setlocal buftype=
|
||||||
|
noautocmd :w
|
||||||
|
noautocmd :e! ++ff=unix
|
||||||
|
set noeol
|
||||||
|
set nofixeol
|
||||||
|
|
||||||
|
call ale#util#Writefile(bufnr(''), getline(1, '$'), g:new_line_test_file)
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ ['first', 'second', 'third'],
|
||||||
|
\ readfile(g:new_line_test_file, 'b')
|
||||||
|
|
||||||
|
Execute(Newline should be appended on write when noeol and fixeol):
|
||||||
|
call ale#test#SetFilename(g:new_line_test_file)
|
||||||
|
|
||||||
|
setlocal buftype=
|
||||||
|
noautocmd :w
|
||||||
|
noautocmd :e! ++ff=unix
|
||||||
|
set noeol
|
||||||
|
set fixeol
|
||||||
|
|
||||||
|
call ale#util#Writefile(bufnr(''), getline(1, '$'), g:new_line_test_file)
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ ['first', 'second', 'third', ''],
|
||||||
|
\ readfile(g:new_line_test_file, 'b')
|
||||||
|
|
||||||
|
|
Reference in a new issue