Patch 8.1.0516
Problem: :move command marks buffer modified when nothing changed.
Solution: Do not set 'modified'. Add a test. (Jason Franklin)
Files: src/Make_all.mak, src/testdir/test_alot.vim,
src/testdir/test_move.vim, src/ex_cmds.c
*** ../vim-8.1.0515/src/Make_all.mak 2018-09-22 21:36:38.158098521 +0200
--- src/Make_all.mak 2018-11-10 18:43:06.098433191 +0100
***************
*** 123,128 ****
--- 123,129 ----
test_mksession \
test_mksession_utf8 \
test_modeline \
+ test_move \
test_nested_function \
test_netbeans \
test_normal \
*** ../vim-8.1.0515/src/testdir/test_alot.vim 2018-09-22 21:36:38.158098521
+0200
--- src/testdir/test_alot.vim 2018-11-10 18:43:06.098433191 +0100
***************
*** 41,46 ****
--- 41,47 ----
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
*** ../vim-8.1.0515/src/testdir/test_move.vim 2018-11-10 18:54:25.084727968
+0100
--- src/testdir/test_move.vim 2018-11-10 18:44:27.557751773 +0100
***************
*** 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
*** ../vim-8.1.0515/src/ex_cmds.c 2018-10-11 19:27:43.920066119 +0200
--- src/ex_cmds.c 2018-11-10 18:47:22.728288132 +0100
***************
*** 899,907 ****
{
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 */
#ifdef FEAT_FOLDING
win_T *win;
tabpage_T *tp;
--- 899,907 ----
{
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
#ifdef FEAT_FOLDING
win_T *win;
tabpage_T *tp;
***************
*** 909,918 ****
if (dest >= line1 && dest < line2)
{
! EMSG(_("E134: Move lines into themselves"));
return FAIL;
}
num_lines = line2 - line1 + 1;
/*
--- 909,932 ----
if (dest >= line1 && dest < line2)
{
! 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;
/*
*** ../vim-8.1.0515/src/version.c 2018-11-10 17:33:23.091518784 +0100
--- src/version.c 2018-11-10 18:53:56.184980615 +0100
***************
*** 794,795 ****
--- 794,797 ----
{ /* Add new patch number below this line */
+ /**/
+ 516,
/**/
--
There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU,
Linux, etc, and those who know COBOL. It gets very difficult for me at
parties, not knowing which group to socialise with :-)
Sitaram Chamarty
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.