aboutsummaryrefslogtreecommitdiff
path: root/lua/visrc.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/visrc.lua')
-rw-r--r--lua/visrc.lua27
1 files changed, 21 insertions, 6 deletions
diff --git a/lua/visrc.lua b/lua/visrc.lua
index af40306..16aa8b9 100644
--- a/lua/visrc.lua
+++ b/lua/visrc.lua
@@ -1,13 +1,28 @@
-dofile("utils.lua")
+package.path = '../../lua/?.lua;'..package.path
+dofile("../../lua/vis.lua")
-vis.events = {}
-vis.events.win_open = function(win)
+-- redirect output to stdout, stderr is used by the vis UI
+io.stderr = io.stdout
+
+-- make sure we gracefully terminate, cleanup terminal state etc.
+os.exit = function(status)
+ vis:exit(status)
+end
+
+vis.events.subscribe(vis.events.WIN_OPEN, function(win)
-- test.in file passed to vis
local in_file = win.file.name
if in_file then
-- use the corresponding test.lua file
lua_file = string.gsub(in_file, '%.in$', '.lua')
- dofile(lua_file)
- vis:command('qall!')
+ local ok, msg = pcall(dofile, lua_file)
+ if not ok then
+ if type(msg) == 'string' then
+ print(msg)
+ end
+ vis:exit(1)
+ return
+ end
end
-end
+ vis:exit(0)
+end)