patch 9.0.0817

This commit is contained in:
Bram Moolenaar
2022-10-22 11:25:19 +01:00
parent 9c50eeb401
commit fb0cf2357e
10 changed files with 37 additions and 14 deletions

View File

@ -3052,6 +3052,13 @@ A jump table for the options with a short description can be found at |Q_op|.
'endofline' 'eol' boolean (default on)
local to buffer
When writing a file and this option is off and the 'binary' option
is on, or 'fixeol' option is off, no CTRL-Z will be written for at the
end of the file.
*'endofline'* *'eol'* *'noendofline'* *'noeol'*
'endofline' 'eol' boolean (default on)
local to buffer
When writing a file and this option is off and the 'binary' option
is on, or 'fixeol' option is off, no <EOL> will be written for the
last line in the file. This option is automatically set or reset when
starting to edit a new file, depending on whether file has an <EOL>
@ -3452,7 +3459,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'fixendofline' 'fixeol' boolean (default on)
local to buffer
When writing a file and this option is on, <EOL> at the end of file
will be restored if missing. Turn this option off if you want to
will be restored if missing. Turn this option off if you want to
preserve the situation from the original file.
When the 'binary' option is set the value of this option doesn't
matter.

View File

@ -355,7 +355,7 @@ CClink = $(CC)
#CONF_OPT_GUI = --enable-gui=gnome2 --disable-gtktest
#CONF_OPT_GUI = --enable-gui=gtk3
#CONF_OPT_GUI = --enable-gui=gtk3 --disable-gtktest
#CONF_OPT_GUI = --enable-gui=motif
CONF_OPT_GUI = --enable-gui=motif
#CONF_OPT_GUI = --enable-gui=motif --with-motif-lib="-static -lXm -shared"
# Uncomment this line to run an individual test with gvim.

View File

@ -2050,6 +2050,10 @@ restore_backup:
len = 0;
write_info.bw_start_lnum = lnum;
}
if (!buf->b_p_fixeol && buf->b_p_eof)
// write trailing CTRL-Z
(void)write_eintr(write_info->bw_fd, "\x1a", 1);
// write failed or last line has no EOL: stop here
if (end == 0
|| (lnum == end

View File

@ -929,8 +929,6 @@ do_bang(
STRCAT(t, newcmd);
if (ins_prevcmd)
STRCAT(t, prevcmd);
else
vim_free(t);
p = t + STRLEN(t);
STRCAT(t, trailarg);
vim_free(newcmd);

View File

@ -590,6 +590,7 @@ readfile(
if (!read_buffer)
{
curbuf->b_p_eol = TRUE;
curbuf->b_p_eof = FALSE;
curbuf->b_start_eol = TRUE;
}
curbuf->b_p_bomb = FALSE;
@ -2278,13 +2279,15 @@ failed:
&& !got_int
&& linerest != 0
&& !(!curbuf->b_p_bin
&& fileformat == EOL_DOS
&& *line_start == Ctrl_Z
&& ptr == line_start + 1))
&& fileformat == EOL_DOS))
{
// remember for when writing
if (set_options)
{
curbuf->b_p_eol = FALSE;
if (*line_start == Ctrl_Z && ptr == line_start + 1)
curbuf->b_p_eof = FALSE;
}
*ptr = NUL;
len = (colnr_T)(ptr - line_start + 1);
if (ml_append(lnum, line_start, len, newfile) == FAIL)

View File

@ -555,6 +555,7 @@ EXTERN char_u *p_efm; // 'errorformat'
EXTERN char_u *p_gefm; // 'grepformat'
EXTERN char_u *p_gp; // 'grepprg'
#endif
EXTERN int p_eof; // 'endoffile'
EXTERN int p_eol; // 'endofline'
EXTERN int p_ek; // 'esckeys'
EXTERN char_u *p_ei; // 'eventignore'
@ -1123,6 +1124,7 @@ enum
, BV_DEF
, BV_INC
#endif
, BV_EOF
, BV_EOL
, BV_FIXEOL
, BV_EP

View File

@ -61,6 +61,7 @@
# define PV_DEF OPT_BOTH(OPT_BUF(BV_DEF))
# define PV_INC OPT_BOTH(OPT_BUF(BV_INC))
#endif
#define PV_EOF OPT_BUF(BV_EOF)
#define PV_EOL OPT_BUF(BV_EOL)
#define PV_FIXEOL OPT_BUF(BV_FIXEOL)
#define PV_EP OPT_BOTH(OPT_BUF(BV_EP))
@ -846,7 +847,7 @@ static struct vimoption options[] =
{"edcompatible","ed", P_BOOL|P_VI_DEF,
(char_u *)&p_ed, PV_NONE,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"emoji", "emo", P_BOOL|P_VI_DEF|P_RCLR,
{"emoji", "emo", P_BOOL|P_VI_DEF|P_RCLR,
(char_u *)&p_emoji, PV_NONE,
{(char_u *)TRUE, (char_u *)0L}
SCTX_INIT},
@ -854,6 +855,9 @@ static struct vimoption options[] =
(char_u *)&p_enc, PV_NONE,
{(char_u *)ENC_DFLT, (char_u *)0L}
SCTX_INIT},
{"endoffile", "eof", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
(char_u *)&p_eof, PV_EOF,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"endofline", "eol", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
(char_u *)&p_eol, PV_EOL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},

View File

@ -2999,6 +2999,7 @@ struct file_buffer
char_u *b_p_tfu; // 'tagfunc' option value
callback_T b_tfu_cb; // 'tagfunc' callback
#endif
int b_p_eof; // 'endoffile'
int b_p_eol; // 'endofline'
int b_p_fixeol; // 'fixendofline'
int b_p_et; // 'expandtab'

View File

@ -1,17 +1,17 @@
" Tests for 'fixeol' and 'eol'
" Tests for 'fixeol', 'eof' and 'eol'
func Test_fixeol()
" first write two test files with and without trailing EOL
" use Unix fileformat for consistency
set ff=unix
enew!
call setline('.', 'with eol')
call setline('.', 'with eol or eof')
w! XXEol
enew!
set noeol nofixeol
call setline('.', 'without eol')
set noeof noeol nofixeol
call setline('.', 'without eol or eof')
w! XXNoEol
set eol fixeol
set eol eof fixeol
bwipe XXEol XXNoEol
" try editing files with 'fixeol' disabled
@ -44,7 +44,7 @@ func Test_fixeol()
call delete('XXNoEol')
call delete('XXTestEol')
call delete('XXTestNoEol')
set ff& fixeol& eol&
set ff& fixeol& eof& eol&
enew!
endfunc

View File

@ -695,6 +695,10 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
817,
/**/
816,
/**/
815,
/**/