diff src/terminal.c @ 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 8f112782a2e9
children 63e71d195cee
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 */