]> granicus.if.org Git - vim/commitdiff
patch 7.4.754 v7.4.754
authorBram Moolenaar <Bram@vim.org>
Thu, 25 Jun 2015 11:57:36 +0000 (13:57 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 25 Jun 2015 11:57:36 +0000 (13:57 +0200)
Problem:    Using CTRL-A in Visual mode does not work well. (Gary Johnson)
Solution:   Make it increment all numbers in the Visual area. (Christian
            Brabandt)

12 files changed:
src/normal.c
src/ops.c
src/proto/ops.pro
src/testdir/Make_amiga.mak
src/testdir/Make_dos.mak
src/testdir/Make_ming.mak
src/testdir/Make_os2.mak
src/testdir/Make_vms.mms
src/testdir/Makefile
src/testdir/test_increment.in [new file with mode: 0644]
src/testdir/test_increment.ok [new file with mode: 0644]
src/version.c

index 9c9537f4b04172ef7cec047c1c8e78e26e93402b..8d8be9b0cb18f4ee6e2d08217cdb9b924b461f97 100644 (file)
@@ -4201,9 +4201,17 @@ nv_help(cap)
 nv_addsub(cap)
     cmdarg_T   *cap;
 {
-    if (!checkclearopq(cap->oap)
-           && do_addsub((int)cap->cmdchar, cap->count1) == OK)
+    int visual = VIsual_active;
+    if (cap->oap->op_type == OP_NOP
+           && do_addsub((int)cap->cmdchar, cap->count1, cap->arg) == OK)
        prep_redo_cmd(cap);
+    else
+       clearopbeep(cap->oap);
+    if (visual)
+    {
+       VIsual_active = FALSE;
+       redraw_later(CLEAR);
+    }
 }
 
 /*
@@ -7841,14 +7849,28 @@ nv_g_cmd(cap)
 
     switch (cap->nchar)
     {
+    case Ctrl_A:
+    case Ctrl_X:
 #ifdef MEM_PROFILE
     /*
      * "g^A": dump log of used memory.
      */
-    case Ctrl_A:
-       vim_mem_profile_dump();
-       break;
+       if (!VIsual_active && cap->nchar == Ctrl_A)
+           vim_mem_profile_dump();
+       else
 #endif
+    /*
+     * "g^A/g^X": sequentially increment visually selected region
+     */
+            if (VIsual_active)
+       {
+           cap->arg = TRUE;
+           cap->cmdchar = cap->nchar;
+           nv_addsub(cap);
+       }
+       else
+           clearopbeep(oap);
+       break;
 
 #ifdef FEAT_VREPLACE
     /*
index 32461a8da61dfcf2cffae29372adb403e0bf70d9..94ef72fb5ed89593ffcea1c851dec7d79bef98c9 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -5375,9 +5375,10 @@ reverse_line(s)
  * return FAIL for failure, OK otherwise
  */
     int
-do_addsub(command, Prenum1)
+do_addsub(command, Prenum1, g_cmd)
     int                command;
     linenr_T   Prenum1;
+    int                g_cmd;              /* was g<c-a>/g<c-x> */
 {
     int                col;
     char_u     *buf1;
@@ -5385,6 +5386,7 @@ do_addsub(command, Prenum1)
     int                hex;            /* 'X' or 'x': hex; '0': octal */
     static int hexupper = FALSE;       /* 0xABC */
     unsigned long n;
+    long       offset = 0;             /* line offset for Ctrl_V mode */
     long_u     oldn;
     char_u     *ptr;
     int                c;
@@ -5394,247 +5396,302 @@ do_addsub(command, Prenum1)
     int                dooct;
     int                doalp;
     int                firstdigit;
-    int                negative;
     int                subtract;
+    int                negative = FALSE;
+    int                visual = VIsual_active;
+    int                i;
+    int                lnum = curwin->w_cursor.lnum;
+    int                lnume = curwin->w_cursor.lnum;
 
     dohex = (vim_strchr(curbuf->b_p_nf, 'x') != NULL); /* "heX" */
     dooct = (vim_strchr(curbuf->b_p_nf, 'o') != NULL); /* "Octal" */
     doalp = (vim_strchr(curbuf->b_p_nf, 'p') != NULL); /* "alPha" */
 
-    ptr = ml_get_curline();
-    RLADDSUBFIX(ptr);
-
     /*
      * First check if we are on a hexadecimal number, after the "0x".
      */
     col = curwin->w_cursor.col;
-    if (dohex)
-       while (col > 0 && vim_isxdigit(ptr[col]))
-           --col;
-    if (       dohex
-           && col > 0
-           && (ptr[col] == 'X'
-               || ptr[col] == 'x')
-           && ptr[col - 1] == '0'
-           && vim_isxdigit(ptr[col + 1]))
+    if (VIsual_active)
     {
-       /*
-        * Found hexadecimal number, move to its start.
-        */
-       --col;
+       if (lt(curwin->w_cursor, VIsual))
+       {
+           pos_T t;
+           t = curwin->w_cursor;
+           curwin->w_cursor = VIsual;
+           VIsual = t;
+       }
+       if (VIsual_mode == 'V')
+           VIsual.col = 0;
+
+       ptr = ml_get(VIsual.lnum);
+       RLADDSUBFIX(ptr);
+
+       /* store visual area for 'gv' */
+       curbuf->b_visual.vi_start = VIsual;
+       curbuf->b_visual.vi_end = curwin->w_cursor;
+       curbuf->b_visual.vi_mode = VIsual_mode;
+
+       col = VIsual.col;
+       lnum = VIsual.lnum;
+       lnume = curwin->w_cursor.lnum;
+       if (ptr[col] == '-')
+       {
+           negative = TRUE;
+           col++;
+       }
     }
     else
     {
-       /*
-        * Search forward and then backward to find the start of number.
-        */
-       col = curwin->w_cursor.col;
-
-       while (ptr[col] != NUL
-               && !vim_isdigit(ptr[col])
-               && !(doalp && ASCII_ISALPHA(ptr[col])))
-           ++col;
+       ptr = ml_get_curline();
+       RLADDSUBFIX(ptr);
 
-       while (col > 0
-               && vim_isdigit(ptr[col - 1])
-               && !(doalp && ASCII_ISALPHA(ptr[col])))
+       if (dohex)
+           while (col > 0 && vim_isxdigit(ptr[col]))
+               --col;
+       if (       dohex
+               && col > 0
+               && (ptr[col] == 'X'
+                   || ptr[col] == 'x')
+               && ptr[col - 1] == '0'
+               && vim_isxdigit(ptr[col + 1]))
+       {
+           /* Found hexadecimal number, move to its start. */
            --col;
+       }
+       else
+       {
+           /*
+            * Search forward and then backward to find the start of number.
+            */
+           col = curwin->w_cursor.col;
+
+           while (ptr[col] != NUL
+                   && !vim_isdigit(ptr[col])
+                   && !(doalp && ASCII_ISALPHA(ptr[col])))
+               ++col;
+
+           while (col > 0
+                   && vim_isdigit(ptr[col - 1])
+                   && !(doalp && ASCII_ISALPHA(ptr[col])))
+               --col;
+       }
     }
 
-    /*
-     * If a number was found, and saving for undo works, replace the number.
-     */
-    firstdigit = ptr[col];
-    RLADDSUBFIX(ptr);
-    if ((!VIM_ISDIGIT(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit)))
-           || u_save_cursor() != OK)
+    for (i = lnum; i <= lnume; i++)
     {
-       beep_flush();
-       return FAIL;
-    }
+       curwin->w_cursor.lnum = i;
+       ptr = ml_get_curline();
+       RLADDSUBFIX(ptr);
+       if ((int)STRLEN(ptr) <= col)
+           col = 0;
+       /*
+        * If a number was found, and saving for undo works, replace the number.
+        */
+       firstdigit = ptr[col];
+       RLADDSUBFIX(ptr);
+       if ((!VIM_ISDIGIT(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit)))
+               || u_save_cursor() != OK)
+       {
+           if (lnum < lnume)
+               /* Try again on next line */
+               continue;
+           beep_flush();
+           return FAIL;
+       }
 
