From b0aabf719adaf59a0e6b7664998f56a1adf9c205 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Fri, 1 Mar 2024 10:36:16 +0100 Subject: [PATCH] nvim: Add lsp references preview window Add 'glances.nvim' plugin which shows the LSP references, definitions and implementations in a very nice floating preview window. (Previously we used Telescope which is still called if the glances plugin does not exist.) Can preview, scroll in the floating window, go to the destination, open the destination in vert/horiz splits. --- nvim/.config/nvim/lazy-lock.json | 1 + nvim/.config/nvim/lua/plugins/config/lsp.lua | 9 +++++++-- nvim/.config/nvim/lua/plugins/ide.lua | 12 +++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 348ffc7..292b56d 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -29,6 +29,7 @@ "fwatch.nvim": { "branch": "main", "commit": "a691f7349dc66285cd75a1a698dd28bca45f2bf8" }, "git-conflict.nvim": { "branch": "main", "commit": "4c8e252b87d54d944c1e56bfb477f78b6fdaf661" }, "gitsigns.nvim": { "branch": "main", "commit": "6ef8c54fb526bf3a0bc4efb0b2fe8e6d9a7daed2" }, + "glance.nvim": { "branch": "master", "commit": "8ed5cf3b3b1231ea696d88c9efd977027429d869" }, "headlines.nvim": { "branch": "master", "commit": "d39c4e6ed8963717bc9b2dc39fada8fe1039e9bf" }, "image.nvim": { "branch": "master", "commit": "9b6248bd8b58b505559e31eb581b7c4638369ec3" }, "lazy.nvim": { "branch": "main", "commit": "28126922c9b54e35a192ac415788f202c3944c9f" }, diff --git a/nvim/.config/nvim/lua/plugins/config/lsp.lua b/nvim/.config/nvim/lua/plugins/config/lsp.lua index c0af08a..c5b8b52 100644 --- a/nvim/.config/nvim/lua/plugins/config/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/config/lsp.lua @@ -79,7 +79,12 @@ local function on_attach(client, bufnr) ) map("n", "la", "lua vim.lsp.buf.code_action()", { buffer = bufnr, desc = "Codeactions" }) map("n", "ln", "lua vim.lsp.buf.rename()", { buffer = bufnr, desc = "Rename element" }) - if vim.fn.exists(":Telescope") then + if vim.fn.exists(":Glance") then + map("n", "lr", "Glance references", { buffer = bufnr, desc = "References" }) + map("n", "lf", "Glance definitions", { buffer = bufnr, desc = "Definition" }) + map("n", "lt", "Glance type_definitions", { buffer = bufnr, desc = "Type definition" }) + map("n", "lm", "Glance implementations", { buffer = bufnr, desc = "Implementation" }) + elseif vim.fn.exists(":Telescope") then map("n", "lr", "Telescope lsp_references", { buffer = bufnr, desc = "References" }) map("n", "lf", "Telescope lsp_definitions", { buffer = bufnr, desc = "Definition" }) map( @@ -128,7 +133,7 @@ local function on_attach(client, bufnr) end -- Display diagnostics as virtual text only if not in insert mode --- https://lr.artemislena.eu/r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/ +-- /r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/ vim.api.nvim_create_autocmd("InsertEnter", { callback = function() vim.diagnostic.config({ virtual_text = false }) diff --git a/nvim/.config/nvim/lua/plugins/ide.lua b/nvim/.config/nvim/lua/plugins/ide.lua index 1f34547..2034612 100644 --- a/nvim/.config/nvim/lua/plugins/ide.lua +++ b/nvim/.config/nvim/lua/plugins/ide.lua @@ -66,11 +66,13 @@ return { config = function() require("plugins.config.lsp") end, - keys = { { - "vs", - ":LspInfo", - desc = "LspInfo", - } }, + keys = { { "vs", ":LspInfo", desc = "LspInfo" } }, + }, + -- very very pretty lsp 'peek' menus + { + "DNLHC/glance.nvim", + opts = { border = { enable = true }, theme = { enable = true, mode = "auto" } }, + cmd = { "Glance" }, }, -- linting setup