feat: add statusline function (#10)

Problem: no way to expose compiling/watching state to statusline
plugins like lualine or heirline without polling status() and
formatting it manually.

Solution: add `require('preview').statusline()` that returns
'compiling', 'watching', or '' for direct use in statusline components.
This commit is contained in:
Barrett Ruth 2026-03-03 13:37:36 -05:00 committed by GitHub
parent 187474bb3d
commit bf2f4a78e2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 0 deletions

View file

@ -41,6 +41,7 @@
---@field toggle fun(bufnr?: integer) ---@field toggle fun(bufnr?: integer)
---@field open fun(bufnr?: integer) ---@field open fun(bufnr?: integer)
---@field status fun(bufnr?: integer): preview.Status ---@field status fun(bufnr?: integer): preview.Status
---@field statusline fun(bufnr?: integer): string
---@field get_config fun(): preview.Config ---@field get_config fun(): preview.Config
local M = {} local M = {}
@ -188,6 +189,19 @@ function M.status(bufnr)
return compiler.status(bufnr) return compiler.status(bufnr)
end end
---@param bufnr? integer
---@return string
function M.statusline(bufnr)
bufnr = bufnr or vim.api.nvim_get_current_buf()
local s = compiler.status(bufnr)
if s.compiling then
return 'compiling'
elseif s.watching then
return 'watching'
end
return ''
end
M._test = { M._test = {
---@diagnostic disable-next-line: assign-type-mismatch ---@diagnostic disable-next-line: assign-type-mismatch
reset = function() reset = function()

View file

@ -100,4 +100,12 @@ describe('preview', function()
helpers.delete_buffer(bufnr) helpers.delete_buffer(bufnr)
end) end)
end) end)
describe('statusline', function()
it('returns empty string when idle', function()
local bufnr = helpers.create_buffer({})
assert.are.equal('', preview.statusline(bufnr))
helpers.delete_buffer(bufnr)
end)
end)
end) end)