From 39111f1749878afbe648208ccea96b37fe4ae840 Mon Sep 17 00:00:00 2001 From: Rui Guo Date: Thu, 13 Aug 2009 22:59:49 +0800 Subject: [PATCH] Implement get_lines & get_history for window object. --- src/lua.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/lua.c b/src/lua.c index 03dacd0..8547e55 100644 --- a/src/lua.c +++ b/src/lua.c @@ -506,11 +506,61 @@ window_get_showing_canvases(lua_State *L) return 1; } +static int +window_getlines(lua_State *L) +{ + struct win *w = check_window(L, 1); + int i; + lua_newtable(L); + for (i = 0; i < fore->w_height; i++) + { + char *p = (char *)w->w_mlines[i].image; + int k, save; + for (k = fore->w_width - 1; k >= 0 && p[k] == ' '; k--) + ; + k +=(p[k] != ' '); + save = p[k]; + p[k] = 0; + lua_pushinteger(L, i); + lua_pushstring(L, p); + lua_settable(L, -3); + p[k] = save; + } + + return 1; +} + +static int +window_gethistory(lua_State *L) +{ + struct win *w = check_window(L, 1); + int i; + lua_newtable(L); + for (i = 0; i < fore->w_height; i++) + { + char *p = (char *) w->w_hlines[(w->w_histidx + i) % w->w_histheight].image; + int k, save; + for (k = fore->w_width - 1; k >= 0 && p[k] == ' '; k--) + ; + k +=(p[k] != ' '); + save = p[k]; + p[k] = 0; + lua_pushinteger(L, i); + lua_pushstring(L, p); + lua_settable(L, -3); + p[k] = save; + } + + return 1; +} + static const luaL_reg window_methods[] = { {"get_monitor_status", window_get_monitor_status}, {"showing_canvases", window_get_showing_canvases}, {"stuff", window_stuff}, {"activate", window_activate}, + {"get_lines", window_getlines}, + {"get_history", window_gethistory}, {"hook", LuaRegEvent}, {0, 0} }; -- 2.11.4.GIT