aboutsummaryrefslogtreecommitdiff
path: root/vis-lua.c
diff options
context:
space:
mode:
authorEz Diy <ezdiy@outlook.com>2020-09-17 00:43:27 +0200
committerEz Diy <ezdiy@outlook.com>2020-09-17 00:43:27 +0200
commitdaf4b8d3894cca25b3015d35e9168b7b2569d43b (patch)
tree46845a28fab402fb91ec4409a00684e048133eb3 /vis-lua.c
parent1b9d70eafc24eaa82c2796fa6d72a482bb09dba9 (diff)
downloadvis-daf4b8d3894cca25b3015d35e9168b7b2569d43b.tar.gz
vis-daf4b8d3894cca25b3015d35e9168b7b2569d43b.tar.xz
Pass up terminal CSI as events to Lua.
Diffstat (limited to 'vis-lua.c')
-rw-r--r--vis-lua.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/vis-lua.c b/vis-lua.c
index 7741f41..40a619d 100644
--- a/vis-lua.c
+++ b/vis-lua.c
@@ -161,6 +161,7 @@ void vis_lua_win_open(Vis *vis, Win *win) { }
void vis_lua_win_close(Vis *vis, Win *win) { }
void vis_lua_win_highlight(Vis *vis, Win *win) { }
void vis_lua_win_status(Vis *vis, Win *win) { window_status_update(vis, win); }
+void vis_lua_term_csi(Vis *vis, const long *csi) { }
#else
@@ -3075,4 +3076,24 @@ void vis_lua_win_status(Vis *vis, Win *win) {
lua_pop(L, 1);
}
+/***
+ * CSI command received from terminal.
+ * @function term_csi
+ * @param List of CSI parameters
+ */
+void vis_lua_term_csi(Vis *vis, const long *csi) {
+ lua_State *L = vis->lua;
+ if (!L)
+ return;
+ vis_lua_event_get(L, "term_csi");
+ if (lua_isfunction(L, -1)) {
+ int nargs = csi[1];
+ lua_pushinteger(L, csi[0]);
+ for (int i = 0; i < nargs; i++)
+ lua_pushinteger(L, csi[2 + i]);
+ pcall(vis, L, 1 + nargs, 0);
+ }
+ lua_pop(L, 1);
+}
+
#endif