aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nvim/.config/nvim/lua/tobyvin/lsp.lua
blob: 2dd167874d374ab45f020be55fa663be3eb5685c (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
local utils = require("tobyvin.utils")
local lsp = {
	configs = require("tobyvin.lsp.configs"),
	handlers = require("tobyvin.lsp.handlers"),
	highlighting = require("tobyvin.lsp.highlighting"),
	formatting = require("tobyvin.lsp.formatting"),
}

lsp.setup = function()
	lsp.handlers.setup()
	lsp.highlighting.setup()
	lsp.formatting.setup()

	vim.api.nvim_create_autocmd("LspAttach", {
		group = vim.api.nvim_create_augroup("tobyvin_lsp", { clear = true }),
		desc = "lsp",
		callback = function(args)
			local bufnr = args.buf
			local client = vim.lsp.get_client_by_id(args.data.client_id)

			utils.keymap.group("n", "<leader>l", { desc = "LSP", buffer = bufnr })
			vim.keymap.set("n", "<leader>L", "<CMD>LspInfo<CR>", { desc = "LSP info" })
			vim.api.nvim_exec_autocmds("User", { pattern = "LspAttach", data = { client_id = client.id } })
		end,
	})
end

return lsp