vim/7.4.782
2015-08-19 17:14:34 +02:00

1081 lines
23 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 ///