aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_editor.lua
diff options
context:
space:
mode:
authordundargoc <gocdundar@gmail.com>2023-12-25 16:31:38 +0100
committerdundargoc <33953936+dundargoc@users.noreply.github.com>2023-12-25 21:20:09 +0100
commit0a598c13b1863ba1aff378027c4376e3ab7048ee (patch)
tree3ea92885d914b01c590db5c245476ed854504be4 /runtime/lua/vim/_editor.lua
parent343436f97db859fb253cf83b1d5aaef36c182922 (diff)
downloadrneovim-0a598c13b1863ba1aff378027c4376e3ab7048ee.tar.gz
rneovim-0a598c13b1863ba1aff378027c4376e3ab7048ee.tar.bz2
rneovim-0a598c13b1863ba1aff378027c4376e3ab7048ee.zip
feat(vim.deprecate): only issue warning if neovim version is high enough
As specified by MAINTAIN.md, features should be soft deprecated at first (meaning no warnings) to give people a chance to adjust. The problem with this approach is that deprecating a feature becomes harder than usual as during the soft deprecation period you need to remember not to issue a warning, and during the hard deprecation period you need to remember to start issuing a warning. This behavior is only enforced if the `plugin` parameter is `nil` as plugins may not want this specific behavior.
Diffstat (limited to 'runtime/lua/vim/_editor.lua')
-rw-r--r--runtime/lua/vim/_editor.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/runtime/lua/vim/_editor.lua b/runtime/lua/vim/_editor.lua
index 0bb1becf58..dda89e2bdb 100644
--- a/runtime/lua/vim/_editor.lua
+++ b/runtime/lua/vim/_editor.lua
@@ -1019,6 +1019,18 @@ end
---
---@return string|nil # Deprecated message, or nil if no message was shown.
function vim.deprecate(name, alternative, version, plugin, backtrace)
+ -- Only issue warning if feature is hard-deprecated as specified by MAINTAIN.md.
+ if plugin == nil then
+ local current_version = vim.version()
+ local deprecated_version = assert(vim.version.parse(version))
+ local soft_deprecated_version =
+ { deprecated_version.major, deprecated_version.minor - 1, deprecated_version.patch }
+ local deprecate = vim.version.lt(current_version, soft_deprecated_version)
+ if deprecate then
+ return
+ end
+ end
+
local msg = ('%s is deprecated'):format(name)
plugin = plugin or 'Nvim'
msg = alternative and ('%s, use %s instead.'):format(msg, alternative) or msg