vim-patch:8.1.0516: :move command sets 'modified' #9224

Problem:    :move command marks buffer modified when nothing changed.
Solution:   Do not set 'modified'.  Add a test. (Jason Franklin)
ddd1f9183b
This commit is contained in:
Jan Edmund Lazo
2018-11-11 13:13:14 -05:00
committed by Justin M. Keyes
parent c936ae0f36
commit 9f3fb66111
3 changed files with 55 additions and 1 deletions

View File

@@ -816,10 +816,23 @@ int do_move(linenr_T line1, linenr_T line2, linenr_T dest)
linenr_T last_line; // Last line in file after adding new text
if (dest >= line1 && dest < line2) {
EMSG(_("E134: Move lines into themselves"));
EMSG(_("E134: Cannot move a range of lines into itself"));
return FAIL;
}
// Do nothing if we are not actually moving any lines. This will prevent
// the 'modified' flag from being set without cause.
if (dest == line1 - 1 || dest == line2) {
// Move the cursor as if lines were moved (see below) to be backwards
// compatible.
if (dest >= line1) {
curwin->w_cursor.lnum = dest;
} else {
curwin->w_cursor.lnum = dest + (line2 - line1) + 1;
}
return OK;
}
num_lines = line2 - line1 + 1;
/*