return {
	"hrsh7th/cmp-nvim-lsp",
	event = { "BufReadPre", "BufNewFile" },
	dependencies = {
		{ "folke/lazydev.nvim", ft = "lua", opts = {} },
	},
	config = function()
		local cmp_nvim_lsp = require("cmp_nvim_lsp")
		local wk = require("which-key")

		local capabilities = cmp_nvim_lsp.default_capabilities()

		vim.lsp.config("*", {
			capabilities = capabilities,
		})

		vim.diagnostic.config({
			virtual_text = true,
		})

		wk.add({
			{ "<leader>l", group = "lsp", icon = "" },
			{ "<leader>lr", "<cmd>Telescope lsp_references<CR>", desc = "Show references", icon = "" },
			{ "<leader>lD", "<cmd>lua vim.lsp.buf.defenition()<CR>", desc = "Show defenition", icon = "" },
			{ "<leader>lc", "<cmd>lua vim.lsp.buf.code_action()<CR>", desc = "Code actions", icon = "" },
			{ "<leader>lR", "<cmd>lua vim.lsp.buf.rename()<CR>", desc = "Smart rename", icon = "󰑕" },
			{ "<leader>ld", "<cmd>Telescope diagnostics bufnr=0<CR>", desc = "Diagnostics", icon = "󰍉" },
			{ "<leader>ll", "<cmd>lua vim.lsp.buf.open_float()<CR>", desc = "Line Diagnostics", icon = "󰍉" },
			{ "<leader>ln", "<cmd>lua vim.diagnostics.goto_next()<CR>", desc = "Go to next Diagnostic", icon = "" },
			{
				"<leader>lp",
				"<cmd>lua vim.diagnostics.goto_prev()<CR>",
				desc = "Go to previous Diagnostic",
				icon = "",
			},
			{ "<leader>li", "<cmd>lua vim.lsp.buf.hover()<CR>", desc = "Show documentation", icon = "󰈙" },
			{ "<leader>lL", "<cmd>LspRestart<CR>", desc = "Restart LSP", icon = "" },
		})
	end,
}
