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)
This commit is contained in:
@ -2031,7 +2031,7 @@ restore_backup:
|
|||||||
if (end == 0
|
if (end == 0
|
||||||
|| (lnum == end
|
|| (lnum == end
|
||||||
&& (write_bin || !buf->b_p_fixeol)
|
&& (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
|
|| (lnum == buf->b_ml.ml_line_count
|
||||||
&& !buf->b_p_eol))))
|
&& !buf->b_p_eol))))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -676,4 +676,22 @@ func Test_readwrite_file_with_bom()
|
|||||||
%bw!
|
%bw!
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
|||||||
@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2199,
|
||||||
/**/
|
/**/
|
||||||
2198,
|
2198,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user