diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-04-15 23:26:08 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-04-16 12:52:04 +0200 |
| commit | f3d3af1e836cd2896f47a5a219e85c84f0022ed5 (patch) | |
| tree | 1b854e6f51056f44bb4a994c88df4f2bd63a3f6b /vis-lua.c | |
| parent | 7418386e7b0528b7d67847d84333e9f149dc8a58 (diff) | |
| download | vis-f3d3af1e836cd2896f47a5a219e85c84f0022ed5.tar.gz vis-f3d3af1e836cd2896f47a5a219e85c84f0022ed5.tar.xz | |
vis-lua: add window.cursors_iterator function
Diffstat (limited to 'vis-lua.c')
| -rw-r--r-- | vis-lua.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -551,9 +551,33 @@ static int window_newindex(lua_State *L) { return newindex_common(L); } +static int window_cursors_iterator_next(lua_State *L) { + Cursor **handle = lua_touserdata(L, lua_upvalueindex(1)); + if (!*handle) + return 0; + Cursor *cur = obj_ref_new(L, *handle, "vis.window.cursor"); + if (!cur) + return 0; + *handle = view_cursors_next(cur); + return 1; +} + +static int window_cursors_iterator(lua_State *L) { + Win *win = obj_ref_check(L, 1, "vis.window"); + if (!win) { + lua_pushnil(L); + return 1; + } + Cursor **handle = lua_newuserdata(L, sizeof *handle); + *handle = view_cursors(win->view); + lua_pushcclosure(L, window_cursors_iterator_next, 1); + return 1; +} + static const struct luaL_Reg window_funcs[] = { { "__index", window_index }, { "__newindex", window_newindex }, + { "cursors_iterator", window_cursors_iterator }, { NULL, NULL }, }; |
