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