diff options
Diffstat (limited to 'runtime/lua/vim/version.lua')
| -rw-r--r-- | runtime/lua/vim/version.lua | 131 | 
1 files changed, 69 insertions, 62 deletions
| diff --git a/runtime/lua/vim/version.lua b/runtime/lua/vim/version.lua index 056e1678ff..306eef90d3 100644 --- a/runtime/lua/vim/version.lua +++ b/runtime/lua/vim/version.lua @@ -5,12 +5,13 @@  --- available tools and dependencies on the current system.  ---  --- Example: ----   <pre>lua ----   local v = vim.version.parse(vim.fn.system({'tmux', '-V'}), {strict=false}) ----   if vim.version.gt(v, {3, 2, 0}) then ----     -- ... ----   end ----   </pre> +--- +--- ```lua +--- local v = vim.version.parse(vim.fn.system({'tmux', '-V'}), {strict=false}) +--- if vim.version.gt(v, {3, 2, 0}) then +---   -- ... +--- end +--- ```  ---  --- \*vim.version()\* returns the version of the current Nvim process.  --- @@ -21,35 +22,36 @@  ---  --- Supported range specs are shown in the following table.  --- Note: suffixed versions (1.2.3-rc1) are not matched. ----   <pre> ----   1.2.3             is 1.2.3 ----   =1.2.3            is 1.2.3 ----   >1.2.3            greater than 1.2.3 ----   <1.2.3            before 1.2.3 ----   >=1.2.3           at least 1.2.3 ----   ~1.2.3            is >=1.2.3 <1.3.0       "reasonably close to 1.2.3" ----   ^1.2.3            is >=1.2.3 <2.0.0       "compatible with 1.2.3" ----   ^0.2.3            is >=0.2.3 <0.3.0       (0.x.x is special) ----   ^0.0.1            is =0.0.1               (0.0.x is special) ----   ^1.2              is >=1.2.0 <2.0.0       (like ^1.2.0) ----   ~1.2              is >=1.2.0 <1.3.0       (like ~1.2.0) ----   ^1                is >=1.0.0 <2.0.0       "compatible with 1" ----   ~1                same                    "reasonably close to 1" ----   1.x               same ----   1.*               same ----   1                 same ----   *                 any version ----   x                 same  --- ----   1.2.3 - 2.3.4     is >=1.2.3 <=2.3.4 +--- ``` +--- 1.2.3             is 1.2.3 +--- =1.2.3            is 1.2.3 +--- >1.2.3            greater than 1.2.3 +--- <1.2.3            before 1.2.3 +--- >=1.2.3           at least 1.2.3 +--- ~1.2.3            is >=1.2.3 <1.3.0       "reasonably close to 1.2.3" +--- ^1.2.3            is >=1.2.3 <2.0.0       "compatible with 1.2.3" +--- ^0.2.3            is >=0.2.3 <0.3.0       (0.x.x is special) +--- ^0.0.1            is =0.0.1               (0.0.x is special) +--- ^1.2              is >=1.2.0 <2.0.0       (like ^1.2.0) +--- ~1.2              is >=1.2.0 <1.3.0       (like ~1.2.0) +--- ^1                is >=1.0.0 <2.0.0       "compatible with 1" +--- ~1                same                    "reasonably close to 1" +--- 1.x               same +--- 1.*               same +--- 1                 same +--- *                 any version +--- x                 same +--- +--- 1.2.3 - 2.3.4     is >=1.2.3 <=2.3.4  --- ----   Partial right: missing pieces treated as x (2.3 => 2.3.x). ----   1.2.3 - 2.3       is >=1.2.3 <2.4.0 ----   1.2.3 - 2         is >=1.2.3 <3.0.0 +--- Partial right: missing pieces treated as x (2.3 => 2.3.x). +--- 1.2.3 - 2.3       is >=1.2.3 <2.4.0 +--- 1.2.3 - 2         is >=1.2.3 <3.0.0  --- ----   Partial left: missing pieces treated as 0 (1.2 => 1.2.0). ----   1.2 - 2.3.0       is 1.2.0 - 2.3.0 ----   </pre> +--- Partial left: missing pieces treated as 0 (1.2 => 1.2.0). +--- 1.2 - 2.3.0       is 1.2.0 - 2.3.0 +--- ```  local M = {} @@ -237,29 +239,32 @@ function VersionRange:has(version)  end  --- Parses a semver |version-range| "spec" and returns a range object: ----   <pre> ----   { ----     from: Version ----     to: Version ----     has(v: string|Version) ----   } ----   </pre> +--- +--- ``` +--- { +---   from: Version +---   to: Version +---   has(v: string|Version) +--- } +--- ```  ---  --- `:has()` checks if a version is in the range (inclusive `from`, exclusive `to`).  ---  --- Example: ----   <pre>lua ----   local r = vim.version.range('1.0.0 - 2.0.0') ----   print(r:has('1.9.9'))       -- true ----   print(r:has('2.0.0'))       -- false ----   print(r:has(vim.version())) -- check against current Nvim version ----   </pre> +--- +--- ```lua +--- local r = vim.version.range('1.0.0 - 2.0.0') +--- print(r:has('1.9.9'))       -- true +--- print(r:has('2.0.0'))       -- false +--- print(r:has(vim.version())) -- check against current Nvim version +--- ```  ---  --- Or use cmp(), eq(), lt(), and gt() to compare `.to` and `.from` directly: ----   <pre>lua ----   local r = vim.version.range('1.0.0 - 2.0.0') ----   print(vim.version.gt({1,0,3}, r.from) and vim.version.lt({1,0,3}, r.to)) ----   </pre> +--- +--- ```lua +--- local r = vim.version.range('1.0.0 - 2.0.0') +--- print(vim.version.gt({1,0,3}, r.from) and vim.version.lt({1,0,3}, r.to)) +--- ```  ---  --- @see # https://github.com/npm/node-semver#ranges  --- @@ -345,16 +350,17 @@ end  --- specified literally as a `{major, minor, patch}` tuple, e.g. `{1, 0, 3}`).  ---  --- Example: ---- <pre>lua ----   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 ---- </pre> +--- +--- ```lua +--- 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 +--- ```  ---  --- @note Per semver, build metadata is ignored when comparing two otherwise-equivalent versions.  --- @@ -399,9 +405,10 @@ end  --- 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: ---- <pre> ----   { major = 1, minor = 0, patch = 1, prerelease = "rc1", build = "build.2" } ---- </pre> +--- +--- ``` +--- { major = 1, minor = 0, patch = 1, prerelease = "rc1", build = "build.2" } +--- ```  ---  --- @see # https://semver.org/spec/v2.0.0.html  --- | 
