feat: tostring(vim.version())

Problem:
tostring(vim.version()) returns "table: 0x…".

Solution:
Modify vim.version() to return a string prerelease instead of a boolean.

Fix #23863
This commit is contained in:
Justin M. Keyes 2023-06-12 01:14:33 +02:00
parent ecdb6465e2
commit e688793253
2 changed files with 13 additions and 1 deletions

View File

@ -425,7 +425,7 @@ setmetatable(M, {
__call = function()
local version = vim.fn.api_info().version
-- Workaround: vim.fn.api_info().version reports "prerelease" as a boolean.
version.prerelease = version.prerelease or nil
version.prerelease = version.prerelease and 'dev' or nil
return setmetatable(version, Version)
end,
})

View File

@ -17,6 +17,18 @@ describe('version', function()
eq({ major = 42, minor = 3, patch = 99 }, exec_lua("return vim.version.parse('v42.3.99')"))
end)
it('version() returns Nvim version', function()
local expected = exec_lua('return vim.fn.api_info().version')
local actual = exec_lua('return vim.version()')
eq(expected.major, actual.major)
eq(expected.minor, actual.minor)
eq(expected.patch, actual.patch)
eq(expected.prerelease and 'dev' or nil, actual.prerelease)
-- tostring() #23863
matches([[%d+%.%d+%.%d+]], exec_lua('return tostring(vim.version())'))
end)
describe('_version()', function()
local tests = {
['v1.2.3'] = { major = 1, minor = 2, patch = 3 },