summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-13 22:14:17 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-13 22:14:17 +0200
commit6bb18a878cc4cc79cdca4b7497367e59a90125e7 (patch)
tree7f89b8318ae2193ff9fb7c50df5baed8eee3083a
parentbce4f62d3043f04fe29f3fef2b927b2268b15255 (diff)
downloadvim-git-6bb18a878cc4cc79cdca4b7497367e59a90125e7.tar.gz
patch 8.0.0938: scrolling in terminal window is inefficientv8.0.0938
Problem: Scrolling in terminal window is inefficient. Solution: Use win_del_lines().
-rw-r--r--src/terminal.c19
-rw-r--r--src/version.c2
2 files changed, 14 insertions, 7 deletions
diff --git a/src/terminal.c b/src/terminal.c
index 3171936b1..d4a45fb8c 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -38,11 +38,6 @@
* in tl_scrollback are no longer used.
*
* TODO:
- * - add a character in :ls output
- * - add 't' to mode()
- * - use win_del_lines() to make scroll-up efficient.
- * - Make StatusLineTerm adjust UserN highlighting like StatusLineNC does, see
- * use of hightlight_stlnc[].
* - implement term_setsize()
* - add test for giving error for invalid 'termsize' value.
* - support minimal size when 'termsize' is "rows*cols".
@@ -1495,11 +1490,21 @@ handle_damage(VTermRect rect, void *user)
}
static int
-handle_moverect(VTermRect dest UNUSED, VTermRect src UNUSED, void *user)
+handle_moverect(VTermRect dest, VTermRect src, void *user)
{
term_T *term = (term_T *)user;
+ win_T *wp;
- /* TODO */
+ if (dest.start_col == src.start_col
+ && dest.end_col == src.end_col
+ && dest.start_row < src.start_row)
+ FOR_ALL_WINDOWS(wp)
+ {
+ if (wp->w_buffer == term->tl_buffer)
+ /* scrolling up is much more efficient when deleting lines */
+ win_del_lines(wp, dest.start_row,
+ src.start_row - dest.start_row, FALSE, FALSE);
+ }
redraw_buf_later(term->tl_buffer, NOT_VALID);
return 1;
}
diff --git a/src/version.c b/src/version.c
index 36075d90d..a8b07dcbe 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 938,
+/**/
937,
/**/
936,