symbols-outline: Add basic guides implementation
Shows guides around the outline (looks cool)
This commit is contained in:
@@ -30,6 +30,13 @@ D.state = {
|
|||||||
outline_buf = nil
|
outline_buf = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local markers = {
|
||||||
|
bottom = "└",
|
||||||
|
middle = "├",
|
||||||
|
vertical = "│",
|
||||||
|
horizontal = "─"
|
||||||
|
}
|
||||||
|
|
||||||
function D.goto_location()
|
function D.goto_location()
|
||||||
local current_line = vim.api.nvim_win_get_cursor(D.state.outline_win)[1]
|
local current_line = vim.api.nvim_win_get_cursor(D.state.outline_win)[1]
|
||||||
local node = D.state.linear_outline_items[current_line]
|
local node = D.state.linear_outline_items[current_line]
|
||||||
@@ -76,10 +83,28 @@ local function make_linear(outline_items)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function write(outline_items, bufnr, winnr)
|
local function write(outline_items, bufnr, winnr)
|
||||||
for _, value in ipairs(outline_items) do
|
for index, value in ipairs(outline_items) do
|
||||||
vim.api.nvim_buf_set_lines(bufnr, -2, -2, false, {
|
local line = " "
|
||||||
string.rep(" ", value.depth * 2) .. value.icon .. " " .. value.name
|
local isLast = index == #outline_items
|
||||||
})
|
|
||||||
|
if value.depth > 1 then
|
||||||
|
for i = 0, value.depth - 1, 1 do
|
||||||
|
if i == value.depth - 1 and not isLast then
|
||||||
|
-- do nothing for now :)
|
||||||
|
-- line = line .. markers.horizontal
|
||||||
|
elseif isLast and i % 2 == 0 then
|
||||||
|
line = line .. markers.bottom
|
||||||
|
elseif i % 2 == 0 then
|
||||||
|
line = line .. markers.middle
|
||||||
|
elseif i % 2 ~= 0 and not isLast then
|
||||||
|
line = line .. markers.horizontal
|
||||||
|
end
|
||||||
|
end
|
||||||
|
line = line .. " "
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_lines(bufnr, -2, -2, false,
|
||||||
|
{line .. value.icon .. " " .. value.name})
|
||||||
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