dotfiles/lua/plugins/outline.lua

138 lines
4 KiB
Lua
Raw Normal View History

require("outline").setup({
guides = {
enabled = true,
markers = {
bottom = '',
middle = '',
vertical = '',
horizontal = '',
},
},
outline_items = {
show_symbol_details = true,
show_symbol_lineno = false,
-- The two below are both for auto_update_events.follow
highlight_hovered_item = true,
-- On open, always followed. This is for auto_update_events.follow, whether
-- to auto update cursor position to reflect code location. If false, can
-- manually trigger with follow_cursor (API, command, keymap action).
auto_set_cursor = true,
auto_update_events = {
follow = { 'CursorMoved' },
items = { 'InsertLeave', 'WinEnter', 'BufEnter', 'BufWinEnter', 'BufWritePost' },
},
},
outline_window = {
position = 'right',
split_command = nil,
width = 25,
relative_width = true,
wrap = false,
focus_on_open = true,
auto_close = false,
auto_jump = false,
show_numbers = false,
show_relative_numbers = false,
---@type boolean|string?
show_cursorline = true,
hide_cursor = false,
winhl = '',
jump_highlight_duration = 400,
center_on_jump = true,
},
preview_window = {
live = false,
auto_preview = false,
width = 50,
min_width = 50,
relative_width = true,
height = 50,
min_height = 10,
relative_height = true,
border = 'single',
open_hover_on_preview = false,
winhl = 'NormalFloat:',
winblend = 0,
},
symbol_folding = {
autofold_depth = 1,
auto_unfold = {
hovered = true,
---@type boolean|integer
only = true,
},
markers = { '', '' },
},
keymaps = {
show_help = '?',
close = { '<Esc>', 'q' },
goto_location = '<Cr>',
peek_location = 'o',
goto_and_close = '<S-Cr>',
restore_location = '<C-g>',
hover_symbol = '<C-space>',
toggle_preview = 'K',
rename_symbol = 'r',
code_actions = 'a',
fold = 'h',
fold_toggle = '<tab>',
fold_toggle_all = '<S-tab>',
unfold = 'l',
fold_all = 'W',
unfold_all = 'E',
fold_reset = 'R',
down_and_jump = '<C-j>',
up_and_jump = '<C-k>',
},
providers = {
priority = { 'lsp', 'coc', 'markdown', 'norg' },
lsp = {
blacklist_clients = {},
},
markdown = {
filetypes = { 'markdown' },
},
},
symbols = {
---@type outline.FilterConfig?
filter = nil,
icon_source = nil,
icon_fetcher = nil,
icons = {
File = { icon = '', hl = 'Identifier' },
Module = { icon = '', hl = 'Include' },
Namespace = { icon = '{}', hl = 'Include' },
Package = { icon = '', hl = 'Include' },
Class = { icon = '𝓒', hl = 'Type' },
Method = { icon = '', hl = 'Function' },
Property = { icon = '', hl = 'Identifier' },
Field = { icon = '-', hl = 'Identifier' },
Constructor = { icon = '()', hl = 'Special' },
Enum = { icon = '', hl = 'Type' },
Interface = { icon = 'i', hl = 'Type' },
Function = { icon = 'ƒ', hl = 'Function' },
Variable = { icon = '(x)', hl = 'Constant' },
Constant = { icon = 'c', hl = 'Constant' },
String = { icon = '𝓐', hl = 'String' },
Number = { icon = '#', hl = 'Number' },
Boolean = { icon = '', hl = 'Boolean' },
Array = { icon = '[]', hl = 'Constant' },
Object = { icon = '⦿', hl = 'Type' },
Key = { icon = '🔐', hl = 'Type' },
Null = { icon = 'NULL', hl = 'Type' },
EnumMember = { icon = '', hl = 'Identifier' },
Struct = { icon = '𝓢', hl = 'Structure' },
Event = { icon = '🗲', hl = 'Type' },
Operator = { icon = '+', hl = 'Identifier' },
TypeParameter = { icon = '𝙏', hl = 'Identifier' },
Component = { icon = '', hl = 'Function' },
Fragment = { icon = '-', hl = 'Constant' },
-- ccls
TypeAlias = { icon = 't ', hl = 'Type' },
Parameter = { icon = 'p ', hl = 'Identifier' },
StaticMethod = { icon = '. ', hl = 'Function' },
Macro = { icon = '', hl = 'Function' },
},
},
})