mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
43 lines
1.3 KiB
Lua
43 lines
1.3 KiB
Lua
local M = {}
|
|
local health = vim.health
|
|
|
|
local deprecated = {} ---@type [string, table, string][]
|
|
|
|
function M.check()
|
|
if next(deprecated) == nil then
|
|
health.ok('No deprecated functions detected')
|
|
return
|
|
end
|
|
|
|
for name, v in vim.spairs(deprecated) do
|
|
health.start('')
|
|
|
|
local version, backtraces, alternative = v[1], v[2], v[3]
|
|
local major, minor = version:match('(%d+)%.(%d+)')
|
|
major, minor = tonumber(major), tonumber(minor)
|
|
local removal_version = string.format('nvim-%d.%d', major, minor)
|
|
local will_be_removed = vim.fn.has(removal_version) == 1 and 'was removed' or 'will be removed'
|
|
|
|
local msg = ('%s is deprecated. Feature %s in Nvim %s'):format(name, will_be_removed, version)
|
|
local msg_alternative = alternative and ('use %s instead.'):format(alternative)
|
|
local advice = { msg_alternative }
|
|
table.insert(advice, backtraces)
|
|
advice = vim.iter(advice):flatten():totable()
|
|
health.warn(msg, advice)
|
|
end
|
|
end
|
|
|
|
function M.add(name, version, backtrace, alternative)
|
|
if deprecated[name] == nil then
|
|
deprecated[name] = { version, { backtrace }, alternative }
|
|
return
|
|
end
|
|
|
|
local it = vim.iter(deprecated[name][2])
|
|
if it:find(backtrace) == nil then
|
|
table.insert(deprecated[name][2], backtrace)
|
|
end
|
|
end
|
|
|
|
return M
|