Karsten Hopp 792bd3
To: vim_dev@googlegroups.com
Karsten Hopp 792bd3
Subject: Patch 7.4.782
Karsten Hopp 792bd3
Fcc: outbox
Karsten Hopp 792bd3
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 792bd3
Mime-Version: 1.0
Karsten Hopp 792bd3
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 792bd3
Content-Transfer-Encoding: 8bit
Karsten Hopp 792bd3
------------
Karsten Hopp 792bd3
Karsten Hopp 792bd3
Patch 7.4.782
Karsten Hopp 792bd3
Problem:    Still a few problems with CTRL-A and CTRL-X in Visual mode.
Karsten Hopp 792bd3
Solution:   Fix the reported problems. (Christian Brabandt)
Karsten Hopp 792bd3
Files:      src/charset.c, src/eval.c, src/ex_cmds.c, src/ex_getln.c,
Karsten Hopp 792bd3
            src/misc2.c, src/normal.c, src/ops.c, src/option.c,
Karsten Hopp 792bd3
            src/proto/charset.pro, src/testdir/test_increment.in,
Karsten Hopp 792bd3
            src/testdir/test_increment.ok
Karsten Hopp 792bd3
Karsten Hopp 792bd3
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/charset.c	2015-01-14 19:35:10.963756142 +0100
Karsten Hopp 792bd3
--- src/charset.c	2015-07-17 12:48:43.296898014 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1835,1843 ****
Karsten Hopp 792bd3
   * octal number.
Karsten Hopp 792bd3
   * If "dohex" is non-zero recognize hex numbers, when > 1 always assume
Karsten Hopp 792bd3
   * hex number.
Karsten Hopp 792bd3
   */
Karsten Hopp 792bd3
      void
Karsten Hopp 792bd3
! vim_str2nr(start, hexp, len, dooct, dohex, nptr, unptr)
Karsten Hopp 792bd3
      char_u		*start;
Karsten Hopp 792bd3
      int			*hexp;	    /* return: type of number 0 = decimal, 'x'
Karsten Hopp 792bd3
  				       or 'X' is hex, '0' = octal */
Karsten Hopp 792bd3
--- 1835,1844 ----
Karsten Hopp 792bd3
   * octal number.
Karsten Hopp 792bd3
   * If "dohex" is non-zero recognize hex numbers, when > 1 always assume
Karsten Hopp 792bd3
   * hex number.
Karsten Hopp 792bd3
+  * If maxlen > 0, check at a maximum maxlen chars
Karsten Hopp 792bd3
   */
Karsten Hopp 792bd3
      void
Karsten Hopp 792bd3
! vim_str2nr(start, hexp, len, dooct, dohex, nptr, unptr, maxlen)
Karsten Hopp 792bd3
      char_u		*start;
Karsten Hopp 792bd3
      int			*hexp;	    /* return: type of number 0 = decimal, 'x'
Karsten Hopp 792bd3
  				       or 'X' is hex, '0' = octal */
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1846,1851 ****
Karsten Hopp 792bd3
--- 1847,1853 ----
Karsten Hopp 792bd3
      int			dohex;	    /* recognize hex number */
Karsten Hopp 792bd3
      long		*nptr;	    /* return: signed result */
Karsten Hopp 792bd3
      unsigned long	*unptr;	    /* return: unsigned result */
Karsten Hopp 792bd3
+     int			maxlen;     /* max length of string to check */
Karsten Hopp 792bd3
  {
Karsten Hopp 792bd3
      char_u	    *ptr = start;
Karsten Hopp 792bd3
      int		    hex = 0;		/* default is decimal */
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1860,1869 ****
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
      /* Recognize hex and octal. */
Karsten Hopp 792bd3
!     if (ptr[0] == '0' && ptr[1] != '8' && ptr[1] != '9')
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	hex = ptr[1];
Karsten Hopp 792bd3
! 	if (dohex && (hex == 'X' || hex == 'x') && vim_isxdigit(ptr[2]))
Karsten Hopp 792bd3
  	    ptr += 2;			/* hexadecimal */
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
--- 1862,1873 ----
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
      /* Recognize hex and octal. */
Karsten Hopp 792bd3
!     if (ptr[0] == '0' && ptr[1] != '8' && ptr[1] != '9'
Karsten Hopp 792bd3
! 					       && (maxlen == 0 || maxlen > 1))
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	hex = ptr[1];
Karsten Hopp 792bd3
! 	if (dohex && (hex == 'X' || hex == 'x') && vim_isxdigit(ptr[2])
Karsten Hopp 792bd3
! 					       && (maxlen == 0 || maxlen > 2))
Karsten Hopp 792bd3
  	    ptr += 2;			/* hexadecimal */
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1880,1885 ****
Karsten Hopp 792bd3
--- 1884,1891 ----
Karsten Hopp 792bd3
  		    }
Karsten Hopp 792bd3
  		    if (ptr[n] >= '0')
Karsten Hopp 792bd3
  			hex = '0';	/* assume octal */
Karsten Hopp 792bd3
+ 		    if (n == maxlen)
Karsten Hopp 792bd3
+ 			break;
Karsten Hopp 792bd3
  		}
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1888,1893 ****
Karsten Hopp 792bd3
--- 1894,1900 ----
Karsten Hopp 792bd3
      /*
Karsten Hopp 792bd3
       * Do the string-to-numeric conversion "manually" to avoid sscanf quirks.
Karsten Hopp 792bd3
       */
Karsten Hopp 792bd3
+     n = 1;
Karsten Hopp 792bd3
      if (hex == '0' || dooct > 1)
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	/* octal */
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1895,1900 ****
Karsten Hopp 792bd3
--- 1902,1909 ----
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    un = 8 * un + (unsigned long)(*ptr - '0');
Karsten Hopp 792bd3
  	    ++ptr;
Karsten Hopp 792bd3
+ 	    if (n++ == maxlen)
Karsten Hopp 792bd3
+ 		break;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
      else if (hex != 0 || dohex > 1)
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1904,1909 ****
Karsten Hopp 792bd3
--- 1913,1920 ----
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    un = 16 * un + (unsigned long)hex2nr(*ptr);
Karsten Hopp 792bd3
  	    ++ptr;
Karsten Hopp 792bd3
+ 	    if (n++ == maxlen)
Karsten Hopp 792bd3
+ 		break;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
      else
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1913,1918 ****
Karsten Hopp 792bd3
--- 1924,1931 ----
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    un = 10 * un + (unsigned long)(*ptr - '0');
Karsten Hopp 792bd3
  	    ++ptr;
