'maxmemtot'. And when making a change to a read-only file, the swap file is
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 ~
EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
EX(CMD_noremenu, "noremenu", ex_menu,
RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+EX(CMD_noswapfile, "noswapfile", ex_wrongmodifier,
+ NEEDARG|EXTRA|NOTRLCOM),
EX(CMD_normal, "normal", ex_normal,
RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK|CMDWIN),
EX(CMD_number, "number", ex_print,
#endif
continue;
- case 'n': if (!checkforcmd(&ea.cmd, "noautocmd", 3))
- break;
-#ifdef FEAT_AUTOCMD
- if (cmdmod.save_ei == NULL)
+ case 'n': if (checkforcmd(&ea.cmd, "noautocmd", 3))
{
- /* 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,
+#ifdef FEAT_AUTOCMD
+ if (cmdmod.save_ei == NULL)
+ {
+ /* 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);
- }
+ }
#endif
+ continue;
+ }
+ if (!checkforcmd(&ea.cmd, "noswapfile", 6))
+ break;
+ cmdmod.noswapfile = TRUE;
continue;
case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6))
case CMD_lua:
case CMD_match:
case CMD_mzscheme:
+ case CMD_noautocmd:
+ case CMD_noswapfile:
case CMD_perl:
case CMD_psearch:
case CMD_python:
{"leftabove", 5, FALSE},
{"lockmarks", 3, FALSE},
{"noautocmd", 3, FALSE},
+ {"noswapfile", 3, FALSE},
{"rightbelow", 6, FALSE},
{"sandbox", 3, FALSE},
{"silent", 3, FALSE},
case CMD_keeppatterns:
case CMD_leftabove:
case CMD_lockmarks:
+ case CMD_noautocmd:
+ case CMD_noswapfile:
case CMD_rightbelow:
case CMD_sandbox:
case CMD_silent:
buf->b_ml.ml_chunksize = NULL;
#endif
+ if (cmdmod.noswapfile)
+ buf->b_p_swf = FALSE;
+
/*
* When 'updatecount' is non-zero swap file may be opened later.
*/
* When 'updatecount' is 0 and 'noswapfile' there is no swap file.
* 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 */
return;
}
char_u *dirp;
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 */
#ifdef FEAT_SPELL
int keepjumps; /* TRUE when ":keepjumps" was used */
int lockmarks; /* TRUE when ":lockmarks" was used */
int keeppatterns; /* TRUE when ":keeppatterns" was used */
+ int noswapfile; /* TRUE when ":noswapfile" was used */
# ifdef FEAT_AUTOCMD
char_u *save_ei; /* saved value of 'eventignore' */
# endif
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 213,
/**/
212,
/**/