-    /* get ptr again, because u_save() may have changed it */
-    ptr = ml_get_curline();
-    RLADDSUBFIX(ptr);
+       ptr = ml_get_curline();
+       RLADDSUBFIX(ptr);
 
-    if (doalp && ASCII_ISALPHA(firstdigit))
-    {
-       /* decrement or increment alphabetic character */
-       if (command == Ctrl_X)
+       if (doalp && ASCII_ISALPHA(firstdigit))
        {
-           if (CharOrd(firstdigit) < Prenum1)
+           /* decrement or increment alphabetic character */
+           if (command == Ctrl_X)
            {
-               if (isupper(firstdigit))
-                   firstdigit = 'A';
+               if (CharOrd(firstdigit) < Prenum1)
+               {
+                   if (isupper(firstdigit))
+                       firstdigit = 'A';
+                   else
+                       firstdigit = 'a';
+               }
                else
-                   firstdigit = 'a';
-           }
-           else
 #ifdef EBCDIC
-               firstdigit = EBCDIC_CHAR_ADD(firstdigit, -Prenum1);
+                   firstdigit = EBCDIC_CHAR_ADD(firstdigit, -Prenum1);
 #else
-               firstdigit -= Prenum1;
+                   firstdigit -= Prenum1;
 #endif
-       }
-       else
-       {
-           if (26 - CharOrd(firstdigit) - 1 < Prenum1)
-           {
-               if (isupper(firstdigit))
-                   firstdigit = 'Z';
-               else
-                   firstdigit = 'z';
            }
            else
+           {
+               if (26 - CharOrd(firstdigit) - 1 < Prenum1)
+               {
+                   if (isupper(firstdigit))
+                       firstdigit = 'Z';
+                   else
+                       firstdigit = 'z';
+               }
+               else
 #ifdef EBCDIC
-               firstdigit = EBCDIC_CHAR_ADD(firstdigit, Prenum1);
+                   firstdigit = EBCDIC_CHAR_ADD(firstdigit, Prenum1);
 #else
-               firstdigit += Prenum1;
+                   firstdigit += Prenum1;
 #endif
+           }
+           curwin->w_cursor.col = col;
+           (void)del_char(FALSE);
+           ins_char(firstdigit);
        }
-       curwin->w_cursor.col = col;
-       (void)del_char(FALSE);
-       ins_char(firstdigit);
-    }
-    else
-    {
-       negative = FALSE;
-       if (col > 0 && ptr[col - 1] == '-')         /* negative number */
+       else
        {
-           --col;
-           negative = TRUE;
-       }
-
-       /* get the number value (unsigned) */
-       vim_str2nr(ptr + col, &hex, &length, dooct, dohex, NULL, &n);
+           if (col > 0 && ptr[col - 1] == '-' && !visual)
+           {
+               /* negative number */
+               --col;
+               negative = TRUE;
+           }
 
-       /* ignore leading '-' for hex and octal numbers */
-       if (hex && negative)
-       {
-           ++col;
-           --length;
-           negative = FALSE;
-       }
+           /* get the number value (unsigned) */
+           vim_str2nr(ptr + col, &hex, &length, dooct, dohex, NULL, &n);
 
-       /* add or subtract */
-       subtract = FALSE;
-       if (command == Ctrl_X)
-           subtract ^= TRUE;
-       if (negative)
-           subtract ^= TRUE;
+           /* ignore leading '-' for hex and octal numbers */
+           if (hex && negative)
+           {
+               ++col;
+               --length;
+               negative = FALSE;
+           }
 
-       oldn = n;
-       if (subtract)
-           n -= (unsigned long)Prenum1;
-       else
-           n += (unsigned long)Prenum1;
+           /* add or subtract */
+           subtract = FALSE;
+           if (command == Ctrl_X)
+               subtract ^= TRUE;
+           if (negative)
+               subtract ^= TRUE;
 
-       /* handle wraparound for decimal numbers */
-       if (!hex)
-       {
+           oldn = n;
            if (subtract)
+               n -= (unsigned long)Prenum1;
+           else
+               n += (unsigned long)Prenum1;
+
+           /* handle wraparound for decimal numbers */
+           if (!hex)
            {
-               if (n > oldn)
+               if (subtract)
                {
-                   n = 1 + (n ^ (unsigned long)-1);
-                   negative ^= TRUE;
+                   if (n > oldn)
+                   {
+                       n = 1 + (n ^ (unsigned long)-1);
+                       negative ^= TRUE;
+                   }
                }
+               else
+               {
+                   /* add */
+                   if (n < oldn)
+                   {
+                       n = (n ^ (unsigned long)-1);
+                       negative ^= TRUE;
+                   }
+               }
+               if (n == 0)
+                   negative = FALSE;
            }
-           else /* add */
+
+           /*
+            * Delete the old number.
+            */
+           curwin->w_cursor.col = col;
+           todel = length;
+           c = gchar_cursor();
+
+           /*
+            * Don't include the '-' in the length, only the length of the
+            * part after it is kept the same.
+            */
+           if (c == '-')
+               --length;
+           while (todel-- > 0)
            {
-               if (n < oldn)
+               if (c < 0x100 && isalpha(c))
                {
-                   n = (n ^ (unsigned long)-1);
-                   negative ^= TRUE;
+                   if (isupper(c))
+                       hexupper = TRUE;
+                   else
+                       hexupper = FALSE;
                }
+               /* del_char() will mark line needing displaying */
+               (void)del_char(FALSE);
+               c = gchar_cursor();
            }
-           if (n == 0)
-               negative = FALSE;
-       }
 
-       /*
-        * Delete the old number.
-        */
-       curwin->w_cursor.col = col;
-       todel = length;
-       c = gchar_cursor();
-       /*
-        * Don't include the '-' in the length, only the length of the part
-        * after it is kept the same.
-        */
-       if (c == '-')
-           --length;
-       while (todel-- > 0)
-       {
-           if (c < 0x100 && isalpha(c))
+           /*
+            * Prepare the leading characters in buf1[].
+            * When there are many leading zeros it could be very long.
+            * Allocate a bit too much.
+            */
+           buf1 = alloc((unsigned)length + NUMBUFLEN);
+           if (buf1 == NULL)
+               return FAIL;
+           ptr = buf1;
+           /* do not add leading '-' for visual mode */
+           if (negative && !visual)
            {
-               if (isupper(c))
-                   hexupper = TRUE;
-               else
-                   hexupper = FALSE;
+               *ptr++ = '-';
+           }
+           if (hex)
+           {
+               *ptr++ = '0';
+               --length;
+           }
+           if (hex == 'x' || hex == 'X')
+           {
+               *ptr++ = hex;
+               --length;
            }
-           /* del_char() will mark line needing displaying */
-           (void)del_char(FALSE);
-           c = gchar_cursor();
-       }
 
-       /*
-        * Prepare the leading characters in buf1[].
-        * When there are many leading zeros it could be very long.  Allocate
-        * a bit too much.
-        */
-       buf1 = alloc((unsigned)length + NUMBUFLEN);
-       if (buf1 == NULL)
-           return FAIL;
-       ptr = buf1;
-       if (negative)
-       {
-           *ptr++ = '-';
-       }
-       if (hex)
-       {
-           *ptr++ = '0';
-           --length;
-       }
-       if (hex == 'x' || hex == 'X')
-       {
-           *ptr++ = hex;
-           --length;
-       }
+           /*
+            * Put the number characters in buf2[].
+            */
+           if (hex == 0)
+               sprintf((char *)buf2, "%lu", n + offset);
+           else if (hex == '0')
+               sprintf((char *)buf2, "%lo", n + offset);
+           else if (hex && hexupper)
+               sprintf((char *)buf2, "%lX", n + offset);
+           else
+               sprintf((char *)buf2, "%lx", n + offset);
+           length -= (int)STRLEN(buf2);
 
-       /*
-        * Put the number characters in buf2[].
-        */
-       if (hex == 0)
-           sprintf((char *)buf2, "%lu", n);
-       else if (hex == '0')
-           sprintf((char *)buf2, "%lo", n);
-       else if (hex && hexupper)
-           sprintf((char *)buf2, "%lX", n);
-       else
-           sprintf((char *)buf2, "%lx", n);
-       length -= (int)STRLEN(buf2);
+           if (g_cmd)
+           {
+               if (subtract)
+                   offset -= (unsigned long)Prenum1;
+               else
+                   offset += (unsigned long)Prenum1;
+           }
 
-       /*
-        * Adjust number of zeros to the new number of digits, so the
-        * total length of the number remains the same.
-        * Don't do this when
-        * the result may look like an octal number.
-        */
-       if (firstdigit == '0' && !(dooct && hex == 0))
-           while (length-- > 0)
-               *ptr++ = '0';
-       *ptr = NUL;
-       STRCAT(buf1, buf2);
-       ins_str(buf1);          /* insert the new number */
-       vim_free(buf1);
-    }
-    --curwin->w_cursor.col;
-    curwin->w_set_curswant = TRUE;
+           /*
+            * Adjust number of zeros to the new number of digits, so the
+            * total length of the number remains the same.
+            * Don't do this when
+            * the result may look like an octal number.
+            */
+           if (firstdigit == '0' && !(dooct && hex == 0))
+               while (length-- > 0)
+                   *ptr++ = '0';
+           *ptr = NUL;
+           STRCAT(buf1, buf2);
+           ins_str(buf1);              /* insert the new number */
+           vim_free(buf1);
+       }
+       --curwin->w_cursor.col;
+       curwin->w_set_curswant = TRUE;
 #ifdef FEAT_RIGHTLEFT
