summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@zimbu.org>2010-03-23 17:36:29 +0100
committerBram Moolenaar <bram@zimbu.org>2010-03-23 17:36:29 +0100
commit1f2e5a8cbc674221fe3013193619b3efee9fa98b (patch)
tree622aa5000ac4ab26f1cd8f926ad16dc50427ab8e
parent2875472bdc1351716786db2cc43201a56d2daee9 (diff)
downloadvim-1f2e5a8cbc674221fe3013193619b3efee9fa98b.tar.gz
updated for version 7.2.408v7.2.408v7-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.
-rw-r--r--src/ex_cmds.c4
-rw-r--r--src/version.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 68627a57..bf5af404 100644
--- 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;
diff --git a/src/version.c b/src/version.c
index c10a627e..4fcc9a68 100644
--- 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,