diff options
author | Abouzar Parvan <[email protected]> | 2021-10-06 02:07:23 +0330 |
---|---|---|
committer | GitHub <[email protected]> | 2021-10-06 02:07:23 +0330 |
commit | 0ad60e90a9b0dd557df10f73bec344e88549a9d7 (patch) | |
tree | d1eb9382eae359e8585354870e022cdd32c12f9e | |
parent | 5fe7b7ad4d6fa699ca9cc306a788d6485fc0ba8d (diff) |
[Feature] better code action prompt and auto show codelens actions (#1698)
-rw-r--r-- | lua/core/telescope.lua | 20 | ||||
-rw-r--r-- | lua/core/which-key.lua | 3 | ||||
-rw-r--r-- | lua/lsp/config.lua | 1 | ||||
-rw-r--r-- | lua/lsp/init.lua | 20 |
4 files changed, 43 insertions, 1 deletions
diff --git a/lua/core/telescope.lua b/lua/core/telescope.lua index eba27eec..0fb735fa 100644 --- a/lua/core/telescope.lua +++ b/lua/core/telescope.lua @@ -159,6 +159,26 @@ function M.view_lunarvim_changelog() }):find() end +function M.code_actions() + local opts = { + winblend = 15, + layout_config = { + prompt_position = "top", + width = 80, + height = 12, + }, + borderchars = { + prompt = { "─", "│", " ", "│", "â•", "â•®", "│", "│" }, + results = { "─", "│", "─", "│", "├", "┤", "╯", "â•°" }, + preview = { "─", "│", "─", "│", "â•", "â•®", "╯", "â•°" }, + }, + border = {}, + previewer = false, + shorten_path = false, + } + require("telescope.builtin").lsp_code_actions(require("telescope.themes").get_dropdown(opts)) +end + function M.setup() local telescope = require "telescope" diff --git a/lua/core/which-key.lua b/lua/core/which-key.lua index a115bcc5..c9e9b2f4 100644 --- a/lua/core/which-key.lua +++ b/lua/core/which-key.lua @@ -139,7 +139,7 @@ M.config = function() l = { name = "LSP", - a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" }, + a = { "<cmd>lua require('core.telescope').code_actions()<cr>", "Code Action" }, d = { "<cmd>Telescope lsp_document_diagnostics<cr>", "Document Diagnostics", @@ -159,6 +159,7 @@ M.config = function() "<cmd>lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = lvim.lsp.popup_border}})<cr>", "Prev Diagnostic", }, + l = { "<cmd>lua vim.lsp.codelens.run()<cr>", "CodeLens Action" }, p = { name = "Peek", d = { "<cmd>lua require('lsp.peek').Peek('definition')<cr>", "Definition" }, diff --git a/lua/lsp/config.lua b/lua/lsp/config.lua index 32185b56..f13d9659 100644 --- a/lua/lsp/config.lua +++ b/lua/lsp/config.lua @@ -17,6 +17,7 @@ return { }, override = {}, document_highlight = true, + code_lens_refresh = true, popup_border = "single", on_attach_callback = nil, on_init_callback = nil, diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 284b9dfe..2631c0fc 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -21,6 +21,25 @@ local function lsp_highlight_document(client) end end +local function lsp_code_lens_refresh(client) + if lvim.lsp.code_lens_refresh == false then + return + end + + if client.resolved_capabilities.code_lens then + vim.api.nvim_exec( + [[ + augroup lsp_code_lens_refresh + autocmd! * <buffer> + autocmd InsertLeave <buffer> lua vim.lsp.codelens.refresh() + autocmd InsertLeave <buffer> lua vim.lsp.codelens.display() + augroup END + ]], + false + ) + end +end + local function add_lsp_buffer_keybindings(bufnr) local mappings = { normal_mode = "n", @@ -99,6 +118,7 @@ function M.common_on_attach(client, bufnr) Log:debug "Called lsp.on_attach_callback" end lsp_highlight_document(client) + lsp_code_lens_refresh(client) add_lsp_buffer_keybindings(bufnr) end |