local null_ls_status_ok, null_ls = pcall(require, "null-ls") if not null_ls_status_ok then return end --[[null-ls.]] -- -- null-language-server i.e. a sort of language server which does not provide any services such as formatting and diagnostics you expect from a language server. Instead it will need to install corresponding external “sources” and then hook these sources into the neovim lsp client through null-ls. -- null_ls.setup({ debug = true, disabled_filetypes = { "PKGBUILD" }, sources = { require("null-ls").builtins.formatting.stylua, -- lua formatting require("null-ls").builtins.formatting.prettier.with({ -- markdown, html/js formatting filetypes = { "html", "css", "javascript", "javascriptreact", "markdown", "json", "yaml" }, }), require("null-ls").builtins.formatting.shfmt.with({ -- shell script formatting filetypes = { ".bash", ".zsh", ".sh", "bash", "zsh", "sh" }, --filetypes = { "bash", "zsh", "sh" }, }), require("null-ls").builtins.diagnostics.shellcheck, -- shell script diagnostics require("null-ls").builtins.code_actions.shellcheck, -- shell script code actions require("null-ls").builtins.diagnostics.zsh, -- shell script diagnostics require("null-ls").builtins.formatting.shfmt, require("null-ls").builtins.formatting.black, require("null-ls").builtins.formatting.prettierd, require("null-ls").builtins.diagnostics.cspell.with { filetypes = { "python", "rust", "typescript" }, }, --require("null-ls").builtins.diagnostics.luacheck, --require("null-ls").builtins.diagnostics.eslint, --require("null-ls").builtins.diagnostics.eslint_d, require("null-ls").builtins.diagnostics.mdl, require("null-ls").builtins.diagnostics.vint, --require("null-ls").builtins.code_actions.eslint_d, require("null-ls").builtins.completion.spell, require("null-ls").builtins.formatting.clang_format, require("null-ls").builtins.formatting.rustfmt, require("null-ls").builtins.formatting.sql_formatter, require("null-ls").builtins.formatting.stylua, --require("null-ls").builtins.formatting.google_java_format, require("null-ls").builtins.formatting.shellharden, require("null-ls").builtins.diagnostics.cppcheck, }, on_attach = function(client, bufnr) if client.server_capabilities.document_formatting then local group = vim.api.nvim_create_augroup("NullLsFormatting", { clear = true }) vim.api.nvim_create_autocmd("BufWritePre", { callback = function() vim.lsp.buf.formatting_sync(nil, 4000) end, buffer = bufnr, group = group, }) end end, })