From e537922e463eea7d59bcce427223bfa419df00bf Mon Sep 17 00:00:00 2001 From: "kepler155c@gmail.com" Date: Thu, 7 Feb 2019 10:11:00 -0500 Subject: [PATCH] mwm nearly there --- monitor/mwm.lua | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/monitor/mwm.lua b/monitor/mwm.lua index 1fb1cee..75ff4a1 100644 --- a/monitor/mwm.lua +++ b/monitor/mwm.lua @@ -4,6 +4,7 @@ if not _G.requireInjector then end local Terminal = require('terminal') +local trace = require('trace') local Util = require('util') local colors = _G.colors @@ -55,13 +56,23 @@ local function nextUID() return UID end +local function xprun(env, path, ...) + setmetatable(env, { __index = _G }) + local fn, m = loadfile(path, env) + if fn then + return trace(fn, ...) + end + return fn, m +end + local function write(win, x, y, text) win.setCursorPos(x, y) win.write(text) end local function redraw() - monitor.clear() + --monitor.clear() + monitor.canvas:dirty() for k,process in ipairs(processes) do process.container.canvas:dirty() process:focus(k == #processes) @@ -118,7 +129,7 @@ function Process:new(args) if args.fn then result, err = Util.runFunction(args.env, args.fn, table.unpack(self.args)) elseif args.path then - result, err = Util.run(args.env, args.path, table.unpack(self.args)) + result, err = xprun(args.env, args.path, table.unpack(self.args)) end if not result and err and err ~= 'Terminated' then @@ -369,7 +380,7 @@ function multishell.removeProcess(process) process.container.canvas:removeLayer() multishell.saveSession(sessionFile) - redraw() + --redraw() end function multishell.saveSession(filename) @@ -462,8 +473,6 @@ function multishell.start() end end - monitor.canvas:dirty() - monitor.canvas:render(parentMon) local didRedraw = true