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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui