snacks.nvim/docs/win.md
2024-11-06 10:56:23 +01:00

2.8 KiB

🍿 win

⚙️ Config

---@class snacks.win.Config: vim.api.keyset.win_config
---@field style? string merges with config from `Snacks.config.views[view]`
---@field show? boolean Show the window immediately (default: true)
---@field minimal? boolean
---@field position? "float"|"bottom"|"top"|"left"|"right"
---@field buf? number
---@field file? string
---@field enter? boolean
---@field backdrop? number|false
---@field win? vim.api.keyset.win_config
---@field wo? vim.wo
---@field bo? vim.bo
---@field keys? table<string, false|string|fun(self: snacks.win)|snacks.win.Keys>
---@field on_buf? fun(self: snacks.win)
---@field on_win? fun(self: snacks.win)
{
  show = true,
  relative = "editor",
  position = "float",
  minimal = true,
  wo = {
    winhighlight = "Normal:NormalFloat,NormalNC:NormalFloat",
  },
  bo = {},
  keys = {
    q = "close",
  },
}

🎨 Styles

minimal

{
  wo = {
    cursorcolumn = false,
    cursorline = false,
    cursorlineopt = "both",
    fillchars = "eob: ,lastline:…",
    list = false,
    listchars = "extends:…,tab:  ",
    number = false,
    relativenumber = false,
    signcolumn = "no",
    spell = false,
    winbar = "",
    statuscolumn = "",
    winfixheight = true,
    winfixwidth = true,
    wrap = false,
  },
}

float

{
  position = "float",
  backdrop = 60,
  height = 0.9,
  width = 0.9,
  zindex = 50,
}

split

{
  position = "bottom",
  height = 0.4,
  width = 0.4,
}

📚 Types

---@class snacks.win.Keys: vim.api.keyset.keymap
---@field [1]? string
---@field [2]? string|fun(self: snacks.win): any
---@field mode? string|string[]

📦 Module

---@class snacks.win
---@field id number
---@field buf? number
---@field win? number
---@field opts snacks.win.Config
---@field augroup? number
---@field backdrop? snacks.win
Snacks.win = {}

Snacks.win()

---@type fun(opts? :snacks.win.Config): snacks.win
Snacks.win()

Snacks.win.new()

---@param opts? snacks.win.Config
---@return snacks.win
Snacks.win.new(opts)

Snacks.win.resolve()

---@param ... snacks.win.Config|string
---@return snacks.win.Config
Snacks.win.resolve(...)

win:add_padding()

win:add_padding()

win:buf_valid()

win:buf_valid()

win:close()

---@param opts? { buf: boolean }
win:close(opts)

win:hide()

win:hide()

win:is_floating()

win:is_floating()

win:show()

win:show()

win:size()

---@return { height: number, width: number }
win:size()

win:toggle()

win:toggle()

win:update()

win:update()

win:valid()

win:valid()

win:win_valid()

win:win_valid()