nvim: add psoxizsh.entrypoint
these modules serve as the entrypoint for users to enter psoxizsh's neovim configuration.
This commit is contained in:
parent
b17c56305c
commit
f4cf1b75db
|
@ -0,0 +1,108 @@
|
|||
|
||||
---@class psoxizsh.entrypoint.config
|
||||
local M = {}
|
||||
|
||||
---@class PsoxizshConfig
|
||||
---@field profile string|PsoxizshConfigProfileCb|nil The stock profile to apply to the config
|
||||
---@field keybinds PsoxizshConfigKeysCb|nil A callback to allow users to set the PsoxizshKeyBinds
|
||||
---@field lazy LazyConfig|nil The configuration passed to our package manager
|
||||
|
||||
---@alias PsoxizshConfigKeysCb fun(keys: PsoxizshKeyBinds):nil
|
||||
---@alias PsoxizshConfigProfileCb fun(config: PsoxizshConfig):nil
|
||||
|
||||
---Default PsoxizshConfig
|
||||
---@return PsoxizshConfig
|
||||
local defaults = function()
|
||||
return {
|
||||
lazy = {
|
||||
spec = {
|
||||
{ 'LazyVim/LazyVim',
|
||||
import = 'lazyvim.plugins',
|
||||
priority = 10000
|
||||
},
|
||||
{ 'psoxizsh',
|
||||
import = 'psoxizsh.plugins',
|
||||
priority = 09999,
|
||||
dir = os.getenv('PSOXIZSH') .. '/nvim',
|
||||
lazy = false,
|
||||
opts = {},
|
||||
config = function(_, opts) require('psoxizsh').setup(opts) end
|
||||
},
|
||||
{ import = 'plugins' },
|
||||
},
|
||||
defaults = {
|
||||
lazy = false,
|
||||
version = false,
|
||||
keymaps = false,
|
||||
},
|
||||
install = {
|
||||
colorscheme = {
|
||||
'onedark', 'tokyonight', 'habamax',
|
||||
}
|
||||
},
|
||||
checker = {
|
||||
enabled = true,
|
||||
concurrency = math.max(vim.uv.available_parallelism() - 2, 2),
|
||||
frequency = 60 * 60 * 8, -- 8 hours
|
||||
},
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
-- 'gzip',
|
||||
-- 'matchit',
|
||||
-- 'matchparen',
|
||||
'netrwPlugin',
|
||||
-- 'tarPlugin',
|
||||
'tohtml',
|
||||
'tutor',
|
||||
-- 'zipPlugin',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
keybinds = function() --[[ don't override keybinds by default ]] end,
|
||||
}
|
||||
end
|
||||
|
||||
---Fetch the current PsoxizshConfig table
|
||||
---@return PsoxizshConfig
|
||||
function M.get()
|
||||
if not M._lazy_config then
|
||||
M._lazy_config = defaults()
|
||||
end
|
||||
|
||||
return M._lazy_config
|
||||
end
|
||||
|
||||
---Merge the given overrides into the current PsoxizshConfig
|
||||
---@param overrides? PsoxizshConfig|PsoxizshConfigProfileCb
|
||||
function M.set(overrides)
|
||||
if type(overrides) == 'nil' then return end
|
||||
|
||||
if type(overrides) == 'function' then
|
||||
M._lazy_config = overrides(M.get())
|
||||
return
|
||||
end
|
||||
|
||||
if type(overrides) == 'table' then
|
||||
M._lazy_config = vim.tbl_deep_extend('force', M.get(), overrides)
|
||||
return
|
||||
end
|
||||
|
||||
vim.notify_once(
|
||||
'config provided was neither a function or table, ignoring',
|
||||
vim.log.levels.WARN,
|
||||
{ title = 'psoxizsh.entrypoint' }
|
||||
)
|
||||
end
|
||||
|
||||
---Merge the given overrides into the current PsoxizshConfig, returning it
|
||||
---@param overrides? PsoxizshConfig|PsoxizshConfigProfileCb
|
||||
---@return PsoxizshConfig
|
||||
function M.with(overrides)
|
||||
M.set(overrides)
|
||||
|
||||
return M.get()
|
||||
end
|
||||
|
||||
return M
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
---@class psoxizsh.entrypoint
|
||||
local M = {}
|
||||
|
||||
local add_lazy_rtp = function()
|
||||
if _G._psoxizsh_entrypoint_add_lazy_rtp == 1 then
|
||||
return
|
||||
end
|
||||
|
||||
vim.opt.rtp:prepend(os.getenv('PSOXIZSH') .. '/nvim/lazy.nvim')
|
||||
_G._psoxizsh_entrypoint_add_lazy_rtp = 1
|
||||
end
|
||||
|
||||
---Called the keybind callback, if any
|
||||
---@param fn? PsoxizshConfigKeysCb
|
||||
local set_keybinds = function(fn)
|
||||
if type(fn) == 'function' then
|
||||
fn(require('psoxizsh.key.binds'))
|
||||
end
|
||||
end
|
||||
|
||||
---Set the active profile (if any)
|
||||
---@param profile? string|PsoxizshConfigProfileCb
|
||||
---@param config PsoxizshConfig
|
||||
local set_profile = function(profile, config)
|
||||
if not profile then return end
|
||||
|
||||
if type(profile) == 'function' then
|
||||
profile(config)
|
||||
end
|
||||
|
||||
if type(profile) == 'string' then
|
||||
if profile == 'psox' or profile == 'bazaah' then
|
||||
require(('psoxizsh.entrypoint.profile.%s'):format(profile))(config)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---Begin Psoxizsh NeoVim initalization, with the default config
|
||||
function M.start()
|
||||
M.start_with(nil)
|
||||
end
|
||||
|
||||
---Begin Psoxizsh NeoVim initalization with the given overrides
|
||||
---@param overrides? PsoxizshConfig|PsoxizshConfigProfileCb
|
||||
function M.start_with(overrides)
|
||||
local config = require('psoxizsh.entrypoint.config').with(overrides)
|
||||
|
||||
add_lazy_rtp()
|
||||
set_profile(config.profile, config)
|
||||
set_keybinds(config.keybinds)
|
||||
|
||||
require('lazy').setup(config.lazy)
|
||||
end
|
||||
|
||||
return M
|
Loading…
Reference in New Issue