docs: notifier

This commit is contained in:
Folke Lemaitre 2024-11-06 15:52:19 +01:00
parent 9ffcea77f1
commit 6bbc7df37a
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
2 changed files with 67 additions and 58 deletions

View file

@ -7,6 +7,50 @@ local M = setmetatable({}, {
end,
})
--- Render styles:
--- * compact: simple border title with message
--- * fancy: similar to the default nvim-notify style
---@alias snacks.notifier.style snacks.notifier.render|"compact"|"fancy"
--- ### Notifications
---
--- Notification options
---@class snacks.notifier.Notif.opts
---@field id? number|string
---@field msg? string
---@field level? number|snacks.notifier.level
---@field title? string
---@field icon? string
---@field timeout? number
---@field once? boolean
---@field ft? string
---@field keep? fun(notif: snacks.notifier.Notif): boolean
---@field style? snacks.notifier.style
--- Notification object
---@class snacks.notifier.Notif: snacks.notifier.Notif.opts
---@field msg string
---@field id number|string
---@field win? snacks.win
---@field icon string
---@field level snacks.notifier.level
---@field timeout number
---@field dirty? boolean
---@field shown? number timestamp in ms
---@field added number timestamp in ms
---@field layout? { width: number, height: number, top?: number }
--- ### Rendering
---@alias snacks.notifier.render fun(buf: number, notif: snacks.notifier.Notif, ctx: snacks.notifier.ctx)
---@alias snacks.notifier.hl "title"|"icon"|"border"|"footer"|"msg"
---@class snacks.notifier.ctx
---@field opts snacks.win.Config
---@field notifier snacks.notifier
---@field hl table<snacks.notifier.hl, string>
---@field ns number
Snacks.config.style("notification", {
border = "rounded",
zindex = 100,
@ -24,21 +68,6 @@ local N = {}
N.ns = vim.api.nvim_create_namespace("snacks.notifier")
---@alias snacks.notifier.hl "title"|"icon"|"border"|"footer"|"msg"
---@class snacks.notifier.ctx
---@field opts snacks.win.Config
---@field notifier snacks.notifier
---@field hl table<snacks.notifier.hl, string>
---@field ns number
---@alias snacks.notifier.render fun(buf: number, notif: snacks.notifier.Notif, ctx: snacks.notifier.ctx)
--- Render styles:
--- * compact: simple border title with message
--- * fancy: similar to the default nvim-notify style
---@alias snacks.notifier.style snacks.notifier.render|"compact"|"fancy"
---@type table<string, snacks.notifier.render>
N.styles = {
-- compact style using border title
@ -115,30 +144,6 @@ local function hl(name, level)
return "SnacksNotifier" .. name .. (level and (level:sub(1, 1):upper() .. level:sub(2):lower()) or "")
end
---@class snacks.notifier.Notif.opts
---@field id? number|string
---@field msg? string
---@field level? number|snacks.notifier.level
---@field title? string
---@field icon? string
---@field timeout? number
---@field once? boolean
---@field ft? string
---@field keep? fun(notif: snacks.notifier.Notif): boolean
---@field style? snacks.notifier.style
---@class snacks.notifier.Notif: snacks.notifier.Notif.opts
---@field msg string
---@field id number|string
---@field win? snacks.win
---@field icon string
---@field level snacks.notifier.level
---@field timeout number
---@field dirty? boolean
---@field shown? number timestamp in ms
---@field added number timestamp in ms
---@field layout? { width: number, height: number, top?: number }
local _id = 0
local function next_id()
@ -427,8 +432,6 @@ end
-- Global instance
local notifier = N.new()
-- Public functions
---@param msg string
---@param level? snacks.notifier.level|number
---@param opts? snacks.notifier.Notif.opts