From 8ca01a93dc1e9139f7dc74036b3b40586b06ae15 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Mon, 3 Jun 2019 22:24:37 +1200 Subject: Factor out Vim version checks into autoload func --- vim/autoload/vimrc.vim | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'vim/autoload') diff --git a/vim/autoload/vimrc.vim b/vim/autoload/vimrc.vim index 71b29d61..bfbae263 100644 --- a/vim/autoload/vimrc.vim +++ b/vim/autoload/vimrc.vim @@ -45,3 +45,30 @@ function! vimrc#SplitEscaped(str, ...) abort return list endfunction + +" Convenience version function check that should work with 7.0 or newer; +" takes strings like 7.3.251 +function! vimrc#Version(verstr) abort + + " Throw toys if the string doesn't match the expected format + if a:verstr !~# '^\d\+\.\d\+.\d\+$' + echoerr 'Invalid version string: '.a:verstr + endif + + " Split version string into major, minor, and patch level integers + let [major, minor, patch] = split(a:verstr, '\.') + + " Create a string like 801 from a version number 8.1 to compare it to + " the v:version integer + let ver = major * 100 + minor + + " Compare versions + if v:version > ver + return 1 " Current Vim is newer than the wanted one + elseif ver < v:version + return 0 " Current Vim is older than the wanted one + else + return has('patch'.patch) " Versions equal, return patch presence + endif + +endfunction -- cgit v1.2.3