mirror of
https://github.com/folke/snacks.nvim
synced 2025-08-04 10:49:08 +00:00
feat: config & setup
This commit is contained in:
parent
fc929e878a
commit
c98c4c0307
2 changed files with 79 additions and 0 deletions
75
lua/snacks/init.lua
Normal file
75
lua/snacks/init.lua
Normal file
|
@ -0,0 +1,75 @@
|
|||
---@class Snacks
|
||||
---@field bigfile snacks.bigfile
|
||||
---@field bufdelete snacks.bufdelete
|
||||
---@field quickfile snacks.quickfile
|
||||
---@field statuscolumn snacks.statuscolumn
|
||||
local M = {}
|
||||
|
||||
setmetatable(M, {
|
||||
__index = function(t, k)
|
||||
---@diagnostic disable-next-line: no-unknown
|
||||
t[k] = require("snacks." .. k)
|
||||
return t[k]
|
||||
end,
|
||||
})
|
||||
|
||||
_G.Snacks = M
|
||||
|
||||
---@class snacks.Opts
|
||||
---@field bigfile snacks.bigfile.Config | { enabled: boolean }
|
||||
---@field quickfile { enabled: boolean }
|
||||
---@field statuscolumn snacks.statuscolumn.Config | { enabled: boolean }
|
||||
local config = {
|
||||
bigfile = { enabled = true },
|
||||
quickfile = { enabled = true },
|
||||
statuscolumn = { enabled = true },
|
||||
}
|
||||
|
||||
---@class snacks.Config: snacks.Opts
|
||||
M.config = setmetatable({}, {
|
||||
__index = function(_, k)
|
||||
return config[k]
|
||||
end,
|
||||
})
|
||||
|
||||
---@generic T: table
|
||||
---@param snack string
|
||||
---@param defaults T
|
||||
---@return T
|
||||
function M.config.get(snack, defaults)
|
||||
config[snack] = vim.tbl_deep_extend("force", defaults, config[snack] or {})
|
||||
return config[snack]
|
||||
end
|
||||
|
||||
---@param opts snacks.Opts?
|
||||
function M.setup(opts)
|
||||
config = vim.tbl_deep_extend("force", config, opts or {})
|
||||
|
||||
local group = vim.api.nvim_create_augroup("snacks", { clear = true })
|
||||
|
||||
if M.config.bigfile.enabled then
|
||||
vim.api.nvim_create_autocmd("BufReadPre", {
|
||||
group = group,
|
||||
once = true,
|
||||
callback = function()
|
||||
Snacks.bigfile.setup()
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
if M.config.quickfile.enabled then
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
group = group,
|
||||
once = true,
|
||||
callback = function()
|
||||
Snacks.quickfile.setup()
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
if M.config.statuscolumn.enabled then
|
||||
vim.o.statuscolumn = [[%!v:lua.require'snacks.statuscolumn'.get()]]
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
Loading…
Add table
Add a link
Reference in a new issue