feat(lsp): easier null_ls configuration

This commit is contained in:
Matt Leong 2022-02-06 18:19:50 -08:00
parent ff2855583d
commit d201b8f258
2 changed files with 15 additions and 18 deletions

View file

@ -1,34 +1,22 @@
local utils = require('cosmic.utils')
local u = require('cosmic.utils')
local defaults = require('cosmic.lsp.providers.defaults')
local config = require('cosmic.config')
local null_ls = require('null-ls')
local config_opts = config.lsp.servers.null_ls or {}
local has_eslint_config = function(u)
return u.root_has_file('.eslintrc')
or u.root_has_file('.eslintrc.json')
or u.root_has_file('.eslintrc.js')
or u.root_has_file('package.json')
or u.root_has_file('.eslintrc.cjs')
or u.root_has_file('.eslintrc.yaml')
or u.root_has_file('.eslintrc.yml')
end
require('null-ls').setup(utils.merge({
sources = {
-- how to disable sources?
if not config_opts.default_cosmic_sources then
config_opts.sources = u.merge_list({
null_ls.builtins.code_actions.eslint_d.with({
condition = has_eslint_config,
prefer_local = 'node_modules/.bin',
}),
null_ls.builtins.diagnostics.eslint_d.with({
condition = has_eslint_config,
prefer_local = 'node_modules/.bin',
}),
null_ls.builtins.formatting.eslint_d.with({
condition = has_eslint_config,
prefer_local = 'node_modules/.bin',
}),
null_ls.builtins.diagnostics.shellcheck,
null_ls.builtins.diagnostics.markdownlint,
null_ls.builtins.formatting.prettierd.with({
env = {
@ -37,5 +25,7 @@ require('null-ls').setup(utils.merge({
}),
null_ls.builtins.formatting.stylua,
null_ls.builtins.code_actions.gitsigns,
},
}, defaults, config_opts or {}))
}, config_opts.sources)
end
require('null-ls').setup(u.merge(defaults, config_opts))

View file

@ -16,6 +16,13 @@ function M.buf_map(bufnr, mode, lhs, rhs, opts)
vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, options)
end
function M.merge_list(tbl1, tbl2)
for _, v in ipairs(tbl2) do
table.insert(tbl1, v)
end
return tbl1
end
function M.merge(...)
return vim.tbl_deep_extend('force', ...)
end