126 lines
3.6 KiB
Lua
126 lines
3.6 KiB
Lua
-- This script converts your existing setup opts from symbols-outline.nvim to
|
|
-- the new format for outline.nvim.
|
|
--
|
|
-- You do not need this if your old symbols-outline.nvim config was empty.
|
|
--
|
|
-- 1. Save this file somewhere temporary and open this file in nvim.
|
|
-- 2. Paste your old symbols-outline setup opts in the 'opts' table,
|
|
-- 3. Put your cursor on the line of 'your_new_opts' table.
|
|
-- 4. Keeping your cursor there, run ':luafile %'
|
|
-- 5. You can then '$yi{' to yank it in register 0
|
|
--
|
|
-- Read about all the new features and improvements on:
|
|
-- https://github.com/hedyhli/outline.nvim/issues/12
|
|
--
|
|
-- If you encounter any problems, please open an issue.
|
|
--
|
|
-- Thanks for using outline.nvim!
|
|
|
|
local opts = {
|
|
--- Example:
|
|
-- show_guides = false,
|
|
-- fold_markers = {'>', 'v'},
|
|
|
|
}
|
|
|
|
---@diagnostic disable-next-line
|
|
local your_new_opts = --[[put the cursor on this line]] {
|
|
}
|
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------
|
|
----- BEGIN SCRIPT --------------------------------------------------
|
|
---------------------------------------------------------------------
|
|
local newopts = {}
|
|
|
|
if opts.symbols or opts.symbol_blacklist then
|
|
newopts.symbols = {
|
|
icons = opts.symbols,
|
|
blacklist = opts.symbol_blacklist,
|
|
}
|
|
opts.symbols = nil
|
|
opts.symbol_blacklist = nil
|
|
end
|
|
|
|
if opts.lsp_blacklist then
|
|
newopts.provider = {
|
|
lsp = {
|
|
blacklist_clients = opts.lsp_blacklist
|
|
}
|
|
}
|
|
opts.lsp_blacklist = nil
|
|
end
|
|
|
|
if opts.fold_markers or opts.autofold_depth ~= nil or opts.auto_unfold_hover ~= nil then
|
|
newopts.symbol_folding = {
|
|
autofold_depth = opts.autofold_depth,
|
|
auto_unfold_hover = opts.auto_unfold_hover,
|
|
markers = opts.fold_markers,
|
|
}
|
|
opts.autofold_depth = nil
|
|
opts.auto_unfold_hover = nil
|
|
opts.fold_markers = nil
|
|
end
|
|
|
|
if opts and next(opts) ~= nil then
|
|
newopts.preview_window = {}
|
|
newopts.outline_window = {}
|
|
newopts.outline_items = {}
|
|
|
|
for _, v in ipairs({'auto_preview', 'border'}) do
|
|
newopts.preview_window[v] = opts[v]
|
|
opts[v] = nil
|
|
end
|
|
if newopts.preview_window.auto_preview == true then
|
|
newopts.preview_window.open_hover_on_preview = true
|
|
end
|
|
|
|
if opts.preview_bg_highlight then
|
|
newopts.preview_window.winhl = 'Normal:'..opts.preview_bg_highlight
|
|
opts.preview_bg_highlight = nil
|
|
end
|
|
|
|
for _, v in ipairs({'show_symbol_details', 'highlight_hovered_item'}) do
|
|
newopts.outline_items[v] = opts[v]
|
|
opts[v] = nil
|
|
end
|
|
|
|
for _, v in ipairs({
|
|
'width', 'relative_width', 'position', 'border', 'wrap', 'auto_close',
|
|
'show_numbers', 'show_relative_numbers', 'show_cursorline',
|
|
}) do
|
|
newopts.outline_window[v] = opts[v]
|
|
opts[v] = nil
|
|
end
|
|
|
|
if type(opts.show_guides) == 'boolean' then
|
|
newopts.guides = {}
|
|
newopts.guides.enabled = opts.show_guides
|
|
end
|
|
opts.show_guides = nil
|
|
|
|
if opts.keymaps ~= nil then
|
|
newopts.keymaps = opts.keymaps
|
|
newopts.keymaps.peek_location = opts.keymaps.focus_location
|
|
newopts.keymaps.focus_location = nil
|
|
opts.keymaps = nil
|
|
end
|
|
end
|
|
|
|
for _, v in ipairs({'outline_items', 'outline_window', 'preview_window'}) do
|
|
if newopts[v] and next(newopts[v]) == nil then
|
|
newopts[v] = nil
|
|
end
|
|
end
|
|
|
|
local all = vim.inspect(newopts)
|
|
local lines = vim.split(all, '\n', {plain = true, trimempty = true})
|
|
table.remove(lines, 1) table.remove(lines, #lines)
|
|
local curline = vim.api.nvim_win_get_cursor(0)[1]
|
|
vim.api.nvim_buf_set_lines(0, curline, curline, true, lines)
|
|
---------------------------------------------------------------------
|
|
----- END SCRIPT ----------------------------------------------------
|
|
---------------------------------------------------------------------
|