mirror of
https://github.com/stevearc/aerial.nvim
synced 2024-09-16 14:34:08 +02:00
feat: nav view can preview symbol in rightmost column (#235)
This commit is contained in:
parent
7371322c60
commit
055d2209ad
2 changed files with 21 additions and 2 deletions
|
@ -292,6 +292,8 @@ local default_options = {
|
|||
},
|
||||
-- Jump to symbol in source window when the cursor moves
|
||||
autojump = false,
|
||||
-- Show a preview of the code in the right column, when there are no child symbols
|
||||
preview = false,
|
||||
-- Keymaps in the nav window
|
||||
keymaps = {
|
||||
["<CR>"] = "actions.jump",
|
||||
|
|
|
@ -29,7 +29,7 @@ local _active_nav = nil
|
|||
local function create_buf()
|
||||
local bufnr = vim.api.nvim_create_buf(false, true)
|
||||
vim.bo[bufnr].buftype = "nofile"
|
||||
vim.bo[bufnr].bufhidden = "wipe"
|
||||
vim.bo[bufnr].bufhidden = "hide"
|
||||
vim.bo[bufnr].swapfile = false
|
||||
vim.bo[bufnr].modifiable = false
|
||||
vim.bo[bufnr].filetype = "aerial-nav"
|
||||
|
@ -211,6 +211,15 @@ local function render_symbols(panel)
|
|||
panel.height = #lines
|
||||
end
|
||||
|
||||
---@param panel aerial.NavPanel
|
||||
function AerialNav:preview_symbol(panel)
|
||||
local symbol = self:get_current_symbol()
|
||||
if symbol then
|
||||
vim.api.nvim_win_set_buf(panel.winid, self.bufnr)
|
||||
navigation.select_symbol(symbol, panel.winid, self.bufnr, { jump = false })
|
||||
end
|
||||
end
|
||||
|
||||
---@param symbol aerial.Symbol
|
||||
function AerialNav:focus_symbol(symbol)
|
||||
local siblings, lnum = get_all_siblings(symbol)
|
||||
|
@ -220,7 +229,12 @@ function AerialNav:focus_symbol(symbol)
|
|||
|
||||
render_symbols(self.left)
|
||||
render_symbols(self.main)
|
||||
render_symbols(self.right)
|
||||
if config.nav.preview and vim.tbl_isempty(self.right.symbols) then
|
||||
self:preview_symbol(self.right)
|
||||
else
|
||||
vim.api.nvim_win_set_buf(self.right.winid, self.right.bufnr)
|
||||
render_symbols(self.right)
|
||||
end
|
||||
|
||||
if vim.api.nvim_win_is_valid(self.main.winid) then
|
||||
vim.api.nvim_win_set_cursor(self.main.winid, { lnum, 0 })
|
||||
|
@ -291,6 +305,9 @@ function AerialNav:close()
|
|||
for _, id in ipairs(self.autocmds) do
|
||||
vim.api.nvim_del_autocmd(id)
|
||||
end
|
||||
for _, bufnr in ipairs({ self.left.bufnr, self.main.bufnr, self.right.bufnr }) do
|
||||
vim.api.nvim_buf_delete(bufnr, { force = true })
|
||||
end
|
||||
self.autocmds = {}
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue