]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-048 v7.2.048
authorBram Moolenaar <Bram@vim.org>
Thu, 20 Nov 2008 15:12:02 +0000 (15:12 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 20 Nov 2008 15:12:02 +0000 (15:12 +0000)
src/eval.c
src/normal.c
src/proto/eval.pro
src/version.c

index 98fc8edf301c25ac62652456c873775b71a9c539..00190b09efe712cfb5f0a6e832949fed7ae036e0 100644 (file)
@@ -18146,14 +18146,17 @@ get_vim_var_list(idx)
 }
 
 /*
- * 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;
 }
index b9071715a3b9376e3aad05328f0cf086fda94de1..0557833bae93267d778bc8892359b12d600f161a 100644 (file)
@@ -580,6 +580,9 @@ normal_cmd(oap, toplevel)
     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 @@ normal_cmd(oap, toplevel)
     /* 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 @@ getcount:
             * 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 @@ getcount:
      * 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
 
     /*
index 7aabf0ba13dfef204b28394e03c941bbbc15f33b..362b9d90fe335127fb7d5194cb2b0bff397d4a60 100644 (file)
@@ -61,7 +61,7 @@ void set_vim_var_nr __ARGS((int idx, long val));
 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));
index 8912575f48ba4a636fd751541c965aa175646edf..ee0240ef35193e7a8681e41a356d98027b905647 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    48,
 /**/
     47,
 /**/