local u = require "core.utils" u.aucmd("LspAttach", { group = u.augroup "lsp", callback = function(args) local bufnr = args.buf local client = vim.lsp.get_client_by_id(args.data.client_id) if not client then error "couldn't get an lsp server" end if client:supports_method(vim.lsp.protocol.Methods.textDocument_codeLens) then vim.lsp.codelens.refresh { bufnr = bufnr } end u.map("n", "lf", function() vim.lsp.buf.format { async = true } end, bufnr) u.map("n", "gd", "Telescope lsp_definitions", bufnr) u.map("n", "gr", "Telescope lsp_references", bufnr) u.map("n", "gi", "Telescope lsp_implementations", bufnr) u.map("n", "gl", vim.diagnostic.open_float, bufnr) u.map("n", "la", vim.lsp.buf.code_action, bufnr) u.map("n", "lr", vim.lsp.buf.rename, bufnr) u.map("n", "ss", "Telescope lsp_document_symbols", bufnr) u.map("n", "ll", vim.lsp.codelens.run, bufnr) u.map("n", "li", function() if vim.lsp.inlay_hint.is_enabled { bufnr = bufnr } then vim.lsp.inlay_hint.enable(false, { bufnr = bufnr }) vim.print "Inlay hints disabled" else vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) vim.print "Inlay hints enabled" end end, bufnr) end, })