From daf4b8d3894cca25b3015d35e9168b7b2569d43b Mon Sep 17 00:00:00 2001 From: Ez Diy Date: Thu, 17 Sep 2020 00:43:27 +0200 Subject: Pass up terminal CSI as events to Lua. --- vis-lua.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'vis-lua.c') 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 -- cgit v1.2.3