Karsten Hopp 792bd3
+ 	    if (n++ == maxlen)
Karsten Hopp 792bd3
+ 		break;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/eval.c	2015-07-10 17:56:18.219777154 +0200
Karsten Hopp 792bd3
--- src/eval.c	2015-07-17 12:45:16.778860576 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 1615,1621 ****
Karsten Hopp 792bd3
  	    len = 0;
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
  	    /* Recognize a number argument, the others must be strings. */
Karsten Hopp 792bd3
! 	    vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
Karsten Hopp 792bd3
  	if (len != 0 && len == (int)STRLEN(argv[i]))
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    argvars[i].v_type = VAR_NUMBER;
Karsten Hopp 792bd3
--- 1615,1621 ----
Karsten Hopp 792bd3
  	    len = 0;
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
  	    /* Recognize a number argument, the others must be strings. */
Karsten Hopp 792bd3
! 	    vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL, 0);
Karsten Hopp 792bd3
  	if (len != 0 && len == (int)STRLEN(argv[i]))
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    argvars[i].v_type = VAR_NUMBER;
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5128,5134 ****
Karsten Hopp 792bd3
  		else
Karsten Hopp 792bd3
  #endif
Karsten Hopp 792bd3
  		{
Karsten Hopp 792bd3
! 		    vim_str2nr(*arg, NULL, &len, TRUE, TRUE, &n, NULL);
Karsten Hopp 792bd3
  		    *arg += len;
Karsten Hopp 792bd3
  		    if (evaluate)
Karsten Hopp 792bd3
  		    {
Karsten Hopp 792bd3
--- 5128,5134 ----
Karsten Hopp 792bd3
  		else
Karsten Hopp 792bd3
  #endif
Karsten Hopp 792bd3
  		{
Karsten Hopp 792bd3
! 		    vim_str2nr(*arg, NULL, &len, TRUE, TRUE, &n, NULL, 0);
Karsten Hopp 792bd3
  		    *arg += len;
Karsten Hopp 792bd3
  		    if (evaluate)
Karsten Hopp 792bd3
  		    {
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 18233,18239 ****
Karsten Hopp 792bd3
      p = skipwhite(get_tv_string(&argvars[0]));
Karsten Hopp 792bd3
      if (*p == '+')
Karsten Hopp 792bd3
  	p = skipwhite(p + 1);
Karsten Hopp 792bd3
!     vim_str2nr(p, NULL, NULL, base == 8 ? 2 : 0, base == 16 ? 2 : 0, &n, NULL);
Karsten Hopp 792bd3
      rettv->vval.v_number = n;
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
--- 18233,18239 ----
Karsten Hopp 792bd3
      p = skipwhite(get_tv_string(&argvars[0]));
Karsten Hopp 792bd3
      if (*p == '+')
Karsten Hopp 792bd3
  	p = skipwhite(p + 1);
Karsten Hopp 792bd3
!     vim_str2nr(p, NULL, NULL, base == 8 ? 2 : 0, base == 16 ? 2 : 0, &n, NULL, 0);
Karsten Hopp 792bd3
      rettv->vval.v_number = n;
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 21039,21045 ****
Karsten Hopp 792bd3
  	case VAR_STRING:
Karsten Hopp 792bd3
  	    if (varp->vval.v_string != NULL)
Karsten Hopp 792bd3
  		vim_str2nr(varp->vval.v_string, NULL, NULL,
Karsten Hopp 792bd3
! 							TRUE, TRUE, &n, NULL);
Karsten Hopp 792bd3
  	    return n;
Karsten Hopp 792bd3
  	case VAR_LIST:
Karsten Hopp 792bd3
  	    EMSG(_("E745: Using a List as a Number"));
Karsten Hopp 792bd3
--- 21039,21045 ----
Karsten Hopp 792bd3
  	case VAR_STRING:
Karsten Hopp 792bd3
  	    if (varp->vval.v_string != NULL)
Karsten Hopp 792bd3
  		vim_str2nr(varp->vval.v_string, NULL, NULL,
Karsten Hopp 792bd3
! 						    TRUE, TRUE, &n, NULL, 0);
Karsten Hopp 792bd3
  	    return n;
Karsten Hopp 792bd3
  	case VAR_LIST:
Karsten Hopp 792bd3
  	    EMSG(_("E745: Using a List as a Number"));
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/ex_cmds.c	2015-05-04 10:45:57.288481610 +0200
Karsten Hopp 792bd3
--- src/ex_cmds.c	2015-07-17 12:45:16.782860538 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 500,506 ****
Karsten Hopp 792bd3
  		nrs[lnum - eap->line1].start_col_nr = -MAXLNUM;
Karsten Hopp 792bd3
  	    else
Karsten Hopp 792bd3
  		vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
Karsten Hopp 792bd3
! 				  &nrs[lnum - eap->line1].start_col_nr, NULL);
Karsten Hopp 792bd3
  	    *s2 = c;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
--- 500,506 ----
Karsten Hopp 792bd3
  		nrs[lnum - eap->line1].start_col_nr = -MAXLNUM;
Karsten Hopp 792bd3
  	    else
Karsten Hopp 792bd3
  		vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
Karsten Hopp 792bd3
! 				  &nrs[lnum - eap->line1].start_col_nr, NULL, 0);
Karsten Hopp 792bd3
  	    *s2 = c;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/ex_getln.c	2015-06-25 18:20:30.437271806 +0200
Karsten Hopp 792bd3
--- src/ex_getln.c	2015-07-17 12:45:16.782860538 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5917,5923 ****
Karsten Hopp 792bd3
      *str = skipwhite(*str);
Karsten Hopp 792bd3
      if (**str == '-' || vim_isdigit(**str))  /* parse "from" part of range */
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
! 	vim_str2nr(*str, NULL, &len, FALSE, FALSE, &num, NULL);
Karsten Hopp 792bd3
  	*str += len;
Karsten Hopp 792bd3
  	*num1 = (int)num;
Karsten Hopp 792bd3
  	first = TRUE;
Karsten Hopp 792bd3
--- 5917,5923 ----
Karsten Hopp 792bd3
      *str = skipwhite(*str);
Karsten Hopp 792bd3
      if (**str == '-' || vim_isdigit(**str))  /* parse "from" part of range */
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
! 	vim_str2nr(*str, NULL, &len, FALSE, FALSE, &num, NULL, 0);
Karsten Hopp 792bd3
  	*str += len;
Karsten Hopp 792bd3
  	*num1 = (int)num;
Karsten Hopp 792bd3
  	first = TRUE;
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5926,5932 ****
Karsten Hopp 792bd3
      if (**str == ',')			/* parse "to" part of range */
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	*str = skipwhite(*str + 1);
Karsten Hopp 792bd3
! 	vim_str2nr(*str, NULL, &len, FALSE, FALSE, &num, NULL);
Karsten Hopp 792bd3
  	if (len > 0)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    *num2 = (int)num;
Karsten Hopp 792bd3
--- 5926,5932 ----
Karsten Hopp 792bd3
      if (**str == ',')			/* parse "to" part of range */
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	*str = skipwhite(*str + 1);
Karsten Hopp 792bd3
! 	vim_str2nr(*str, NULL, &len, FALSE, FALSE, &num, NULL, 0);
Karsten Hopp 792bd3
  	if (len > 0)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    *num2 = (int)num;
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/misc2.c	2015-04-21 14:02:28.489694393 +0200
Karsten Hopp 792bd3
--- src/misc2.c	2015-07-17 12:45:16.782860538 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 2813,2819 ****
Karsten Hopp 792bd3
  	    bp += 3;	/* skip t_xx, xx may be '-' or '>' */
Karsten Hopp 792bd3
  	else if (STRNICMP(bp, "char-", 5) == 0)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
! 	    vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL);
Karsten Hopp 792bd3
  	    bp += l + 5;
Karsten Hopp 792bd3
  	    break;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
--- 2813,2819 ----
Karsten Hopp 792bd3
  	    bp += 3;	/* skip t_xx, xx may be '-' or '>' */
Karsten Hopp 792bd3
  	else if (STRNICMP(bp, "char-", 5) == 0)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
! 	    vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL, 0);
Karsten Hopp 792bd3
  	    bp += l + 5;
