outline: Highlight item in outline when hovering over it in code
This commit is contained in:
@@ -20,7 +20,7 @@ local function setup_autocmd()
|
|||||||
vim.cmd(
|
vim.cmd(
|
||||||
"autocmd InsertLeave,BufEnter,BufWinEnter,TabEnter,BufWritePost * :lua require('symbols-outline')._refresh()")
|
"autocmd InsertLeave,BufEnter,BufWinEnter,TabEnter,BufWritePost * :lua require('symbols-outline')._refresh()")
|
||||||
vim.cmd(
|
vim.cmd(
|
||||||
"autocmd BufEnter,TabEnter * :lua print('Bruh')")
|
"autocmd CursorHold * :lua require('symbols-outline')._highlight_current_item()")
|
||||||
end
|
end
|
||||||
|
|
||||||
local function getParams()
|
local function getParams()
|
||||||
@@ -111,6 +111,7 @@ local function setup_highlights()
|
|||||||
local symbol = symbols[value]
|
local symbol = symbols[value]
|
||||||
highlight_text(value, symbol.icon, symbol.hl)
|
highlight_text(value, symbol.icon, symbol.hl)
|
||||||
end
|
end
|
||||||
|
vim.cmd('hi FocusedSymbol guibg=#e50050')
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_lines(outline_items, bufnr, winnr, lines)
|
local function get_lines(outline_items, bufnr, winnr, lines)
|
||||||
@@ -181,6 +182,36 @@ function D._refresh()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local hovered_hl_ns = vim.api.nvim_create_namespace("hovered_item")
|
||||||
|
|
||||||
|
function D._highlight_current_item()
|
||||||
|
-- setup_highlights()
|
||||||
|
vim.api.nvim_buf_clear_namespace(D.state.outline_buf, hovered_hl_ns, 0, -1)
|
||||||
|
|
||||||
|
if D.state.outline_buf == nil or vim.api.nvim_get_current_buf() ==
|
||||||
|
D.state.outline_buf then return end
|
||||||
|
|
||||||
|
local hovered_line = vim.api.nvim_win_get_cursor(
|
||||||
|
vim.api.nvim_get_current_win())[1]
|
||||||
|
|
||||||
|
local nodes = {}
|
||||||
|
for index, value in ipairs(D.state.linear_outline_items) do
|
||||||
|
if value.line == hovered_line - 1 then
|
||||||
|
value.line_in_outline = index
|
||||||
|
table.insert(nodes, value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, value in ipairs(nodes) do
|
||||||
|
vim.api.nvim_buf_add_highlight(D.state.outline_buf, hovered_hl_ns,
|
||||||
|
"FocusedSymbol",
|
||||||
|
value.line_in_outline - 1,
|
||||||
|
value.depth * 2, -1)
|
||||||
|
vim.api.nvim_win_set_cursor(D.state.outline_win,
|
||||||
|
{value.line_in_outline, 1})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function set_onEnter_keymap(bufnr)
|
local function set_onEnter_keymap(bufnr)
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "<Cr>",
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "<Cr>",
|
||||||
":lua require('symbols-outline').goto_location()<Cr>",
|
":lua require('symbols-outline').goto_location()<Cr>",
|
||||||
|
|||||||
Reference in New Issue
Block a user