return { { "nvimdev/lspsaga.nvim", event = "LspAttach", config = function() require("lspsaga").setup({ beacon = { enable = true }, ui = { border = "rounded", code_action = "💡", }, hover = { open_cmd = "!floorp", open_link = "gx", }, diagnostic = { border_follow = true, diagnostic_only_current = false, show_code_action = true, }, symbol_in_winbar = { enable = true, }, code_action = { extend_gitsigns = false, show_server_name = true, only_in_cursor = true, num_shortcut = true, keys = { exec = "", quit = { "", "q" }, }, }, lightbulb = { enable = false, sign = false, virtual_text = true, }, implement = { enable = false, }, rename = { auto_save = false, keys = { exec = "", quit = { "", "" }, select = "x", }, }, outline = { auto_close = true, auto_preview = true, close_after_jump = true, layout = "normal", win_position = "right", keys = { jump = "e", quit = "q", toggle_or_jump = "o", }, }, scroll_preview = { scroll_down = "", scroll_up = "", }, }) local keymap = vim.keymap.set local function with_opts(desc) return vim.tbl_extend("force", { silent = true }, { desc = desc }) end keymap("n", "gd", "Lspsaga finder def", with_opts("Goto Definition")) keymap("n", "gr", "Lspsaga finder ref", with_opts("Goto References")) keymap("n", "gI", "Lspsaga finder imp", with_opts("Goto Implementation")) keymap("n", "gT", "Lspsaga peek_type_definition", with_opts("Type Definition")) keymap("n", "K", "Lspsaga hover_doc", with_opts("Hover")) keymap("n", "cw", "Lspsaga outline", with_opts("Outline")) keymap("n", "cr", "Lspsaga rename", with_opts("Rename")) keymap("n", "ca", "Lspsaga code_action", with_opts("Code Action")) end, }, }