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)
diff --git a/src/Make_all.mak b/src/Make_all.mak
index f5f0552..da3a62c 100644
--- a/src/Make_all.mak
+++ b/src/Make_all.mak
@@ -123,6 +123,7 @@
 	test_mksession \
 	test_mksession_utf8 \
 	test_modeline \
+	test_move \
 	test_nested_function \
 	test_netbeans \
 	test_normal \
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 7512785..cb728d4 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -899,9 +899,9 @@
 {
     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 @@
 
     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;
 
     /*
diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim
index 3a0c6e0..be66512 100644
--- a/src/testdir/test_alot.vim
+++ b/src/testdir/test_alot.vim
@@ -41,6 +41,7 @@
 source test_menu.vim
 source test_messages.vim
 source test_modeline.vim
+source test_move.vim
 source test_partial.vim
 source test_popup.vim
 source test_put.vim
diff --git a/src/testdir/test_move.vim b/src/testdir/test_move.vim
new file mode 100644
index 0000000..d774c93
--- /dev/null
+++ b/src/testdir/test_move.vim
@@ -0,0 +1,40 @@
+" Test the ":move" command.
+
+func Test_move()
+  enew!
+  call append(0, ['line 1', 'line 2', 'line 3'])
+  g /^$/ delete _
+  set nomodified
+
+  move .
+  call assert_equal(['line 1', 'line 2', 'line 3'], getline(1, 3))
+  call assert_false(&modified)
+
+  1,2move 0
+  call assert_equal(['line 1', 'line 2', 'line 3'], getline(1, 3))
+  call assert_false(&modified)
+
+  1,3move 3
+  call assert_equal(['line 1', 'line 2', 'line 3'], getline(1, 3))
+  call assert_false(&modified)
+
+  1move 2
+  call assert_equal(['line 2', 'line 1', 'line 3'], getline(1, 3))
+  call assert_true(&modified)
+  set nomodified
+
+  3move 0
+  call assert_equal(['line 3', 'line 2', 'line 1'], getline(1, 3))
+  call assert_true(&modified)
+  set nomodified
+
+  2,3move 0
+  call assert_equal(['line 2', 'line 1', 'line 3'], getline(1, 3))
+  call assert_true(&modified)
+  set nomodified
+
+  call assert_fails('1,2move 1', 'E134')
+  call assert_fails('2,3move 2', 'E134')
+
+  %bwipeout!
+endfunc
diff --git a/src/version.c b/src/version.c
index 3d72854..12b8688 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    516,
+/**/
     515,
 /**/
     514,