0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.1.0516: :move command marks buffer modified when nothing changed

Problem:    :move command marks buffer modified when nothing changed.
Solution:   Do not set 'modified'.  Add a test. (Jason Franklin)
This commit is contained in:
Bram Moolenaar
2018-11-10 19:19:36 +01:00
parent ded5f1bed7
commit ddd1f9183b
5 changed files with 62 additions and 4 deletions

View File

@@ -899,9 +899,9 @@ do_move(linenr_T line1, linenr_T line2, linenr_T dest)
{
char_u *str;
linenr_T l;
linenr_T extra; /* Num lines added before line1 */
linenr_T num_lines; /* Num lines moved */
linenr_T last_line; /* Last line in file after adding new text */
linenr_T extra; // Num lines added before line1
linenr_T num_lines; // Num lines moved
linenr_T last_line; // Last line in file after adding new text
#ifdef FEAT_FOLDING
win_T *win;
tabpage_T *tp;
@@ -909,10 +909,24 @@ do_move(linenr_T line1, linenr_T line2, linenr_T dest)
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;
/*