changeset 15832:85c94163c4ab v8.1.0923

patch 8.1.0923: terminal dump diff swap does not update file names commit https://github.com/vim/vim/commit/c3ef8966081c03ce989f72a1e477df3327ccb971 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Feb 15 00:16:13 2019 +0100 patch 8.1.0923: terminal dump diff swap does not update file names Problem: Terminal dump diff swap does not update file names. Solution: Also swap the file name. Add a test.
author Bram Moolenaar <Bram@vim.org>
date Fri, 15 Feb 2019 00:30:06 +0100
parents dbb1810ad6ab
children 5cf9301c8e1e
files src/terminal.c src/testdir/test_terminal.vim src/version.c
diffstat 3 files changed, 38 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -4816,7 +4816,7 @@ term_swap_diff()
     bot_start = line_count - bot_rows;
     sb_line = (sb_line_T *)term->tl_scrollback.ga_data;
 
-    /* move lines from top to above the bottom part */
+    // move lines from top to above the bottom part
     for (lnum = 1; lnum <= top_rows; ++lnum)
     {
 	p = vim_strsave(ml_get(1));
@@ -4827,7 +4827,7 @@ term_swap_diff()
 	vim_free(p);
     }
 
-    /* move lines from bottom to the top */
+    // move lines from bottom to the top
     for (lnum = 1; lnum <= bot_rows; ++lnum)
     {
 	p = vim_strsave(ml_get(bot_start + lnum));
@@ -4838,6 +4838,22 @@ term_swap_diff()
 	vim_free(p);
     }
 
+    // move top title to bottom
+    p = vim_strsave(ml_get(bot_rows + 1));
+    if (p == NULL)
+	return OK;
+    ml_append(line_count - top_rows - 1, p, 0, FALSE);
+    ml_delete(bot_rows + 1, FALSE);
+    vim_free(p);
+
+    // move bottom title to top
+    p = vim_strsave(ml_get(line_count - top_rows));
+    if (p == NULL)
+	return OK;
+    ml_delete(line_count - top_rows, FALSE);
+    ml_append(bot_rows, p, 0, FALSE);
+    vim_free(p);
+
     if (top_rows == bot_rows)
     {
 	/* rows counts are equal, can swap cell properties */
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1124,6 +1124,24 @@ func Test_terminal_dumpdiff()
   quit
 endfunc
 
+func Test_terminal_dumpdiff_swap()
+  call assert_equal(1, winnr('$'))
+  call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_03.dump')
+  call assert_equal(2, winnr('$'))
+  call assert_equal(62, line('$'))
+  call assert_match('Test_popup_command_01.dump', getline(21))
+  call assert_match('Test_popup_command_03.dump', getline(42))
+  call assert_match('Undo', getline(3))
+  call assert_match('three four five', getline(45))
+
+  normal s
+  call assert_match('Test_popup_command_03.dump', getline(21))
+  call assert_match('Test_popup_command_01.dump', getline(42))
+  call assert_match('three four five', getline(3))
+  call assert_match('Undo', getline(45))
+  quit
+endfunc
+
 func Test_terminal_dumpdiff_options()
   set laststatus=0
   call assert_equal(1, winnr('$'))
--- a/src/version.c
+++ b/src/version.c
@@ -784,6 +784,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    923,
+/**/
     922,
 /**/
     921,