Karsten Hopp 792bd3
  	    break;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 2845,2851 ****
Karsten Hopp 792bd3
  						 && VIM_ISDIGIT(last_dash[6]))
Karsten Hopp 792bd3
  	    {
Karsten Hopp 792bd3
  		/* <Char-123> or <Char-033> or <Char-0x33> */
Karsten Hopp 792bd3
! 		vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
Karsten Hopp 792bd3
  		key = (int)n;
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
  	    else
Karsten Hopp 792bd3
--- 2845,2851 ----
Karsten Hopp 792bd3
  						 && VIM_ISDIGIT(last_dash[6]))
Karsten Hopp 792bd3
  	    {
Karsten Hopp 792bd3
  		/* <Char-123> or <Char-033> or <Char-0x33> */
Karsten Hopp 792bd3
! 		vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n, 0);
Karsten Hopp 792bd3
  		key = (int)n;
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
  	    else
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/normal.c	2015-07-03 12:44:01.735748596 +0200
Karsten Hopp 792bd3
--- src/normal.c	2015-07-17 12:49:38.748371068 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 40,45 ****
Karsten Hopp 792bd3
--- 40,46 ----
Karsten Hopp 792bd3
  static void	find_end_of_word __ARGS((pos_T *));
Karsten Hopp 792bd3
  static int	get_mouse_class __ARGS((char_u *p));
Karsten Hopp 792bd3
  #endif
Karsten Hopp 792bd3
+ static void	prep_redo_visual __ARGS((cmdarg_T *cap));
Karsten Hopp 792bd3
  static void	prep_redo_cmd __ARGS((cmdarg_T *cap));
Karsten Hopp 792bd3
  static void	prep_redo __ARGS((int regname, long, int, int, int, int, int));
Karsten Hopp 792bd3
  static int	checkclearop __ARGS((oparg_T *oap));
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 3613,3618 ****
Karsten Hopp 792bd3
--- 3614,3656 ----
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  /*
Karsten Hopp 792bd3
+  * Add commands to reselect Visual mode into the redo buffer.
Karsten Hopp 792bd3
+  */
Karsten Hopp 792bd3
+     static void
Karsten Hopp 792bd3
+ prep_redo_visual(cap)
Karsten Hopp 792bd3
+     cmdarg_T *cap;
Karsten Hopp 792bd3
+ {
Karsten Hopp 792bd3
+     ResetRedobuff();
Karsten Hopp 792bd3
+     AppendCharToRedobuff(VIsual_mode);
Karsten Hopp 792bd3
+     if (VIsual_mode == 'V' && curbuf->b_visual.vi_end.lnum
Karsten Hopp 792bd3
+ 					    != curbuf->b_visual.vi_start.lnum)
Karsten Hopp 792bd3
+     {
Karsten Hopp 792bd3
+ 	AppendNumberToRedobuff(curbuf->b_visual.vi_end.lnum
Karsten Hopp 792bd3
+ 					    - curbuf->b_visual.vi_start.lnum);
Karsten Hopp 792bd3
+ 	AppendCharToRedobuff('j');
Karsten Hopp 792bd3
+     }
Karsten Hopp 792bd3
+     else if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V)
Karsten Hopp 792bd3
+     {
Karsten Hopp 792bd3
+ 	/* block visual mode or char visual mmode*/
Karsten Hopp 792bd3
+ 	if (curbuf->b_visual.vi_end.lnum != curbuf->b_visual.vi_start.lnum)
Karsten Hopp 792bd3
+ 	{
Karsten Hopp 792bd3
+ 	    AppendNumberToRedobuff(curbuf->b_visual.vi_end.lnum -
Karsten Hopp 792bd3
+ 		    curbuf->b_visual.vi_start.lnum);
Karsten Hopp 792bd3
+ 	    AppendCharToRedobuff('j');
Karsten Hopp 792bd3
+ 	}
Karsten Hopp 792bd3
+ 	if (curbuf->b_visual.vi_curswant == MAXCOL)
Karsten Hopp 792bd3
+ 	    AppendCharToRedobuff('$');
Karsten Hopp 792bd3
+ 	else if (curbuf->b_visual.vi_end.col > curbuf->b_visual.vi_start.col)
Karsten Hopp 792bd3
+ 	{
Karsten Hopp 792bd3
+ 	    AppendNumberToRedobuff(curbuf->b_visual.vi_end.col
Karsten Hopp 792bd3
+ 					 - curbuf->b_visual.vi_start.col - 1);
Karsten Hopp 792bd3
+ 	    AppendCharToRedobuff(' ');
Karsten Hopp 792bd3
+ 	}
Karsten Hopp 792bd3
+     }
Karsten Hopp 792bd3
+     AppendNumberToRedobuff(cap->count1);
Karsten Hopp 792bd3
+ }
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ /*
Karsten Hopp 792bd3
   * Prepare for redo of a normal command.
Karsten Hopp 792bd3
   */
