return { 'jay-babu/mason-null-ls.nvim', lazy = false, -- event = { "BufReadPre", "BufNewFile" }, dependencies = { 'williamboman/mason.nvim', 'jose-elias-alvarez/null-ls.nvim', }, config = function() require('mason').setup() require('mason-null-ls').setup { ensure_installed = { 'stylua', 'jq', 'eslint_d' }, automatic_setup = false, automatic_installation = false, } local nls = require 'null-ls' local diagnostics = nls.builtins.diagnostics local formatting = nls.builtins.formatting local code_actions = nls.builtins.code_actions local h = require 'null-ls.helpers' local u = require 'null-ls.utils' local function eslint_d_cwd(params) return u.root_pattern( -- https://eslint.org/docs/user-guide/configuring/configuration-files#configuration-file-formats '.eslintrc', '.eslintrc.js', '.eslintrc.cjs', '.eslintrc.yaml', '.eslintrc.yml', '.eslintrc.json' -- do not respect package.json -- "package.json", )(params.bufname) end require('null-ls').setup { debug = true, sources = { -- Anything not supported by mason. -- lua formatting.stylua, --json diagnostics.jsonlint, -- eslint diagnostics.eslint_d.with { cwd = h.cache.by_bufnr(eslint_d_cwd), -- not sure how to scope this only to bcr's locales -- extra_filetypes = { 'json' }, }, formatting.eslint_d.with { cwd = h.cache.by_bufnr(eslint_d_cwd), -- not sure how to scope this only to bcr's locales extra_filetypes = { 'json' }, }, code_actions.eslint_d.with { cwd = h.cache.by_bufnr(eslint_d_cwd), -- not sure how to scope this only to bcr's locales extra_filetypes = { 'json' }, }, -- refactoring code_actions.refactoring, }, } end, }