0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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.
This commit is contained in:
Bram Moolenaar 2016-06-04 20:14:07 +02:00
parent 888ccac890
commit 82faa259cc
3 changed files with 16 additions and 4 deletions

View File

@ -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);
}

View File

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

View File

@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1896,
/**/
1895,
/**/