Initial commit
This commit is contained in:
commit
209ba130c0
4852 changed files with 1517959 additions and 0 deletions
66
.config/lite-xl/plugins/lintplus/liteipc.lua
Normal file
66
.config/lite-xl/plugins/lintplus/liteipc.lua
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
-- liteipc - async IPC for lite
|
||||
|
||||
local liteipc = {}
|
||||
|
||||
local Process = {}
|
||||
Process.__index = Process
|
||||
|
||||
function liteipc.start_process(args, cwd)
|
||||
local proc = setmetatable({
|
||||
popen = process.start(args, {cwd = cwd}),
|
||||
read_from = ""
|
||||
}, Process)
|
||||
return proc
|
||||
end
|
||||
|
||||
function Process.poll(self, callback)
|
||||
local line = ""
|
||||
local read = nil
|
||||
|
||||
while self.read_from == "" and self.popen:returncode() == nil do
|
||||
local stderr = self.popen:read_stderr(1)
|
||||
local stdout = self.popen:read_stdout(1)
|
||||
local out = nil
|
||||
if stderr ~= nil and stderr ~= "" then
|
||||
out = stderr
|
||||
self.read_from = "stderr"
|
||||
elseif stdout ~= nil and stdout ~= "" then
|
||||
out = stdout
|
||||
self.read_from = "stdout"
|
||||
end
|
||||
if out ~= nil then
|
||||
if out ~= "\n" then
|
||||
line = line .. out
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
if self.read_from == "stderr" then
|
||||
read = self.popen:read_stderr(1)
|
||||
else
|
||||
read = self.popen:read_stdout(1)
|
||||
end
|
||||
if read == nil or read == "\n" then
|
||||
if line ~= "" then callback(line) end
|
||||
break
|
||||
else
|
||||
line = line .. read
|
||||
end
|
||||
end
|
||||
|
||||
if not self.popen:running() and read == nil then
|
||||
local exit = "exit"
|
||||
local retcode = self.popen:returncode()
|
||||
if retcode ~= 1 and retcode ~= 0 then
|
||||
exit = "signal"
|
||||
end
|
||||
local errmsg = process.strerror(retcode)
|
||||
return exit, retcode, errmsg
|
||||
end
|
||||
|
||||
return nil, nil, nil
|
||||
end
|
||||
|
||||
return liteipc
|
||||
Loading…
Add table
Add a link
Reference in a new issue