changeset 5784:a44087db7238 v7.4.236

updated for version 7.4.236 Problem: It's not that easy to check the Vim patch version. Solution: Make has("patch-7.4.123") work. (partly by Marc Weber)
author Bram Moolenaar <bram@vim.org>
date Tue, 01 Apr 2014 22:08:54 +0200
parents 35ad6f826f0a
children 050bc8c257cb
files src/eval.c src/testdir/test60.in src/testdir/test60.ok src/version.c
diffstat 4 files changed, 39 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -12638,7 +12638,27 @@ f_has(argvars, rettv)
     if (n == FALSE)
     {
 	if (STRNICMP(name, "patch", 5) == 0)
-	    n = has_patch(atoi((char *)name + 5));
+	{
+	    if (name[5] == '-'
+		    && STRLEN(name) > 11
+		    && vim_isdigit(name[6])
+		    && vim_isdigit(name[8])
+		    && vim_isdigit(name[10]))
+	    {
+		int major = atoi((char *)name + 6);
+		int minor = atoi((char *)name + 8);
+		int patch = atoi((char *)name + 10);
+
+		/* Expect "patch-9.9.01234". */
+		n = (major < VIM_VERSION_MAJOR
+		     || (major == VIM_VERSION_MAJOR
+			 && (minor < VIM_VERSION_MINOR
+			     || (minor == VIM_VERSION_MINOR
+				 && patch <= highest_patch()))));
+	    }
+	    else
+		n = has_patch(atoi((char *)name + 5));
+	}
 	else if (STRICMP(name, "vim_starting") == 0)
 	    n = (starting != 0);
 #ifdef FEAT_MBYTE
--- a/src/testdir/test60.in
+++ b/src/testdir/test60.in
@@ -1,4 +1,4 @@
-Tests for the exists() function.  vim: set ft=vim ts=8 :
+Tests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :
 
 STARTTEST
 :so small.vim
@@ -588,6 +588,16 @@ endfunction
     redir END
 endfunction
 :call TestExists()
+:"
+:function TestHas()
+  redir >> test.out
+  for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
+    echo 'has patch ' . pl . ': ' . has('patch-' . pl)
+  endfor
+  redir END
+endfunc
+:call TestHas()
+:"
 :delfunc TestExists
 :delfunc RunTest
 :delfunc TestFuncArg
--- a/src/testdir/test60.ok
+++ b/src/testdir/test60.ok
@@ -204,3 +204,8 @@ OK
  g:footest#x = 1
    footest#F() 0
 UndefFun() 0
+has patch 6.9.999: 1
+has patch 7.1.999: 1
+has patch 7.4.123: 1
+has patch 9.1.0: 0
+has patch 9.9.1: 0
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    236,
+/**/
     235,
 /**/
     234,