Prechádzať zdrojové kódy

[Feature] better code action prompt and auto show codelens actions (#1698)

Abouzar Parvan 3 rokov pred
rodič
commit
0ad60e90a9
4 zmenil súbory, kde vykonal 43 pridanie a 1 odobranie
  1. 20 0
      lua/core/telescope.lua
  2. 2 1
      lua/core/which-key.lua
  3. 1 0
      lua/lsp/config.lua
  4. 20 0
      lua/lsp/init.lua

+ 20 - 0
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"
 

+ 2 - 1
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" },

+ 1 - 0
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,

+ 20 - 0
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