aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/window.c
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2023-07-24 14:19:01 +0100
committerSean Dewar <seandewar@users.noreply.github.com>2023-07-26 20:44:46 +0100
commit472271199e483d3f23d62c272b20c5290eec5474 (patch)
tree9965e5a35f07a77365d48148c251a52afd2b4d8c /src/nvim/api/window.c
parent5d921e28c1cc33eced22bbfa823460ca241e3dc1 (diff)
downloadrneovim-472271199e483d3f23d62c272b20c5290eec5474.tar.gz
rneovim-472271199e483d3f23d62c272b20c5290eec5474.tar.bz2
rneovim-472271199e483d3f23d62c272b20c5290eec5474.zip
feat(api): allow win_hide to close cmdwin or non-previous windows
This aligns its behaviour better with `nvim_win_close`. Note that `:hide` is actually incapable of closing the cmdwin, unlike `:close` and `:quit`, so this is a bit of a difference in behaviour.
Diffstat (limited to 'src/nvim/api/window.c')
-rw-r--r--src/nvim/api/window.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c
index 350d934825..f32a7e671d 100644
--- a/src/nvim/api/window.c
+++ b/src/nvim/api/window.c
@@ -362,10 +362,10 @@ Boolean nvim_win_is_valid(Window window)
/// @param[out] err Error details, if any
void nvim_win_hide(Window window, Error *err)
FUNC_API_SINCE(7)
- FUNC_API_TEXTLOCK
+ FUNC_API_TEXTLOCK_ALLOW_CMDWIN
{
win_T *win = find_window_by_handle(window, err);
- if (!win) {
+ if (!win || !can_close_in_cmdwin(win, err)) {
return;
}
@@ -397,20 +397,10 @@ void nvim_win_close(Window window, Boolean force, Error *err)
FUNC_API_TEXTLOCK_ALLOW_CMDWIN
{
win_T *win = find_window_by_handle(window, err);
- if (!win) {
+ if (!win || !can_close_in_cmdwin(win, err)) {
return;
}
- if (cmdwin_type != 0) {
- if (win == curwin) {
- cmdwin_result = Ctrl_C;
- return;
- } else if (win == cmdwin_old_curwin) {
- api_set_error(err, kErrorTypeException, "%s", e_cmdwin);
- return;
- }
- }
-
tabpage_T *tabpage = win_find_tabpage(win);
TryState tstate;
try_enter(&tstate);