Mercurial > vim
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