aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/win_config.c
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2024-02-07 17:17:44 +0000
committerSean Dewar <6256228+seandewar@users.noreply.github.com>2024-03-08 23:24:03 +0000
commit5d58136cccc760f6d95eb45b46f2ad60f06b103b (patch)
tree6b58f8337b410a8cebb00bcaddd5631ac95f67b4 /src/nvim/api/win_config.c
parentb1e24f240baeea80dcf4a3d8453fed0230fb88fd (diff)
downloadrneovim-5d58136cccc760f6d95eb45b46f2ad60f06b103b.tar.gz
rneovim-5d58136cccc760f6d95eb45b46f2ad60f06b103b.tar.bz2
rneovim-5d58136cccc760f6d95eb45b46f2ad60f06b103b.zip
fix(api): make open_win/win_set_config check if splitting allowed
Problem: splitting is disallowed in some cases to prevent the window layout changes while a window is closing, but it's not checked for. Solution: check for this, and set the API error message directly. (Also sneak in a change to tui.c that got lost from #27352; it's a char* buf, and the memset is assuming one byte each anyway)
Diffstat (limited to 'src/nvim/api/win_config.c')
-rw-r--r--src/nvim/api/win_config.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c
index 3959e74af9..557c2f37f9 100644
--- a/src/nvim/api/win_config.c
+++ b/src/nvim/api/win_config.c
@@ -246,6 +246,10 @@ Window nvim_open_win(Buffer buffer, Boolean enter, Dict(win_config) *config, Err
}
}
+ if (!check_split_disallowed_err(parent ? parent : curwin, err)) {
+ return 0; // error already set
+ }
+
if (HAS_KEY_X(config, vertical) && !HAS_KEY_X(config, split)) {
if (config->vertical) {
fconfig.split = p_spr ? kWinSplitRight : kWinSplitLeft;
@@ -440,6 +444,10 @@ void nvim_win_set_config(Window window, Dict(win_config) *config, Error *err)
return;
}
+ if (!check_split_disallowed_err(win, err)) {
+ return; // error already set
+ }
+
if (was_split) {
win_T *new_curwin = NULL;