From 792bd32ca2a74b1038fc19697d046daa49147fe9 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Aug 19 2015 15:14:34 +0000 Subject: - patchlevel 782 --- diff --git a/7.4.782 b/7.4.782 new file mode 100644 index 0000000..32adcba --- /dev/null +++ b/7.4.782 @@ -0,0 +1,1080 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.782 +Fcc: outbox +From: Bram Moolenaar +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])) + { + /* or or */ +! vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n); + key = (int)n; + } + else +--- 2845,2851 ---- + && VIM_ISDIGIT(last_dash[6])) + { + /* or or */ +! 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 ++ Text: ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ Expected: ++ 1) V 4j g, 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 ///