# HG changeset patch # User Bram Moolenaar # Date 1608746404 -3600 # Node ID 4d6c1b17f66af854c3d1cea0658c9bb9f7e9eb04 # Parent 74c40d38612f513160395d36b8908ac8ef8f1ff2 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 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) diff --git a/src/bufwrite.c b/src/bufwrite.c --- 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)))) { diff --git a/src/testdir/test_writefile.vim b/src/testdir/test_writefile.vim --- 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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2199, +/**/ 2198, /**/ 2197,