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