mirror of https://github.com/folke/neoconf.nvim
81 lines
2.3 KiB
Lua
81 lines
2.3 KiB
Lua
local M = {}
|
|
|
|
---@class Config
|
|
M.defaults = {
|
|
-- name of the local settings files
|
|
local_settings = ".neoconf.json",
|
|
-- name of the global settings file in your Neovim config directory
|
|
global_settings = "neoconf.json",
|
|
-- import existing settinsg from other plugins
|
|
import = {
|
|
vscode = true, -- local .vscode/settings.json
|
|
coc = true, -- global/local coc-settings.json
|
|
nlsp = true, -- global/local nlsp-settings.nvim json settings
|
|
},
|
|
-- send new configuration to lsp clients when changing json settings
|
|
live_reload = true,
|
|
-- set the filetype to jsonc for settings files, so you can use comments
|
|
-- make sure you have the jsonc treesitter parser installed!
|
|
filetype_jsonc = true,
|
|
plugins = {
|
|
-- configures lsp clients with settings in the following order:
|
|
-- - lua settings passed in lspconfig setup
|
|
-- - global json settings
|
|
-- - local json settings
|
|
lspconfig = {
|
|
enabled = true,
|
|
},
|
|
-- configures jsonls to get completion in .neoconf.json files
|
|
jsonls = {
|
|
enabled = true,
|
|
-- only show completion in json settings for configured lsp servers
|
|
configured_servers_only = true,
|
|
},
|
|
-- configures lua_ls to get completion of lspconfig server settings
|
|
lua_ls = {
|
|
-- by default, lua_ls annotations are only enabled in your neovim config directory
|
|
enabled_for_neovim_config = true,
|
|
-- explicitly enable adding annotations. Mostly relevant to put in your local .neoconf.json file
|
|
enabled = false,
|
|
},
|
|
},
|
|
}
|
|
|
|
--- @type Config
|
|
M.options = {}
|
|
|
|
---@class SettingsPattern
|
|
---@field pattern string
|
|
---@field key? string|fun(string):string
|
|
|
|
---@type SettingsPattern[]
|
|
M.local_patterns = {}
|
|
|
|
---@type SettingsPattern[]
|
|
M.global_patterns = {}
|
|
|
|
function M.setup(options)
|
|
M.options = vim.tbl_deep_extend("force", {}, M.defaults, options or {})
|
|
|
|
local util = require("neoconf.util")
|
|
|
|
M.local_patterns = {}
|
|
M.global_patterns = {}
|
|
|
|
require("neoconf.import").setup()
|
|
|
|
vim.list_extend(M.local_patterns, util.expand(M.options.local_settings))
|
|
vim.list_extend(M.global_patterns, util.expand(M.options.global_settings))
|
|
end
|
|
|
|
---@return Config
|
|
function M.merge(options)
|
|
return vim.tbl_deep_extend("force", {}, M.options, options or {})
|
|
end
|
|
|
|
function M.get(opts)
|
|
return require("neoconf").get("neoconf", M.options, opts)
|
|
end
|
|
|
|
return M
|