mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 04:40:06 +08:00
94 lines
3.1 KiB
Lua
Vendored
94 lines
3.1 KiB
Lua
Vendored
local utils = require("neo-tree.utils")
|
|
|
|
local M = {}
|
|
|
|
local migrations = {}
|
|
|
|
M.show_migrations = function()
|
|
if #migrations > 0 then
|
|
for i, message in ipairs(migrations) do
|
|
migrations[i] = " * " .. message
|
|
end
|
|
table.insert(
|
|
migrations,
|
|
1,
|
|
"# Neo-tree configuration has been updated. Please review the changes below."
|
|
)
|
|
local buf = vim.api.nvim_create_buf(false, true)
|
|
vim.api.nvim_buf_set_lines(buf, 0, -1, false, migrations)
|
|
vim.api.nvim_buf_set_option(buf, "buftype", "nofile")
|
|
vim.api.nvim_buf_set_option(buf, "bufhidden", "wipe")
|
|
vim.api.nvim_buf_set_option(buf, "buflisted", false)
|
|
vim.api.nvim_buf_set_option(buf, "swapfile", false)
|
|
vim.api.nvim_buf_set_option(buf, "modifiable", false)
|
|
vim.api.nvim_buf_set_option(buf, "filetype", "markdown")
|
|
vim.api.nvim_buf_set_name(buf, "Neo-tree migrations")
|
|
vim.defer_fn(function()
|
|
vim.cmd(string.format("%ssplit", #migrations))
|
|
vim.api.nvim_win_set_buf(0, buf)
|
|
end, 100)
|
|
end
|
|
end
|
|
|
|
M.migrate = function(config)
|
|
migrations = {}
|
|
|
|
local moved = function(old, new, converter)
|
|
local existing = utils.get_value(config, old)
|
|
if type(existing) ~= "nil" then
|
|
if type(converter) == "function" then
|
|
existing = converter(existing)
|
|
end
|
|
utils.set_value(config, new, existing)
|
|
config[old] = nil
|
|
migrations[#migrations + 1] =
|
|
string.format("The `%s` option has been deprecated, please use `%s` instead.", old, new)
|
|
end
|
|
end
|
|
|
|
local removed = function(key)
|
|
local value = utils.get_value(config, key)
|
|
if type(value) ~= "nil" then
|
|
utils.set_value(config, key, nil)
|
|
migrations[#migrations + 1] = string.format("The `%s` option has been removed.", key)
|
|
end
|
|
end
|
|
|
|
local renamed_value = function(key, old_value, new_value)
|
|
local value = utils.get_value(config, key)
|
|
if value == old_value then
|
|
utils.set_value(config, key, new_value)
|
|
migrations[#migrations + 1] =
|
|
string.format("The `%s=%s` option has been renamed to `%s`.", key, old_value, new_value)
|
|
end
|
|
end
|
|
|
|
local opposite = function(value)
|
|
return not value
|
|
end
|
|
|
|
local tab_to_source_migrator = function(labels)
|
|
local converted_sources = {}
|
|
for entry, label in pairs(labels) do
|
|
table.insert(converted_sources, { source = entry, display_name = label })
|
|
end
|
|
return converted_sources
|
|
end
|
|
|
|
moved("filesystem.filters", "filesystem.filtered_items")
|
|
moved("filesystem.filters.show_hidden", "filesystem.filtered_items.hide_dotfiles", opposite)
|
|
moved("filesystem.filters.respect_gitignore", "filesystem.filtered_items.hide_gitignored")
|
|
moved("open_files_do_not_replace_filetypes", "open_files_do_not_replace_types")
|
|
moved("source_selector.tab_labels", "source_selector.sources", tab_to_source_migrator)
|
|
removed("filesystem.filters.gitignore_source")
|
|
removed("filesystem.filter_items.gitignore_source")
|
|
renamed_value("filesystem.hijack_netrw_behavior", "open_split", "open_current")
|
|
for _, source in ipairs({ "filesystem", "buffers", "git_status" }) do
|
|
renamed_value(source .. "window.position", "split", "current")
|
|
end
|
|
|
|
return migrations
|
|
end
|
|
|
|
return M
|