refactor(detach): eliminate nvim__ui_detach #40793

Problem:
`nvim__ui_detach` was added in 85e0559d46 in order to implement
`detach_others` from Lua. Using Lua in this case is doing more harm than
good.

Solution:
Extract `ui_detach_channel`, which also allows it to be used for the
"self detach" path from `ex_detach`.

Bonus: the old MSWIN path always called `os_swap_to_hidden_console()`;
now `ui_detach_channel` only does so for a stdio channel. For the common
stdio TUI this is identical; for a socket UI it's more correct (no
parent console to swap).
This commit is contained in:
Justin M. Keyes
2026-07-17 16:37:45 -04:00
committed by GitHub
parent 85e0559d46
commit e0e7f65b74
7 changed files with 68 additions and 103 deletions

View File

@@ -186,16 +186,6 @@ function vim.api.nvim__set_restart_on_crash(progpath, argv) end
--- @return table<string,any> # Map of various internal stats.
function vim.api.nvim__stats() end
--- WARNING: This feature is experimental/unstable.
---
--- Detaches the UI on channel `chan`.
---
--- Sets the channel's detach flag (so the server doesn't exit on stdio UIs),
--- sends an "error_exit" UI event, and closes the channel.
---
--- @param chan integer UI channel to disconnect.
function vim.api.nvim__ui_detach(chan) end
--- WARNING: This feature is experimental/unstable.
---
--- @param str string