summaryrefslogtreecommitdiff
path: root/plugins/lspconfig.lua
blob: a17d5ab1176b6b4a9636ae5cb41a6851c84134b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
return function()
	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
end