neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 0837980db4958baca96449869d31120f349f3500
parent f8f82901cdd0ccd5308e05c73af6deb7d083720f
Author: bfredl <bjorn.linse@gmail.com>
Date:   Fri, 10 Feb 2023 10:26:18 +0100

fix(client): wait for session to exit

This replicates the old native.pid_wait(self._pid)
call, except using the proper libuv pattern (run loop unitil exit
callback)

Diffstat:
Mtest/client/uv_stream.lua | 15++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/test/client/uv_stream.lua b/test/client/uv_stream.lua @@ -102,8 +102,9 @@ ChildProcessStream.__index = ChildProcessStream function ChildProcessStream.spawn(argv, env, io_extra) local self = setmetatable({ - _child_stdin = uv.new_pipe(false), - _child_stdout = uv.new_pipe(false) + _child_stdin = uv.new_pipe(false); + _child_stdout = uv.new_pipe(false); + _exiting = false; }, ChildProcessStream) local prog = argv[1] local args = {} @@ -114,8 +115,9 @@ function ChildProcessStream.spawn(argv, env, io_extra) stdio = {self._child_stdin, self._child_stdout, 2, io_extra}, args = args, env = env, - }, function() - self:close() + }, function(status, signal) + self.status = status + self.signal = signal end) if not self._proc then @@ -154,7 +156,10 @@ function ChildProcessStream:close(signal) if type(signal) == 'string' then self._proc:kill('sig'..signal) end - uv.run('nowait') + while self.status == nil do + uv.run 'once' + end + return self.status, self.signal end return {