Files
vern-nvim/lua/Polydev/configs.lua
T

111 lines
2.2 KiB
Lua

---@type table
local M = {}
---@class KeybindConfigs
---@field [string] string
---
---@class LanguageConfigs
---@field project_root? string
---@field keybinds? KeybindConfigs -- ? makes fields optional
---@field build_attributes? string
---@class TerminalConfigs
---@field presets string
---@field border boolean
---@field number boolean
---@field relativenumber boolean
---@class GlobalsConfigs
---@field keybinds KeybindConfigs
---@class Defaults
---@field globals GlobalsConfigs
---@field html LanguageConfigs
---@field rust LanguageConfigs
---@field java LanguageConfigs
---@field python LanguageConfigs
---@field lua LanguageConfigs
---@field c LanguageConfigs
---@field cpp LanguageConfigs
---@field terminal TerminalConfigs
---@type Defaults
M.defaults = {
globals = {
keybinds = {
["<leader>po"] = "PolydevManager",
}
},
html = {
project_root = "~/Projects/Html",
},
rust = {
project_root = "~/Projects/Rust",
keybinds = {
["<leader>pb"] = "RustBuild",
["<leader>pr"] = "RustRun",
},
},
java = {
project_root = "~/Projects/Java",
keybinds = {
["<leader>pb"] = "JavaBuild",
["<leader>pr"] = "JavaRun",
},
},
python = {
project_root = "~/Projects/Python",
keybinds = {
["<leader>pr"] = "PythonRun",
["<leader>pb"] = "PythonPip",
},
},
lua = {
project_root = "~/Projects/Lua",
keybinds = {
["<leader>pr"] = "LuaRun",
},
},
c = {
project_root = "~/Projects/C",
keybinds = {
["<leader>pb"] = "CBuild",
["<leader>pr"] = "CRun",
["<leader>nh"] = "NewCHeaderFile",
},
build_attributes = ""
},
cpp = {
project_root = "~/Projects/Cpp",
keybinds = {
["<leader>pb"] = "CppBuild",
["<leader>pr"] = "CppRun",
["<leader>nh"] = "NewCppHeaderFile",
},
build_attributes = "",
},
terminal = {
presets = "centered",
border = true,
number = true,
relativenumber = true,
}
}
---@type string[]
M.user_config = {}
---@param user_opts table
function M.setup(user_opts)
M.user_config = vim.tbl_deep_extend("force", {}, M.defaults, user_opts or {})
end
---@param lang string
---@return string|table
function M.get(lang)
return M.user_config[lang] or {}
end
---@return table
return M