From cbdba2dcb938379bcc6971b687e864198a5b9615 Mon Sep 17 00:00:00 2001 From: Olivier Roques Date: Sat, 22 May 2021 00:51:10 +0200 Subject: [PATCH] Fix #14: improve inactive window detection --- lua/hardline.lua | 14 +++++++++++--- plugin/hardline.vim | 5 +++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lua/hardline.lua b/lua/hardline.lua index 740763f..f2d1154 100644 --- a/lua/hardline.lua +++ b/lua/hardline.lua @@ -4,7 +4,7 @@ -------------------- VARIABLES ----------------------------- local fn, cmd, vim = vim.fn, vim.cmd, vim -local o, wo = vim.o, vim.wo +local g, o, wo = vim.g, vim.o, vim.wo local fmt = string.format local common = require('hardline.common') local bufferline = require('hardline.bufferline') @@ -139,18 +139,26 @@ end -------------------- STATUSLINE ---------------------------- function M.update_statusline() - local sections = cache.previous + local sections = cache[g.statusline_winid] if common.is_active() or not sections then sections = M.options.sections sections = remove_hidden_sections(sections) sections = load_sections(sections) sections = remove_empty_sections(sections) sections = aggregate_sections(sections) - cache.previous, cache.current = cache.current, sections + cache[g.statusline_winid] = sections end return table.concat(highlight_sections(sections)) end +function M.clear_cache() + for winid, _ in pairs(cache) do + if fn.win_id2win(winid) == 0 then + cache[winid] = nil + end + end +end + -------------------- BUFFERLINE ---------------------------- function M.update_bufferline() local sections = {} diff --git a/plugin/hardline.vim b/plugin/hardline.vim index c24cddc..b3e5baf 100644 --- a/plugin/hardline.vim +++ b/plugin/hardline.vim @@ -7,3 +7,8 @@ if exists('g:loaded_hardline') endif let g:loaded_hardline = 1 + +augroup hardline + autocmd! + autocmd WinClosed * lua require('hardline').clear_cache() +augroup END