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