To: vim_dev@googlegroups.com Subject: Patch 7.4.213 Fcc: outbox From: Bram Moolenaar 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 *** ../vim-7.4.212/runtime/doc/recover.txt 2013-08-10 13:25:00.000000000 +0200 --- runtime/doc/recover.txt 2014-03-23 16:01:59.655309841 +0100 *************** *** 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 ~ *** ../vim-7.4.212/src/ex_cmds.h 2014-03-22 13:29:57.693846167 +0100 --- src/ex_cmds.h 2014-03-23 15:36:42.399286592 +0100 *************** *** 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, *** ../vim-7.4.212/src/ex_docmd.c 2014-03-23 15:12:29.919264336 +0100 --- src/ex_docmd.c 2014-03-23 15:44:42.335293946 +0100 *************** *** 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: *** ../vim-7.4.212/src/memline.c 2014-02-11 15:23:27.942123631 +0100 --- src/memline.c 2014-03-23 15:48:05.679297062 +0100 *************** *** 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 *** ../vim-7.4.212/src/structs.h 2014-03-23 15:12:29.943264337 +0100 --- src/structs.h 2014-03-23 15:36:42.407286592 +0100 *************** *** 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 *** ../vim-7.4.212/src/version.c 2014-03-23 15:12:29.943264337 +0100 --- src/version.c 2014-03-23 16:02:16.519310100 +0100 *************** *** 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 ///