mirror of
https://github.com/neovim/neovim.git
synced 2026-03-28 19:32:01 +00:00
refactor(lua): add integer coercion helpers Add vim._tointeger() and vim._ensure_integer(), including optional base support, and switch integer-only tonumber()/assert call sites in the Lua runtime to use them. This also cleans up related integer parsing in LSP, health, loader, URI, tohtml, and Treesitter code. supported by AI
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 = vim._ensure_integer(major), vim._ensure_integer(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
|