Karsten Hopp 792bd3
      static void
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 4207,4222 ****
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	if (visual)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
! 	    ResetRedobuff();
Karsten Hopp 792bd3
! 	    AppendCharToRedobuff(VIsual_mode);
Karsten Hopp 792bd3
! 	    if (VIsual_mode == 'V')
Karsten Hopp 792bd3
! 	    {
Karsten Hopp 792bd3
! 		AppendNumberToRedobuff(cap->oap->line_count);
Karsten Hopp 792bd3
! 		AppendCharToRedobuff('j');
Karsten Hopp 792bd3
! 	    }
Karsten Hopp 792bd3
! 	    AppendNumberToRedobuff(cap->count1);
Karsten Hopp 792bd3
! 	    if (cap->nchar != NUL)
Karsten Hopp 792bd3
! 		AppendCharToRedobuff(cap->nchar);
Karsten Hopp 792bd3
  	    AppendCharToRedobuff(cap->cmdchar);
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
--- 4245,4253 ----
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	if (visual)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
! 	    prep_redo_visual(cap);
Karsten Hopp 792bd3
! 	    if (cap->arg)
Karsten Hopp 792bd3
! 		AppendCharToRedobuff('g');
Karsten Hopp 792bd3
  	    AppendCharToRedobuff(cap->cmdchar);
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 4227,4233 ****
Karsten Hopp 792bd3
      if (visual)
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	VIsual_active = FALSE;
Karsten Hopp 792bd3
! 	redraw_later(CLEAR);
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
--- 4258,4265 ----
Karsten Hopp 792bd3
      if (visual)
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	VIsual_active = FALSE;
Karsten Hopp 792bd3
! 	redo_VIsual_busy = FALSE;
Karsten Hopp 792bd3
! 	redraw_later(INVERTED);
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/ops.c	2015-07-12 16:21:17.791908408 +0200
Karsten Hopp 792bd3
--- src/ops.c	2015-07-17 12:58:11.083502711 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5405,5410 ****
Karsten Hopp 792bd3
--- 5405,5412 ----
Karsten Hopp 792bd3
      int		lnume = curwin->w_cursor.lnum;
Karsten Hopp 792bd3
      int		startcol = 0;
Karsten Hopp 792bd3
      int		did_change = FALSE;
Karsten Hopp 792bd3
+     pos_T	t = curwin->w_cursor;
Karsten Hopp 792bd3
+     int		maxlen = 0;
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
      dohex = (vim_strchr(curbuf->b_p_nf, 'x') != NULL);	/* "heX" */
Karsten Hopp 792bd3
      dooct = (vim_strchr(curbuf->b_p_nf, 'o') != NULL);	/* "Octal" */
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5418,5438 ****
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	if (lt(curwin->w_cursor, VIsual))
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
- 	    pos_T t;
Karsten Hopp 792bd3
- 	    t = curwin->w_cursor;
Karsten Hopp 792bd3
  	    curwin->w_cursor = VIsual;
Karsten Hopp 792bd3
  	    VIsual = t;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
- 	if (VIsual_mode == 'V')
Karsten Hopp 792bd3
- 	    VIsual.col = 0;
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	ptr = ml_get(VIsual.lnum);
Karsten Hopp 792bd3
  	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	/* store visual area for 'gv' */
Karsten Hopp 792bd3
  	curbuf->b_visual.vi_start = VIsual;
Karsten Hopp 792bd3
  	curbuf->b_visual.vi_end = curwin->w_cursor;
Karsten Hopp 792bd3
  	curbuf->b_visual.vi_mode = VIsual_mode;
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	if (VIsual_mode != 'v')
Karsten Hopp 792bd3
  	    startcol = VIsual.col < curwin->w_cursor.col ? VIsual.col
Karsten Hopp 792bd3
--- 5420,5449 ----
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	if (lt(curwin->w_cursor, VIsual))
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    curwin->w_cursor = VIsual;
Karsten Hopp 792bd3
  	    VIsual = t;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	ptr = ml_get(VIsual.lnum);
Karsten Hopp 792bd3
  	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
+ 	if (VIsual_mode == 'V')
Karsten Hopp 792bd3
+ 	{
Karsten Hopp 792bd3
+ 	    VIsual.col = 0;
Karsten Hopp 792bd3
+ 	    curwin->w_cursor.col = STRLEN(ptr);
Karsten Hopp 792bd3
+ 	}
Karsten Hopp 792bd3
+ 	else if (VIsual_mode == Ctrl_V &&
Karsten Hopp 792bd3
+ 		VIsual.col > curwin->w_cursor.col)
Karsten Hopp 792bd3
+ 	{
Karsten Hopp 792bd3
+ 	    t = VIsual;
Karsten Hopp 792bd3
+ 	    VIsual.col = curwin->w_cursor.col;
Karsten Hopp 792bd3
+ 	    curwin->w_cursor.col = t.col;
Karsten Hopp 792bd3
+ 	}
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	/* store visual area for 'gv' */
Karsten Hopp 792bd3
  	curbuf->b_visual.vi_start = VIsual;
Karsten Hopp 792bd3
  	curbuf->b_visual.vi_end = curwin->w_cursor;
Karsten Hopp 792bd3
  	curbuf->b_visual.vi_mode = VIsual_mode;
Karsten Hopp 792bd3
+ 	curbuf->b_visual.vi_curswant = curwin->w_curswant;
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	if (VIsual_mode != 'v')
Karsten Hopp 792bd3
  	    startcol = VIsual.col < curwin->w_cursor.col ? VIsual.col
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5482,5517 ****
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
      for (i = lnum; i <= lnume; i++)
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
  	curwin->w_cursor.lnum = i;
Karsten Hopp 792bd3
  	ptr = ml_get_curline();
Karsten Hopp 792bd3
  	if ((int)STRLEN(ptr) <= col)
Karsten Hopp 792bd3
  	    /* try again on next line */
Karsten Hopp 792bd3
  	    continue;
Karsten Hopp 792bd3
  	if (visual && ptr[col] == '-')
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    negative = TRUE;
Karsten Hopp 792bd3
  	    was_positive = FALSE;
Karsten Hopp 792bd3
  	    col++;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
- 	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
  	/*
Karsten Hopp 792bd3
  	 * If a number was found, and saving for undo works, replace the number.
Karsten Hopp 792bd3
  	 */
Karsten Hopp 792bd3
  	firstdigit = ptr[col];
Karsten Hopp 792bd3
- 	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
  	if ((!VIM_ISDIGIT(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit)))
Karsten Hopp 792bd3
  		|| u_save_cursor() != OK)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    if (lnum < lnume)
Karsten Hopp 792bd3
  		/* Try again on next line */
Karsten Hopp 792bd3
  		continue;
Karsten Hopp 792bd3
  	    beep_flush();
Karsten Hopp 792bd3
  	    return FAIL;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
