summaryrefslogtreecommitdiff
path: root/lua/getchoo/plugins/lspconfig.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/getchoo/plugins/lspconfig.lua')
-rw-r--r--lua/getchoo/plugins/lspconfig.lua47
1 files changed, 47 insertions, 0 deletions
diff --git a/lua/getchoo/plugins/lspconfig.lua b/lua/getchoo/plugins/lspconfig.lua
new file mode 100644
index 0000000..8811e3f
--- /dev/null
+++ b/lua/getchoo/plugins/lspconfig.lua
@@ -0,0 +1,47 @@
+local sources = {
+ ["bashls"] = "bash-language-server",
+ ["clangd"] = "clangd",
+ ["eslint"] = "eslint",
+ ["nil_ls"] = "nil",
+ ["pyright"] = "pyright-langserver",
+ ["rust_analyzer"] = "rust-analyzer",
+ ["tsserver"] = "typescript-language-server",
+}
+
+local capabilities = vim.tbl_deep_extend(
+ "force",
+ require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
+ { workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } }
+)
+
+local all_config = {
+ capabilities = capabilities,
+}
+
+local servers = {}
+for server, binary in pairs(sources) do
+ if vim.fn.executable(binary) == 1 then
+ servers[server] = all_config
+ end
+end
+
+servers["lua_ls"] = {
+ capabilities = capabilities,
+ settings = {
+ Lua = {
+ runtime = {
+ version = "LuaJIT",
+ },
+ diagnostics = {
+ globals = { "vim" },
+ },
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ },
+ },
+ },
+}
+
+for server, settings in pairs(servers) do
+ require("lspconfig")[server].setup(settings)
+end