diff --git a/lib/vimrunner/server.rb b/lib/vimrunner/server.rb index 9f9c949..37b3fd2 100644 --- a/lib/vimrunner/server.rb +++ b/lib/vimrunner/server.rb @@ -115,14 +115,22 @@ def running? # # Returns self. def kill - @r.close - @w.close + remote_send(":quitall!") begin - Process.kill(9, @pid) - rescue Errno::ESRCH + Timeout.timeout(3, TimeoutError) do + sleep 0.1 while Process.waitpid(@pid, Process::WNOHANG).nil? + end + rescue TimeoutError + begin + Process.kill("TERM", @pid) + rescue Errno::ESRCH + end end + @r.close + @w.close + self end