- 	ptr = ml_get_curline();
Karsten Hopp 792bd3
- 	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
- 
Karsten Hopp 792bd3
  	if (doalp && ASCII_ISALPHA(firstdigit))
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    /* decrement or increment alphabetic character */
Karsten Hopp 792bd3
--- 5493,5552 ----
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
      for (i = lnum; i <= lnume; i++)
Karsten Hopp 792bd3
      {
Karsten Hopp 792bd3
+ 	t = curwin->w_cursor;
Karsten Hopp 792bd3
  	curwin->w_cursor.lnum = i;
Karsten Hopp 792bd3
  	ptr = ml_get_curline();
Karsten Hopp 792bd3
+ 	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
  	if ((int)STRLEN(ptr) <= col)
Karsten Hopp 792bd3
  	    /* try again on next line */
Karsten Hopp 792bd3
  	    continue;
Karsten Hopp 792bd3
+ 	if (visual)
Karsten Hopp 792bd3
+ 	{
Karsten Hopp 792bd3
+ 	    if (doalp) /* search for ascii chars */
Karsten Hopp 792bd3
+ 	    {
Karsten Hopp 792bd3
+ 		while (!ASCII_ISALPHA(ptr[col]) && ptr[col])
Karsten Hopp 792bd3
+ 		    col++;
Karsten Hopp 792bd3
+ 	    }
Karsten Hopp 792bd3
+ 	    /* skip to first digit, but allow for leading '-' */
Karsten Hopp 792bd3
+ 	    else if (dohex)
Karsten Hopp 792bd3
+ 	    {
Karsten Hopp 792bd3
+ 		while (!(vim_isxdigit(ptr[col]) || (ptr[col] == '-'
Karsten Hopp 792bd3
+ 				    && vim_isxdigit(ptr[col+1]))) && ptr[col])
Karsten Hopp 792bd3
+ 		    col++;
Karsten Hopp 792bd3
+ 	    }
Karsten Hopp 792bd3
+ 	    else /* decimal */
Karsten Hopp 792bd3
+ 	    {
Karsten Hopp 792bd3
+ 		while (!(vim_isdigit(ptr[col]) || (ptr[col] == '-'
Karsten Hopp 792bd3
+ 				     && vim_isdigit(ptr[col+1]))) && ptr[col])
Karsten Hopp 792bd3
+ 		    col++;
Karsten Hopp 792bd3
+ 	    }
Karsten Hopp 792bd3
+ 	}
Karsten Hopp 792bd3
  	if (visual && ptr[col] == '-')
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    negative = TRUE;
Karsten Hopp 792bd3
  	    was_positive = FALSE;
Karsten Hopp 792bd3
  	    col++;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  	/*
Karsten Hopp 792bd3
  	 * If a number was found, and saving for undo works, replace the number.
Karsten Hopp 792bd3
  	 */
Karsten Hopp 792bd3
  	firstdigit = ptr[col];
Karsten Hopp 792bd3
  	if ((!VIM_ISDIGIT(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit)))
Karsten Hopp 792bd3
  		|| u_save_cursor() != OK)
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    if (lnum < lnume)
Karsten Hopp 792bd3
+ 	    {
Karsten Hopp 792bd3
+ 		if (visual && VIsual_mode != Ctrl_V)
Karsten Hopp 792bd3
+ 		    col = 0;
Karsten Hopp 792bd3
+ 		else
Karsten Hopp 792bd3
+ 		    col = startcol;
Karsten Hopp 792bd3
  		/* Try again on next line */
Karsten Hopp 792bd3
  		continue;
Karsten Hopp 792bd3
+ 	    }
Karsten Hopp 792bd3
  	    beep_flush();
Karsten Hopp 792bd3
  	    return FAIL;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	if (doalp && ASCII_ISALPHA(firstdigit))
Karsten Hopp 792bd3
  	{
Karsten Hopp 792bd3
  	    /* decrement or increment alphabetic character */
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5560,5568 ****
Karsten Hopp 792bd3
  		--col;
Karsten Hopp 792bd3
  		negative = TRUE;
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
- 
Karsten Hopp 792bd3
  	    /* get the number value (unsigned) */
Karsten Hopp 792bd3
! 	    vim_str2nr(ptr + col, &hex, &length, dooct, dohex, NULL, &n);
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	    /* ignore leading '-' for hex and octal numbers */
Karsten Hopp 792bd3
  	    if (hex && negative)
Karsten Hopp 792bd3
--- 5595,5621 ----
Karsten Hopp 792bd3
  		--col;
Karsten Hopp 792bd3
  		negative = TRUE;
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
  	    /* get the number value (unsigned) */
Karsten Hopp 792bd3
! 	    if (visual && VIsual_mode != 'V')
Karsten Hopp 792bd3
! 	    {
Karsten Hopp 792bd3
! 		if (VIsual_mode == 'v')
Karsten Hopp 792bd3
! 		{
Karsten Hopp 792bd3
! 		    if (i == lnum)
Karsten Hopp 792bd3
! 			maxlen = (lnum == lnume
Karsten Hopp 792bd3
! 					    ? curwin->w_cursor.col - col + 1
Karsten Hopp 792bd3
! 					    : (int)STRLEN(ptr) - col);
Karsten Hopp 792bd3
! 		    else
Karsten Hopp 792bd3
! 			maxlen = (i == lnume ? curwin->w_cursor.col - col  + 1
Karsten Hopp 792bd3
! 					     : (int)STRLEN(ptr) - col);
Karsten Hopp 792bd3
! 		}
Karsten Hopp 792bd3
! 		else if (VIsual_mode == Ctrl_V)
Karsten Hopp 792bd3
! 		    maxlen = (curbuf->b_visual.vi_curswant == MAXCOL
Karsten Hopp 792bd3
! 					?  (int)STRLEN(ptr) - col
Karsten Hopp 792bd3
! 					: curwin->w_cursor.col - col + 1);
Karsten Hopp 792bd3
! 	    }
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 	    vim_str2nr(ptr + col, &hex, &length, dooct, dohex, NULL, &n,
Karsten Hopp 792bd3
! 								      maxlen);
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	    /* ignore leading '-' for hex and octal numbers */
Karsten Hopp 792bd3
  	    if (hex && negative)
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5609,5615 ****
Karsten Hopp 792bd3
  		    negative = FALSE;
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
! 	    if (visual && !was_positive && !negative)
Karsten Hopp 792bd3
  	    {
Karsten Hopp 792bd3
  		/* need to remove the '-' */
Karsten Hopp 792bd3
  		col--;
Karsten Hopp 792bd3
--- 5662,5668 ----
Karsten Hopp 792bd3
  		    negative = FALSE;
Karsten Hopp 792bd3
  	    }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
! 	    if (visual && !was_positive && !negative && col > 0)
Karsten Hopp 792bd3
  	    {
Karsten Hopp 792bd3
  		/* need to remove the '-' */
Karsten Hopp 792bd3
  		col--;
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5695,5700 ****
Karsten Hopp 792bd3
--- 5748,5757 ----
Karsten Hopp 792bd3
  	    STRCAT(buf1, buf2);
Karsten Hopp 792bd3
  	    ins_str(buf1);		/* insert the new number */
Karsten Hopp 792bd3
  	    vim_free(buf1);
Karsten Hopp 792bd3
+ 	    if (lnum < lnume)
Karsten Hopp 792bd3
+ 		curwin->w_cursor.col = t.col;
Karsten Hopp 792bd3
+ 	    else if (did_change && curwin->w_cursor.col)
Karsten Hopp 792bd3
+ 		--curwin->w_cursor.col;
Karsten Hopp 792bd3
  	}
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  	if (g_cmd)
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5705,5710 ****
Karsten Hopp 792bd3
--- 5762,5768 ----
Karsten Hopp 792bd3
  	/* reset */
Karsten Hopp 792bd3
  	subtract = FALSE;
Karsten Hopp 792bd3
  	negative = FALSE;
Karsten Hopp 792bd3
+ 	was_positive = TRUE;
Karsten Hopp 792bd3
  	if (visual && VIsual_mode == Ctrl_V)
Karsten Hopp 792bd3
  	    col = startcol;
Karsten Hopp 792bd3
  	else
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 5716,5723 ****
Karsten Hopp 792bd3
  	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
  #endif
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
!     if (did_change && curwin->w_cursor.col > 0)
Karsten Hopp 792bd3
! 	--curwin->w_cursor.col;
Karsten Hopp 792bd3
      return OK;
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
--- 5774,5782 ----
Karsten Hopp 792bd3
  	RLADDSUBFIX(ptr);
Karsten Hopp 792bd3
  #endif
Karsten Hopp 792bd3
      }
