diff options
Diffstat (limited to 'vterm-module.c')
| -rw-r--r-- | vterm-module.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/vterm-module.c b/vterm-module.c index e1bbf6d..5f5196f 100644 --- a/vterm-module.c +++ b/vterm-module.c @@ -665,12 +665,19 @@ static emacs_value Fvterm_update(emacs_env *env, ptrdiff_t nargs, // Flush output term_flush_output(term, env); - - term_redraw(term, env); + if (term->is_invalidated) { + vterm_invalidate(env); + } return env->make_integer(env, 0); } +static emacs_value Fvterm_redraw(emacs_env *env, ptrdiff_t nargs, + emacs_value args[], void *data) { + Term *term = env->get_user_ptr(env, args[0]); + term_redraw(term, env); + return env->make_integer(env, 0); +} static emacs_value Fvterm_write_input(emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data) { Term *term = env->get_user_ptr(env, args[0]); @@ -749,6 +756,9 @@ int emacs_module_init(struct emacs_runtime *ert) { Fvterm_set_title = env->make_global_ref(env, env->intern(env, "vterm--set-title")); + Fvterm_invalidate = + env->make_global_ref(env, env->intern(env, "vterm--invalidate")); + // Faces Qterm = env->make_global_ref(env, env->intern(env, "vterm")); Qterm_color_black = @@ -778,6 +788,11 @@ int emacs_module_init(struct emacs_runtime *ert) { "Process io and update the screen.", NULL); bind_function(env, "vterm--update", fun); + + fun = + env->make_function(env, 1, 1, Fvterm_redraw, "Redraw the screen.", NULL); + bind_function(env, "vterm--redraw", fun); + fun = env->make_function(env, 2, 2, Fvterm_write_input, "Write input to vterm.", NULL); bind_function(env, "vterm--write-input", fun); |
