diff options
author | dundargoc <gocdundar@gmail.com> | 2024-05-16 18:33:09 +0200 |
---|---|---|
committer | dundargoc <33953936+dundargoc@users.noreply.github.com> | 2024-05-24 11:08:00 +0200 |
commit | d123202ae6ef3f046d5b6579c194dca82ddb8a8f (patch) | |
tree | dfb64b7bb09076a58962cb7c41f36f80c02fa992 /runtime/lua/vim/deprecated/health.lua | |
parent | f864b68c5b0fe1482249167712cd16ff2b50ec45 (diff) | |
download | rneovim-d123202ae6ef3f046d5b6579c194dca82ddb8a8f.tar.gz rneovim-d123202ae6ef3f046d5b6579c194dca82ddb8a8f.tar.bz2 rneovim-d123202ae6ef3f046d5b6579c194dca82ddb8a8f.zip |
fix: change deprecation presentation
Deprecation with vim.deprecate is currently too noisy. Show the
following warning instead:
[function] is deprecated. Run ":checkhealth vim.deprecated" for more information.
The important part is that the full message needs to be short enough to
fit in one line in order to not trigger the "Press ENTER or type command
to continue" prompt.
The full information and stack trace for the deprecated functions will
be shown in the new healthcheck `vim.deprecated`.
Diffstat (limited to 'runtime/lua/vim/deprecated/health.lua')
-rw-r--r-- | runtime/lua/vim/deprecated/health.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/runtime/lua/vim/deprecated/health.lua b/runtime/lua/vim/deprecated/health.lua new file mode 100644 index 0000000000..0f6b1f578c --- /dev/null +++ b/runtime/lua/vim/deprecated/health.lua @@ -0,0 +1,42 @@ +local M = {} +local health = vim.health + +local deprecated = {} + +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 |