1
0
forked from aniani/vim

patch 8.0.0421: diff mode wrong when adding line at end of buffer

Problem:    Diff mode is displayed wrong when adding a line at the end of a
            buffer.
Solution:   Adjust marks in diff mode. (James McCoy, closes #1329)
This commit is contained in:
Bram Moolenaar
2017-03-05 18:03:04 +01:00
parent 2c7292dc5b
commit f58a8475e1
4 changed files with 41 additions and 7 deletions

View File

@@ -1427,8 +1427,12 @@ open_line(
/* Postpone calling changed_lines(), because it would mess up folding
* 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)
* be marks there. But still needed in diff mode. */
if (curwin->w_cursor.lnum + 1 < curbuf->b_ml.ml_line_count
#ifdef FEAT_DIFF
|| curwin->w_p_diff
#endif
)
mark_adjust(curwin->w_cursor.lnum + 1, (linenr_T)MAXLNUM, 1L, 0L);
did_append = TRUE;
}
@@ -2863,8 +2867,12 @@ appended_lines(linenr_T lnum, long count)
appended_lines_mark(linenr_T lnum, long count)
{
/* 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)
* be marks there. But it's still needed in diff mode. */
if (lnum + count < curbuf->b_ml.ml_line_count
#ifdef FEAT_DIFF
|| curwin->w_p_diff
#endif
)
mark_adjust(lnum + 1, (linenr_T)MAXLNUM, count, 0L);
changed_lines(lnum + 1, 0, lnum + 1, count);
}