]> granicus.if.org Git - vim/commitdiff
updated for version 7.0224
authorBram Moolenaar <Bram@vim.org>
Tue, 14 Mar 2006 22:53:34 +0000 (22:53 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 14 Mar 2006 22:53:34 +0000 (22:53 +0000)
src/ex_docmd.c
src/normal.c

index f1c6bb1e04523b60b157e26254921d65569b5f3b..3ba0d37ef5f91fb9fdf5826b851879bdcc774112 100644 (file)
@@ -301,6 +301,7 @@ static void ex_at __ARGS((exarg_T *eap));
 static void    ex_bang __ARGS((exarg_T *eap));
 static void    ex_undo __ARGS((exarg_T *eap));
 static void    ex_redo __ARGS((exarg_T *eap));
+static void    ex_later __ARGS((exarg_T *eap));
 static void    ex_redir __ARGS((exarg_T *eap));
 static void    ex_redraw __ARGS((exarg_T *eap));
 static void    ex_redrawstatus __ARGS((exarg_T *eap));
@@ -8209,6 +8210,37 @@ ex_redo(eap)
     u_redo(1);
 }
 
+/*
+ * ":earlier" and ":later".
+ */
+/*ARGSUSED*/
+    static void
+ex_later(eap)
+    exarg_T    *eap;
+{
+    long       count = 0;
+    int                sec = FALSE;
+    char_u     *p = eap->arg;
+
+    if (*p == NUL)
+       count = 1;
+    else if (isdigit(*p))
+    {
+       count = getdigits(&p);
+       switch (*p)
+       {
+           case 's': ++p; sec = TRUE; break;
+           case 'm': ++p; sec = TRUE; count *= 60; break;
+           case 'h': ++p; sec = TRUE; count *= 60 * 60; break;
+       }
+    }
+
+    if (*p != NUL)
+       EMSG2(_(e_invarg2), eap->arg);
+    else
+       undo_time(eap->cmdidx == CMD_earlier ? -count : count, sec);
+}
+
 /*
  * ":redir": start/stop redirection.
  */
index beb3cc3ffe6c56f99e30ebd9cbd7785c138ad005..cf82d681b21e6a15aa397ae3b781f98f2a3def3c 100644 (file)
@@ -8009,7 +8009,7 @@ nv_g_cmd(cap)
     case '+':
     case '-': /* "g+" and "g-": undo or redo along the timeline */
        if (!checkclearopq(oap))
-           undo_time((int)(cap->nchar == '-' ? -cap->count1 : cap->count1));
+           undo_time(cap->nchar == '-' ? -cap->count1 : cap->count1, FALSE);
        break;
 
     default: