diff src/ops.c @ 9225:b0b2bd8e5217 v7.4.1896

commit https://github.com/vim/vim/commit/82faa259cc42379f2a17d598a2a39d14048685b0 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 4 20:14:07 2016 +0200 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.
author Christian Brabandt <cb@256bit.org>
date Sat, 04 Jun 2016 20:15:06 +0200
parents e600e696c0a1
children f5d9eb512f8b
line wrap: on
line diff
--- 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 */