Files
neovim-config/lua/taken/utils/on_attach.lua
Taken 9366cff430 Added inlayhints to tssevrer config
Added remap to toggle inlay hints
2024-03-25 16:47:33 +01:00

53 lines
2.1 KiB
Lua

local on_attach = function(client, bufnr)
local function opts(desc)
if desc then
return { noremap = true, silent = true, buffer = bufnr, desc = desc }
else
return { noremap = true, silent = true, buffer = bufnr }
end
end
vim.keymap.set("n", "K", function()
vim.lsp.buf.hover()
end, opts("Show hover information"))
vim.keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts("Find definitions"))
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Find declaration"))
vim.keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts("Find implementations"))
vim.keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts("Find type definitions"))
vim.keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts("Find references"))
vim.keymap.set("n", "<leader>vws", function()
vim.lsp.buf.workspace_symbol()
end, opts("Search workspace symbols"))
vim.keymap.set("n", "<leader>vd", function()
vim.diagnostic.open_float()
end, opts("Open diagnostics"))
vim.keymap.set("n", "<leader>vca", function()
vim.lsp.buf.code_action()
end, opts("Get code actions"))
vim.keymap.set("n", "<leader>vrn", function()
vim.lsp.buf.rename()
end, opts("Rename symbol"))
vim.keymap.set("n", "<leader>vih", function()
if vim.fn.has("nvim-0.10.0") == 0 then
vim.notify("Inlay hints are only available in Neovim 0.10.0 and above", vim.log.levels.ERROR)
return
end
if client.server_capabilities.inlayHintProvider then
local current_state = vim.lsp.inlay_hint.is_enabled(bufnr)
vim.lsp.inlay_hint.enable(bufnr, not current_state)
end
end, opts("Toggle inlay hints"))
vim.keymap.set("n", "[d", function()
vim.diagnostic.goto_next()
end, opts("Go to next diagnostic"))
vim.keymap.set("n", "]d", function()
vim.diagnostic.goto_prev()
end, opts("Go to previous diagnostic"))
vim.keymap.set("i", "<C-h>", function()
vim.lsp.buf.signature_help()
end, opts("Show signature help"))
end
return on_attach