mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
63cc8b6934
commit
971fd3e18e
30
src/eval.c
30
src/eval.c
@ -10363,18 +10363,36 @@ static void f_has(typval_T *argvars, typval_T *rettv)
|
||||
}
|
||||
|
||||
if (n == FALSE) {
|
||||
if (STRNICMP(name, "patch", 5) == 0)
|
||||
n = has_patch(atoi((char *)name + 5));
|
||||
else if (STRICMP(name, "vim_starting") == 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));
|
||||
}
|
||||
} else if (STRICMP(name, "vim_starting") == 0) {
|
||||
n = (starting != 0);
|
||||
else if (STRICMP(name, "multi_byte_encoding") == 0)
|
||||
} else if (STRICMP(name, "multi_byte_encoding") == 0) {
|
||||
n = has_mbyte;
|
||||
#if defined(USE_ICONV) && defined(DYNAMIC_ICONV)
|
||||
else if (STRICMP(name, "iconv") == 0)
|
||||
} else if (STRICMP(name, "iconv") == 0) {
|
||||
n = iconv_enabled(FALSE);
|
||||
#endif
|
||||
else if (STRICMP(name, "syntax_items") == 0)
|
||||
} else if (STRICMP(name, "syntax_items") == 0) {
|
||||
n = syntax_present(curwin);
|
||||
}
|
||||
}
|
||||
|
||||
rettv->vval.v_number = n;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -224,7 +224,7 @@ static int included_patches[] = {
|
||||
239,
|
||||
//238,
|
||||
//237,
|
||||
//236,
|
||||
236,
|
||||
//235,
|
||||
234,
|
||||
233,
|
||||
|
Loading…
Reference in New Issue
Block a user