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