mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-05-28 00:21:57 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
@@ -2103,6 +2103,7 @@ test_arglist \
|
||||
test_history \
|
||||
test_increment \
|
||||
test_increment_dbcs \
|
||||
test_job_fails \
|
||||
test_join \
|
||||
test_json \
|
||||
test_jumps \
|
||||
|
||||
@@ -418,6 +418,7 @@ dict_find(dict_T *d, char_u *key, int len)
|
||||
/*
|
||||
* Get a string item from a dictionary.
|
||||
* When "save" is TRUE allocate memory for it.
|
||||
* When FALSE a shared buffer is used, can only be used once!
|
||||
* Returns NULL if the entry doesn't exist or out of memory.
|
||||
*/
|
||||
char_u *
|
||||
|
||||
+11
-2
@@ -4247,6 +4247,13 @@ f_getcompletion(typval_T *argvars, typval_T *rettv)
|
||||
xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern);
|
||||
}
|
||||
# endif
|
||||
#ifdef FEAT_CSCOPE
|
||||
if (xpc.xp_context == EXPAND_CSCOPE)
|
||||
{
|
||||
set_context_in_cscope_cmd(&xpc, xpc.xp_pattern, CMD_cscope);
|
||||
xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern);
|
||||
}
|
||||
#endif
|
||||
|
||||
pat = addstar(xpc.xp_pattern, xpc.xp_pattern_len, xpc.xp_context);
|
||||
if ((rettv_list_alloc(rettv) != FAIL) && (pat != NULL))
|
||||
@@ -9679,11 +9686,11 @@ f_setmatches(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
|
||||
}
|
||||
}
|
||||
|
||||
group = get_dict_string(d, (char_u *)"group", FALSE);
|
||||
group = get_dict_string(d, (char_u *)"group", TRUE);
|
||||
priority = (int)get_dict_number(d, (char_u *)"priority");
|
||||
id = (int)get_dict_number(d, (char_u *)"id");
|
||||
conceal = dict_find(d, (char_u *)"conceal", -1) != NULL
|
||||
? get_dict_string(d, (char_u *)"conceal", FALSE)
|
||||
? get_dict_string(d, (char_u *)"conceal", TRUE)
|
||||
: NULL;
|
||||
if (i == 0)
|
||||
{
|
||||
@@ -9697,6 +9704,8 @@ f_setmatches(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
|
||||
list_unref(s);
|
||||
s = NULL;
|
||||
}
|
||||
vim_free(group);
|
||||
vim_free(conceal);
|
||||
|
||||
li = li->li_next;
|
||||
}
|
||||
|
||||
@@ -176,6 +176,7 @@ NEW_TESTS = test_arglist.res \
|
||||
test_history.res \
|
||||
test_increment.res \
|
||||
test_increment_dbcs.res \
|
||||
test_job_fails.res \
|
||||
test_json.res \
|
||||
test_langmap.res \
|
||||
test_man.res \
|
||||
|
||||
@@ -125,12 +125,22 @@ func Test_getcompletion()
|
||||
let l = getcompletion('dark', 'highlight')
|
||||
call assert_equal([], l)
|
||||
|
||||
if has('cscope')
|
||||
let l = getcompletion('', 'cscope')
|
||||
let cmds = ['add', 'find', 'help', 'kill', 'reset', 'show']
|
||||
call assert_equal(cmds, l)
|
||||
" using cmdline completion must not change the result
|
||||
call feedkeys(":cscope find \<c-d>\<c-c>", 'xt')
|
||||
let l = getcompletion('', 'cscope')
|
||||
call assert_equal(cmds, l)
|
||||
let keys = ['a', 'c', 'd', 'e', 'f', 'g', 'i', 's', 't']
|
||||
let l = getcompletion('find ', 'cscope')
|
||||
call assert_equal(keys, l)
|
||||
endif
|
||||
|
||||
" For others test if the name is recognized.
|
||||
let names = ['buffer', 'environment', 'file_in_path',
|
||||
\ 'mapping', 'shellcmd', 'tag', 'tag_listfiles', 'user']
|
||||
if has('cscope')
|
||||
call add(names, 'cscope')
|
||||
endif
|
||||
if has('cmdline_hist')
|
||||
call add(names, 'history')
|
||||
endif
|
||||
|
||||
@@ -40,6 +40,8 @@ func Test_cscope1()
|
||||
call assert_true(0)
|
||||
endtry
|
||||
call assert_fails('cscope add Xcscope.out', 'E568')
|
||||
call assert_fails('cscope add doesnotexist.out', 'E563')
|
||||
call assert_fails('cscope kill 2', 'E261')
|
||||
" Test 1: Find this C-Symbol
|
||||
let a=execute('cscope find s main')
|
||||
" Test 1.1 test where it moves the cursor
|
||||
@@ -89,9 +91,12 @@ func Test_cscope1()
|
||||
call assert_equal(['','"Xmemfile_test.c" 143L, 3137C','(1 of 1): <<global>> #include <assert.h>'], split(a, '\n', 1))
|
||||
call assert_equal('#include <assert.h>', getline('.'))
|
||||
|
||||
" Test 9: Find places where this symbol is assigned a value
|
||||
" Test 9: Invalid find command
|
||||
call assert_fails('cs find x', 'E560')
|
||||
|
||||
" Test 10: Find places where this symbol is assigned a value
|
||||
" this needs a cscope >= 15.8
|
||||
" unfortunatly, Travis has cscope version 15.7
|
||||
" unfortunately, Travis has cscope version 15.7
|
||||
let cscope_version=systemlist('cscope --version')[0]
|
||||
let cs_version=str2float(matchstr(cscope_version, '\d\+\(\.\d\+\)\?'))
|
||||
if cs_version >= 15.8
|
||||
@@ -106,12 +111,12 @@ func Test_cscope1()
|
||||
call assert_equal(' item = mf_hash_find(&ht, key);', getline('.'))
|
||||
endif
|
||||
|
||||
" Test 10: leading whitespace is not removed for cscope find text
|
||||
" Test 11: leading whitespace is not removed for cscope find text
|
||||
let a=execute('cscope find t test_mf_hash')
|
||||
call assert_equal(['', '(1 of 1): <<<unknown>>> test_mf_hash();'], split(a, '\n', 1))
|
||||
call assert_equal(' test_mf_hash();', getline('.'))
|
||||
|
||||
" Test 11: cscope help
|
||||
" Test 12: cscope help
|
||||
let a=execute('cscope help')
|
||||
call assert_match('^cscope commands:\n', a)
|
||||
call assert_match('\nadd :', a)
|
||||
@@ -121,20 +126,44 @@ func Test_cscope1()
|
||||
call assert_match('\nreset: Reinit all connections', a)
|
||||
call assert_match('\nshow : Show connections', a)
|
||||
|
||||
" Test 12: reset connections
|
||||
" Test 13: reset connections
|
||||
let a=execute('cscope reset')
|
||||
call assert_match('\nAdded cscope database.*Xcscope.out (#0)', a)
|
||||
call assert_match('\nAll cscope databases reset', a)
|
||||
|
||||
" Test 13: cscope show
|
||||
" Test 14: cscope show
|
||||
let a=execute('cscope show')
|
||||
call assert_match('\n 0 \d\+.*Xcscope.out\s*<none>', a)
|
||||
|
||||
" Test 14: 'csprg' option
|
||||
" Test 15: cstag and 'csto' option
|
||||
set csto=0
|
||||
let a=execute('cstag TEST_COUNT')
|
||||
call assert_match('(1 of 1): <<TEST_COUNT>> #define TEST_COUNT 50000', a)
|
||||
call assert_equal('#define TEST_COUNT 50000', getline('.'))
|
||||
set csto=1
|
||||
let a=execute('cstag index_to_key')
|
||||
call assert_match('(1 of 1): <<index_to_key>> #define index_to_key(i) ((i) ^ 15167)', a)
|
||||
call assert_equal('#define index_to_key(i) ((i) ^ 15167)', getline('.'))
|
||||
call assert_fails('cstag xxx', 'E257')
|
||||
call assert_fails('cstag', 'E562')
|
||||
|
||||
" Test 15: 'csprg' option
|
||||
call assert_equal('cscope', &csprg)
|
||||
|
||||
" Test 16: 'cst' option
|
||||
set cst
|
||||
let a=execute('tag TEST_COUNT')
|
||||
call assert_match('(1 of 1): <<TEST_COUNT>> #define TEST_COUNT 50000', a)
|
||||
call assert_equal('#define TEST_COUNT 50000', getline('.'))
|
||||
set nocst
|
||||
call assert_fails('tag TEST_COUNT', 'E426')
|
||||
|
||||
" CleanUp
|
||||
call CscopeSetupOrClean(0)
|
||||
|
||||
" cscope command should fail after killing scope connection.
|
||||
call assert_fails('cscope find s main', 'E567')
|
||||
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
||||
@@ -194,3 +194,16 @@ func Test_funcref()
|
||||
let OneByRef = funcref('One')
|
||||
call assert_equal(2, OneByRef())
|
||||
endfunc
|
||||
|
||||
func Test_setmatches()
|
||||
hi def link 1 Comment
|
||||
hi def link 2 PreProc
|
||||
let set = [{"group": 1, "pattern": 2, "id": 3, "priority": 4}]
|
||||
let exp = [{"group": '1', "pattern": '2', "id": 3, "priority": 4}]
|
||||
if has('conceal')
|
||||
let set[0]['conceal'] = 5
|
||||
let exp[0]['conceal'] = '5'
|
||||
endif
|
||||
call setmatches(set)
|
||||
call assert_equal(exp, getmatches())
|
||||
endfunc
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
" This test is in a separate file, because it usually causes reports for memory
|
||||
" leaks under valgrind. That is because when fork/exec fails memory is not
|
||||
" freed. Since the process exists right away it's not a real leak.
|
||||
|
||||
source shared.vim
|
||||
|
||||
func Test_job_start_fails()
|
||||
if has('job')
|
||||
let g:job = job_start('axdfxsdf')
|
||||
if has('unix')
|
||||
call WaitFor('job_status(g:job) == "dead"')
|
||||
call assert_equal('dead', job_status(g:job))
|
||||
else
|
||||
call WaitFor('job_status(g:job) == "fail"')
|
||||
call assert_equal('fail', job_status(g:job))
|
||||
endif
|
||||
unlet g:job
|
||||
endif
|
||||
endfunc
|
||||
@@ -1,27 +1,5 @@
|
||||
" Test binding arguments to a Funcref.
|
||||
|
||||
" NOTE: This function may cause memory leaks to be reported.
|
||||
" That is because when fork/exec fails memory is not freed. Since the process
|
||||
" exists right away it's not a real leak.
|
||||
func Test_job_start_fails()
|
||||
if has('job')
|
||||
let job = job_start('axdfxsdf')
|
||||
for i in range(100)
|
||||
let status = job_status(job)
|
||||
if status == 'dead' || status == 'fail'
|
||||
break
|
||||
endif
|
||||
sleep 10m
|
||||
endfor
|
||||
if has('unix')
|
||||
call assert_equal('dead', job_status(job))
|
||||
else
|
||||
call assert_equal('fail', job_status(job))
|
||||
endif
|
||||
unlet job
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func MyFunc(arg1, arg2, arg3)
|
||||
return a:arg1 . '/' . a:arg2 . '/' . a:arg3
|
||||
endfunc
|
||||
|
||||
@@ -778,6 +778,16 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2161,
|
||||
/**/
|
||||
2160,
|
||||
/**/
|
||||
2159,
|
||||
/**/
|
||||
2158,
|
||||
/**/
|
||||
2157,
|
||||
/**/
|
||||
2156,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user