| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.213 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 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) |
| Files: runtime/doc/recover.txt, src/ex_cmds.h, src/ex_docmd.c, |
| src/memline.c, src/structs.h |
| |
| |
| |
| |
| |
| *** 81,87 **** |
| '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. |
| |
| |
| Detecting an existing swap file ~ |
| --- 81,94 ---- |
| '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. 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 ~ |
| |
| |
| |
| *** 655,660 **** |
| --- 655,662 ---- |
| 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, |
| |
| |
| |
| *** 1874,1891 **** |
| #endif |
| continue; |
| |
| ! case 'n': if (!checkforcmd(&ea.cmd, "noautocmd", 3)) |
| ! break; |
| ! #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; |
| |
| case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6)) |
| --- 1874,1896 ---- |
| #endif |
| continue; |
| |
| ! case 'n': if (checkforcmd(&ea.cmd, "noautocmd", 3)) |
| { |
| ! #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)) |
| |
| *** 2596,2601 **** |
| --- 2601,2608 ---- |
| case CMD_lua: |
| case CMD_match: |
| case CMD_mzscheme: |
| + case CMD_noautocmd: |
| + case CMD_noswapfile: |
| case CMD_perl: |
| case CMD_psearch: |
| case CMD_python: |
| |
| *** 3099,3104 **** |
| --- 3106,3112 ---- |
| {"leftabove", 5, FALSE}, |
| {"lockmarks", 3, FALSE}, |
| {"noautocmd", 3, FALSE}, |
| + {"noswapfile", 3, FALSE}, |
| {"rightbelow", 6, FALSE}, |
| {"sandbox", 3, FALSE}, |
| {"silent", 3, FALSE}, |
| |
| *** 3611,3616 **** |
| --- 3619,3626 ---- |
| case CMD_keeppatterns: |
| case CMD_leftabove: |
| case CMD_lockmarks: |
| + case CMD_noautocmd: |
| + case CMD_noswapfile: |
| case CMD_rightbelow: |
| case CMD_sandbox: |
| case CMD_silent: |
| |
| |
| |
| *** 289,294 **** |
| --- 289,297 ---- |
| 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. |
| */ |
| |
| *** 606,612 **** |
| * 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) |
| ml_open_file(buf); /* create a swap file */ |
| return; |
| } |
| --- 609,615 ---- |
| * 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 && !cmdmod.noswapfile) |
| ml_open_file(buf); /* create a swap file */ |
| return; |
| } |
| |
| *** 719,725 **** |
| char_u *dirp; |
| |
| mfp = buf->b_ml.ml_mfp; |
| ! if (mfp == NULL || mfp->mf_fd >= 0 || !buf->b_p_swf) |
| return; /* nothing to do */ |
| |
| #ifdef FEAT_SPELL |
| --- 722,728 ---- |
| char_u *dirp; |
| |
| mfp = buf->b_ml.ml_mfp; |
| ! if (mfp == NULL || mfp->mf_fd >= 0 || !buf->b_p_swf || cmdmod.noswapfile) |
| return; /* nothing to do */ |
| |
| #ifdef FEAT_SPELL |
| |
| |
| |
| *** 545,550 **** |
| --- 545,551 ---- |
| 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 |
| |
| |
| |
| *** 736,737 **** |
| --- 736,739 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 213, |
| /**/ |
| |
| -- |
| Looking at Perl through Lisp glasses, Perl looks atrocious. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |