mirror of
				https://github.com/dcarrillo/dotfiles.git
				synced 2025-11-04 09:49:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local M = {}
 | 
						|
 | 
						|
local status_cmp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
 | 
						|
if not status_cmp_ok then
 | 
						|
	return
 | 
						|
end
 | 
						|
 | 
						|
M.capabilities = cmp_nvim_lsp.default_capabilities()
 | 
						|
M.capabilities.textDocument.completion.completionItem.snippetSupport = true
 | 
						|
 | 
						|
M.setup = function()
 | 
						|
	local signs = {
 | 
						|
		{ name = "DiagnosticSignError", text = "" },
 | 
						|
		{ name = "DiagnosticSignWarn", text = "" },
 | 
						|
		{ name = "DiagnosticSignHint", text = "" },
 | 
						|
		{ name = "DiagnosticSignInfo", text = "" },
 | 
						|
	}
 | 
						|
 | 
						|
	for _, sign in ipairs(signs) do
 | 
						|
		vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
 | 
						|
	end
 | 
						|
 | 
						|
	local config = {
 | 
						|
		virtual_text = false,
 | 
						|
		signs = {
 | 
						|
			active = signs,
 | 
						|
		},
 | 
						|
		update_in_insert = true,
 | 
						|
		underline = true,
 | 
						|
		severity_sort = true,
 | 
						|
		float = {
 | 
						|
			focusable = true,
 | 
						|
			style = "minimal",
 | 
						|
			border = "rounded",
 | 
						|
			source = "always",
 | 
						|
			header = "",
 | 
						|
			prefix = "",
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	vim.diagnostic.config(config)
 | 
						|
 | 
						|
	vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
 | 
						|
		border = "rounded",
 | 
						|
	})
 | 
						|
 | 
						|
	vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
 | 
						|
		border = "rounded",
 | 
						|
	})
 | 
						|
end
 | 
						|
 | 
						|
local function lsp_keymaps(bufnr)
 | 
						|
	local opts = { noremap = true, silent = true }
 | 
						|
	local keymap = vim.api.nvim_buf_set_keymap
 | 
						|
 | 
						|
	keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
 | 
						|
	keymap(bufnr, "n", "D", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
 | 
						|
	keymap(bufnr, "n", "<leader>lf", "<cmd>lua vim.lsp.buf.format{ async=true }<cr>", opts)
 | 
						|
	keymap(bufnr, "n", "<leader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", opts)
 | 
						|
	keymap(bufnr, "n", "<leader>lj", "<cmd>lua vim.diagnostic.goto_next({buffer=0})<cr>", opts)
 | 
						|
	keymap(bufnr, "n", "<leader>lk", "<cmd>lua vim.diagnostic.goto_prev({buffer=0})<cr>", opts)
 | 
						|
	keymap(bufnr, "n", "<leader>lr", "<cmd>lua vim.lsp.buf.rename()<cr>", opts)
 | 
						|
	keymap(bufnr, "n", "<leader>ls", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
 | 
						|
end
 | 
						|
 | 
						|
M.on_attach = function(client, bufnr)
 | 
						|
	if client.name == "tsserver" then
 | 
						|
		client.server_capabilities.document_formatting = false
 | 
						|
	end
 | 
						|
 | 
						|
	if client.name == "sumneko_lua" then
 | 
						|
		client.server_capabilities.document_formatting = false
 | 
						|
	end
 | 
						|
 | 
						|
	lsp_keymaps(bufnr)
 | 
						|
	local status_ok, illuminate = pcall(require, "illuminate")
 | 
						|
	if not status_ok then
 | 
						|
		return
 | 
						|
	end
 | 
						|
	illuminate.on_attach(client)
 | 
						|
end
 | 
						|
 | 
						|
return M
 |