aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/terminal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/terminal.c')
-rw-r--r--src/nvim/terminal.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index c29f0b3927..c2370de0f8 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -528,6 +528,13 @@ void terminal_send(Terminal *term, char *data, size_t size)
term->opts.write_cb(data, size, term->opts.data);
}
+void terminal_flush_output(Terminal *term)
+{
+ size_t len = vterm_output_read(term->vt, term->textbuf,
+ sizeof(term->textbuf));
+ terminal_send(term, term->textbuf, len);
+}
+
void terminal_send_key(Terminal *term, int c)
{
VTermModifier mod = VTERM_MOD_NONE;
@@ -545,9 +552,7 @@ void terminal_send_key(Terminal *term, int c)
vterm_keyboard_unichar(term->vt, (uint32_t)c, mod);
}
- size_t len = vterm_output_read(term->vt, term->textbuf,
- sizeof(term->textbuf));
- terminal_send(term, term->textbuf, (size_t)len);
+ terminal_flush_output(term);
}
void terminal_receive(Terminal *term, char *data, size_t len)
@@ -982,7 +987,7 @@ static bool send_mouse_event(Terminal *term, int c)
mouse_action(term, button, row, col, drag, 0);
size_t len = vterm_output_read(term->vt, term->textbuf,
- sizeof(term->textbuf));
+ sizeof(term->textbuf));
terminal_send(term, term->textbuf, (size_t)len);
return false;
}
@@ -1234,8 +1239,9 @@ static void refresh_screen(Terminal *term, buf_T *buf)
int change_start = row_to_linenr(term, term->invalid_start);
int change_end = change_start + changed;
- // Note: don't send nvim_buf_lines_event event for a :terminal buffer
- changed_lines(change_start, 0, change_end, added, false);
+ changed_lines(change_start, 0, change_end, added,
+ // Don't send nvim_buf_lines_event for :terminal buffer.
+ false);
term->invalid_start = INT_MAX;
term->invalid_end = -1;
}