From cf16efc99c23228b6cbefa2d3b7b6d57c14f17e1 Mon Sep 17 00:00:00 2001 From: simrat39 Date: Mon, 19 Apr 2021 15:40:07 -0700 Subject: [PATCH] outline: Wipe state on buffer detach --- lua/symbols-outline.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lua/symbols-outline.lua b/lua/symbols-outline.lua index 9ac5e1e..baeec5f 100644 --- a/lua/symbols-outline.lua +++ b/lua/symbols-outline.lua @@ -30,6 +30,10 @@ D.state = { outline_buf = nil } +local function wipe_state() + D.state = {outline_items = {}, linear_outline_items = {}} +end + -- local markers = { -- bottom = "└", -- middle = "├", @@ -104,9 +108,8 @@ end local function write(outline_items, bufnr, winnr) for _, value in ipairs(outline_items) do local line = string.rep(" ", value.depth) - vim.api.nvim_buf_set_lines(bufnr, -2, -2, false, { - line .. value.icon .. " " .. value.name - }) + vim.api.nvim_buf_set_lines(bufnr, -2, -2, false, + {line .. value.icon .. " " .. value.name}) if value.detail ~= nil then local lines = vim.fn.line('$') @@ -133,6 +136,8 @@ end local function handler(_, _, result) D.state.outline_buf = vim.api.nvim_create_buf(false, true) + vim.api.nvim_buf_attach(D.state.outline_buf, false, + {on_detach = function(_, _) wipe_state() end}) local current_win = vim.api.nvim_get_current_win() local current_win_width = vim.api.nvim_win_get_width(current_win)