vim-patch: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)

https://code.google.com/p/vim/source/detail?r=a44087db72386d080e9da870d751daf498004be8
This commit is contained in:
oni-link
2014-04-18 21:10:49 +02:00
committed by Thiago de Arruda
parent 63cc8b6934
commit 971fd3e18e
4 changed files with 41 additions and 8 deletions

View File

@@ -10363,19 +10363,37 @@ static void f_has(typval_T *argvars, typval_T *rettv)
} }
if (n == FALSE) { if (n == FALSE) {
if (STRNICMP(name, "patch", 5) == 0) if (STRNICMP(name, "patch", 5) == 0) {
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)); n = has_patch(atoi((char *)name + 5));
else if (STRICMP(name, "vim_starting") == 0) }
} else if (STRICMP(name, "vim_starting") == 0) {
n = (starting != 0); n = (starting != 0);
else if (STRICMP(name, "multi_byte_encoding") == 0) } else if (STRICMP(name, "multi_byte_encoding") == 0) {
n = has_mbyte; n = has_mbyte;
#if defined(USE_ICONV) && defined(DYNAMIC_ICONV) #if defined(USE_ICONV) && defined(DYNAMIC_ICONV)
else if (STRICMP(name, "iconv") == 0) } else if (STRICMP(name, "iconv") == 0) {
n = iconv_enabled(FALSE); n = iconv_enabled(FALSE);
#endif #endif
else if (STRICMP(name, "syntax_items") == 0) } else if (STRICMP(name, "syntax_items") == 0) {
n = syntax_present(curwin); n = syntax_present(curwin);
} }
}
rettv->vval.v_number = n; rettv->vval.v_number = n;
} }

View File

@@ -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 STARTTEST
:so small.vim :so small.vim
@@ -588,6 +588,16 @@ endfunction
redir END redir END
endfunction endfunction
:call TestExists() :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 TestExists
:delfunc RunTest :delfunc RunTest
:delfunc TestFuncArg :delfunc TestFuncArg

View File

@@ -204,3 +204,8 @@ OK
g:footest#x = 1 g:footest#x = 1
footest#F() 0 footest#F() 0
UndefFun() 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

View File

@@ -224,7 +224,7 @@ static int included_patches[] = {
239, 239,
//238, //238,
//237, //237,
//236, 236,
//235, //235,
234, 234,
233, 233,