197 lines · 5.1 KB
---@brief [[
--- glaze.nvim floating window (based on lazy.nvim)
--- Creates centered floating window with backdrop
---@brief ]]

local M = {}

---@class GlazeFloatOptions
---@field size? { width: number, height: number }
---@field border? string
---@field title? string
---@field zindex? number

---@class GlazeFloat
---@field buf number
---@field win number
---@field opts GlazeFloatOptions
---@field win_opts table
---@field backdrop_buf? number
---@field backdrop_win? number
local Float = {}

local _id = 0

---@param opts? GlazeFloatOptions
---@return GlazeFloat
function Float.new(opts)
  local self = setmetatable({}, { __index = Float })
  return self:init(opts)
end

---@param opts? GlazeFloatOptions
function Float:init(opts)
  require("glaze.colors").setup()

  _id = _id + 1
  self.id = _id

  local config = require("glaze").config
  self.opts = vim.tbl_deep_extend("force", {