From 7f0309f5835f12396a395681d8abfc3d844d3ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sat, 14 Jan 2017 10:44:30 +0100 Subject: vis-lua: allow mode changes by setting vis.mode --- vis-lua.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'vis-lua.c') diff --git a/vis-lua.c b/vis-lua.c index 9936219..e7e92b4 100644 --- a/vis-lua.c +++ b/vis-lua.c @@ -1054,6 +1054,19 @@ static int vis_index(lua_State *L) { return index_common(L); } +static int vis_newindex(lua_State *L) { + Vis *vis = obj_ref_check(L, 1, "vis"); + if (lua_isstring(L, 2)) { + const char *key = lua_tostring(L, 2); + if (strcmp(key, "mode") == 0) { + enum VisMode mode = luaL_checkunsigned(L, 3); + vis_mode_switch(vis, mode); + return 0; + } + } + return newindex_common(L); +} + static const struct luaL_Reg vis_lua[] = { { "files", files }, { "windows", windows }, @@ -1072,7 +1085,7 @@ static const struct luaL_Reg vis_lua[] = { { "feedkeys", feedkeys }, { "action_register", action_register }, { "__index", vis_index }, - { "__newindex", newindex_common }, + { "__newindex", vis_newindex }, { NULL, NULL }, }; -- cgit v1.2.3