mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 15:08:35 +00:00
Merge pull request #6190 from jamessan/vim-7.4.1991
vim-patch:7.4.1991,7.4.1992,7.4.1993,7.4.1994
This commit is contained in:
@@ -7715,11 +7715,13 @@ static void emsg_funcname(char *ermsg, char_u *name)
|
||||
*/
|
||||
static int non_zero_arg(typval_T *argvars)
|
||||
{
|
||||
return (argvars[0].v_type == VAR_NUMBER
|
||||
&& argvars[0].vval.v_number != 0)
|
||||
|| (argvars[0].v_type == VAR_STRING
|
||||
&& argvars[0].vval.v_string != NULL
|
||||
&& *argvars[0].vval.v_string != NUL);
|
||||
return ((argvars[0].v_type == VAR_NUMBER
|
||||
&& argvars[0].vval.v_number != 0)
|
||||
|| (argvars[0].v_type == VAR_SPECIAL
|
||||
&& argvars[0].vval.v_special == kSpecialVarTrue)
|
||||
|| (argvars[0].v_type == VAR_STRING
|
||||
&& argvars[0].vval.v_string != NULL
|
||||
&& *argvars[0].vval.v_string != NUL));
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
|
@@ -1225,7 +1225,7 @@ int gen_expand_wildcards(int num_pat, char_u **pat, int *num_file,
|
||||
* "vim c:/" work. */
|
||||
if (flags & EW_NOTFOUND) {
|
||||
addfile(&ga, t, flags | EW_DIR | EW_FILE);
|
||||
} else if (os_path_exists(t)) {
|
||||
} else {
|
||||
addfile(&ga, t, flags);
|
||||
}
|
||||
xfree(t);
|
||||
|
@@ -27,5 +27,6 @@ source test_tabline.vim
|
||||
source test_tabpage.vim
|
||||
source test_tagcase.vim
|
||||
source test_tagjump.vim
|
||||
source test_true_false.vim
|
||||
source test_unlet.vim
|
||||
source test_window_cmd.vim
|
||||
|
150
src/nvim/testdir/test_true_false.vim
Normal file
150
src/nvim/testdir/test_true_false.vim
Normal file
@@ -0,0 +1,150 @@
|
||||
" Test behavior of boolean-like values.
|
||||
|
||||
" Test what is explained at ":help TRUE" and ":help FALSE".
|
||||
func Test_if()
|
||||
if v:false
|
||||
call assert_true(false, 'v:false is false')
|
||||
endif
|
||||
if 0
|
||||
call assert_true(false, 'zero is false')
|
||||
endif
|
||||
if "0"
|
||||
call assert_true(false, 'zero string is false')
|
||||
endif
|
||||
if "foo"
|
||||
call assert_true(false, 'foo is false')
|
||||
endif
|
||||
if " "
|
||||
call assert_true(false, 'space is false')
|
||||
endif
|
||||
if empty("foo")
|
||||
call assert_true(false, 'foo is not empty')
|
||||
endif
|
||||
|
||||
if v:true
|
||||
else
|
||||
call assert_true(false, 'v:true is true')
|
||||
endif
|
||||
if 1
|
||||
else
|
||||
call assert_true(false, 'one is true')
|
||||
endif
|
||||
if "1"
|
||||
else
|
||||
call assert_true(false, 'one string is true')
|
||||
endif
|
||||
if "1foo"
|
||||
else
|
||||
call assert_true(false, 'one in string is true')
|
||||
endif
|
||||
|
||||
call assert_fails('if [1]', 'E745')
|
||||
call assert_fails('if {1: 1}', 'E728')
|
||||
call assert_fails('if function("string")', 'E703')
|
||||
call assert_fails('if 1.3")', 'E805')
|
||||
endfunc
|
||||
|
||||
function Try_arg_true_false(expr, false_val, true_val)
|
||||
for v in ['v:false', '0', '"0"', '"foo"', '" "']
|
||||
let r = eval(substitute(a:expr, '%v%', v, ''))
|
||||
call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . string(a:false_val) . ' but ' . string(r))
|
||||
endfor
|
||||
for v in ['v:true', '1', '"1"', '"1foo"']
|
||||
let r = eval(substitute(a:expr, '%v%', v, ''))
|
||||
call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . string(a:true_val) . ' but ' . string(r))
|
||||
endfor
|
||||
endfunc
|
||||
|
||||
" Test using TRUE or FALSE values for an argument.
|
||||
func Test_true_false_arg()
|
||||
call Try_arg_true_false('count(["a", "A"], "a", %v%)', 1, 2)
|
||||
|
||||
set wildignore=*.swp
|
||||
call Try_arg_true_false('expand("foo.swp", %v%)', "", "foo.swp")
|
||||
call Try_arg_true_false('expand("foo.vim", 0, %v%)', "foo.vim", ["foo.vim"])
|
||||
|
||||
call setreg('a', ['x', 'y'])
|
||||
call Try_arg_true_false('getreg("a", 1, %v%)', "x\ny\n", ['x', 'y'])
|
||||
|
||||
set wildignore=*.vim
|
||||
call Try_arg_true_false('glob("runtest.vim", %v%)', "", "runtest.vim")
|
||||
set wildignore=*.swp
|
||||
call Try_arg_true_false('glob("runtest.vim", 0, %v%)', "runtest.vim", ["runtest.vim"])
|
||||
if has('unix')
|
||||
silent !ln -s doesntexit Xlink
|
||||
call Try_arg_true_false('glob("Xlink", 0, 0, %v%)', "", "Xlink")
|
||||
silent !rm Xlink
|
||||
endif
|
||||
|
||||
set wildignore=*.vim
|
||||
call Try_arg_true_false('globpath(".", "runtest.vim", %v%)', "", "./runtest.vim")
|
||||
set wildignore=*.swp
|
||||
call Try_arg_true_false('globpath(".", "runtest.vim", 0, %v%)', "./runtest.vim", ["./runtest.vim"])
|
||||
if has('unix')
|
||||
silent !ln -s doesntexit Xlink
|
||||
call Try_arg_true_false('globpath(".", "Xlink", 0, 0, %v%)', "", "./Xlink")
|
||||
silent !rm Xlink
|
||||
endif
|
||||
|
||||
abbr asdf asdff
|
||||
call Try_arg_true_false('hasmapto("asdff", "i", %v%)', 0, 1)
|
||||
|
||||
call Try_arg_true_false('index(["a", "A"], "A", 0, %v%)', 1, 0)
|
||||
|
||||
function FilterMapArg(d)
|
||||
if type(a:d) == type({})
|
||||
return filter(a:d, 'v:key == "rhs"')
|
||||
endif
|
||||
return a:d
|
||||
endfunction
|
||||
call Try_arg_true_false('maparg("asdf", "i", %v%)', "", "asdff")
|
||||
call Try_arg_true_false('FilterMapArg(maparg("asdf", "i", 1, %v%))', "asdff", {'rhs': 'asdff'})
|
||||
|
||||
call Try_arg_true_false('hasmapto("asdf", "i", %v%)', 0, 1)
|
||||
|
||||
new colored
|
||||
call setline(1, '<here>')
|
||||
syn match brackets "<.*>"
|
||||
syn match here "here" transparent
|
||||
let brackets_id = synID(1, 1, 0)
|
||||
let here_id = synID(1, 3, 0)
|
||||
call Try_arg_true_false('synID(1, 3, %v%)', here_id, brackets_id)
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
function Try_arg_non_zero(expr, false_val, true_val)
|
||||
for v in ['v:false', '0', '[1]', '{2:3}', '3.4']
|
||||
let r = eval(substitute(a:expr, '%v%', v, ''))
|
||||
call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . a:false_val . ' but ' . r)
|
||||
endfor
|
||||
for v in ['v:true', '1', '" "', '"0"']
|
||||
let r = eval(substitute(a:expr, '%v%', v, ''))
|
||||
call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . a:true_val . ' but ' . r)
|
||||
endfor
|
||||
endfunc
|
||||
|
||||
|
||||
" Test using non-zero-arg for an argument.
|
||||
func Test_non_zero_arg()
|
||||
" call test_settime(93784)
|
||||
" call Try_arg_non_zero("mode(%v%)", 'x', 'x!')
|
||||
" call test_settime(0)
|
||||
|
||||
call Try_arg_non_zero("shellescape('foo%', %v%)", "'foo%'", "'foo\\%'")
|
||||
|
||||
" visualmode() needs to be called twice to check
|
||||
for v in [v:false, 0, [1], {2:3}, 3.4]
|
||||
normal vv
|
||||
let r = visualmode(v)
|
||||
call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' . r)
|
||||
let r = visualmode(v)
|
||||
call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' . r)
|
||||
endfor
|
||||
for v in [v:true, 1, " ", "0"]
|
||||
normal vv
|
||||
let r = visualmode(v)
|
||||
call assert_equal('v', r, 'result for ' . v . ' is not "v" but ' . r)
|
||||
let r = visualmode(v)
|
||||
call assert_equal('', r, 'result for ' . v . ' is not "" but ' . r)
|
||||
endfor
|
||||
endfunc
|
@@ -446,10 +446,10 @@ static int included_patches[] = {
|
||||
1997,
|
||||
1996,
|
||||
// 1995 NA
|
||||
// 1994,
|
||||
// 1993,
|
||||
// 1992,
|
||||
// 1991,
|
||||
1994,
|
||||
1993,
|
||||
1992,
|
||||
1991,
|
||||
1990,
|
||||
1989,
|
||||
// 1988 NA
|
||||
|
Reference in New Issue
Block a user