diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2023-03-07 09:28:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-07 06:28:53 -0800 |
commit | 04e8e1f9eaa9ca64fa6418639d595f142585a934 (patch) | |
tree | dcb52e16a96caffef942efc56692671592bfdae2 | |
parent | 7a462c10d522e1b650979e810ad3b137224bb2b0 (diff) | |
download | rneovim-04e8e1f9eaa9ca64fa6418639d595f142585a934.tar.gz rneovim-04e8e1f9eaa9ca64fa6418639d595f142585a934.tar.bz2 rneovim-04e8e1f9eaa9ca64fa6418639d595f142585a934.zip |
refactor(runtime): use vim.version to compare versions #22550
TODO:
Unfortunately, cannot (yet) use vim.version for tmux version comparison,
because `vim.version.parse(…,{strict=false})` does not coerce tmux's
funny "tmux 3.3a" version string.
https://github.com/neovim/neovim/blob/6969d3d7491fc2f10d80309b26dd0c26d211b1b3/runtime/autoload/provider/clipboard.vim#L148
-rw-r--r-- | runtime/autoload/health/provider.vim | 28 | ||||
-rw-r--r-- | runtime/autoload/provider/node.vim | 18 |
2 files changed, 13 insertions, 33 deletions
diff --git a/runtime/autoload/health/provider.vim b/runtime/autoload/health/provider.vim index d104bcfd67..59361eb735 100644 --- a/runtime/autoload/health/provider.vim +++ b/runtime/autoload/health/provider.vim @@ -19,22 +19,6 @@ function! s:cmd_ok(cmd) abort return v:shell_error == 0 endfunction -" Simple version comparison. -function! s:version_cmp(a, b) abort - let a = split(a:a, '\.', 0) - let b = split(a:b, '\.', 0) - - for i in range(len(a)) - if str2nr(a[i]) > str2nr(b[i]) - return 1 - elseif str2nr(a[i]) < str2nr(b[i]) - return -1 - endif - endfor - - return 0 -endfunction - " Handler for s:system() function. function! s:system_handler(jobid, data, event) dict abort if a:event ==# 'stderr' @@ -244,7 +228,7 @@ function! s:version_info(python) abort let nvim_path_base = fnamemodify(nvim_path, ':~:h') let version_status = 'unknown; '.nvim_path_base if !s:is_bad_response(nvim_version) && !s:is_bad_response(pypi_version) - if s:version_cmp(nvim_version, pypi_version) == -1 + if v:lua.vim.version.lt(nvim_version, pypi_version) let version_status = 'outdated; from '.nvim_path_base else let version_status = 'up to date' @@ -598,7 +582,7 @@ function! s:check_ruby() abort return endif - if s:version_cmp(current_gem, latest_gem) == -1 + if v:lua.vim.version.lt(current_gem, latest_gem) call health#report_warn( \ printf('Gem "neovim" is out-of-date. Installed: %s, latest: %s', \ current_gem, latest_gem), @@ -623,8 +607,8 @@ function! s:check_node() abort endif let node_v = get(split(s:system(['node', '-v']), "\n"), 0, '') call health#report_info('Node.js: '. node_v) - if s:shell_error || s:version_cmp(node_v[1:], '6.0.0') < 0 - call health#report_warn('Nvim node.js host does not support '.node_v) + if s:shell_error || v:lua.vim.version.lt(node_v[1:], '6.0.0') + call health#report_warn('Nvim node.js host does not support Node '.node_v) " Skip further checks, they are nonsense if nodejs is too old. return endif @@ -675,7 +659,7 @@ function! s:check_node() abort return endif - if s:version_cmp(current_npm, latest_npm) == -1 + if latest_npm !=# 'unable to parse' && v:lua.vim.version.lt(current_npm, latest_npm) call health#report_warn( \ printf('Package "neovim" is out-of-date. Installed: %s, latest: %s', \ current_npm, latest_npm), @@ -751,7 +735,7 @@ function! s:check_perl() abort return endif - if s:version_cmp(current_cpan, latest_cpan) == -1 + if v:lua.vim.version.lt(current_cpan, latest_cpan) call health#report_warn( \ printf('Module "Neovim::Ext" is out-of-date. Installed: %s, latest: %s', \ current_cpan, latest_cpan), diff --git a/runtime/autoload/provider/node.vim b/runtime/autoload/provider/node.vim index 87af0094fe..3e7b8b4ef9 100644 --- a/runtime/autoload/provider/node.vim +++ b/runtime/autoload/provider/node.vim @@ -3,7 +3,7 @@ if exists('g:loaded_node_provider') endif let g:loaded_node_provider = 1 -function! s:is_minimum_version(version, min_major, min_minor) abort +function! s:is_minimum_version(version, min_version) abort if empty(a:version) let nodejs_version = get(split(system(['node', '-v']), "\n"), 0, '') if v:shell_error || nodejs_version[0] !=# 'v' @@ -15,11 +15,7 @@ function! s:is_minimum_version(version, min_major, min_minor) abort " Remove surrounding junk. Example: 'v4.12.0' => '4.12.0' let nodejs_version = matchstr(nodejs_version, '\(\d\.\?\)\+') " [major, minor, patch] - let v_list = split(nodejs_version, '\.') - return len(v_list) == 3 - \ && ((str2nr(v_list[0]) > str2nr(a:min_major)) - \ || (str2nr(v_list[0]) == str2nr(a:min_major) - \ && str2nr(v_list[1]) >= str2nr(a:min_minor))) + return !v:lua.vim.version.lt(nodejs_version, a:min_version) endfunction let s:NodeHandler = { @@ -43,20 +39,20 @@ function! provider#node#can_inspect() abort if v:shell_error || ver[0] !=# 'v' return 0 endif - return (ver[1] ==# '6' && s:is_minimum_version(ver, 6, 12)) - \ || s:is_minimum_version(ver, 7, 6) + return (ver[1] ==# '6' && s:is_minimum_version(ver, '6.12.0')) + \ || s:is_minimum_version(ver, '7.6.0') endfunction function! provider#node#Detect() abort - let minver = [6, 0] + let minver = '6.0.0' if exists('g:node_host_prog') return [expand(g:node_host_prog, v:true), ''] endif if !executable('node') return ['', 'node not found (or not executable)'] endif - if !s:is_minimum_version(v:null, minver[0], minver[1]) - return ['', printf('node version %s.%s not found', minver[0], minver[1])] + if !s:is_minimum_version(v:null, minver) + return ['', printf('node version %s not found', minver)] endif let npm_opts = {} |