-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproviders.lua
More file actions
42 lines (35 loc) · 1.26 KB
/
providers.lua
File metadata and controls
42 lines (35 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
local shared = require("peekstack.config.validate.shared")
local M = {}
---@type PeekstackConfigFieldRule[]
local PROVIDER_ENABLE_RULES = {
{ key = "enable", validate = shared.field_type("boolean") },
}
---@type PeekstackConfigFieldRule[]
local MARKS_RULES = {
{ key = "enable", validate = shared.field_type("boolean") },
{ key = "include", validate = shared.field_type("string") },
{ key = "include_special", validate = shared.field_type("boolean") },
}
---@param cfg table
---@param defaults PeekstackConfig
function M.validate(cfg, defaults)
local providers = shared.as_table(cfg.providers)
if not providers then
return
end
for _, name in ipairs({ "lsp", "diagnostics", "file" }) do
if providers[name] ~= nil then
local provider = shared.ensure_table_field(providers, name, "providers." .. name, defaults.providers[name])
if provider then
shared.apply_rules(provider, "providers." .. name, defaults.providers[name], PROVIDER_ENABLE_RULES)
end
end
end
if providers.marks ~= nil then
local marks = shared.ensure_table_field(providers, "marks", "providers.marks", defaults.providers.marks)
if marks then
shared.apply_rules(marks, "providers.marks", defaults.providers.marks, MARKS_RULES)
end
end
end
return M