diff options
Diffstat (limited to 'src/vterm/screen.c')
-rw-r--r-- | src/vterm/screen.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/vterm/screen.c b/src/vterm/screen.c index bd3cbd6bd0..1f5bb36114 100644 --- a/src/vterm/screen.c +++ b/src/vterm/screen.c @@ -2,9 +2,10 @@ #include <stdio.h> #include <string.h> +#include "nvim/mbyte.h" +#include "nvim/tui/termkey/termkey.h" #include "rect.h" -#include "utf8.h" #define UNICODE_SPACE 0x20 #define UNICODE_LINEFEED 0x0a @@ -508,8 +509,6 @@ static int line_popcount(ScreenCell *buffer, int row, int rows, int cols) return col + 1; } -#define REFLOW (screen->reflow) - static void resize_buffer(VTermScreen *screen, int bufidx, int new_rows, int new_cols, bool active, VTermStateFields *statefields) { int old_rows = screen->rows; @@ -540,13 +539,13 @@ static void resize_buffer(VTermScreen *screen, int bufidx, int new_rows, int new while(old_row >= 0) { int old_row_end = old_row; /* TODO: Stop if dwl or dhl */ - while(REFLOW && old_lineinfo && old_row > 0 && old_lineinfo[old_row].continuation) + while(screen->reflow && old_lineinfo && old_row > 0 && old_lineinfo[old_row].continuation) old_row--; int old_row_start = old_row; int width = 0; for(int row = old_row_start; row <= old_row_end; row++) { - if(REFLOW && row < (old_rows - 1) && old_lineinfo[row + 1].continuation) + if(screen->reflow && row < (old_rows - 1) && old_lineinfo[row + 1].continuation) width += old_cols; else width += line_popcount(old_buffer, row, old_rows, old_cols); @@ -555,7 +554,7 @@ static void resize_buffer(VTermScreen *screen, int bufidx, int new_rows, int new if(final_blank_row == (new_row + 1) && width == 0) final_blank_row = new_row; - int new_height = REFLOW + int new_height = screen->reflow ? width ? (width + new_cols - 1) / new_cols : 1 : 1; @@ -628,7 +627,7 @@ static void resize_buffer(VTermScreen *screen, int bufidx, int new_rows, int new if(old_col == old_cols) { old_row++; - if(!REFLOW) { + if(!screen->reflow) { new_col++; break; } @@ -922,7 +921,7 @@ static size_t _get_chars(const VTermScreen *screen, const int utf8, void *buffer #define PUT(c) \ if(utf8) { \ - size_t thislen = utf8_seqlen(c); \ + size_t thislen = utf_char2len(c); \ if(buffer && outpos + thislen <= len) \ outpos += fill_utf8((c), (char *)buffer + outpos); \ else \ |