neoconf.nvim/lua/neoconf/import.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