configure LSP, codelens, and trouble
This commit is contained in:
+21
-17
@@ -46,9 +46,10 @@ create_cmd("TextYankPost", {
|
|||||||
create_cmd("FileType", {
|
create_cmd("FileType", {
|
||||||
desc = "Disable list characters for some filetypes",
|
desc = "Disable list characters for some filetypes",
|
||||||
group = create_group("cmd-disable-listchars", { clear = true }),
|
group = create_group("cmd-disable-listchars", { clear = true }),
|
||||||
pattern = { "netrw" },
|
pattern = { "netrw", "trouble" },
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
vim.opt_local.list = false
|
vim.opt_local.list = false
|
||||||
|
vim.opt.textwidth = 0
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -124,21 +125,24 @@ create_cmd("QuickFixCmdPost", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
-- Automatically open diagnostic float when hovering with cursor
|
-- Automatically open diagnostic float when hovering with cursor
|
||||||
vim.api.nvim_create_autocmd("CursorHold", {
|
create_cmd("CursorHold", {
|
||||||
callback = function()
|
desc = "Automatically open Diagnostic Float",
|
||||||
if not vim.api.nvim_get_current_win() then return end
|
group = create_group("cmd-auto-open-diagnostic-float", { clear = true }),
|
||||||
vim.diagnostic.open_float(nil, { focus = false, scope = "cursor" })
|
callback = function()
|
||||||
end,
|
-- If any floating window exists, do nothing
|
||||||
})
|
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
||||||
|
local cfg = vim.api.nvim_win_get_config(win)
|
||||||
vim.api.nvim_create_autocmd("CursorMoved", {
|
if cfg.relative ~= "" then
|
||||||
callback = function()
|
return
|
||||||
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
end
|
||||||
local config = vim.api.nvim_win_get_config(win)
|
end
|
||||||
if config.relative ~= "" then
|
-- Only open if there is a diagnostic under cursor
|
||||||
vim.api.nvim_win_close(win, false)
|
local diags = vim.diagnostic.get(0, { lnum = vim.fn.line('.') - 1 })
|
||||||
end
|
if #diags == 0 then
|
||||||
end
|
return
|
||||||
end,
|
end
|
||||||
|
|
||||||
|
vim.diagnostic.open_float(nil, { focus = false, scope = "cursor" })
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
+13
-1
@@ -114,5 +114,17 @@ map("n", "grr", [[<Cmd>Trouble lsp_references toggle<CR>]], { desc = "Show LSP r
|
|||||||
map("n", "<leader>xq", [[<Cmd>Trouble qflist toggle focus=false<CR>]], { desc = "Show Quickfix List" })
|
map("n", "<leader>xq", [[<Cmd>Trouble qflist toggle focus=false<CR>]], { desc = "Show Quickfix List" })
|
||||||
map("n", "<leader>xl", [[<Cmd>Trouble loclist toggle focus=false<CR>]], { desc = "Show Location List" })
|
map("n", "<leader>xl", [[<Cmd>Trouble loclist toggle focus=false<CR>]], { desc = "Show Location List" })
|
||||||
map("n", "grn", vim.lsp.buf.rename, { desc = "Rename", silent = true, noremap = true })
|
map("n", "grn", vim.lsp.buf.rename, { desc = "Rename", silent = true, noremap = true })
|
||||||
map("n", "gra", vim.lsp.buf.code_action, { desc = "Action", silent = true, noremap = true })
|
map({"n", "v"}, "gra", vim.lsp.buf.code_action, { desc = "Action", silent = true, noremap = true })
|
||||||
map("n", "gl", vim.diagnostic.open_float, { desc = "Open Diagnostic Float" })
|
map("n", "gl", vim.diagnostic.open_float, { desc = "Open Diagnostic Float" })
|
||||||
|
map("n", "grx", vim.lsp.codelens.run, { desc = "Run Codelens Operation" })
|
||||||
|
|
||||||
|
-- Toggle Codelense
|
||||||
|
vim.keymap.set("n", "<leader>tc", function()
|
||||||
|
vim.g.codelens_enabled = not vim.g.codelens_enabled
|
||||||
|
vim.lsp.codelens.enable(vim.g.codelens_enabled)
|
||||||
|
end, { desc = "Toggle Code Lens" })
|
||||||
|
|
||||||
|
-- Open Signature Help
|
||||||
|
vim.keymap.set("i", "<C-s>", function()
|
||||||
|
vim.lsp.buf.signature_help()
|
||||||
|
end, { desc = "Show signature help" })
|
||||||
|
|||||||
+2
-2
@@ -50,12 +50,12 @@ vim.g.ui = {
|
|||||||
linebreak = "↘",
|
linebreak = "↘",
|
||||||
windowborder = "single",
|
windowborder = "single",
|
||||||
popupborder = "single",
|
popupborder = "single",
|
||||||
custom_highlights = function(colors, utils)
|
custom_highlights = function(colors, _)
|
||||||
return {
|
return {
|
||||||
whitespace = { fg = colors.overlay0 },
|
whitespace = { fg = colors.overlay0 },
|
||||||
TrailingWhitespace = { fg = colors.red },
|
TrailingWhitespace = { fg = colors.red },
|
||||||
LineNr = { fg = colors.overlay0 },
|
LineNr = { fg = colors.overlay0 },
|
||||||
CursorLineNR = { fg = colors.peach },
|
CursorLineNr = { fg = colors.peach },
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
symbols = {
|
symbols = {
|
||||||
|
|||||||
+6
-1
@@ -198,6 +198,11 @@ local function show_lsp_details()
|
|||||||
end, { buffer = popup_buffer, nowait = true, desc = "Close Window" })
|
end, { buffer = popup_buffer, nowait = true, desc = "Close Window" })
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>li", show_lsp_details, {
|
vim.keymap.set("n", "<leader>xi", show_lsp_details, {
|
||||||
desc = "Show detailed LSP info in a float"
|
desc = "Show detailed LSP info in a float"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.g.codelens_enabled = true
|
||||||
|
vim.lsp.codelens.enable(vim.g.codelens_enable)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ trouble.setup({
|
|||||||
auto_preview = true,
|
auto_preview = true,
|
||||||
auto_refresh = true,
|
auto_refresh = true,
|
||||||
auto_jump = false,
|
auto_jump = false,
|
||||||
|
auto_close = true,
|
||||||
modes = {
|
modes = {
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
preview = {
|
preview = {
|
||||||
@@ -49,5 +50,29 @@ trouble.setup({
|
|||||||
size = 0.4
|
size = 0.4
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
lsp_declarations = {
|
||||||
|
preview = {
|
||||||
|
type = "split",
|
||||||
|
relative = "win",
|
||||||
|
position = "right",
|
||||||
|
size = 0.4
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lsp_definitions = {
|
||||||
|
preview = {
|
||||||
|
type = "split",
|
||||||
|
relative = "win",
|
||||||
|
position = "right",
|
||||||
|
size = 0.4
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lsp_references = {
|
||||||
|
preview = {
|
||||||
|
type = "split",
|
||||||
|
relative = "win",
|
||||||
|
position = "right",
|
||||||
|
size = 0.4
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ wk.setup({
|
|||||||
preset = "modern"
|
preset = "modern"
|
||||||
})
|
})
|
||||||
wk.add({
|
wk.add({
|
||||||
{ "<leader>b", group = "Buffers" },
|
{ "<leader>b", group = "Buffers..." },
|
||||||
{ "<leader>x", group = "Trouble" },
|
{ "<leader>x", group = "Trouble..." },
|
||||||
{ "<leader>c", group = "Code" },
|
{ "gr", group = "LSP...", mode = {"n","v"} },
|
||||||
{ "gr", group = "LSP" },
|
{ "<leader>t", group = "Toggle..." },
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user