···11+local state = require("sense.state")
22+local autocmds = require("sense.autocmds")
33+44+local M = {}
55+66+---@param indicator sense.Indicator
77+function M.register(indicator)
88+ -- HACK: when used as lua-module and not as neovim plugin, try setup autocmds here
99+ if not vim.g.loaded_sense_nvim then
1010+ autocmds.setup()
1111+ vim.g.loaded_sense_nvim = true
1212+ end
1313+ table.insert(state.indicators, indicator)
1414+end
1515+1616+function M.clear_registered()
1717+ state.indicators = {}
1818+end
1919+2020+return M
···11-local config = require("sense.config")
21local log = require("sense.log")
33-local statuscol = require("sense.ui.builtin.statuscol")
44-local virtualtext = require("sense.ui.builtin.virtualtext")
55--- local virtual = require("sense.ui.virtual")
66-77-local M = {
88- ---@type sense.Indicator[]
99- indicators = {},
1010- ---@type table<integer, sense.Indicator[]>
1111- windows = {},
1212-}
22+local state = require("sense.state")
1331414-if config.presets.virtualtext.enabled then
1515- table.insert(M.indicators, virtualtext.gen_virtualtext_top(virtualtext.render_diagnostic_top))
1616- table.insert(M.indicators, virtualtext.gen_virtualtext_bot(virtualtext.render_diagnostic_bot))
1717-end
1818-if config.presets.statuscolumn.enabled then
1919- table.insert(M.indicators, statuscol.gen_statuscol_top(statuscol.render_diagnostic_top))
2020- table.insert(M.indicators, statuscol.gen_statuscol_bot(statuscol.render_diagnostic_bot))
2121-end
44+local M = {}
225236function M.attach(winid)
2424- M.windows[winid] = M.windows[winid] or {}
2525- if #M.windows[winid] > 0 then
77+ if #state.windows[winid].indicators > 0 then
268 return
279 end
2828- for _, i in ipairs(M.indicators) do
2929- table.insert(M.windows[winid], i:new(winid))
1010+ for _, i in ipairs(state.indicators) do
1111+ table.insert(state.windows[winid].indicators, i:new(winid))
3012 end
3131- log.debug("attached to window:", M.windows)
1313+ log.debug("attached to window:", state.windows)
3214end
33153416function M.detach(winid)
3535- for _, i in ipairs(M.windows[winid]) do
1717+ for _, i in ipairs(state.windows[winid].indicators) do
3618 i:destroy()
3719 end
3838- M.windows[winid] = nil
2020+ state.windows[winid] = nil
3921end
40224123function M.render(wininfo)
4224 M.attach(wininfo.winid)
4343- for _, c in ipairs(M.windows[wininfo.winid]) do
2525+ for _, c in ipairs(state.windows[wininfo.winid].indicators) do
4426 c:render(wininfo)
4527 end
4628end