diff options
| author | jixiufeng <jixiufeng@luojilab.com> | 2019-04-29 11:23:49 +0800 |
|---|---|---|
| committer | jixiufeng <jixiufeng@luojilab.com> | 2019-04-29 21:52:41 +0800 |
| commit | f83dff133aacaa2778a2875ebb1906aabb344ae7 (patch) | |
| tree | 5f0c47e6f9a76efee1543622c7dbf152d25c2314 | |
| parent | 6adcedf3e4aaadeeaff97437044fba17aeb466d4 (diff) | |
fix recenter for emacs27
| -rw-r--r-- | elisp.c | 4 | ||||
| -rw-r--r-- | elisp.h | 2 | ||||
| -rw-r--r-- | vterm-module.c | 3 |
3 files changed, 8 insertions, 1 deletions
@@ -77,6 +77,10 @@ void delete_lines(emacs_env *env, int linenum, int count, bool del_whole_line) { void recenter(emacs_env *env, emacs_value pos) { env->funcall(env, Frecenter, 1, (emacs_value[]){pos}); } +bool eq(emacs_env *env, emacs_value e1, emacs_value e2) { + emacs_value Qeq = env->funcall(env, Feq, 2, (emacs_value[]){e1, e2}); + return env->is_not_nil(env, Qeq); +} void forward_char(emacs_env *env, emacs_value n) { env->funcall(env, Fforward_char, 1, (emacs_value[]){n}); @@ -43,6 +43,7 @@ emacs_value Fget_buffer_window; emacs_value Fselected_window; emacs_value Fvterm_set_title; emacs_value Fvterm_invalidate; +emacs_value Feq; // Utils void bind_function(emacs_env *env, const char *name, emacs_value Sfun); @@ -65,6 +66,7 @@ emacs_value get_hex_color_fg(emacs_env *env, emacs_value face); emacs_value get_hex_color_bg(emacs_env *env, emacs_value face); emacs_value buffer_line_number(emacs_env *env); void recenter(emacs_env *env, emacs_value pos); +bool eq(emacs_env *env, emacs_value e1, emacs_value e2); void forward_char(emacs_env *env, emacs_value n); emacs_value get_buffer_window(emacs_env *env); emacs_value selected_window(emacs_env *env); diff --git a/vterm-module.c b/vterm-module.c index 63bf8c0..f4ee2b5 100644 --- a/vterm-module.c +++ b/vterm-module.c @@ -302,7 +302,7 @@ static void adjust_topline(Term *term, emacs_env *env, long added) { emacs_value window = get_buffer_window(env); emacs_value swindow = selected_window(env); - if (swindow == window) { + if (eq(env, window, swindow)) { if (following) { // "Follow" the terminal output recenter(env, env->make_integer( @@ -733,6 +733,7 @@ int emacs_module_init(struct emacs_runtime *ert) { env->make_global_ref(env, env->intern(env, "vterm--set-title")); Fvterm_invalidate = env->make_global_ref(env, env->intern(env, "vterm--invalidate")); + Feq = env->make_global_ref(env, env->intern(env, "eq")); // Exported functions emacs_value fun; |
