local status_ok, _ = pcall(require, "lspconfig") if not status_ok then return end require'lspconfig'.hls.setup {} require'lspconfig'.pyright.setup {} require'lspconfig'.clangd.setup {} require'lspconfig'.html.setup {} require'lspconfig'.eslint.setup {} require'lspconfig'.texlab.setup {} require'lspconfig'.jdtls.setup {} require'lspconfig'.sumneko_lua.setup {} require'lspconfig'.gopls.setup {} require'lspconfig'.jsonls.setup {} require'lspconfig'.cssls.setup {} require'lspconfig'.csharp_ls.setup {} require'lspconfig'.tsserver.setup {} require'lspconfig'.sqls.setup {} require'lspconfig'.rust_analyzer.setup {} require'lspconfig'.bashls.setup {} require("nvim-lsp-installer").setup({ automatic_installation = true, -- automatically detect which servers to install (based on which servers are set up via lspconfig) ui = { icons = { server_installed = "✓", server_pending = "➜", server_uninstalled = "✗" } } }) local status_ok2, lsp_installer = pcall(require, "nvim-lsp-installer") if not status_ok2 then return end local lspconfig = require("lspconfig") local servers = {"jdtls" , "sumneko_lua" , "texlab", "pyright" , "eslint" , "html" , "cssls" , "rust_analyzer" , "bashls" , "csharp_ls" , "sqls" } lsp_installer.setup { ensure_installed = servers } for _, server in pairs(servers) do local opts = { on_attach = require("settings.lsp_config.handlers").on_attach, capabilities = require("settings.lsp_config.handlers").capabilities, } local has_custom_opts, server_custom_opts = pcall(require, "settings.lsp_config." .. server) if has_custom_opts then opts = vim.tbl_deep_extend("force", server_custom_opts, opts) end lspconfig[server].setup(opts) end local null_ls_status_ok, null_ls = pcall(require, "null-ls") if not null_ls_status_ok then return end -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting local formatting = null_ls.builtins.formatting -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics local diagnostics = null_ls.builtins.diagnostics null_ls.setup({ debug = false, sources = { formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), formatting.black.with({ extra_args = { "--fast" } }), formatting.stylua, -- diagnostics.flake8 }, })