diff --git a/lua/lylla/statusline.lua b/lua/lylla/statusline.lua index ddf3b5c..0b72d1c 100644 --- a/lua/lylla/statusline.lua +++ b/lua/lylla/statusline.lua @@ -13,8 +13,8 @@ local statusline = {} statusline.wins = {} ---@class lylla.proto ----@field new fun(self, win): lylla.proto -function statusline:new(win) +---@field new fun(win: integer): lylla.proto +function statusline.new(win) if statusline.wins[win] then statusline.wins[win]:close() end @@ -27,9 +27,24 @@ function statusline:new(win) return stl end +---@class lylla.proto +---@field try_new fun(win: integer?): lylla.proto +function statusline.try_new(win) + win = win or vim.api.nvim_get_current_win() + + if statusline.wins[win] then + return statusline.wins[win] + end + return statusline.new(win) +end + ---@class lylla.proto ---@field init fun(self) function statusline:init() + if self.initialized then + return + end + local err, err_kind ---@diagnostic disable-next-line: assign-type-mismatch self.timer, err, err_kind = vim.uv.new_timer() @@ -58,6 +73,8 @@ function statusline:init() end, }) end + + self.initialized = true end ---@class lylla.proto diff --git a/plugin/lylla.lua b/plugin/lylla.lua index f105433..1582711 100644 --- a/plugin/lylla.lua +++ b/plugin/lylla.lua @@ -49,10 +49,7 @@ local function init() vim.api.nvim_create_autocmd({ "UIEnter", "WinNew", "WinEnter" }, { group = vim.api.nvim_create_augroup("@lylla.win", { clear = true }), callback = function() - local win = vim.api.nvim_get_current_win() - if not require("lylla.statusline").wins[win] then - require("lylla.statusline"):new(win):init() - end + require("lylla.statusline").try_new():init() end, })