forked from aniani/vim
updated for version 7.4.213
Problem: It's not possible to open a new buffer without creating a swap file. Solution: Add the ":noswapfile" modifier. (Christian Brabandt)
This commit is contained in:
@@ -81,7 +81,14 @@ the amount of memory used to be higher than given with 'maxmem' or
|
|||||||
'maxmemtot'. And when making a change to a read-only file, the swap file is
|
'maxmemtot'. And when making a change to a read-only file, the swap file is
|
||||||
created anyway.
|
created anyway.
|
||||||
|
|
||||||
The 'swapfile' option can be reset to avoid creating a swapfile.
|
The 'swapfile' option can be reset to avoid creating a swapfile. And the
|
||||||
|
|:noswapfile| modifier can be used to not create a swapfile for a new buffer.
|
||||||
|
|
||||||
|
:noswap[file] {command} *:noswap* *:noswapfile*
|
||||||
|
Execute {command}. If it contains a command that loads a new
|
||||||
|
buffer, it will be loaded without creating a swapfile and the
|
||||||
|
'swapfile' option will be reset. If a buffer already had a
|
||||||
|
swapfile it is not removed and 'swapfile' is not reset.
|
||||||
|
|
||||||
|
|
||||||
Detecting an existing swap file ~
|
Detecting an existing swap file ~
|
||||||
|
@@ -655,6 +655,8 @@ EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate,
|
|||||||
EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
|
EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
|
||||||
EX(CMD_noremenu, "noremenu", ex_menu,
|
EX(CMD_noremenu, "noremenu", ex_menu,
|
||||||
RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
|
RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
|
||||||
|
EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier,
|
||||||
|
NEEDARG|EXTRA|NOTRLCOM),
|
||||||
EX(CMD_normal, "normal", ex_normal,
|
EX(CMD_normal, "normal", ex_normal,
|
||||||
RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN),
|
RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN),
|
||||||
EX(CMD_number, "number", ex_print,
|
EX(CMD_number, "number", ex_print,
|
||||||
|
@@ -1874,18 +1874,23 @@ do_one_cmd(cmdlinep, sourcing,
|
|||||||
#endif
|
#endif
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case 'n': if (!checkforcmd(&ea.cmd, "noautocmd", 3))
|
case 'n': if (checkforcmd(&ea.cmd, "noautocmd", 3))
|
||||||
break;
|
|
||||||
#ifdef FEAT_AUTOCMD
|
|
||||||
if (cmdmod.save_ei == NULL)
|
|
||||||
{
|
{
|
||||||
/* Set 'eventignore' to "all". Restore the
|
#ifdef FEAT_AUTOCMD
|
||||||
* existing option value later. */
|
if (cmdmod.save_ei == NULL)
|
||||||
cmdmod.save_ei = vim_strsave(p_ei);
|
{
|
||||||
set_string_option_direct((char_u *)"ei", -1,
|
/* Set 'eventignore' to "all". Restore the
|
||||||
|
* existing option value later. */
|
||||||
|
cmdmod.save_ei = vim_strsave(p_ei);
|
||||||
|
set_string_option_direct((char_u *)"ei", -1,
|
||||||
(char_u *)"all", OPT_FREE, SID_NONE);
|
(char_u *)"all", OPT_FREE, SID_NONE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!checkforcmd(&ea.cmd, "noswapfile", 6))
|
||||||
|
break;
|
||||||
|
cmdmod.noswapfile = TRUE;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6))
|
case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6))
|
||||||
@@ -2596,6 +2601,8 @@ do_one_cmd(cmdlinep, sourcing,
|
|||||||
case CMD_lua:
|
case CMD_lua:
|
||||||
case CMD_match:
|
case CMD_match:
|
||||||
case CMD_mzscheme:
|
case CMD_mzscheme:
|
||||||
|
case CMD_noautocmd:
|
||||||
|
case CMD_noswapfile:
|
||||||
case CMD_perl:
|
case CMD_perl:
|
||||||
case CMD_psearch:
|
case CMD_psearch:
|
||||||
case CMD_python:
|
case CMD_python:
|
||||||
@@ -3099,6 +3106,7 @@ static struct cmdmod
|
|||||||
{"leftabove", 5, FALSE},
|
{"leftabove", 5, FALSE},
|
||||||
{"lockmarks", 3, FALSE},
|
{"lockmarks", 3, FALSE},
|
||||||
{"noautocmd", 3, FALSE},
|
{"noautocmd", 3, FALSE},
|
||||||
|
{"noswapfile", 3, FALSE},
|
||||||
{"rightbelow", 6, FALSE},
|
{"rightbelow", 6, FALSE},
|
||||||
{"sandbox", 3, FALSE},
|
{"sandbox", 3, FALSE},
|
||||||
{"silent", 3, FALSE},
|
{"silent", 3, FALSE},
|
||||||
@@ -3611,6 +3619,8 @@ set_one_cmd_context(xp, buff)
|
|||||||
case CMD_keeppatterns:
|
case CMD_keeppatterns:
|
||||||
case CMD_leftabove:
|
case CMD_leftabove:
|
||||||
case CMD_lockmarks:
|
case CMD_lockmarks:
|
||||||
|
case CMD_noautocmd:
|
||||||
|
case CMD_noswapfile:
|
||||||
case CMD_rightbelow:
|
case CMD_rightbelow:
|
||||||
case CMD_sandbox:
|
case CMD_sandbox:
|
||||||
case CMD_silent:
|
case CMD_silent:
|
||||||
|
@@ -289,6 +289,9 @@ ml_open(buf)
|
|||||||
buf->b_ml.ml_chunksize = NULL;
|
buf->b_ml.ml_chunksize = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (cmdmod.noswapfile)
|
||||||
|
buf->b_p_swf = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When 'updatecount' is non-zero swap file may be opened later.
|
* When 'updatecount' is non-zero swap file may be opened later.
|
||||||
*/
|
*/
|
||||||
@@ -606,7 +609,7 @@ ml_setname(buf)
|
|||||||
* When 'updatecount' is 0 and 'noswapfile' there is no swap file.
|
* When 'updatecount' is 0 and 'noswapfile' there is no swap file.
|
||||||
* For help files we will make a swap file now.
|
* For help files we will make a swap file now.
|
||||||
*/
|
*/
|
||||||
if (p_uc != 0)
|
if (p_uc != 0 && !cmdmod.noswapfile)
|
||||||
ml_open_file(buf); /* create a swap file */
|
ml_open_file(buf); /* create a swap file */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -719,7 +722,7 @@ ml_open_file(buf)
|
|||||||
char_u *dirp;
|
char_u *dirp;
|
||||||
|
|
||||||
mfp = buf->b_ml.ml_mfp;
|
mfp = buf->b_ml.ml_mfp;
|
||||||
if (mfp == NULL || mfp->mf_fd >= 0 || !buf->b_p_swf)
|
if (mfp == NULL || mfp->mf_fd >= 0 || !buf->b_p_swf || cmdmod.noswapfile)
|
||||||
return; /* nothing to do */
|
return; /* nothing to do */
|
||||||
|
|
||||||
#ifdef FEAT_SPELL
|
#ifdef FEAT_SPELL
|
||||||
|
@@ -545,6 +545,7 @@ typedef struct
|
|||||||
int keepjumps; /* TRUE when ":keepjumps" was used */
|
int keepjumps; /* TRUE when ":keepjumps" was used */
|
||||||
int lockmarks; /* TRUE when ":lockmarks" was used */
|
int lockmarks; /* TRUE when ":lockmarks" was used */
|
||||||
int keeppatterns; /* TRUE when ":keeppatterns" was used */
|
int keeppatterns; /* TRUE when ":keeppatterns" was used */
|
||||||
|
int noswapfile; /* TRUE when ":noswapfile" was used */
|
||||||
# ifdef FEAT_AUTOCMD
|
# ifdef FEAT_AUTOCMD
|
||||||
char_u *save_ei; /* saved value of 'eventignore' */
|
char_u *save_ei; /* saved value of 'eventignore' */
|
||||||
# endif
|
# endif
|
||||||
|
@@ -734,6 +734,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 */
|
||||||
|
/**/
|
||||||
|
213,
|
||||||
/**/
|
/**/
|
||||||
212,
|
212,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user