Patch 7.3.637
Problem:    Cannot catch the error caused by a foldopen when there is no fold.
            (ZyX, Issue 48)
Solution:   Do not break out of the loop early when inside try/catch.
            (Christian Brabandt) Except when there is a syntax error.
Files:      src/ex_docmd.c, src/globals.h


*** ../vim-7.3.636/src/ex_docmd.c       2012-08-15 14:04:50.000000000 +0200
--- src/ex_docmd.c      2012-08-23 18:39:08.000000000 +0200
***************
*** 1295,1301 ****
                && cstack.cs_trylevel == 0
  #endif
            )
!           && !(did_emsg && used_getline
                            && (getline_equal(fgetline, cookie, getexmodeline)
                               || getline_equal(fgetline, cookie, getexline)))
            && (next_cmdline != NULL
--- 1295,1308 ----
                && cstack.cs_trylevel == 0
  #endif
            )
!           && !(did_emsg
! #ifdef FEAT_EVAL
!               /* Keep going when inside try/catch, so that the error can be
!                * dealth with, except when it is a syntax error, it may cause
!                * the :endtry to be missed. */
!               && (cstack.cs_trylevel == 0 || did_emsg_syntax)
! #endif
!               && used_getline
                            && (getline_equal(fgetline, cookie, getexmodeline)
                               || getline_equal(fgetline, cookie, getexline)))
            && (next_cmdline != NULL
***************
*** 1305,1310 ****
--- 1312,1318 ----
                        || (flags & DOCMD_REPEAT)));
  
      vim_free(cmdline_copy);
+     did_emsg_syntax = FALSE;
  #ifdef FEAT_EVAL
      free_cmdlines(&lines_ga);
      ga_clear(&lines_ga);
***************
*** 2137,2142 ****
--- 2145,2151 ----
            if (!sourcing)
                append_command(*cmdlinep);
            errormsg = IObuff;
+           did_emsg_syntax = TRUE;
        }
        goto doend;
      }
*** ../vim-7.3.636/src/globals.h        2012-07-10 16:49:08.000000000 +0200
--- src/globals.h       2012-08-23 18:29:09.000000000 +0200
***************
*** 183,188 ****
--- 183,190 ----
  #endif
  EXTERN int    did_emsg;                   /* set by emsg() when the message
                                               is displayed or thrown */
+ EXTERN int    did_emsg_syntax;            /* did_emsg set because of a
+                                              syntax error */
  EXTERN int    called_emsg;                /* always set by emsg() */
  EXTERN int    ex_exitval INIT(= 0);       /* exit value for ex mode */
  EXTERN int    emsg_on_display INIT(= FALSE);  /* there is an error message */
*** ../vim-7.3.636/src/version.c        2012-08-23 15:53:00.000000000 +0200
--- src/version.c       2012-08-23 17:59:12.000000000 +0200
***************
*** 721,722 ****
--- 721,724 ----
  {   /* Add new patch number below this line */
+ /**/
+     637,
  /**/

-- 
GOD: That is your purpose Arthur ... the Quest for the Holy Grail ...
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// 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

Raspunde prin e-mail lui