Patch 7.4.1723
Problem:    When using try/catch in 'tabline' it is still considered an
            error and the tabline will be disabled.
Solution:   Check did_emsg instead of called_emsg. (haya14busa, closes #746)
Files:      src/screen.c, src/testdir/test_tabline.vim,
            src/testdir/test_alot.vim


*** ../vim-7.4.1722/src/screen.c        2016-04-05 21:10:19.425575959 +0200
--- src/screen.c        2016-04-11 21:52:36.891360039 +0200
***************
*** 10266,10281 ****
      /* Use the 'tabline' option if it's set. */
      if (*p_tal != NUL)
      {
!       int     save_called_emsg = called_emsg;
  
        /* Check for an error.  If there is one we would loop in redrawing the
         * screen.  Avoid that by making 'tabline' empty. */
!       called_emsg = FALSE;
        win_redr_custom(NULL, FALSE);
!       if (called_emsg)
            set_string_option_direct((char_u *)"tabline", -1,
                                           (char_u *)"", OPT_FREE, SID_ERROR);
!       called_emsg |= save_called_emsg;
      }
      else
  #endif
--- 10266,10281 ----
      /* Use the 'tabline' option if it's set. */
      if (*p_tal != NUL)
      {
!       int     saved_did_emsg = did_emsg;
  
        /* Check for an error.  If there is one we would loop in redrawing the
         * screen.  Avoid that by making 'tabline' empty. */
!       did_emsg = FALSE;
        win_redr_custom(NULL, FALSE);
!       if (did_emsg)
            set_string_option_direct((char_u *)"tabline", -1,
                                           (char_u *)"", OPT_FREE, SID_ERROR);
!       did_emsg |= saved_did_emsg;
      }
      else
  #endif
*** ../vim-7.4.1722/src/testdir/test_tabline.vim        2016-04-11 
21:54:22.462255990 +0200
--- src/testdir/test_tabline.vim        2016-04-11 21:51:53.123817757 +0200
***************
*** 0 ****
--- 1,43 ----
+ function! TablineWithCaughtError()
+   let s:func_in_tabline_called = 1
+   try
+     call eval('unknown expression')
+   catch
+   endtry
+   return ''
+ endfunction
+ 
+ function! TablineWithError()
+   let s:func_in_tabline_called = 1
+   call eval('unknown expression')
+   return ''
+ endfunction
+ 
+ function! Test_caught_error_in_tabline()
+   let showtabline_save = &showtabline
+   set showtabline=2
+   let s:func_in_tabline_called = 0
+   let tabline = '%{TablineWithCaughtError()}'
+   let &tabline = tabline
+   redraw!
+   call assert_true(s:func_in_tabline_called)
+   call assert_equal(tabline, &tabline)
+   set tabline=
+   let &showtabline = showtabline_save
+ endfunction
+ 
+ function! Test_tabline_will_be_disabled_with_error()
+   let showtabline_save = &showtabline
+   set showtabline=2
+   let s:func_in_tabline_called = 0
+   let tabline = '%{TablineWithError()}'
+   try
+     let &tabline = tabline
+     redraw!
+   catch
+   endtry
+   call assert_true(s:func_in_tabline_called)
+   call assert_equal('', &tabline)
+   set tabline=
+   let &showtabline = showtabline_save
+ endfunction
*** ../vim-7.4.1722/src/testdir/test_alot.vim   2016-04-05 21:10:19.429575920 
+0200
--- src/testdir/test_alot.vim   2016-04-11 21:51:53.123817757 +0200
***************
*** 24,29 ****
--- 24,30 ----
  source test_sort.vim
  source test_statusline.vim
  source test_syn_attr.vim
+ source test_tabline.vim
  source test_timers.vim
  source test_undolevels.vim
  source test_unlet.vim
*** ../vim-7.4.1722/src/version.c       2016-04-11 21:02:48.194609248 +0200
--- src/version.c       2016-04-11 21:51:37.331982908 +0200
***************
*** 750,751 ****
--- 750,753 ----
  {   /* Add new patch number below this line */
+ /**/
+     1723,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
259. When you enter your name in the AltaVista search engine, the top ten
     matches do indeed refer to you.

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