Mirror option for bottom_pane layout_strategy (#847)
* functional mirror opt for bottom_pane strategy * [docgen] Update doc/telescope.txt skip-checks: true * forgot 'end' to close function * [docgen] Update doc/telescope.txt skip-checks: true Co-authored-by: Github Actions <actions@github>
This commit is contained in:
@@ -650,6 +650,13 @@ layout_strategies.current_buffer = make_documented_layout('current_buffer', {
|
|||||||
}
|
}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
layout_strategies.bottom_pane = function(self, max_columns, max_lines)
|
||||||
|
local layout_config = validate_layout_config(self.layout_config or {}, {
|
||||||
|
height = "The height of the layout",
|
||||||
|
mirror = "Flip the default locations of preview/results windows (requires use of previewer)",
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
--- Bottom pane can be used to create layouts similar to "ivy".
|
--- Bottom pane can be used to create layouts similar to "ivy".
|
||||||
---
|
---
|
||||||
--- For an easy ivy configuration, see |themes.get_ivy()|
|
--- For an easy ivy configuration, see |themes.get_ivy()|
|
||||||
@@ -672,29 +679,45 @@ layout_strategies.bottom_pane = make_documented_layout('bottom_pane', vim.tbl_ex
|
|||||||
prompt_width = prompt_width - 2
|
prompt_width = prompt_width - 2
|
||||||
end
|
end
|
||||||
|
|
||||||
local result_width
|
local left_side_width
|
||||||
if self.previewer then
|
if self.previewer then
|
||||||
result_width = math.floor(prompt_width / 2)
|
left_side_width = math.floor(prompt_width / 2)
|
||||||
|
|
||||||
|
local base_col
|
||||||
|
if layout_config.mirror then
|
||||||
|
base_col = 0
|
||||||
|
else
|
||||||
|
base_col = left_side_width + 1
|
||||||
|
end
|
||||||
|
|
||||||
local base_col = result_width + 1
|
|
||||||
if has_border then
|
if has_border then
|
||||||
preview = vim.tbl_deep_extend("force", {
|
preview = vim.tbl_deep_extend("force", {
|
||||||
col = base_col + 2,
|
col = base_col + 2,
|
||||||
line = max_lines - result_height + 1,
|
line = max_lines - result_height + 1,
|
||||||
width = prompt_width - result_width - 2,
|
width = prompt_width - left_side_width - 2,
|
||||||
height = result_height - 1,
|
height = result_height - 1,
|
||||||
}, preview)
|
}, preview)
|
||||||
else
|
else
|
||||||
preview = vim.tbl_deep_extend("force", {
|
preview = vim.tbl_deep_extend("force", {
|
||||||
col = base_col,
|
col = base_col,
|
||||||
line = max_lines - result_height,
|
line = max_lines - result_height,
|
||||||
width = prompt_width - result_width,
|
width = prompt_width - left_side_width,
|
||||||
height = result_height,
|
height = result_height,
|
||||||
}, preview)
|
}, preview)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
preview = nil
|
preview = nil
|
||||||
result_width = prompt_width
|
left_side_width = prompt_width
|
||||||
|
end
|
||||||
|
|
||||||
|
local result_col
|
||||||
|
if layout_config.mirror and self.previewer then
|
||||||
|
result_col = left_side_width + 2
|
||||||
|
if has_border then
|
||||||
|
left_side_width = left_side_width - 2
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result_col = col
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -707,9 +730,9 @@ layout_strategies.bottom_pane = make_documented_layout('bottom_pane', vim.tbl_ex
|
|||||||
}),
|
}),
|
||||||
results = vim.tbl_deep_extend("force", results, {
|
results = vim.tbl_deep_extend("force", results, {
|
||||||
line = max_lines - result_height,
|
line = max_lines - result_height,
|
||||||
col = col,
|
col = result_col,
|
||||||
height = result_height,
|
height = result_height,
|
||||||
width = result_width,
|
width = left_side_width,
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
end)
|
end)
|
||||||
|
|||||||
Reference in New Issue
Block a user