From cbc448149f9b3760a73fe6f50db7d224b40cdd95 Mon Sep 17 00:00:00 2001 From: Amirabbas Fazelinia Date: Fri, 27 Jan 2023 22:53:30 +0330 Subject: [PATCH] fix(state): resolve conflict with neo-tree.nvim - Only restore the last winbar when the winbar was affected by barbecue previously. - Do not remove the last winbar from window variables. Related: #54, #53 --- lua/barbecue/ui.lua | 4 +++- lua/barbecue/ui/state.lua | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lua/barbecue/ui.lua b/lua/barbecue/ui.lua index 688fc13..861ab46 100644 --- a/lua/barbecue/ui.lua +++ b/lua/barbecue/ui.lua @@ -128,7 +128,9 @@ function M.update(winnr) or vim.tbl_contains(config.user.exclude_filetypes, vim.bo[bufnr].filetype) or vim.api.nvim_win_get_config(winnr).relative ~= "" then - vim.wo[winnr].winbar = state.get_last_winbar(winnr) + local last_winbar = state.get_last_winbar(winnr) + if last_winbar ~= nil then vim.wo[winnr].winbar = last_winbar end + state.clear(winnr) return diff --git a/lua/barbecue/ui/state.lua b/lua/barbecue/ui/state.lua index b15a213..f3589a6 100644 --- a/lua/barbecue/ui/state.lua +++ b/lua/barbecue/ui/state.lua @@ -8,6 +8,10 @@ local VAR_ENTRIES = "barbecue_entries" ---@param winnr number ---@return string|nil function M.get_last_winbar(winnr) + local was_affected_ok, was_affected = + pcall(vim.api.nvim_win_get_var, winnr, VAR_WAS_AFFECTED) + if not was_affected_ok or not was_affected then return nil end + local last_winbar_ok, last_winbar = pcall(vim.api.nvim_win_get_var, winnr, VAR_LAST_WINBAR) @@ -42,9 +46,8 @@ end function M.save(winnr, entries) local was_affected_ok, was_affected = pcall(vim.api.nvim_win_get_var, winnr, VAR_WAS_AFFECTED) - if was_affected_ok and was_affected then - pcall(vim.api.nvim_win_del_var, winnr, VAR_LAST_WINBAR) - else + + if not was_affected_ok or not was_affected then vim.api.nvim_win_set_var(winnr, VAR_WAS_AFFECTED, true) vim.api.nvim_win_set_var(winnr, VAR_LAST_WINBAR, vim.wo[winnr].winbar) end