aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vis-lua.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/vis-lua.c b/vis-lua.c
index fa89a22..e3f355b 100644
--- a/vis-lua.c
+++ b/vis-lua.c
@@ -961,7 +961,7 @@ static int registers_index(lua_State *L) {
const char *symbol = luaL_checkstring(L, 2);
if (!symbol || strlen(symbol) != 1)
goto err;
- enum VisRegister reg = vis_register_from(NULL /* XXX */, symbol[0]);
+ enum VisRegister reg = vis_register_from(vis, symbol[0]);
if (reg >= VIS_REG_INVALID)
goto err;
size_t len;
@@ -978,7 +978,7 @@ static int registers_newindex(lua_State *L) {
const char *symbol = luaL_checkstring(L, 2);
if (!symbol || strlen(symbol) != 1)
return 0;
- enum VisRegister reg = vis_register_from(NULL /* XXX */, symbol[0]);
+ enum VisRegister reg = vis_register_from(vis, symbol[0]);
if (reg >= VIS_REG_INVALID)
return 0;
luaL_checkstring(L, 3);
@@ -1714,13 +1714,14 @@ static const struct luaL_Reg file_lines_funcs[] = {
};
static int file_marks_index(lua_State *L) {
+ Vis *vis = lua_touserdata(L, lua_upvalueindex(1));
File *file = obj_ref_check_containerof(L, 1, "vis.file.marks", offsetof(File, marks));
if (!file)
goto err;
const char *symbol = luaL_checkstring(L, 2);
if (!symbol || strlen(symbol) != 1)
goto err;
- enum VisMark mark = vis_mark_from(NULL /* XXX */, symbol[0]);
+ enum VisMark mark = vis_mark_from(vis, symbol[0]);
if (mark == VIS_MARK_INVALID)
goto err;
size_t pos = text_mark_get(file->text, file->marks[mark]);
@@ -1734,13 +1735,14 @@ err:
}
static int file_marks_newindex(lua_State *L) {
+ Vis *vis = lua_touserdata(L, lua_upvalueindex(1));
File *file = obj_ref_check_containerof(L, 1, "vis.file.marks", offsetof(File, marks));
if (!file)
return 0;
const char *symbol = luaL_checkstring(L, 2);
if (!symbol || strlen(symbol) != 1)
return 0;
- enum VisMark mark = vis_mark_from(NULL /* XXX */, symbol[0]);
+ enum VisMark mark = vis_mark_from(vis, symbol[0]);
size_t pos = luaL_checkunsigned(L, 3);
if (mark < LENGTH(file->marks))
file->marks[mark] = text_mark_set(file->text, pos);
@@ -2044,7 +2046,8 @@ void vis_lua_init(Vis *vis) {
obj_type_new(L, "vis.file.mark");
obj_type_new(L, "vis.file.marks");
- luaL_setfuncs(L, file_marks_funcs, 0);
+ lua_pushlightuserdata(L, vis);
+ luaL_setfuncs(L, file_marks_funcs, 1);
obj_type_new(L, "vis.window.cursor");
luaL_setfuncs(L, window_cursor_funcs, 0);