return { "nvimdev/lspsaga.nvim", dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons", }, event = "LspAttach", opts = { ui = { border = "rounded", devicon = true, title = true, expand = "", collapse = "", code_action = "💡", actionfix = " ", lines = { "┗", "┣", "┃", "━", "┏" }, kind = nil, imp_sign = "󰳛 ", }, hover = { max_width = 0.9, max_height = 0.8, open_link = "gx", open_cmd = "!open", }, diagnostic = { show_code_action = false, show_layout = "float", show_normal_height = 10, jump_num_shortcut = true, max_width = 0.8, max_height = 0.6, max_show_width = 0.9, max_show_height = 0.6, text_hl_follow = false, border_follow = true, extend_relatedInformation = false, diagnostic_only_current = true, keys = { exec_action = "o", quit = "q", toggle_or_jump = "", quit_in_show = { "q", "" }, }, }, code_action = { num_shortcut = true, show_server_name = true, extend_gitsigns = true, only_in_cursor = true, max_height = 0.3, keys = { quit = "q", exec = "", }, }, lightbulb = { enable = false, -- Using nvim-lightbulb instead sign = false, virtual_text = false, }, scroll_preview = { scroll_down = "", scroll_up = "", }, finder = { max_height = 0.5, left_width = 0.3, right_width = 0.5, methods = {}, default = "ref+imp", layout = "float", silent = false, filter = {}, keys = { shuttle = "[w", toggle_or_open = "o", vsplit = "s", split = "i", tabe = "t", tabnew = "r", quit = "q", close = "", }, }, definition = { width = 0.6, height = 0.5, keys = { edit = "o", vsplit = "v", split = "i", tabe = "t", quit = "q", close = "", }, }, rename = { in_select = true, auto_save = false, project_max_width = 0.5, project_max_height = 0.5, keys = { quit = "", exec = "", select = "x", }, }, symbol_in_winbar = { enable = false, -- Using dropbar instead separator = " › ", hide_keyword = true, show_file = true, folder_level = 1, color_mode = true, }, outline = { win_position = "right", win_width = 30, auto_preview = true, detail = true, auto_close = true, close_after_jump = false, layout = "normal", max_height = 0.5, left_width = 0.3, keys = { toggle_or_jump = "o", quit = "q", jump = "e", }, }, callhierarchy = { layout = "float", keys = { edit = "e", vsplit = "s", split = "i", tabe = "t", quit = "q", shuttle = "[w", toggle_or_req = "u", close = "", }, }, implement = { enable = true, sign = true, virtual_text = true, }, beacon = { enable = true, frequency = 7, }, }, keys = { { "gh", "Lspsaga finder", desc = "LSP Finder" }, { "ca", "Lspsaga code_action", mode = { "n", "v" }, desc = "Code action" }, { "gr", "Lspsaga rename", desc = "Rename" }, { "gR", "Lspsaga rename ++project", desc = "Rename (project)" }, { "gd", "Lspsaga peek_definition", desc = "Peek definition" }, { "gD", "Lspsaga goto_definition", desc = "Goto definition" }, { "gt", "Lspsaga peek_type_definition", desc = "Peek type definition" }, { "gT", "Lspsaga goto_type_definition", desc = "Goto type definition" }, { "sl", "Lspsaga show_line_diagnostics", desc = "Line diagnostics" }, { "sc", "Lspsaga show_cursor_diagnostics", desc = "Cursor diagnostics" }, { "sb", "Lspsaga show_buf_diagnostics", desc = "Buffer diagnostics" }, { "[d", "Lspsaga diagnostic_jump_prev", desc = "Prev diagnostic" }, { "]d", "Lspsaga diagnostic_jump_next", desc = "Next diagnostic" }, { "K", "Lspsaga hover_doc", desc = "Hover doc" }, { "ci", "Lspsaga incoming_calls", desc = "Incoming calls" }, { "co", "Lspsaga outgoing_calls", desc = "Outgoing calls" }, { "so", "Lspsaga outline", desc = "Toggle outline" }, }, }