aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-04-20 19:20:12 +0200
committerMarc André Tanner <mat@brain-dump.org>2016-04-20 19:20:12 +0200
commitaaefca67b304688efb0f4c893aab469d61f8f0bf (patch)
tree8d3e3bff139d4ecf7172922c81772ba1909fbda3
parent5c1ce884dfec4fb361ea683ec818d6b4952bc841 (diff)
downloadvis-aaefca67b304688efb0f4c893aab469d61f8f0bf.tar.gz
vis-aaefca67b304688efb0f4c893aab469d61f8f0bf.tar.xz
vis-lua: trigger start event after ui has been initialized
-rw-r--r--main.c1
-rw-r--r--vis-lua.c9
-rw-r--r--vis-lua.h1
-rw-r--r--vis.c4
-rw-r--r--vis.h1
5 files changed, 14 insertions, 2 deletions
diff --git a/main.c b/main.c
index 8fc6191..272ac3c 100644
--- a/main.c
+++ b/main.c
@@ -2102,6 +2102,7 @@ static void signal_handler(int signum, siginfo_t *siginfo, void *context) {
int main(int argc, char *argv[]) {
VisEvent event = {
+ .vis_init = vis_lua_init,
.vis_start = vis_lua_start,
.vis_quit = vis_lua_quit,
.file_open = vis_lua_file_open,
diff --git a/vis-lua.c b/vis-lua.c
index 0c043fc..fb560ab 100644
--- a/vis-lua.c
+++ b/vis-lua.c
@@ -13,6 +13,7 @@
#if !CONFIG_LUA
+void vis_lua_init(Vis *vis) { }
void vis_lua_start(Vis *vis) { }
void vis_lua_quit(Vis *vis) { }
void vis_lua_file_open(Vis *vis, File *file) { }
@@ -970,7 +971,7 @@ static bool vis_lua_path_add(Vis *vis, const char *path) {
return true;
}
-void vis_lua_start(Vis *vis) {
+void vis_lua_init(Vis *vis) {
lua_State *L = luaL_newstate();
if (!L)
return;
@@ -1043,6 +1044,12 @@ void vis_lua_start(Vis *vis) {
lua_getglobal(L, "require");
lua_pushstring(L, "visrc");
pcall(vis, L, 1, 0);
+}
+
+void vis_lua_start(Vis *vis) {
+ lua_State *L = vis->lua;
+ if (!L)
+ return;
vis_lua_event(vis, "start");
if (lua_isfunction(L, -1))
pcall(vis, L, 0, 0);
diff --git a/vis-lua.h b/vis-lua.h
index 95cc1e3..b05f6fb 100644
--- a/vis-lua.h
+++ b/vis-lua.h
@@ -11,6 +11,7 @@ typedef struct lua_State lua_State;
#include "vis.h"
+void vis_lua_init(Vis*);
void vis_lua_start(Vis*);
void vis_lua_quit(Vis*);
void vis_lua_file_open(Vis*, File*);
diff --git a/vis.c b/vis.c
index 47a6c79..8f4155e 100644
--- a/vis.c
+++ b/vis.c
@@ -366,9 +366,11 @@ Vis *vis_new(Ui *ui, VisEvent *event) {
goto err;
vis->mode_prev = vis->mode = &vis_modes[VIS_MODE_NORMAL];
vis->event = event;
+ if (event && event->vis_init)
+ event->vis_init(vis);
+ vis->ui->start(vis->ui);
if (event && event->vis_start)
event->vis_start(vis);
- vis->ui->start(vis->ui);
return vis;
err:
vis_free(vis);
diff --git a/vis.h b/vis.h
index fdc93e2..6f60e6a 100644
--- a/vis.h
+++ b/vis.h
@@ -14,6 +14,7 @@ typedef struct Win Win;
#include "text-regex.h"
typedef struct {
+ void (*vis_init)(Vis*);
void (*vis_start)(Vis*);
void (*vis_quit)(Vis*);
void (*file_open)(Vis*, File*);