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 defaults = require('cosmic.lsp.providers.defaults')
local config = require('cosmic.config') local config = require('cosmic.config')
local null_ls = require('null-ls') local null_ls = require('null-ls')
local config_opts = config.lsp.servers.null_ls or {} 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({ -- how to disable sources?
sources = { if not config_opts.default_cosmic_sources then
config_opts.sources = u.merge_list({
null_ls.builtins.code_actions.eslint_d.with({ null_ls.builtins.code_actions.eslint_d.with({
condition = has_eslint_config,
prefer_local = 'node_modules/.bin', prefer_local = 'node_modules/.bin',
}), }),
null_ls.builtins.diagnostics.eslint_d.with({ null_ls.builtins.diagnostics.eslint_d.with({
condition = has_eslint_config,
prefer_local = 'node_modules/.bin', prefer_local = 'node_modules/.bin',
}), }),
null_ls.builtins.formatting.eslint_d.with({ null_ls.builtins.formatting.eslint_d.with({
condition = has_eslint_config,
prefer_local = 'node_modules/.bin', prefer_local = 'node_modules/.bin',
}), }),
null_ls.builtins.diagnostics.shellcheck,
null_ls.builtins.diagnostics.markdownlint, null_ls.builtins.diagnostics.markdownlint,
null_ls.builtins.formatting.prettierd.with({ null_ls.builtins.formatting.prettierd.with({
env = { env = {
@ -37,5 +25,7 @@ require('null-ls').setup(utils.merge({
}), }),
null_ls.builtins.formatting.stylua, null_ls.builtins.formatting.stylua,
null_ls.builtins.code_actions.gitsigns, null_ls.builtins.code_actions.gitsigns,
}, }, config_opts.sources)
}, defaults, config_opts or {})) 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) vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, options)
end end
function M.merge_list(tbl1, tbl2)
for _, v in ipairs(tbl2) do
table.insert(tbl1, v)
end
return tbl1
end
function M.merge(...) function M.merge(...)
return vim.tbl_deep_extend('force', ...) return vim.tbl_deep_extend('force', ...)
end end