-    ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
-    RLADDSUBFIX(ptr);
+       ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+       RLADDSUBFIX(ptr);
 #endif
+    }
     return OK;
 }
 
index c1a1b455ef55c9488fa034c4e6e5504fba8a6d33..f9b53c08fe2f8331b7511562784233869e24b100 100644 (file)
@@ -43,7 +43,7 @@ void op_formatexpr __ARGS((oparg_T *oap));
 int fex_format __ARGS((linenr_T lnum, long count, int c));
 void format_lines __ARGS((linenr_T line_count, int avoid_fex));
 int paragraph_start __ARGS((linenr_T lnum));
-int do_addsub __ARGS((int command, linenr_T Prenum1));
+int do_addsub __ARGS((int command, linenr_T Prenum1, int g_cmd));
 int read_viminfo_register __ARGS((vir_T *virp, int force));
 void write_viminfo_registers __ARGS((FILE *fp));
 void x11_export_final_selection __ARGS((void));
index d9385b214d20438c2da255fce3e8ef7cfddcad36..5d80c4baa44c591f338159b082c8e72322d3da97 100644 (file)
@@ -45,6 +45,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
@@ -192,6 +193,7 @@ test_close_count.out: test_close_count.in
 test_command_count.out: test_command_count.in
 test_erasebackword.out: test_erasebackword.in
 test_eval.out: test_eval.in
