aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-04-15 17:55:57 +0800
committerGitHub <noreply@github.com>2024-04-15 17:55:57 +0800
commit4ec8fd43bfdf1924ee03e07afc8a46dfdd3c9b12 (patch)
treebb1483348455ada1c38c242769dafdc3ad00700d /src
parent5371ed36b73c006cfdebb7aa8d98703967f0d0fd (diff)
downloadrneovim-4ec8fd43bfdf1924ee03e07afc8a46dfdd3c9b12.tar.gz
rneovim-4ec8fd43bfdf1924ee03e07afc8a46dfdd3c9b12.tar.bz2
rneovim-4ec8fd43bfdf1924ee03e07afc8a46dfdd3c9b12.zip
fix(api): make width/height for split by nvim_open_win work (#28341)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/win_config.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c
index 11b6b17516..3bc9cd816f 100644
--- a/src/nvim/api/win_config.c
+++ b/src/nvim/api/win_config.c
@@ -224,7 +224,7 @@ Window nvim_open_win(Buffer buffer, Boolean enter, Dict(win_config) *config, Err
}
WinConfig fconfig = WIN_CONFIG_INIT;
- if (!parse_float_config(NULL, config, &fconfig, false, err)) {
+ if (!parse_win_config(NULL, config, &fconfig, false, err)) {
return 0;
}
@@ -263,8 +263,9 @@ Window nvim_open_win(Buffer buffer, Boolean enter, Dict(win_config) *config, Err
int flags = win_split_flags(fconfig.split, parent == NULL) | WSP_NOENTER;
TRY_WRAP(err, {
+ int size = (flags & WSP_VERT) ? fconfig.width : fconfig.height;
if (parent == NULL || parent == curwin) {
- wp = win_split_ins(0, flags, NULL, 0, NULL);
+ wp = win_split_ins(size, flags, NULL, 0, NULL);
} else {
tp = win_find_tabpage(parent);
switchwin_T switchwin;
@@ -272,7 +273,7 @@ Window nvim_open_win(Buffer buffer, Boolean enter, Dict(win_config) *config, Err
const int result = switch_win(&switchwin, parent, tp, true);
assert(result == OK);
(void)result;
- wp = win_split_ins(0, flags, NULL, 0, NULL);
+ wp = win_split_ins(size, flags, NULL, 0, NULL);
restore_win(&switchwin, true);
}
});
@@ -405,7 +406,7 @@ void nvim_win_set_config(Window window, Dict(win_config) *config, Error *err)
&& !(HAS_KEY_X(config, external) ? config->external : fconfig.external)
&& (has_split || has_vertical || was_split);
- if (!parse_float_config(win, config, &fconfig, !was_split || to_split, err)) {
+ if (!parse_win_config(win, config, &fconfig, !was_split || to_split, err)) {
return;
}
if (was_split && !to_split) {
@@ -1043,8 +1044,8 @@ static void generate_api_error(win_T *wp, const char *attribute, Error *err)
}
}
-static bool parse_float_config(win_T *wp, Dict(win_config) *config, WinConfig *fconfig, bool reconf,
- Error *err)
+static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fconfig, bool reconf,
+ Error *err)
{
#define HAS_KEY_X(d, key) HAS_KEY(d, win_config, key)
bool has_relative = false, relative_is_win = false, is_split = false;