nvim_runtime_lua

vim.version

Methods10

function M.last<T>(versions: T[]) -> T | nil

TODO: generalize this, move to func.lua

function M.range(spec: string) -> vim.VersionRange | nil

Parses a semver |version-range| "spec" and returns |vim.VersionRange| object:

Parameters
specstring

Version range "spec"

Returns

@since 11

function M.intersect(r1: vim.VersionRange, r2: vim.VersionRange) -> Maximal vim.VersionRange | nil

Computes the common range shared by the given ranges.

Parameters
r1vim.VersionRange

First range to intersect.

r2vim.VersionRange

Second range to intersect.

Returns
Maximalvim.VersionRange | nil

range that is present inside both r1 and r2. nil if such range does not exist.

@since 14

function M.cmp(v1: vim.Version | number[] | string, v2: vim.Version | number[] | string) -> if sub<integer,1>

Parses and compares two version objects (the result of |vim.version.parse()|, or specified literally as a {major, minor, patch} tuple, e.g. {1, 0, 3}).

Example:

if vim.version.cmp({1,0,3}, {0,2,1}) == 0 then
  -- ...
end
local v1 = vim.version.parse('1.0.3-pre')
local v2 = vim.version.parse('0.2.1')
if vim.version.cmp(v1, v2) == 0 then
  -- ...
end
Parameters
v1vim.Version | number[] | string

Version object.

v2vim.Version | number[] | string

Version to compare with v1.

Returns
ifsub<integer,1>

v1 < v2, 0 if v1 == v2, 1 if v1 > v2.

@note Per semver, build metadata is ignored when comparing two otherwise-equivalent versions. @since 11

function M.eq(v1: vim.Version | number[] | string, v2: vim.Version | number[] | string) -> boolean

Returns true if the given versions are equal. See |vim.version.cmp()| for usage.

@since 11

function M.le(v1: vim.Version | number[] | string, v2: vim.Version | number[] | string) -> boolean

Returns true if v1 <= v2. See |vim.version.cmp()| for usage.

@since 12

function M.lt(v1: vim.Version | number[] | string, v2: vim.Version | number[] | string) -> boolean

Returns true if v1 < v2. See |vim.version.cmp()| for usage.

@since 11

function M.ge(v1: vim.Version | number[] | string, v2: vim.Version | number[] | string) -> boolean

Returns true if v1 >= v2. See |vim.version.cmp()| for usage.

@since 12

function M.gt(v1: vim.Version | number[] | string, v2: vim.Version | number[] | string) -> boolean

Returns true if v1 > v2. See |vim.version.cmp()| for usage.

@since 11

function M.parse(version: string, opts: vim.version.parse.Opts | nil) -> vim.Version | nil

Parses a semantic version string and returns a version object which can be used with other vim.version functions. For example "1.0.1-rc1+build.2" returns:

{ major = 1, minor = 0, patch = 1, prerelease = "rc1", build = "build.2" }
Parameters
versionstring

Version string to parse.

optsvim.version.parse.Opts | nil

Options for parsing.

Returns
vim.Version | nil

Version object or nil if input is invalid.

See:

https://semver.org/spec/v2.0.0.html

@since 11