From 1a294534394eb3f5926b60e0eef5a0fa8ec57842 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Aug 28 2012 09:54:07 +0000 Subject: - patchlevel 627 --- diff --git a/7.3.627 b/7.3.627 new file mode 100644 index 0000000..97a0298 --- /dev/null +++ b/7.3.627 @@ -0,0 +1,102 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.627 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.627 +Problem: When using the "n" flag with the ":s" command a \= substitution + will not be evaluated. +Solution: Do perform the evaluation, so that a function can be invoked at + every matching position without changing the text. (Christian + Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.3.626/src/ex_cmds.c 2012-07-10 15:18:18.000000000 +0200 +--- src/ex_cmds.c 2012-08-08 16:44:16.000000000 +0200 +*************** +*** 4264,4269 **** +--- 4264,4272 ---- + int endcolumn = FALSE; /* cursor in last column when done */ + pos_T old_cursor = curwin->w_cursor; + int start_nsubs; ++ #ifdef FEAT_EVAL ++ int save_ma = 0; ++ #endif + + cmd = eap->arg; + if (!global_busy) +*************** +*** 4668,4674 **** + } + sub_nsubs++; + did_sub = TRUE; +! goto skip; + } + + if (do_ask) +--- 4671,4682 ---- + } + sub_nsubs++; + did_sub = TRUE; +! #ifdef FEAT_EVAL +! /* Skip the substitution, unless an expression is used, +! * then it is evaluated in the sandbox. */ +! if (!(sub[0] == '\\' && sub[1] == '=')) +! #endif +! goto skip; + } + + if (do_ask) +*************** +*** 4840,4849 **** +--- 4848,4874 ---- + /* + * 3. substitute the string. + */ ++ #ifdef FEAT_EVAL ++ if (do_count) ++ { ++ /* prevent accidently changing the buffer by a function */ ++ save_ma = curbuf->b_p_ma; ++ curbuf->b_p_ma = FALSE; ++ sandbox++; ++ } ++ #endif + /* get length of substitution part */ + sublen = vim_regsub_multi(®match, + sub_firstlnum - regmatch.startpos[0].lnum, + sub, sub_firstline, FALSE, p_magic, TRUE); ++ #ifdef FEAT_EVAL ++ if (do_count) ++ { ++ curbuf->b_p_ma = save_ma; ++ sandbox--; ++ goto skip; ++ } ++ #endif + + /* When the match included the "$" of the last line it may + * go beyond the last line of the buffer. */ +*** ../vim-7.3.626/src/version.c 2012-08-08 16:05:03.000000000 +0200 +--- src/version.c 2012-08-08 16:48:45.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 627, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +225. You sign up for free subscriptions for all the computer magazines + + /// 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 ///