-
-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathconvert-symbols-outline-opts.lua
126 lines (107 loc) · 3.65 KB
/
convert-symbols-outline-opts.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
-- 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 = { symbols = {} }
if opts.symbols then
newopts.symbols.icons = opts.symbols
opts.symbols = nil
end
if opts.symbol_blacklist then
newopts.symbols.filter = opts.symbol_blacklist
newopts.symbols.filter.exclude = true
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', 'symbols'}) 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 ----------------------------------------------------
---------------------------------------------------------------------