updated for version 7.2-048
diff --git a/src/eval.c b/src/eval.c
index 98fc8ed..00190b0 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -18146,14 +18146,17 @@
}
/*
- * Set v:count, v:count1 and v:prevcount.
+ * Set v:count to "count" and v:count1 to "count1".
+ * When "set_prevcount" is TRUE first set v:prevcount from v:count.
*/
void
-set_vcount(count, count1)
+set_vcount(count, count1, set_prevcount)
long count;
long count1;
+ int set_prevcount;
{
- vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
+ if (set_prevcount)
+ vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
vimvars[VV_COUNT].vv_nr = count;
vimvars[VV_COUNT1].vv_nr = count1;
}
diff --git a/src/normal.c b/src/normal.c
index b907171..0557833 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -580,6 +580,9 @@
static int old_mapped_len = 0;
#endif
int idx;
+#ifdef FEAT_EVAL
+ int set_prevcount = FALSE;
+#endif
vim_memset(&ca, 0, sizeof(ca)); /* also resets ca.retval */
ca.oap = oap;
@@ -615,7 +618,12 @@
/* When not finishing an operator and no register name typed, reset the
* count. */
if (!finish_op && !oap->regname)
+ {
ca.opcount = 0;
+#ifdef FEAT_EVAL
+ set_prevcount = TRUE;
+#endif
+ }
#ifdef FEAT_AUTOCMD
/* Restore counts from before receiving K_CURSORHOLD. This means after
@@ -719,7 +727,15 @@
* command, so that v:count can be used in an expression mapping
* right after the count. */
if (toplevel && stuff_empty())
- set_vcount(ca.count0, ca.count0 == 0 ? 1 : ca.count0);
+ {
+ long count = ca.count0;
+
+ /* multiply with ca.opcount the same way as below */
+ if (ca.opcount != 0)
+ count = ca.opcount * (count == 0 ? 1 : count);
+ set_vcount(count, count == 0 ? 1 : count, set_prevcount);
+ set_prevcount = FALSE; /* only set v:prevcount once */
+ }
#endif
if (ctrl_w)
{
@@ -806,7 +822,7 @@
* Only set v:count when called from main() and not a stuffed command.
*/
if (toplevel && stuff_empty())
- set_vcount(ca.count0, ca.count1);
+ set_vcount(ca.count0, ca.count1, set_prevcount);
#endif
/*
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index 7aabf0b..362b9d9 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -61,7 +61,7 @@
long get_vim_var_nr __ARGS((int idx));
char_u *get_vim_var_str __ARGS((int idx));
list_T *get_vim_var_list __ARGS((int idx));
-void set_vcount __ARGS((long count, long count1));
+void set_vcount __ARGS((long count, long count1, int set_prevcount));
void set_vim_var_string __ARGS((int idx, char_u *val, int len));
void set_vim_var_list __ARGS((int idx, list_T *val));
void set_reg_var __ARGS((int c));
diff --git a/src/version.c b/src/version.c
index 8912575..ee0240e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 48,
+/**/
47,
/**/
46,