Karsten Hopp 792bd3
!     if (visual)
Karsten Hopp 792bd3
! 	/* cursor at the top of the selection */
Karsten Hopp 792bd3
! 	curwin->w_cursor = VIsual;
Karsten Hopp 792bd3
      return OK;
Karsten Hopp 792bd3
  }
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/option.c	2015-07-10 18:18:35.579206260 +0200
Karsten Hopp 792bd3
--- src/option.c	2015-07-17 12:45:16.786860499 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 4561,4567 ****
Karsten Hopp 792bd3
  			{
Karsten Hopp 792bd3
  			    /* Allow negative (for 'undolevels'), octal and
Karsten Hopp 792bd3
  			     * hex numbers. */
Karsten Hopp 792bd3
! 			    vim_str2nr(arg, NULL, &i, TRUE, TRUE, &value, NULL);
Karsten Hopp 792bd3
  			    if (arg[i] != NUL && !vim_iswhite(arg[i]))
Karsten Hopp 792bd3
  			    {
Karsten Hopp 792bd3
  				errmsg = e_invarg;
Karsten Hopp 792bd3
--- 4561,4567 ----
Karsten Hopp 792bd3
  			{
Karsten Hopp 792bd3
  			    /* Allow negative (for 'undolevels'), octal and
Karsten Hopp 792bd3
  			     * hex numbers. */
Karsten Hopp 792bd3
! 			    vim_str2nr(arg, NULL, &i, TRUE, TRUE, &value, NULL, 0);
Karsten Hopp 792bd3
  			    if (arg[i] != NUL && !vim_iswhite(arg[i]))
Karsten Hopp 792bd3
  			    {
Karsten Hopp 792bd3
  				errmsg = e_invarg;
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/proto/charset.pro	2014-06-25 14:39:35.110348584 +0200
Karsten Hopp 792bd3
--- src/proto/charset.pro	2015-07-17 12:45:22.098810018 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 49,55 ****
Karsten Hopp 792bd3
  char_u *skiptowhite_esc __ARGS((char_u *p));
Karsten Hopp 792bd3
  long getdigits __ARGS((char_u **pp));
Karsten Hopp 792bd3
  int vim_isblankline __ARGS((char_u *lbuf));
Karsten Hopp 792bd3
! void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
Karsten Hopp 792bd3
  int hex2nr __ARGS((int c));
Karsten Hopp 792bd3
  int hexhex2nr __ARGS((char_u *p));
Karsten Hopp 792bd3
  int rem_backslash __ARGS((char_u *str));
Karsten Hopp 792bd3
--- 49,55 ----
Karsten Hopp 792bd3
  char_u *skiptowhite_esc __ARGS((char_u *p));
Karsten Hopp 792bd3
  long getdigits __ARGS((char_u **pp));
Karsten Hopp 792bd3
  int vim_isblankline __ARGS((char_u *lbuf));
Karsten Hopp 792bd3
! void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr, int strlen));
Karsten Hopp 792bd3
  int hex2nr __ARGS((int c));
Karsten Hopp 792bd3
  int hexhex2nr __ARGS((char_u *p));
Karsten Hopp 792bd3
  int rem_backslash __ARGS((char_u *str));
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/testdir/test_increment.in	2015-07-03 12:44:01.735748596 +0200
Karsten Hopp 792bd3
--- src/testdir/test_increment.in	2015-07-17 12:45:27.426759384 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 185,190 ****
Karsten Hopp 792bd3
--- 185,267 ----
Karsten Hopp 792bd3
      1 0
Karsten Hopp 792bd3
      1 0
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
+ 13) visually selected part of columns
Karsten Hopp 792bd3
+ Text:
Karsten Hopp 792bd3
+ max: 100px
Karsten Hopp 792bd3
+ max: 200px
Karsten Hopp 792bd3
+ max: 300px
Karsten Hopp 792bd3
+ max: 400px
Karsten Hopp 792bd3
+     Expected:
Karsten Hopp 792bd3
+     1) 'v' on first two numbers Ctrl-A
Karsten Hopp 792bd3
+     max: 110px
Karsten Hopp 792bd3
+     max: 220px
Karsten Hopp 792bd3
+     max: 330px
Karsten Hopp 792bd3
+     max: 400px
Karsten Hopp 792bd3
+     2) 'v' on first two numbers Ctrl-X
Karsten Hopp 792bd3
+     max: 90px
Karsten Hopp 792bd3
+     max: 190px
Karsten Hopp 792bd3
+     max: 290px
Karsten Hopp 792bd3
+     max: 400px
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 14) redo in block mode
Karsten Hopp 792bd3
+ Text:
Karsten Hopp 792bd3
+ 1 1
Karsten Hopp 792bd3
+ 1 1
Karsten Hopp 792bd3
+     Expected:
Karsten Hopp 792bd3
+     1) Ctrl-a on first column, redo on second column
Karsten Hopp 792bd3
+     2 2
Karsten Hopp 792bd3
+     2 2
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 15) block select single numbers
Karsten Hopp 792bd3
+ Text:
Karsten Hopp 792bd3
+ 101
Karsten Hopp 792bd3
+     Expected:
Karsten Hopp 792bd3
+     1) Ctrl-a on visually selected zero
Karsten Hopp 792bd3
+     111
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 16) increment right aligned numbers
Karsten Hopp 792bd3
+ Text:
Karsten Hopp 792bd3
+    1
Karsten Hopp 792bd3
+   19
Karsten Hopp 792bd3
+  119
Karsten Hopp 792bd3
+     Expected:
Karsten Hopp 792bd3
+     1) Ctrl-a on line selected region
Karsten Hopp 792bd3
+        2
Karsten Hopp 792bd3
+       20
Karsten Hopp 792bd3
+      120
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 17) block-wise increment and redo
Karsten Hopp 792bd3
+ Text:
Karsten Hopp 792bd3
+   100
Karsten Hopp 792bd3
+   1
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+   100
Karsten Hopp 792bd3
+   1
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+   Expected:
Karsten Hopp 792bd3
+   1) Ctrl-V j $ on first block, afterwards '.' on second
Karsten Hopp 792bd3
+   101
Karsten Hopp 792bd3
+   2
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+   101
Karsten Hopp 792bd3
+   2
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 18) repeat of g<Ctrl-a>
Karsten Hopp 792bd3
+ Text:
Karsten Hopp 792bd3
+   0
Karsten Hopp 792bd3
+   0
Karsten Hopp 792bd3
+   0
Karsten Hopp 792bd3
+   0
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+   Expected:
Karsten Hopp 792bd3
+   1) V 4j g<ctrl-a>, repeat twice afterwards with .
Karsten Hopp 792bd3
+   3
Karsten Hopp 792bd3
+   6
Karsten Hopp 792bd3
+   9
Karsten Hopp 792bd3
+   12
Karsten Hopp 792bd3
+   
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
  STARTTEST
