From 5d5a7e35a67fbeb76568d10df029f8c2e3082dee Mon Sep 17 00:00:00 2001 From: Rui Guo Date: Wed, 10 Jun 2009 00:19:52 +0800 Subject: [PATCH] Un-finished input() support. --- src/lua.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/lua.c b/src/lua.c index 0c4da7c..95ae685 100644 --- a/src/lua.c +++ b/src/lua.c @@ -44,6 +44,7 @@ extern struct layer *flayer; static int LuaDispatch(void *handler, const char *params, va_list va); static int LuaRegEvent(lua_State *L); static int LuaUnRegEvent(lua_State *L); +static void LuaShowErr(lua_State *L); /** Template {{{ */ @@ -587,6 +588,31 @@ screen_append_msg(lua_State *L) return 0; } +void +script_input_fn(char *buf, int len, char *priv) +{ + lua_State *L = (lua_State *)priv; + lua_pushstring(L, buf); + if (lua_pcall(L, 1, 0, 0) == LUA_ERRRUN) + { + if(lua_isstring(L, -1)) + { + LuaShowErr(L); + } + } +} + +static int +screen_input(lua_State *L) +{ + char * prompt = NULL; + + prompt = (char *)luaL_checkstring(L, 1); + Input(prompt, 100, INP_COOKED, script_input_fn, (char *)L, 0); + + return 0; +} + static const luaL_reg screen_methods[] = { {"windows", screen_get_windows}, {"displays", screen_get_displays}, @@ -595,6 +621,7 @@ static const luaL_reg screen_methods[] = { {"append_msg", screen_append_msg}, {"hook", LuaRegEvent}, {"unhook", LuaUnRegEvent}, + {"input", screen_input}, {0, 0} }; -- 2.11.4.GIT