diff --git a/7.3.1199 b/7.3.1199 new file mode 100644 index 0000000..515ec3a --- /dev/null +++ b/7.3.1199 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1199 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1199 +Problem: When evaluating 'foldexpr' causes an error this is silently + ignored and evaluation is retried every time. +Solution: Set emsg_silent instead of emsg_off. Stop evaluating 'foldexpr' is + it is causing errors. (Christian Brabandt) +Files: src/fold.c + + +*** ../vim-7.3.1198/src/fold.c 2012-08-29 15:22:14.000000000 +0200 +--- src/fold.c 2013-06-15 16:57:24.000000000 +0200 +*************** +*** 1930,1937 **** + char_u *buf; + { + char_u *text = NULL; +- + #ifdef FEAT_EVAL + if (*wp->w_p_fdt != NUL) + { + char_u dashes[MAX_LEVEL + 2]; +--- 1930,1951 ---- + char_u *buf; + { + char_u *text = NULL; + #ifdef FEAT_EVAL ++ /* an error occurred when evaluating 'fdt' setting */ ++ static int got_fdt_error = FALSE; ++ int save_did_emsg = did_emsg; ++ static win_T *last_wp = NULL; ++ static linenr_T last_lnum = 0; ++ ++ if (last_wp != wp || last_wp == NULL ++ || last_lnum > lnum || last_lnum == 0) ++ /* window changed, try evaluating foldtext setting once again */ ++ got_fdt_error = FALSE; ++ ++ if (!got_fdt_error) ++ /* a previous error should not abort evaluating 'foldexpr' */ ++ did_emsg = FALSE; ++ + if (*wp->w_p_fdt != NUL) + { + char_u dashes[MAX_LEVEL + 2]; +*************** +*** 1952,1970 **** + dashes[level] = NUL; + set_vim_var_string(VV_FOLDDASHES, dashes, -1); + set_vim_var_nr(VV_FOLDLEVEL, (long)level); +- save_curwin = curwin; +- curwin = wp; +- curbuf = wp->w_buffer; + +! ++emsg_off; +! text = eval_to_string_safe(wp->w_p_fdt, NULL, + was_set_insecurely((char_u *)"foldtext", OPT_LOCAL)); +! --emsg_off; + +! curwin = save_curwin; +! curbuf = curwin->w_buffer; + set_vim_var_string(VV_FOLDDASHES, NULL, -1); + + if (text != NULL) + { + /* Replace unprintable characters, if there are any. But +--- 1966,1997 ---- + dashes[level] = NUL; + set_vim_var_string(VV_FOLDDASHES, dashes, -1); + set_vim_var_nr(VV_FOLDLEVEL, (long)level); + +! /* skip evaluating foldtext on errors */ +! if (!got_fdt_error) +! { +! save_curwin = curwin; +! curwin = wp; +! curbuf = wp->w_buffer; +! +! ++emsg_silent; /* handle exceptions, but don't display errors */ +! text = eval_to_string_safe(wp->w_p_fdt, NULL, + was_set_insecurely((char_u *)"foldtext", OPT_LOCAL)); +! --emsg_silent; +! +! if (text == NULL || did_emsg) +! got_fdt_error = TRUE; + +! curwin = save_curwin; +! curbuf = curwin->w_buffer; +! } +! last_lnum = lnum; +! last_wp = wp; + set_vim_var_string(VV_FOLDDASHES, NULL, -1); + ++ if (!did_emsg && save_did_emsg) ++ did_emsg = save_did_emsg; ++ + if (text != NULL) + { + /* Replace unprintable characters, if there are any. But +*** ../vim-7.3.1198/src/version.c 2013-06-15 16:47:31.000000000 +0200 +--- src/version.c 2013-06-15 16:53:16.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1199, + /**/ + +-- +'Psychologist' -- Someone who looks at everyone else when +an attractive woman enters the room. + + /// 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 ///