Karsten Hopp 792bd3
  :so small.vim
Karsten Hopp 792bd3
  :"
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 200,215 ****
Karsten Hopp 792bd3
  f-v$?:/^E1=/+5put a
Karsten Hopp 792bd3
  f1v$?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
! :" Test 22
Karsten Hopp 792bd3
  :/^S2=/+,/^E2=/-y a
Karsten Hopp 792bd3
  :/^E2=/+put a
Karsten Hopp 792bd3
! V3k$?:.+put a
Karsten Hopp 792bd3
  V3k$?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 3
Karsten Hopp 792bd3
  :/^S3=/+,/^E3=/-y a
Karsten Hopp 792bd3
  :/^E3=/+put a
Karsten Hopp 792bd3
! V6k2g?:.+put a
Karsten Hopp 792bd3
  V6k2g?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 4
Karsten Hopp 792bd3
--- 277,292 ----
Karsten Hopp 792bd3
  f-v$?:/^E1=/+5put a
Karsten Hopp 792bd3
  f1v$?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
! :" Test 2
Karsten Hopp 792bd3
  :/^S2=/+,/^E2=/-y a
Karsten Hopp 792bd3
  :/^E2=/+put a
Karsten Hopp 792bd3
! V3k$?3j:.+put a
Karsten Hopp 792bd3
  V3k$?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 3
Karsten Hopp 792bd3
  :/^S3=/+,/^E3=/-y a
Karsten Hopp 792bd3
  :/^E3=/+put a
Karsten Hopp 792bd3
! V6k2g?6j:.+put a
Karsten Hopp 792bd3
  V6k2g?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 4
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 229,249 ****
Karsten Hopp 792bd3
  v3kg?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 7
Karsten Hopp 792bd3
  :/^S7=/+,/^E7=/-y a
Karsten Hopp 792bd3
  :/^E7=/+put a
Karsten Hopp 792bd3
! V4k?:.+put a
Karsten Hopp 792bd3
  V4k?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 8
Karsten Hopp 792bd3
  :/^S8=/+,/^E8=/-y a
Karsten Hopp 792bd3
  :/^E8=/+put a
Karsten Hopp 792bd3
! k?j$?:.+put a
Karsten Hopp 792bd3
  k$?+?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 9
Karsten Hopp 792bd3
  :/^S9=/+,/^E9=/-y a
Karsten Hopp 792bd3
  :/^E9=/+put a
Karsten Hopp 792bd3
! 5kVj2?2j.
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 10
Karsten Hopp 792bd3
  :/^S10=/+,/^E10=/-y a
Karsten Hopp 792bd3
--- 306,327 ----
Karsten Hopp 792bd3
  v3kg?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 7
Karsten Hopp 792bd3
+ :set nrformats&vim
Karsten Hopp 792bd3
  :/^S7=/+,/^E7=/-y a
Karsten Hopp 792bd3
  :/^E7=/+put a
Karsten Hopp 792bd3
! V4k?4j:.+put a
Karsten Hopp 792bd3
  V4k?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 8
Karsten Hopp 792bd3
  :/^S8=/+,/^E8=/-y a
Karsten Hopp 792bd3
  :/^E8=/+put a
Karsten Hopp 792bd3
! k?j$?j:.+put a
Karsten Hopp 792bd3
  k$?+?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 9
Karsten Hopp 792bd3
  :/^S9=/+,/^E9=/-y a
Karsten Hopp 792bd3
  :/^E9=/+put a
Karsten Hopp 792bd3
! 5kVj2?3j.
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  :" Test 10
Karsten Hopp 792bd3
  :/^S10=/+,/^E10=/-y a
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 260,265 ****
Karsten Hopp 792bd3
--- 338,374 ----
Karsten Hopp 792bd3
  :/^E12=/+put a
