From: Bram Moolenaar Date: Sat, 4 Jun 2016 18:14:07 +0000 (+0200) Subject: patch 7.4.1896 X-Git-Tag: v7.4.1896 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82faa259cc42379f2a17d598a2a39d14048685b0;p=thirdparty%2Fvim.git patch 7.4.1896 Problem: Invoking mark_adjust() when adding a new line below the last line is pointless. Solution: Skip calling mark_adjust() when appending below the last line. --- diff --git a/src/misc1.c b/src/misc1.c index 9fa85781aa..7969968938 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -1425,8 +1425,11 @@ open_line( == FAIL) goto theend; /* Postpone calling changed_lines(), because it would mess up folding - * with markers. */ - mark_adjust(curwin->w_cursor.lnum + 1, (linenr_T)MAXLNUM, 1L, 0L); + * with markers. + * Skip mark_adjust when adding a line after the last one, there can't + * be marks there. */ + if (curwin->w_cursor.lnum + 1 < curbuf->b_ml.ml_line_count) + mark_adjust(curwin->w_cursor.lnum + 1, (linenr_T)MAXLNUM, 1L, 0L); did_append = TRUE; } #ifdef FEAT_VREPLACE @@ -2861,7 +2864,10 @@ appended_lines(linenr_T lnum, long count) void appended_lines_mark(linenr_T lnum, long count) { - mark_adjust(lnum + 1, (linenr_T)MAXLNUM, count, 0L); + /* Skip mark_adjust when adding a line after the last one, there can't + * be marks there. */ + if (lnum + count < curbuf->b_ml.ml_line_count) + mark_adjust(lnum + 1, (linenr_T)MAXLNUM, count, 0L); changed_lines(lnum + 1, 0, lnum + 1, count); } diff --git a/src/ops.c b/src/ops.c index 983d9d0e6b..35f2d2e95f 100644 --- a/src/ops.c +++ b/src/ops.c @@ -3885,7 +3885,11 @@ error: if (dir == FORWARD) curbuf->b_op_start.lnum++; } - mark_adjust(curbuf->b_op_start.lnum + (y_type == MCHAR), + /* Skip mark_adjust when adding lines after the last one, there + * can't be marks there. */ + if (curbuf->b_op_start.lnum + (y_type == MCHAR) - 1 + nr_lines + < curbuf->b_ml.ml_line_count) + mark_adjust(curbuf->b_op_start.lnum + (y_type == MCHAR), (linenr_T)MAXLNUM, nr_lines, 0L); /* note changed text for displaying and folding */ diff --git a/src/version.c b/src/version.c index 1e7c2f290d..c6ebdc45b9 100644 --- a/src/version.c +++ b/src/version.c @@ -753,6 +753,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1896, /**/ 1895, /**/