changeset 2126:e038754d419a v7.2.408

updated for version 7.2.408 Problem: With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line that was not changed. Solution: Only set '[ and '] marks when a substitution was done.
author Bram Moolenaar <bram@zimbu.org>
date Tue, 23 Mar 2010 17:36:29 +0100
parents b8744d1982d1
children 4e22214f8464
files src/ex_cmds.c src/version.c
diffstat 2 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4238,6 +4238,7 @@ do_sub(eap)
     char_u	*sub_firstline;		/* allocated copy of first sub line */
     int		endcolumn = FALSE;	/* cursor in last column when done */
     pos_T	old_cursor = curwin->w_cursor;
+    int		start_nsubs;
 
     cmd = eap->arg;
     if (!global_busy)
@@ -4245,6 +4246,7 @@ do_sub(eap)
 	sub_nsubs = 0;
 	sub_nlines = 0;
     }
+    start_nsubs = sub_nsubs;
 
     if (eap->cmdidx == CMD_tilde)
 	which_pat = RE_LAST;	/* use last used regexp */
@@ -5106,7 +5108,7 @@ outofmem:
     if (do_count)
 	curwin->w_cursor = old_cursor;
 
-    if (sub_nsubs)
+    if (sub_nsubs > start_nsubs)
     {
 	/* Set the '[ and '] marks. */
 	curbuf->b_op_start.lnum = eap->line1;
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    408,
+/**/
     407,
 /**/
     406,