Mercurial > vim
changeset 23308:4d6c1b17f66a v8.2.2199
patch 8.2.2199: first write after setting 'eol' does not have NL added
Commit: https://github.com/vim/vim/commit/b3c8b1d25414f2e24ad03551cdf125b3e2c142b1
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Dec 23 18:54:57 2020 +0100
patch 8.2.2199: first write after setting 'eol' does not have NL added
Problem: First write after setting 'eol' does not have NL added. (Tom??
Janou?ek)
Solution: Only use b_no_eol_lnum when doing a binary write. (closes #7535)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 23 Dec 2020 19:00:04 +0100 |
parents | 74c40d38612f |
children | e0a6d49ed3ad |
files | src/bufwrite.c src/testdir/test_writefile.vim src/version.c |
diffstat | 3 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/bufwrite.c +++ b/src/bufwrite.c @@ -2031,7 +2031,7 @@ restore_backup: if (end == 0 || (lnum == end && (write_bin || !buf->b_p_fixeol) - && (lnum == buf->b_no_eol_lnum + && ((write_bin && lnum == buf->b_no_eol_lnum) || (lnum == buf->b_ml.ml_line_count && !buf->b_p_eol)))) {
--- a/src/testdir/test_writefile.vim +++ b/src/testdir/test_writefile.vim @@ -676,4 +676,22 @@ func Test_readwrite_file_with_bom() %bw! endfunc +func Test_read_write_bin() + " write file missing EOL + call writefile(['noeol'], "XNoEolSetEol", 'bS') + call assert_equal(0z6E6F656F6C, readfile('XNoEolSetEol', 'B')) + + " when file is read 'eol' is off + set ff=unix nofixeol + e XNoEolSetEol + call assert_equal(0, &eol) + + " writing with 'eol' set adds the newline + setlocal eol + w + call assert_equal(0z6E6F656F6C0A, readfile('XNoEolSetEol', 'B')) + + call delete('XNoEolSetEol') +endfunc + " vim: shiftwidth=2 sts=2 expandtab