Add ability to open splits above/below all windows

This commit is contained in:
Sergey Popov 2024-08-10 13:32:41 +03:00
parent 2b74a777b9
commit f16fcc0d46
5 changed files with 32 additions and 2 deletions

View file

@ -401,6 +401,9 @@ The `kind` option can be one of the following values:
- `replace`
- `split`
- `split_above`
- `split_above_all`
- `split_below`
- `split_below_all`
- `vsplit`
- `auto` (`vsplit` if window would have 80 cols, otherwise `split`)

View file

@ -242,6 +242,9 @@ function M.complete(arglead)
"kind=tab",
"kind=split",
"kind=split_above",
"kind=split_above_all",
"kind=split_below",
"kind=split_below_all",
"kind=vsplit",
"kind=floating",
"kind=auto",

View file

@ -635,7 +635,19 @@ function M.validate_config()
if
validate_type(val, name, "string")
and not vim.tbl_contains(
{ "split", "vsplit", "split_above", "vsplit_left", "tab", "floating", "replace", "auto" },
{
"split",
"vsplit",
"split_above",
"split_above_all",
"split_below",
"split_below_all",
"vsplit_left",
"tab",
"floating",
"replace",
"auto",
},
val
)
then

View file

@ -281,6 +281,12 @@ function Buffer:show()
win = api.nvim_open_win(self.handle, true, { split = "below" })
elseif kind == "split_above" then
win = api.nvim_open_win(self.handle, true, { split = "above" })
elseif kind == "split_above_all" then
win = api.nvim_open_win(self.handle, true, { split = "above", win = -1 })
elseif kind == "split_below" then
win = api.nvim_open_win(self.handle, true, { split = "below" })
elseif kind == "split_below_all" then
win = api.nvim_open_win(self.handle, true, { split = "below", win = -1 })
elseif kind == "vsplit" then
win = api.nvim_open_win(self.handle, true, { split = "right", vertical = true })
elseif kind == "vsplit_left" then

View file

@ -369,7 +369,13 @@ function M:show()
end
end
if config.values.popup.kind == "split" or config.values.popup.kind == "split_above" then
if
config.values.popup.kind == "split"
or config.values.popup.kind == "split_above"
or config.values.popup.kind == "split_above_all"
or config.values.popup.kind == "split_below"
or config.values.popup.kind == "split_below_all"
then
vim.cmd.resize(vim.fn.line("$") + 1)
-- We do it again because things like the BranchConfigPopup come from an async context,