Karsten Hopp 792bd3
  2k$v++?
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
+ :" Test 13
Karsten Hopp 792bd3
+ :/^S13=/+,/^E13=/-y a
Karsten Hopp 792bd3
+ :/^E13=/+put a
Karsten Hopp 792bd3
+ 3kf1?l2j?3j:.+put a
Karsten Hopp 792bd3
+ 3kf1?l2j?
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ :" Test 14
Karsten Hopp 792bd3
+ :/^S14=/+,/^E14=/-y a
Karsten Hopp 792bd3
+ :/^E14=/+put a
Karsten Hopp 792bd3
+ ?k?w.
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ :" Test 15
Karsten Hopp 792bd3
+ :/^S15=/+,/^E15=/-y a
Karsten Hopp 792bd3
+ :/^E15=/+put a
Karsten Hopp 792bd3
+ lv?
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ :" Test 16
Karsten Hopp 792bd3
+ :/^S16=/+,/^E16=/-y a
Karsten Hopp 792bd3
+ :/^E16=/+put a
Karsten Hopp 792bd3
+ V3k?
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ :" Test 17
Karsten Hopp 792bd3
+ :/^S17=/+,/^E17=/-y a
Karsten Hopp 792bd3
+ :/^E17=/+put a
Karsten Hopp 792bd3
+ 4k?j$?2j.
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ :" Test 18
Karsten Hopp 792bd3
+ :/^S18=/+,/^E18=/-y a
Karsten Hopp 792bd3
+ :/^E18=/+put a
Karsten Hopp 792bd3
+ V3kg?..
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
  :" Save the report
Karsten Hopp 792bd3
  :/^# Test 1/,$w! test.out
Karsten Hopp 792bd3
  :qa!
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 384,389 ****
Karsten Hopp 792bd3
--- 493,549 ----
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
+ # Test 13
Karsten Hopp 792bd3
+ S13====
Karsten Hopp 792bd3
+ max: 100px
Karsten Hopp 792bd3
+ max: 200px
Karsten Hopp 792bd3
+ max: 300px
Karsten Hopp 792bd3
+ max: 400px
Karsten Hopp 792bd3
+ E13====
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ # Test 14
Karsten Hopp 792bd3
+ S14====
Karsten Hopp 792bd3
+ 1 1
Karsten Hopp 792bd3
+ 1 1
Karsten Hopp 792bd3
+ E14====
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ # Test 15
Karsten Hopp 792bd3
+ S15====
Karsten Hopp 792bd3
+ 101
Karsten Hopp 792bd3
+ E15====
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ # Test 16
Karsten Hopp 792bd3
+ S16====
Karsten Hopp 792bd3
+    1
Karsten Hopp 792bd3
+   19
Karsten Hopp 792bd3
+  119
Karsten Hopp 792bd3
+ E16====
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ # Test 17
Karsten Hopp 792bd3
+ S17====
Karsten Hopp 792bd3
+  100
Karsten Hopp 792bd3
+  1
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+  100
Karsten Hopp 792bd3
+  1
Karsten Hopp 792bd3
+ E17====
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ 
Karsten Hopp 792bd3
+ # Test 18
Karsten Hopp 792bd3
+ S18====
Karsten Hopp 792bd3
+ 0
Karsten Hopp 792bd3
+ 0
Karsten Hopp 792bd3
+ 0
Karsten Hopp 792bd3
+ 0
Karsten Hopp 792bd3
+ E18====
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/testdir/test_increment.ok	2015-07-03 12:44:01.739748554 +0200
Karsten Hopp 792bd3
--- src/testdir/test_increment.ok	2015-07-17 12:45:34.094696017 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 184,190 ****
Karsten Hopp 792bd3
  1 0
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
--- 184,264 ----
Karsten Hopp 792bd3
  1 0
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
! # Test 13
Karsten Hopp 792bd3
! S13====
Karsten Hopp 792bd3
! max: 100px
Karsten Hopp 792bd3
! max: 200px
Karsten Hopp 792bd3
! max: 300px
Karsten Hopp 792bd3
! max: 400px
Karsten Hopp 792bd3
! E13====
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! max: 110px
Karsten Hopp 792bd3
! max: 210px
Karsten Hopp 792bd3
! max: 310px
Karsten Hopp 792bd3
! max: 400px
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! max: 90px
Karsten Hopp 792bd3
! max: 190px
Karsten Hopp 792bd3
! max: 290px
Karsten Hopp 792bd3
! max: 400px
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! # Test 14
Karsten Hopp 792bd3
! S14====
Karsten Hopp 792bd3
! 1 1
Karsten Hopp 792bd3
! 1 1
Karsten Hopp 792bd3
! E14====
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 2 2
Karsten Hopp 792bd3
! 2 2
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! # Test 15
Karsten Hopp 792bd3
! S15====
Karsten Hopp 792bd3
! 101
Karsten Hopp 792bd3
! E15====
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 111
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! # Test 16
Karsten Hopp 792bd3
! S16====
Karsten Hopp 792bd3
!    1
Karsten Hopp 792bd3
!   19
Karsten Hopp 792bd3
!  119
Karsten Hopp 792bd3
! E16====
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
!    2
Karsten Hopp 792bd3
!   20
Karsten Hopp 792bd3
!  120
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! # Test 17
Karsten Hopp 792bd3
! S17====
Karsten Hopp 792bd3
!  100
Karsten Hopp 792bd3
!  1
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
!  100
Karsten Hopp 792bd3
!  1
Karsten Hopp 792bd3
! E17====
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
!  101
Karsten Hopp 792bd3
!  2
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
!  101
Karsten Hopp 792bd3
!  1
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! # Test 18
Karsten Hopp 792bd3
! S18====
Karsten Hopp 792bd3
! 0
Karsten Hopp 792bd3
! 0
Karsten Hopp 792bd3
! 0
Karsten Hopp 792bd3
! 0
Karsten Hopp 792bd3
! E18====
Karsten Hopp 792bd3
! 
Karsten Hopp 792bd3
! 3
Karsten Hopp 792bd3
! 6
Karsten Hopp 792bd3
! 9
Karsten Hopp 792bd3
! 12
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
  
Karsten Hopp 792bd3
*** ../vim-7.4.781/src/version.c	2015-07-12 17:52:50.728095726 +0200
Karsten Hopp 792bd3
--- src/version.c	2015-07-17 12:46:37.590092608 +0200
Karsten Hopp 792bd3
***************
Karsten Hopp 792bd3
*** 743,744 ****
Karsten Hopp 792bd3
--- 743,746 ----
Karsten Hopp 792bd3
  {   /* Add new patch number below this line */
Karsten Hopp 792bd3
+ /**/
Karsten Hopp 792bd3
+     782,
Karsten Hopp 792bd3
  /**/
Karsten Hopp 792bd3
Karsten Hopp 792bd3
-- 
Karsten Hopp 792bd3
hundred-and-one symptoms of being an internet addict:
Karsten Hopp 792bd3
226. You sit down at the computer right after dinner and your spouse
Karsten Hopp 792bd3
     says "See you in the morning."
Karsten Hopp 792bd3
Karsten Hopp 792bd3
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 792bd3
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 792bd3
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 792bd3
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///