diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-03-03 17:30:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-03 17:30:58 +0100 |
commit | bcbb96e31b88eff7a1629c7c8a5f1d4eacb32829 (patch) | |
tree | c25dbfefa127a5f8fc30a4900856a788173819e5 /src | |
parent | 8e54847fdf3c4e3c9ed1b4ae8a026b452419c6bf (diff) | |
parent | c8f310825cf92da2feb25a7298998fcd1da5a769 (diff) | |
download | rneovim-bcbb96e31b88eff7a1629c7c8a5f1d4eacb32829.tar.gz rneovim-bcbb96e31b88eff7a1629c7c8a5f1d4eacb32829.tar.bz2 rneovim-bcbb96e31b88eff7a1629c7c8a5f1d4eacb32829.zip |
Merge pull request #9667 from bfredl/winclose
api: add nvim_win_close() to close window by id
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/window.c | 27 | ||||
-rw-r--r-- | src/nvim/ex_docmd.c | 2 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c index e1d84cfc9e..157f73c9fa 100644 --- a/src/nvim/api/window.c +++ b/src/nvim/api/window.c @@ -9,6 +9,7 @@ #include "nvim/api/window.h" #include "nvim/api/private/defs.h" #include "nvim/api/private/helpers.h" +#include "nvim/ex_docmd.h" #include "nvim/vim.h" #include "nvim/buffer.h" #include "nvim/cursor.h" @@ -470,3 +471,29 @@ void nvim_win_config(Window window, Integer width, Integer height, win->w_pos_changed = true; } } + +/// Close a window. +/// +/// This is equivalent to |:close| with count except that it takes a window id. +/// +/// @param window Window handle +/// @param force Behave like `:close!` The last window of a buffer with +/// unwritten changes can be closed. The buffer will become +/// hidden, even if 'hidden' is not set. +/// +/// @param[out] err Error details, if any +/// @return Window number +void nvim_win_close(Window window, Boolean force, Error *err) + FUNC_API_SINCE(6) +{ + win_T *win = find_window_by_handle(window, err); + if (!win) { + return; + } + tabpage_T *tabpage = win_find_tabpage(win); + + TryState tstate; + try_enter(&tstate); + ex_win_close(force, win, tabpage == curtab ? NULL : tabpage); + vim_ignored = try_leave(&tstate, err); +} diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 8f9af1c2ec..6b39ad8e87 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -6170,7 +6170,7 @@ static void ex_pclose(exarg_T *eap) * Close window "win" and take care of handling closing the last window for a * modified buffer. */ -static void +void ex_win_close( int forceit, win_T *win, |