Files
outline.nvim/lua/symbols-outline/config.lua
Julian Doherty 04b4abb5ba add wrap config option, default to false
Default to not wrapping long function names etc that are too big for the window.

If wrap=true is set, use some sane linebreak/breakindent/showbreak
options to wrap with an indent at the current indent level of the UI
tree, instead of just wrapping back to the far left side of the window.
2022-08-27 11:52:59 +10:00

138 lines
3.5 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local vim = vim
local M = {}
M.defaults = {
highlight_hovered_item = true,
show_guides = true,
position = 'right',
border = 'single',
relative_width = true,
width = 25,
auto_close = false,
auto_preview = false,
show_numbers = false,
show_relative_numbers = false,
show_symbol_details = true,
preview_bg_highlight = 'Pmenu',
winblend = 0,
autofold_depth = nil,
auto_unfold_hover = true,
fold_markers = { '', '' },
wrap = true,
keymaps = { -- These keymaps can be a string or a table for multiple keys
close = { '<Esc>', 'q' },
goto_location = '<Cr>',
focus_location = 'o',
hover_symbol = '<C-space>',
toggle_preview = 'K',
rename_symbol = 'r',
code_actions = 'a',
show_help = '?',
fold = 'h',
unfold = 'l',
fold_all = 'W',
unfold_all = 'E',
fold_reset = 'R',
},
lsp_blacklist = {},
symbol_blacklist = {},
symbols = {
File = { icon = '', hl = 'TSURI' },
Module = { icon = '', hl = 'TSNamespace' },
Namespace = { icon = '', hl = 'TSNamespace' },
Package = { icon = '', hl = 'TSNamespace' },
Class = { icon = '𝓒', hl = 'TSType' },
Method = { icon = 'ƒ', hl = 'TSMethod' },
Property = { icon = '', hl = 'TSMethod' },
Field = { icon = '', hl = 'TSField' },
Constructor = { icon = '', hl = 'TSConstructor' },
Enum = { icon = '', hl = 'TSType' },
Interface = { icon = '', hl = 'TSType' },
Function = { icon = '', hl = 'TSFunction' },
Variable = { icon = '', hl = 'TSConstant' },
Constant = { icon = '', hl = 'TSConstant' },
String = { icon = '𝓐', hl = 'TSString' },
Number = { icon = '#', hl = 'TSNumber' },
Boolean = { icon = '', hl = 'TSBoolean' },
Array = { icon = '', hl = 'TSConstant' },
Object = { icon = '⦿', hl = 'TSType' },
Key = { icon = '🔐', hl = 'TSType' },
Null = { icon = 'NULL', hl = 'TSType' },
EnumMember = { icon = '', hl = 'TSField' },
Struct = { icon = '𝓢', hl = 'TSType' },
Event = { icon = '🗲', hl = 'TSType' },
Operator = { icon = '+', hl = 'TSOperator' },
TypeParameter = { icon = '𝙏', hl = 'TSParameter' },
Component = { icon = '', hl = 'TSFunction' },
Fragment = { icon = '', hl = 'TSConstant' },
},
}
M.options = {}
function M.has_numbers()
return M.options.show_numbers or M.options.show_relative_numbers
end
function M.get_position_navigation_direction()
if M.options.position == 'left' then
return 'h'
else
return 'l'
end
end
function M.get_window_width()
if M.options.relative_width then
return math.ceil(vim.o.columns * (M.options.width / 100))
else
return M.options.width
end
end
function M.get_split_command()
if M.options.position == 'left' then
return 'topleft vs'
else
return 'botright vs'
end
end
local function has_value(tab, val)
for _, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
function M.is_symbol_blacklisted(kind)
if kind == nil then
return false
end
return has_value(M.options.symbol_blacklist, kind)
end
function M.is_client_blacklisted(client_id)
local client = vim.lsp.get_client_by_id(client_id)
if not client then
return false
end
return has_value(M.options.lsp_blacklist, client.name)
end
function M.show_help()
print 'Current keymaps:'
print(vim.inspect(M.options.keymaps))
end
function M.setup(options)
vim.g.symbols_outline_loaded = 1
M.options = vim.tbl_deep_extend('force', {}, M.defaults, options or {})
end
return M