outline: Setup basic autocmds

Update the outline whenever we change tabs, write to buffer, leave
insert mode etc etc
This commit is contained in:
simrat39
2021-04-19 15:54:58 -07:00
parent cf16efc99c
commit be54b32ee1

View File

@@ -13,7 +13,11 @@ end
local function setupCommands() local function setupCommands()
vim.cmd("command! " .. "SymbolsOutline " .. vim.cmd("command! " .. "SymbolsOutline " ..
":lua require'rust-tools-debug'.R('symbols-outline').toggle_outline()") ":lua require'symbols-outline'.R('symbols-outline').toggle_outline()")
end
local function setup_autocmd()
vim.cmd("autocmd InsertLeave,BufEnter,BufWinEnter,TabEnter,BufWritePost * :lua require('symbols-outline')._refresh()")
end end
local function getParams() local function getParams()
@@ -134,6 +138,32 @@ local function disable_nums(winnr)
vim.api.nvim_win_set_option(winnr, "number", false) vim.api.nvim_win_set_option(winnr, "number", false)
end end
local function delete_all_lines(bufnr)
vim.api.nvim_buf_set_lines(bufnr, 0, -2, false, {})
end
local function clear_virt_text(bufnr)
vim.api.nvim_buf_clear_namespace(bufnr, -1, 0, -1)
end
function D._refresh()
if D.state.outline_buf ~= nil then
vim.lsp.buf_request(0, "textDocument/documentSymbol", getParams(),
function(_, _, result)
D.state.outline_items = parse(result)
D.state.linear_outline_items = make_linear(parse(result))
clear_virt_text(D.state.outline_buf)
delete_all_lines(D.state.outline_buf)
write(D.state.outline_items, D.state.outline_buf,
D.state.outline_win)
delete_last_line(D.state.outline_buf)
-- goto_first_line()
end)
end
end
local function handler(_, _, result) local function handler(_, _, result)
D.state.outline_buf = vim.api.nvim_create_buf(false, true) D.state.outline_buf = vim.api.nvim_create_buf(false, true)
vim.api.nvim_buf_attach(D.state.outline_buf, false, vim.api.nvim_buf_attach(D.state.outline_buf, false,
@@ -161,6 +191,9 @@ function D.toggle_outline()
vim.lsp.buf_request(0, "textDocument/documentSymbol", getParams(), handler) vim.lsp.buf_request(0, "textDocument/documentSymbol", getParams(), handler)
end end
function D.setup() setupCommands() end function D.setup()
setupCommands()
setup_autocmd()
end
return D return D