From 3a342f9cc9f0ca67620fe0886cdc7a5e03e6fece Mon Sep 17 00:00:00 2001 From: Corey Williamson Date: Tue, 9 Mar 2021 21:21:45 -0600 Subject: api: add vim.api.nvim_win_hide --- src/nvim/api/window.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c index f4af1632ec..f10b4b900b 100644 --- a/src/nvim/api/window.c +++ b/src/nvim/api/window.c @@ -492,6 +492,30 @@ Dictionary nvim_win_get_config(Window window, Error *err) return rv; } +/// Hides the window (like |:hide| with a |window-ID|). +/// +/// @param window Window handle, or 0 for current window +/// @param[out] err Error details, if any +void nvim_win_hide(Window window, Error *err) + FUNC_API_SINCE(7) + FUNC_API_CHECK_TEXTLOCK +{ + win_T *win = find_window_by_handle(window, err); + if (!win) { + return; + } + + tabpage_T *tabpage = win_find_tabpage(win); + TryState tstate; + try_enter(&tstate); + if (tabpage == curtab) { + win_close(win, false); + } else { + win_close_othertab(win, false, tabpage); + } + vim_ignored = try_leave(&tstate, err); +} + /// Closes the window (like |:close| with a |window-ID|). /// /// @param window Window handle, or 0 for current window -- cgit From 3fbd9ed4ab1d7a90297488d778205e8dc270cbf4 Mon Sep 17 00:00:00 2001 From: Corey Williamson Date: Wed, 10 Mar 2021 13:29:01 -0600 Subject: api: clarify difference between win_hide and win_close --- src/nvim/api/window.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c index f10b4b900b..89fa2f86fb 100644 --- a/src/nvim/api/window.c +++ b/src/nvim/api/window.c @@ -492,7 +492,12 @@ Dictionary nvim_win_get_config(Window window, Error *err) return rv; } -/// Hides the window (like |:hide| with a |window-ID|). +/// Closes the window and hide the buffer it contains (like |:hide| with a +/// |window-ID|). +/// +/// Like |:hide| the buffer becomes hidden unless another window is editing it, +/// or 'bufhidden' is `unload`, `delete` or `wipe` as opposed to |:close| or +/// |nvim_win_close|, which will close the buffer. /// /// @param window Window handle, or 0 for current window /// @param[out] err Error details, if any -- cgit