Merge pull request #84 from jamestrew/fixeds-width

feat: add fixed width option
This commit is contained in:
sim
2021-11-25 11:34:13 -08:00
committed by GitHub
4 changed files with 25 additions and 9 deletions

View File

@@ -32,6 +32,7 @@ vim.g.symbols_outline = {
show_guides = true,
auto_preview = true,
position = 'right',
relative_width = true,
width = 25,
show_numbers = false,
show_relative_numbers = false,
@@ -84,7 +85,8 @@ vim.g.symbols_outline = {
| highlight_hovered_item | Whether to highlight the currently hovered symbol (high cpu usage) | boolean | true |
| show_guides | Whether to show outline guides | boolean | true |
| position | Where to open the split window | 'right' or 'left' | 'right' |
| width | How big the window is (relative to the current split) | int | 25 |
| relative_width | Whether width of window is set relative to existing windows | boolean | true |
| width | Width of window (as a % or columns based on `relative_width`) | int | 25 |
| auto_preview | Show a preview of the code on hover | boolean | true |
| show_numbers | Shows numbers with the outline | boolean | false |
| show_relative_numbers | Shows relative numbers with the outline | boolean | false |

View File

@@ -123,10 +123,21 @@ position
Type: 'right' or 'left'
-----------------------------------------------------------------------------
relative_width
Whether the width of the window is relative to the current split or an
absolute width
Default: true ~
Type: boolean
-----------------------------------------------------------------------------
width
How big the window is (relative to the current split)
Width of the window as a percentage of the current split
(`relative_width `= true) or as number of columns (`relative_width `= false)
Default: 25 ~

View File

@@ -6,6 +6,7 @@ M.defaults = {
highlight_hovered_item = true,
show_guides = true,
position = 'right',
relative_width = true,
width = 25,
auto_preview = true,
show_numbers = false,
@@ -68,7 +69,14 @@ function M.get_position_navigation_direction()
end
end
function M.get_width_percentage() return M.options.width / 100 end
function M.get_window_width()
if M.options.relative_width then
return math.ceil(vim.api.nvim_win_get_width(0) * (M.options.width / 100))
else
return M.options.width
end
end
function M.get_split_command()
if M.options.position == 'left' then

View File

@@ -11,15 +11,10 @@ function M.setup_view()
-- delete buffer when window is closed / buffer is hidden
vim.api.nvim_buf_set_option(bufnr, "bufhidden", "delete")
local current_win = vim.api.nvim_get_current_win()
local current_win_width = vim.api.nvim_win_get_width(current_win)
-- create a split
vim.cmd(config.get_split_command())
-- resize to a % of the current window size
vim.cmd("vertical resize " ..
math.ceil(current_win_width * config.get_width_percentage()))
vim.cmd("vertical resize " .. config.get_window_width())
-- get current (outline) window and attach our buffer to it
local winnr = vim.api.nvim_get_current_win()