Fix handling of buffer consisting only of a newline.

See #510.
This commit is contained in:
Andy Stewart
2018-12-13 10:50:02 +00:00
parent 9a23a2f207
commit 5c636b128e
2 changed files with 34 additions and 2 deletions

View File

@@ -374,8 +374,10 @@ endfunction
function! s:write_buffer(bufnr, file)
let bufcontents = getbufline(a:bufnr, 1, '$')
" Special case: empty buffer; do not write an empty line in this case.
if len(bufcontents) > 1 || bufcontents != ['']
if bufcontents == [''] && line2byte(1) == -1
" Special case: empty buffer; do not write an empty line in this case.
" A nearly empty buffer of only a newline has line2byte(1) == 1.
else
if getbufvar(a:bufnr, '&endofline')
\ || (!getbufvar(a:bufnr, '&binary')
\ && (!exists('+fixendofline') || getbufvar(a:bufnr, '&fixendofline')))