aboutsummaryrefslogtreecommitdiff
path: root/src/lua_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua_interface.c')
-rw-r--r--src/lua_interface.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lua_interface.c b/src/lua_interface.c
index b8101e20..d48919bb 100644
--- a/src/lua_interface.c
+++ b/src/lua_interface.c
@@ -64,6 +64,7 @@ static int l_cf_buffer_delete(lua_State *lua),
l_cf_view_split(lua_State *lua),
l_cf_view_unsplit(lua_State *lua),
l_cf_ta_buffer_new(lua_State *lua),
+ l_cf_ta_dialog(lua_State *lua),
l_cf_ta_get_split_table(lua_State *lua),
l_cf_ta_goto_window(lua_State *lua),
l_cf_view_goto_buffer(lua_State *lua),
@@ -138,6 +139,7 @@ bool l_init(int argc, char **argv, bool reinit) {
l_cfunc(lua, l_cf_ce_show_completions, "show_completions");
l_mt(lua, "_ce_mt", l_ce_mt_index, l_ce_mt_newindex);
lua_setfield(lua, -2, "command_entry");
+ l_cfunc(lua, l_cf_ta_dialog, "dialog");
l_cfunc(lua, l_cf_ta_get_split_table, "get_split_table");
l_cfunc(lua, l_cf_ta_goto_window, "goto_view");
l_cfunc(lua, l_cf_ta_gtkmenu, "gtkmenu");
@@ -1279,6 +1281,18 @@ static int l_cf_view_goto_buffer(lua_State *lua) {
return 0;
}
+static int l_cf_ta_dialog(lua_State *lua) {
+ enum GCDialogs type = gcocoadialog_type(luaL_checkstring(lua, 1));
+ int argc = lua_gettop(lua) - 1;
+ const char **argv = static_cast<const char**>(malloc(argc * sizeof(char *)));
+ for (int i = 0; i < argc; i++) argv[i] = luaL_checkstring(lua, i + 2);
+ char *out = gcocoadialog(type, argc, argv);
+ lua_pushstring(lua, out);
+ free(out);
+ free(argv);
+ return 1;
+}
+
static int l_cf_ta_goto_window(lua_State *lua) {
return l_cf_ta_goto_(lua, focused_editor, false);
}