From 3dc0b6dc2414aba9dd3bac1e17295fd2318f7dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ho=CC=88ltje?= Date: Thu, 7 Mar 2013 21:20:55 -0500 Subject: [PATCH] Made SyntacticIsVersionAtLeast more robust It now handles more cases, which will cause Syntastic to degrade better when commands return weird versions (e.g. the command crashes). --- plugin/syntastic.vim | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/plugin/syntastic.vim b/plugin/syntastic.vim index 69a8f7e4..54674448 100644 --- a/plugin/syntastic.vim +++ b/plugin/syntastic.vim @@ -509,17 +509,34 @@ function! s:uname() return s:uname endfunction -"the args must be arrays of the form [major, minor, macro] +" Verify that the 'installed' version is at the 'required' version, if not +" better. +" +" 'installed' and 'required' must be arrays. Only the +" first three elements (major, minor, patch) are looked at. +" +" Either array may be less than three elements. The "missing" elements +" will be assumed to be '0' for the purposes of checking. +" +" See http://semver.org for info about version numbers. function SyntasticIsVersionAtLeast(installed, required) - if a:installed[0] != a:required[0] - return a:installed[0] > a:required[0] - endif - - if a:installed[1] != a:required[1] - return a:installed[1] > a:required[1] - endif - - return a:installed[2] >= a:required[2] + for index in [0,1,2] + if len(a:installed) <= index + let installed_element = 0 + else + let installed_element = a:installed[index] + endif + if len(a:required) <= index + let required_element = 0 + else + let required_element = a:required[index] + endif + if installed_element != required_element + return installed_element > required_element + endif + endfor + " Everything matched, so it is at least the required version. + return 1 endfunction "return a string representing the state of buffer according to