+test_increment.out: test_increment.in
 test_insertcount.out: test_insertcount.in
 test_listchars.out: test_listchars.in
 test_listlbr.out: test_listlbr.in
index 931784f1b91159082b3e4e32570df364b2a38a89..219b4bc9bceada215981f7b623df9bc6f246b9ed 100644 (file)
@@ -44,6 +44,7 @@ SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
index fde59fe85d07f03c2b8efaeffa44f9d867d5c00b..ba28cb5f6f7ad730b2cccd74627c6bdfa6cf851e 100644 (file)
@@ -66,6 +66,7 @@ SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
index 5a59cf5df92e575f0afd583884e69ef9856c969d..52addeef046679ef3d0d5a3ab2b75e38792d7ad5 100644 (file)
@@ -46,6 +46,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
index 427954e6cabbb414b0f4827a127d6b6dac65a125..6d1f73b460167ff8108413b418fdaeaf64fd7ad5 100644 (file)
@@ -105,6 +105,7 @@ SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
         test_command_count.out \
         test_erasebackword.out \
         test_eval.out \
+        test_increment.out \
         test_insertcount.out \
         test_listchars.out \
         test_listlbr.out \
index 420ed6a9e0ef0e6344c8f868c6b21df5a6193f56..f0a21387022a244dfb4c4f44b0845cf117aa2f19 100644 (file)
@@ -42,6 +42,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
diff --git a/src/testdir/test_increment.in b/src/testdir/test_increment.in
new file mode 100644 (file)
index 0000000..5b0ad06
--- /dev/null
@@ -0,0 +1,143 @@
+Tests for using Ctrl-A/Ctrl-X on visual selections
+
+Test cases
+==========
+
+1) Ctrl-A on visually selected number
+Text:
+foobar-10
+    1)    Ctrl-A on start of line:
+       foobar-9
+    2)    Ctrl-A on visually selected "-10":
+       foobar-9
+    3)    Ctrl-A on visually selected "10":
+       foobar-11
+    4)    Ctrl-X on visually selected "-10"
+       foobar-11
+    5)    Ctrl-X on visually selected "10"
+       foobar-9
+
+2) Ctrl-A on visually selected lines
+Text:
+10
+20
+30
+40
+
+    1) Ctrl-A on visually selected lines:
+11
+21
+31
+41
+
+    2) Ctrl-X on visually selected lines:
+9
+19
+29
+39
+
+3) g Ctrl-A on visually selected lines, with non-numbers in between
+Text:
+10
+
+20
+
+30
+
+40
+
+    1) 2 g Ctrl-A on visually selected lines:
+12
+
+24
+
+36
+
+48
+    2) 2 g Ctrl-X on visually selected lines
+8
+
+16
+
+24
+
+32
+
+4) Ctrl-A on non-number
+Text:
+foobar-10
+    1) visually select foobar:
+    foobar-10
+
+STARTTEST
+:so small.vim
+
+:" Test 1
+:/^S1=/+,/^E1=/-y a
+:/^E1/+put a
+\ 1:/^E1/+2put a
+f-v$\ 1:/^E1/+3put a
+f1v$\ 1:/^E1/+4put a
+f-v$\18:/^E1/+5put a
+f1v$\18
+
+:" Test 22
+:/^S2=/+,/^E2=/-y a
+:/^E2/+put a
+V3k$\ 1:.+put a
+V3k$\18
+
+:" Test 3
+:/^S3=/+,/^E3=/-y a
+:/^E3=/+put a
+V6k2g\ 1:.+put a
+V6k2g\18
+
+:" Test 4
+:/^S4=/+,/^E4=/-y a
+:/^E4=/+put a
+vf-\ 1
+
+:" Save the report
+:/^# Test 1/,$w! test.out
+:qa!
+
+
+# Test 1
+S1======
+foobar-10
+E1======
+
+
+
+# Test 2
+S2=====
+10
+20
+30
+40
+E2=====
+
+
+
+# Test 3
+S3=====
+10
+
+20
+
+30
+
+40
+E3=====
+
+
+
+# Test 4
+S4=====
+foobar-10
+E4=====
+
+
+ENDTEST
+
diff --git a/src/testdir/test_increment.ok b/src/testdir/test_increment.ok
new file mode 100644 (file)
index 0000000..4a61ad1
--- /dev/null
@@ -0,0 +1,66 @@
+# Test 1
+S1======
+foobar-10
+E1======
+
+foobar-9
+foobar-9
+foobar-11
+foobar-11
+foobar-9
+
+
+# Test 2
+S2=====
+10
+20
+30
+40
+E2=====
+
+11
+21
+31
+41
+
+9
+19
+29
+39
+
+# Test 3
+S3=====
+10
+
+20
+
+30
+
+40
+E3=====
+
+12
+
+24
+
+36
+
+48
+
+8
+
+16
+
+24
+
+32
+
+# Test 4
+S4=====
+foobar-10
+E4=====
+
+foobar-10
+
+ENDTEST
+
index c8eda423945eed78ee934d6e81b938e4036478ef..eeef1c7585aeef8a639e5df2b871f8fe2e516796 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    754,
 /**/
     753,
 /**/