Patch 7.4.754
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)
Files:      runtime/doc/change.txt, 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,
            src/testdir/test_increment.ok


*** ../vim-7.4.753/runtime/doc/change.txt       2015-01-27 18:43:42.134535513 
+0100
--- runtime/doc/change.txt      2015-06-25 13:55:43.686428819 +0200
***************
*** 156,161 ****
--- 156,164 ----
  The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting
  spaces before and after a multi-byte character |fo-table|.
  
+ The '[ mark is set at the end of the first line that was joined, '] at the end
+ of the resulting line.
+ 
  
  ==============================================================================
  2. Delete and insert                          *delete-insert* *replacing*
***************
*** 376,385 ****
--- 379,421 ----
  CTRL-A                        Add [count] to the number or alphabetic 
character at
                        or after the cursor.  {not in Vi}
  
+                                                       *v_CTRL-A*
+ {Visual}CTRL-A                Add [count] to the number or alphabetic 
character in
+                       the highlighted text.  {not in Vi}
+ 
+                                                       *v_g_CTRL-A*
+ {Visual}g CTRL-A      Add [count] to the number or alphabetic character in
+                       the highlighted text. If several lines are
+                       highlighted, each one will be incremented by an
+                       additional [count] (so effectively creating a
+                       [count] incrementing sequence).  {not in Vi}
+                       For Example, if you have this list of numbers:
+                               1. ~
+                               1. ~
+                               1. ~
+                               1. ~
+                       Move to the second "1." and Visually select three
+                       lines, pressing g CTRL-A results in:
+                               1. ~
+                               2. ~
+                               3. ~
+                               4. ~
+ 
                                                        *CTRL-X*
  CTRL-X                        Subtract [count] from the number or alphabetic
                        character at or after the cursor.  {not in Vi}
  
+                                                       *v_CTRL-X*
+ {Visual}CTRL-X                Subtract [count] from the number or alphabetic
+                       character in the highlighted text.  {not in Vi}
+ 
+                                                       *v_g_CTRL-X*
+ {Visual}g CTRL-X      Subtract [count] from the number or alphabetic
+                       character in the highlighted text. If several lines
+                       are highlighted, each value will be decremented by an
+                       additional [count] (so effectively creating a [count]
+                       decrementing sequence).  {not in Vi}
+ 
  The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned
  octal and hexadecimal numbers and alphabetic characters.  This depends on the
  'nrformats' option.
***************
*** 396,401 ****
--- 432,440 ----
    under or after the cursor.  This is useful to make lists with an alphabetic
    index.
  
+ For decimals a leading negative sign is considered for incrementing/
+ decrementing, for octal and hey values, it won't be considered.
+ 
  For numbers with leading zeros (including all octal and hexadecimal numbers),
  Vim preserves the number of characters in the number when possible.  CTRL-A on
  "0077" results in "0100", CTRL-X on "0x100" results in "0x0ff".
*** ../vim-7.4.753/src/normal.c 2015-06-25 13:30:41.206095684 +0200
--- src/normal.c        2015-06-25 13:42:06.342924954 +0200
***************
*** 4201,4209 ****
  nv_addsub(cap)
      cmdarg_T  *cap;
  {
!     if (!checkclearopq(cap->oap)
!           && do_addsub((int)cap->cmdchar, cap->count1) == OK)
        prep_redo_cmd(cap);
  }
  
  /*
--- 4201,4217 ----
  nv_addsub(cap)
      cmdarg_T  *cap;
  {
!     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,7854 ****
  
      switch (cap->nchar)
      {
  #ifdef MEM_PROFILE
      /*
       * "g^A": dump log of used memory.
       */
!     case Ctrl_A:
!       vim_mem_profile_dump();
!       break;
  #endif
  
  #ifdef FEAT_VREPLACE
      /*
--- 7849,7876 ----
  
      switch (cap->nchar)
      {
+     case Ctrl_A:
+     case Ctrl_X:
  #ifdef MEM_PROFILE
      /*
       * "g^A": dump log of used memory.
       */
!       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
      /*
*** ../vim-7.4.753/src/ops.c    2015-06-19 15:17:49.891065610 +0200
--- src/ops.c   2015-06-25 13:44:44.285272132 +0200
***************
*** 5375,5383 ****
   * return FAIL for failure, OK otherwise
   */
      int
