return { 'nvimtools/none-ls.nvim', dependencies = { 'nvimtools/none-ls-extras.nvim' }, config = function() local null_ls = require('null-ls') local sources = { null_ls.builtins.formatting.prettier.with({ filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'css', 'html', 'json', 'markdown', 'yaml', }, }), -- null_ls.builtins.formatting.black, -- null_ls.builtins.formatting.djlint, null_ls.builtins.formatting.isort, null_ls.builtins.formatting.stylua, -- require('none-ls.diagnostics.eslint_d'), } null_ls.setup({ sources = sources, }) local keymap = vim.keymap local fmt_func = function() local null_ls_active = false for _, client in ipairs(vim.lsp.get_clients({ bufnr = 0 })) do if client.name == "null-ls" then null_ls_active = true break end end vim.lsp.buf.format({ async = true, filter = function(client) if null_ls_active then return client.name == "null-ls" end return true end, }) end keymap.set('n', 'ii', fmt_func, { noremap = true, silent = true }) local wk = require('which-key') wk.add({ { 'i', group = 'Formatting' }, { 'ii', desc = 'Format File' }, }) end, }