mirror of https://github.com/folke/neoconf.nvim
75 lines
1.8 KiB
Lua
75 lines
1.8 KiB
Lua
local Config = require("neoconf.config")
|
|
local Util = require("neoconf.util")
|
|
|
|
local M = {}
|
|
|
|
function M.setup()
|
|
if Config.options.import.vscode then
|
|
table.insert(Config.local_patterns, {
|
|
pattern = ".vscode/settings.json",
|
|
key = "vscode",
|
|
schema_key = "lspconfig.*",
|
|
})
|
|
end
|
|
if Config.options.import.coc then
|
|
table.insert(Config.local_patterns, {
|
|
pattern = "coc-settings.json",
|
|
key = "coc",
|
|
schema_key = "lspconfig.*",
|
|
})
|
|
table.insert(Config.global_patterns, {
|
|
pattern = "coc-settings.json",
|
|
key = "coc",
|
|
schema_key = "lspconfig.*",
|
|
})
|
|
end
|
|
if Config.options.import.nlsp then
|
|
local function nlsp_key(file)
|
|
return "nlsp." .. vim.fn.fnamemodify(file, ":t:r")
|
|
end
|
|
|
|
table.insert(Config.local_patterns, {
|
|
pattern = ".nlsp-settings/*.json",
|
|
key = nlsp_key,
|
|
})
|
|
table.insert(Config.global_patterns, {
|
|
pattern = "nlsp-settings/*.json",
|
|
key = nlsp_key,
|
|
})
|
|
end
|
|
end
|
|
|
|
---@param schema Schema
|
|
---@param schemas table
|
|
function M.on_schemas(schema, schemas)
|
|
local servers = schema:get("lspconfig").properties
|
|
|
|
local patterns = {}
|
|
if Config.options.import.vscode then
|
|
table.insert(patterns, ".vscode/settings.json")
|
|
end
|
|
if Config.options.import.coc then
|
|
table.insert(patterns, "coc-settings.json")
|
|
end
|
|
|
|
if #patterns > 0 then
|
|
table.insert(schemas, {
|
|
fileMatch = patterns,
|
|
schema = {
|
|
anyOf = vim.tbl_values(servers),
|
|
},
|
|
})
|
|
end
|
|
|
|
if Config.options.import.nlsp then
|
|
for server, _ in pairs(servers) do
|
|
table.insert(schemas, {
|
|
fileMatch = { ("nlsp-settings/%s.json"):format(server), (".nlsp-settings/%s.json"):format(server) },
|
|
schema = schema:get("lspconfig." .. server),
|
|
})
|
|
end
|
|
end
|
|
end
|
|
|
|
return M
|