! do_addsub(command, Prenum1)
      int               command;
      linenr_T  Prenum1;
  {
      int               col;
      char_u    *buf1;
--- 5375,5384 ----
   * return FAIL for failure, OK otherwise
   */
      int
! 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,5390 ****
--- 5386,5392 ----
      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,5640 ****
      int               dooct;
      int               doalp;
      int               firstdigit;
-     int               negative;
      int               subtract;
  
      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]))
      {
!       /*
!        * 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)
      {
!       beep_flush();
!       return FAIL;
!     }
  
!     /* get ptr again, because u_save() may have changed it */
!     ptr = ml_get_curline();
!     RLADDSUBFIX(ptr);
  
!     if (doalp && ASCII_ISALPHA(firstdigit))
!     {
!       /* decrement or increment alphabetic character */
!       if (command == Ctrl_X)
        {
!           if (CharOrd(firstdigit) < Prenum1)
            {
!               if (isupper(firstdigit))
!                   firstdigit = 'A';
                else
-                   firstdigit = 'a';
-           }
-           else
  #ifdef EBCDIC
!               firstdigit = EBCDIC_CHAR_ADD(firstdigit, -Prenum1);
  #else
!               firstdigit -= Prenum1;
  #endif
-       }
-       else
-       {
-           if (26 - CharOrd(firstdigit) - 1 < Prenum1)
-           {
-               if (isupper(firstdigit))
-                   firstdigit = 'Z';
-               else
-                   firstdigit = 'z';
            }
            else
  #ifdef EBCDIC
!               firstdigit = EBCDIC_CHAR_ADD(firstdigit, Prenum1);
  #else
!               firstdigit += Prenum1;
  #endif
        }
!       curwin->w_cursor.col = col;
!       (void)del_char(FALSE);
!       ins_char(firstdigit);
!     }
!     else
!     {
!       negative = FALSE;
!       if (col > 0 && ptr[col - 1] == '-')         /* negative number */
        {
!           --col;
!           negative = TRUE;
!       }
  
!       /* get the number value (unsigned) */
!       vim_str2nr(ptr + col, &hex, &length, dooct, dohex, NULL, &n);
  
!       /* ignore leading '-' for hex and octal numbers */
!       if (hex && negative)
!       {
!           ++col;
!           --length;
!           negative = FALSE;
!       }
  
!       /* add or subtract */
!       subtract = FALSE;
!       if (command == Ctrl_X)
!           subtract ^= TRUE;
!       if (negative)
!           subtract ^= TRUE;
! 
!       oldn = n;
!       if (subtract)
!           n -= (unsigned long)Prenum1;
!       else
!           n += (unsigned long)Prenum1;
  
!       /* handle wraparound for decimal numbers */
!       if (!hex)
!       {
            if (subtract)
            {
!               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;
-       }
  
!       /*
!        * 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))
            {
!               if (isupper(c))
!                   hexupper = TRUE;
!               else
!                   hexupper = FALSE;
            }
-           /* 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);
!       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);
  
!       /*
!        * 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);
  #endif
      return OK;
  }
  
--- 5396,5697 ----
      int               dooct;
      int               doalp;
      int               firstdigit;
      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" */
  
      /*
       * First check if we are on a hexadecimal number, after the "0x".
       */
      col = curwin->w_cursor.col;
!     if (VIsual_active)
      {
!       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
      {
!       ptr = ml_get_curline();
!       RLADDSUBFIX(ptr);
  
!       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;
+       }
      }
  
!     for (i = lnum; i <= lnume; i++)
      {
!       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;
!       }
  
!       ptr = ml_get_curline();
!       RLADDSUBFIX(ptr);
  
!       if (doalp && ASCII_ISALPHA(firstdigit))
        {
!           /* decrement or increment alphabetic character */
!           if (command == Ctrl_X)
            {
!               if (CharOrd(firstdigit) < Prenum1)
!               {
!                   if (isupper(firstdigit))
!                       firstdigit = 'A';
!                   else
!                       firstdigit = 'a';
!               }
                else
  #ifdef EBCDIC
!                   firstdigit = EBCDIC_CHAR_ADD(firstdigit, -Prenum1);
  #else
!                   firstdigit -= Prenum1;
  #endif
            }
            else
+           {
+               if (26 - CharOrd(firstdigit) - 1 < Prenum1)
+               {
+                   if (isupper(firstdigit))
+                       firstdigit = 'Z';
+                   else
+                       firstdigit = 'z';
+               }
+               else
  #ifdef EBCDIC
!                   firstdigit = EBCDIC_CHAR_ADD(firstdigit, Prenum1);
  #else
!                   firstdigit += Prenum1;
  #endif
+           }
+           curwin->w_cursor.col = col;
+           (void)del_char(FALSE);
+           ins_char(firstdigit);
        }
!       else
        {
!           if (col > 0 && ptr[col - 1] == '-' && !visual)
!           {
!               /* negative number */
!               --col;
!               negative = TRUE;
!           }
  
!           /* get the number value (unsigned) */
!           vim_str2nr(ptr + col, &hex, &length, dooct, dohex, NULL, &n);
  
!           /* ignore leading '-' for hex and octal numbers */
!           if (hex && negative)
!           {
!               ++col;
!               --length;
!               negative = FALSE;
!           }
  
!           /* add or subtract */
!           subtract = FALSE;
!           if (command == Ctrl_X)
!               subtract ^= TRUE;
!           if (negative)
!               subtract ^= TRUE;
  
!           oldn = n;
            if (subtract)
+               n -= (unsigned long)Prenum1;
+           else
+               n += (unsigned long)Prenum1;
+ 
+           /* handle wraparound for decimal numbers */
+           if (!hex)
            {
!               if (subtract)
!               {
!                   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;
            }
! 
!           /*
!            * 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))
                {
!                   if (isupper(c))
!                       hexupper = TRUE;
!                   else
!                       hexupper = FALSE;
                }
+               /* 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;
!           /* do not add leading '-' for visual mode */
!           if (negative && !visual)
            {
!               *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);
  
!           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;
  #ifdef FEAT_RIGHTLEFT
!       ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
!       RLADDSUBFIX(ptr);
  #endif
+     }
      return OK;
  }
  
*** ../vim-7.4.753/src/proto/ops.pro    2014-12-17 14:36:10.363090985 +0100
--- src/proto/ops.pro   2015-06-25 13:38:28.429205490 +0200
***************
*** 43,49 ****
  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 read_viminfo_register __ARGS((vir_T *virp, int force));
  void write_viminfo_registers __ARGS((FILE *fp));
  void x11_export_final_selection __ARGS((void));
--- 43,49 ----
  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 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));
*** ../vim-7.4.753/src/testdir/Make_amiga.mak   2015-06-19 15:45:13.005889121 
+0200
--- src/testdir/Make_amiga.mak  2015-06-25 13:45:32.340769261 +0200
***************
*** 45,50 ****
--- 45,51 ----
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
***************
*** 192,197 ****
--- 193,199 ----
  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
*** ../vim-7.4.753/src/testdir/Make_dos.mak     2015-06-19 15:45:13.005889121 
+0200
--- src/testdir/Make_dos.mak    2015-06-25 13:38:28.429205490 +0200
***************
*** 44,49 ****
--- 44,50 ----
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
*** ../vim-7.4.753/src/testdir/Make_ming.mak    2015-06-19 15:45:13.005889121 
+0200
--- src/testdir/Make_ming.mak   2015-06-25 13:38:28.429205490 +0200
***************
*** 66,71 ****
--- 66,72 ----
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
*** ../vim-7.4.753/src/testdir/Make_os2.mak     2015-06-19 15:45:13.005889121 
+0200
--- src/testdir/Make_os2.mak    2015-06-25 13:38:28.429205490 +0200
***************
*** 46,51 ****
--- 46,52 ----
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
*** ../vim-7.4.753/src/testdir/Make_vms.mms     2015-06-19 15:45:13.005889121 
+0200
--- src/testdir/Make_vms.mms    2015-06-25 13:38:28.429205490 +0200
***************
*** 105,110 ****
--- 105,111 ----
         test_command_count.out \
         test_erasebackword.out \
         test_eval.out \
+        test_increment.out \
         test_insertcount.out \
         test_listchars.out \
         test_listlbr.out \
*** ../vim-7.4.753/src/testdir/Makefile 2015-06-19 15:45:13.005889121 +0200
--- src/testdir/Makefile        2015-06-25 13:38:28.429205490 +0200
***************
*** 42,47 ****
--- 42,48 ----
                test_command_count.out \
                test_erasebackword.out \
                test_eval.out \
+               test_increment.out \
                test_insertcount.out \
                test_listchars.out \
                test_listlbr.out \
*** ../vim-7.4.753/src/testdir/test_increment.in        2015-06-25 
13:56:12.046135151 +0200
--- src/testdir/test_increment.in       2015-06-25 13:38:28.429205490 +0200
***************
*** 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
+  :/^E1/+2put a
+ f-v$ :/^E1/+3put a
+ f1v$ :/^E1/+4put a
+ f-v$ :/^E1/+5put a
+ f1v$ 
+ 
+ :" Test 22
+ :/^S2=/+,/^E2=/-y a
+ :/^E2/+put a
+ V3k$ :.+put a
+ V3k$ 
+ 
+ :" Test 3
+ :/^S3=/+,/^E3=/-y a
+ :/^E3=/+put a
+ V6k2g :.+put a
+ V6k2g 
+ 
+ :" Test 4
+ :/^S4=/+,/^E4=/-y a
+ :/^E4=/+put a
+ vf- 
+ 
+ :" 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
+ 
*** ../vim-7.4.753/src/testdir/test_increment.ok        2015-06-25 
13:56:12.050135109 +0200
--- src/testdir/test_increment.ok       2015-06-25 13:38:28.429205490 +0200
***************
*** 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
+ 
*** ../vim-7.4.753/src/version.c        2015-06-25 13:30:41.206095684 +0200
--- src/version.c       2015-06-25 13:38:07.853420831 +0200
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     754,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
144. You eagerly await the update of the "Cool Site of the Day."

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui