fix(vim.ui): open() may wait indefinitely #28325

Problem:
vim.ui.open "locks up" Nvim if the spawned process does not terminate. #27986

Solution:
- Change `vim.ui.open()`:
    - Do not call `wait()`.
    - Return a `SystemObj`. The caller can decide if it wants to `wait()`.
- Change `gx` to `wait()` only a short time.
    - Allows `gx` to show a message if the command fails, without the
      risk of waiting forever.
This commit is contained in:
Justin M. Keyes
2024-04-15 04:33:09 -07:00
committed by GitHub
parent 4ec8fd43bf
commit 57adf8c6e0
7 changed files with 38 additions and 20 deletions

View File

@ -121,6 +121,7 @@ vim.log = {
--- asynchronously. Receives SystemCompleted object, see return of SystemObj:wait().
---
--- @return vim.SystemObj Object with the fields:
--- - cmd (string[]) Command name and args
--- - pid (integer) Process ID
--- - wait (fun(timeout: integer|nil): SystemCompleted) Wait for the process to complete. Upon
--- timeout the process is sent the KILL signal (9) and the exit code is set to 124. Cannot