mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
updated for version 7.1-120
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
*eval.txt* For Vim version 7.1. Last change: 2007 Jul 25
|
*eval.txt* For Vim version 7.1. Last change: 2007 Sep 25
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -1603,7 +1603,7 @@ foldtext( ) String line displayed for closed fold
|
|||||||
foldtextresult( {lnum}) String text for closed fold at {lnum}
|
foldtextresult( {lnum}) String text for closed fold at {lnum}
|
||||||
foreground( ) Number bring the Vim window to the foreground
|
foreground( ) Number bring the Vim window to the foreground
|
||||||
function( {name}) Funcref reference to function {name}
|
function( {name}) Funcref reference to function {name}
|
||||||
garbagecollect() none free memory, breaking cyclic references
|
garbagecollect( [at_exit]) none free memory, breaking cyclic references
|
||||||
get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
|
get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
|
||||||
get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
|
get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
|
||||||
getbufline( {expr}, {lnum} [, {end}])
|
getbufline( {expr}, {lnum} [, {end}])
|
||||||
@@ -2673,7 +2673,7 @@ function({name}) *function()* *E700*
|
|||||||
{name} can be a user defined function or an internal function.
|
{name} can be a user defined function or an internal function.
|
||||||
|
|
||||||
|
|
||||||
garbagecollect() *garbagecollect()*
|
garbagecollect([at_exit]) *garbagecollect()*
|
||||||
Cleanup unused |Lists| and |Dictionaries| that have circular
|
Cleanup unused |Lists| and |Dictionaries| that have circular
|
||||||
references. There is hardly ever a need to invoke this
|
references. There is hardly ever a need to invoke this
|
||||||
function, as it is automatically done when Vim runs out of
|
function, as it is automatically done when Vim runs out of
|
||||||
@@ -2683,6 +2683,9 @@ garbagecollect() *garbagecollect()*
|
|||||||
This is useful if you have deleted a very big |List| and/or
|
This is useful if you have deleted a very big |List| and/or
|
||||||
|Dictionary| with circular references in a script that runs
|
|Dictionary| with circular references in a script that runs
|
||||||
for a long time.
|
for a long time.
|
||||||
|
When the optional "at_exit" argument is one, garbage
|
||||||
|
collection will also be done when exiting Vim, if it wasn't
|
||||||
|
done before. This is useful when checking for memory leaks.
|
||||||
|
|
||||||
get({list}, {idx} [, {default}]) *get()*
|
get({list}, {idx} [, {default}]) *get()*
|
||||||
Get item {idx} from |List| {list}. When this item is not
|
Get item {idx} from |List| {list}. When this item is not
|
||||||
|
@@ -6128,6 +6128,7 @@ garbage_collect()
|
|||||||
/* Only do this once. */
|
/* Only do this once. */
|
||||||
want_garbage_collect = FALSE;
|
want_garbage_collect = FALSE;
|
||||||
may_garbage_collect = FALSE;
|
may_garbage_collect = FALSE;
|
||||||
|
garbage_collect_at_exit = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 1. Go through all accessible variables and mark all lists and dicts
|
* 1. Go through all accessible variables and mark all lists and dicts
|
||||||
@@ -7110,7 +7111,7 @@ static struct fst
|
|||||||
{"foldtextresult", 1, 1, f_foldtextresult},
|
{"foldtextresult", 1, 1, f_foldtextresult},
|
||||||
{"foreground", 0, 0, f_foreground},
|
{"foreground", 0, 0, f_foreground},
|
||||||
{"function", 1, 1, f_function},
|
{"function", 1, 1, f_function},
|
||||||
{"garbagecollect", 0, 0, f_garbagecollect},
|
{"garbagecollect", 0, 1, f_garbagecollect},
|
||||||
{"get", 2, 3, f_get},
|
{"get", 2, 3, f_get},
|
||||||
{"getbufline", 2, 3, f_getbufline},
|
{"getbufline", 2, 3, f_getbufline},
|
||||||
{"getbufvar", 2, 2, f_getbufvar},
|
{"getbufvar", 2, 2, f_getbufvar},
|
||||||
@@ -9719,6 +9720,9 @@ f_garbagecollect(argvars, rettv)
|
|||||||
/* This is postponed until we are back at the toplevel, because we may be
|
/* This is postponed until we are back at the toplevel, because we may be
|
||||||
* using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */
|
* using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */
|
||||||
want_garbage_collect = TRUE;
|
want_garbage_collect = TRUE;
|
||||||
|
|
||||||
|
if (argvars[0].v_type != VAR_UNKNOWN && get_tv_number(&argvars[0]) == 1)
|
||||||
|
garbage_collect_at_exit = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -301,13 +301,17 @@ EXTERN except_T *caught_stack INIT(= NULL);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
/* Garbage collection can only take place when we are sure there are no Lists
|
/*
|
||||||
|
* Garbage collection can only take place when we are sure there are no Lists
|
||||||
* or Dictionaries being used internally. This is flagged with
|
* or Dictionaries being used internally. This is flagged with
|
||||||
* "may_garbage_collect" when we are at the toplevel.
|
* "may_garbage_collect" when we are at the toplevel.
|
||||||
* "want_garbage_collect" is set by the garbagecollect() function, which means
|
* "want_garbage_collect" is set by the garbagecollect() function, which means
|
||||||
* we do garbage collection before waiting for a char at the toplevel. */
|
* we do garbage collection before waiting for a char at the toplevel.
|
||||||
|
* "garbage_collect_at_exit" indicates garbagecollect(1) was called.
|
||||||
|
*/
|
||||||
EXTERN int may_garbage_collect INIT(= FALSE);
|
EXTERN int may_garbage_collect INIT(= FALSE);
|
||||||
EXTERN int want_garbage_collect INIT(= FALSE);
|
EXTERN int want_garbage_collect INIT(= FALSE);
|
||||||
|
EXTERN int garbage_collect_at_exit INIT(= FALSE);
|
||||||
|
|
||||||
/* ID of script being sourced or was sourced to define the current function. */
|
/* ID of script being sourced or was sourced to define the current function. */
|
||||||
EXTERN scid_T current_SID INIT(= 0);
|
EXTERN scid_T current_SID INIT(= 0);
|
||||||
|
@@ -1334,6 +1334,10 @@ getout(exitval)
|
|||||||
#ifdef FEAT_CSCOPE
|
#ifdef FEAT_CSCOPE
|
||||||
cs_end();
|
cs_end();
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
if (garbage_collect_at_exit)
|
||||||
|
garbage_collect();
|
||||||
|
#endif
|
||||||
|
|
||||||
mch_exit(exitval);
|
mch_exit(exitval);
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@ VIMPROG = ../vim
|
|||||||
|
|
||||||
# Uncomment this line for using valgrind.
|
# Uncomment this line for using valgrind.
|
||||||
# The output goes into a file "valgrind.$PID" (sorry, no test number).
|
# The output goes into a file "valgrind.$PID" (sorry, no test number).
|
||||||
# VALGRIND = valgrind --tool=memcheck --num-callers=15 --logfile=valgrind
|
# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --logfile=valgrind
|
||||||
|
|
||||||
SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
|
SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
|
||||||
test7.out test8.out test9.out test10.out test11.out \
|
test7.out test8.out test9.out test10.out test11.out \
|
||||||
@@ -39,7 +39,7 @@ gui: nolog $(SCRIPTS) $(SCRIPTS_GUI)
|
|||||||
$(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
|
$(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* viminfo
|
-rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* valgrind.pid* viminfo
|
||||||
|
|
||||||
test1.out: test1.in
|
test1.out: test1.in
|
||||||
-rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo
|
-rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo
|
||||||
@@ -66,5 +66,9 @@ test1.out: test1.in
|
|||||||
fi"
|
fi"
|
||||||
-rm -rf X* test.ok viminfo
|
-rm -rf X* test.ok viminfo
|
||||||
|
|
||||||
|
test49.out: test49.vim
|
||||||
|
|
||||||
|
test60.out: test60.vim
|
||||||
|
|
||||||
nolog:
|
nolog:
|
||||||
-echo Test results: >test.log
|
-echo Test results: >test.log
|
||||||
|
@@ -18,6 +18,7 @@ vaBiBD:?Bug?,/Piece/-2w! test.out
|
|||||||
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
|
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
|
||||||
:endif
|
:endif
|
||||||
:exe "normal " . tt
|
:exe "normal " . tt
|
||||||
|
:unlet tt
|
||||||
:.w >>test.out
|
:.w >>test.out
|
||||||
:set vb
|
:set vb
|
||||||
/^Piece
|
/^Piece
|
||||||
|
@@ -37,6 +37,7 @@ mt:let i = 0
|
|||||||
: endif
|
: endif
|
||||||
: endif
|
: endif
|
||||||
:endwhile
|
:endwhile
|
||||||
|
:unlet i j
|
||||||
:'t,$w! test.out
|
:'t,$w! test.out
|
||||||
:qa!
|
:qa!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
@@ -52,7 +52,15 @@ XX+-XX
|
|||||||
---*---
|
---*---
|
||||||
(one
|
(one
|
||||||
(two
|
(two
|
||||||
[(one again:$-5,$wq! test.out
|
[(one again:$-5,$w! test.out
|
||||||
|
:delfunc Table
|
||||||
|
:delfunc Compute
|
||||||
|
:delfunc Expr1
|
||||||
|
:delfunc Expr2
|
||||||
|
:delfunc ListItem
|
||||||
|
:delfunc ListReset
|
||||||
|
:unlet retval counter
|
||||||
|
:q!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
here
|
here
|
||||||
|
@@ -55,6 +55,7 @@ endfun
|
|||||||
/kk$
|
/kk$
|
||||||
:call append("$", foldlevel("."))
|
:call append("$", foldlevel("."))
|
||||||
:/^last/+1,$w! test.out
|
:/^last/+1,$w! test.out
|
||||||
|
:delfun Flvl
|
||||||
:qa!
|
:qa!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
@@ -34,6 +34,7 @@ j:let three = three . "-" . winline()
|
|||||||
:call append("$", two)
|
:call append("$", two)
|
||||||
:call append("$", three)
|
:call append("$", three)
|
||||||
:$-2,$w! test.out
|
:$-2,$w! test.out
|
||||||
|
:unlet one two three
|
||||||
:qa!
|
:qa!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
@@ -1,13 +1,29 @@
|
|||||||
This is a test of the script language.
|
This is a test of the script language.
|
||||||
|
|
||||||
If after adding a new test, the test output doesn't appear properly in
|
If after adding a new test, the test output doesn't appear properly in
|
||||||
test49.failed, try to add one ore more "G"s at the line before ENDTEST.
|
test49.failed, try to add one ore more "G"s at the line ending in "test.out"
|
||||||
|
|
||||||
STARTTEST
|
STARTTEST
|
||||||
:so small.vim
|
:so small.vim
|
||||||
:se nocp nomore viminfo+=nviminfo
|
:se nocp nomore viminfo+=nviminfo
|
||||||
:so test49.vim
|
:so test49.vim
|
||||||
GGGGGGGGGG"rp:.-,$wq! test.out
|
GGGGGGGGGGGGGG"rp:.-,$w! test.out
|
||||||
|
:"
|
||||||
|
:" make valgrind happy
|
||||||
|
:redir => funclist
|
||||||
|
:silent func
|
||||||
|
:redir END
|
||||||
|
:for line in split(funclist, "\n")
|
||||||
|
: let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
|
||||||
|
: if name != ''
|
||||||
|
: exe "delfunc " . name
|
||||||
|
: endif
|
||||||
|
:endfor
|
||||||
|
:for v in keys(g:)
|
||||||
|
: silent! exe "unlet " . v
|
||||||
|
:endfor
|
||||||
|
:unlet v
|
||||||
|
:qa!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
Results of test49.vim:
|
Results of test49.vim:
|
||||||
|
@@ -345,6 +345,10 @@ let l = [0, 1, 2, 3]
|
|||||||
:endfun
|
:endfun
|
||||||
:call Test(1, 2, [3, 4], {5: 6}) " This may take a while
|
:call Test(1, 2, [3, 4], {5: 6}) " This may take a while
|
||||||
:"
|
:"
|
||||||
|
:delfunc Test
|
||||||
|
:unlet dict
|
||||||
|
:call garbagecollect(1)
|
||||||
|
:"
|
||||||
:/^start:/,$wq! test.out
|
:/^start:/,$wq! test.out
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
@@ -17,5 +17,5 @@ endfun
|
|||||||
fun s:DoNothing()
|
fun s:DoNothing()
|
||||||
call append(line('$'), "nothing line")
|
call append(line('$'), "nothing line")
|
||||||
endfun
|
endfun
|
||||||
nnoremap <buffer> _x :call <SID>DoNothing()<bar>call <SID>DoLast()<cr>
|
nnoremap <buffer> _x :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
|
||||||
end:
|
end:
|
||||||
|
@@ -86,6 +86,7 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
|
|||||||
:$put =str
|
:$put =str
|
||||||
`m]s:let [str, a] = spellbadword()
|
`m]s:let [str, a] = spellbadword()
|
||||||
:$put =str
|
:$put =str
|
||||||
|
:unlet str a
|
||||||
:"
|
:"
|
||||||
:" Postponed prefixes
|
:" Postponed prefixes
|
||||||
:call TestOne('2', '1')
|
:call TestOne('2', '1')
|
||||||
@@ -100,6 +101,10 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
|
|||||||
:" NOSLITSUGS
|
:" NOSLITSUGS
|
||||||
:call TestOne('8', '8')
|
:call TestOne('8', '8')
|
||||||
:"
|
:"
|
||||||
|
:" clean up for valgrind
|
||||||
|
:delfunc TestOne
|
||||||
|
:set spl= enc=latin1
|
||||||
|
:"
|
||||||
gg:/^test output:/,$wq! test.out
|
gg:/^test output:/,$wq! test.out
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
@@ -90,6 +90,7 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
|
|||||||
:$put =str
|
:$put =str
|
||||||
`m]s:let [str, a] = spellbadword()
|
`m]s:let [str, a] = spellbadword()
|
||||||
:$put =str
|
:$put =str
|
||||||
|
:unlet str a
|
||||||
:"
|
:"
|
||||||
:" Postponed prefixes
|
:" Postponed prefixes
|
||||||
:call TestOne('2', '1')
|
:call TestOne('2', '1')
|
||||||
@@ -101,6 +102,10 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
|
|||||||
:call TestOne('6', '6')
|
:call TestOne('6', '6')
|
||||||
:call TestOne('7', '7')
|
:call TestOne('7', '7')
|
||||||
:"
|
:"
|
||||||
|
:" clean up for valgrind
|
||||||
|
:delfunc TestOne
|
||||||
|
:set spl= enc=latin1
|
||||||
|
:"
|
||||||
gg:/^test output:/,$wq! test.out
|
gg:/^test output:/,$wq! test.out
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
@@ -569,6 +569,9 @@ endfunction
|
|||||||
redir END
|
redir END
|
||||||
endfunction
|
endfunction
|
||||||
:call TestExists()
|
:call TestExists()
|
||||||
|
:delfunc TestExists
|
||||||
|
:delfunc RunTest
|
||||||
|
:delfunc TestFuncArg
|
||||||
:edit! test.out
|
:edit! test.out
|
||||||
:set ff=unix
|
:set ff=unix
|
||||||
:w
|
:w
|
||||||
|
@@ -94,4 +94,5 @@ if !exists('*s:my_script_func')
|
|||||||
else
|
else
|
||||||
echo "FAILED"
|
echo "FAILED"
|
||||||
endif
|
endif
|
||||||
|
unlet str
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@ STARTTEST
|
|||||||
:let nr = tabpagenr()
|
:let nr = tabpagenr()
|
||||||
:q
|
:q
|
||||||
:call append(line('$'), 'tab page ' . nr)
|
:call append(line('$'), 'tab page ' . nr)
|
||||||
|
:unlet nr
|
||||||
:"
|
:"
|
||||||
:" Open three tab pages and use ":tabdo"
|
:" Open three tab pages and use ":tabdo"
|
||||||
:0tabnew
|
:0tabnew
|
||||||
@@ -23,6 +24,7 @@ STARTTEST
|
|||||||
:q!
|
:q!
|
||||||
:call append(line('$'), line1)
|
:call append(line('$'), line1)
|
||||||
:call append(line('$'), line2)
|
:call append(line('$'), line2)
|
||||||
|
:unlet line1 line2
|
||||||
:"
|
:"
|
||||||
:"
|
:"
|
||||||
:/^Results/,$w! test.out
|
:/^Results/,$w! test.out
|
||||||
|
@@ -60,7 +60,7 @@ STARTTEST
|
|||||||
:else
|
:else
|
||||||
: let @r .= "FAILED\n"
|
: let @r .= "FAILED\n"
|
||||||
:endif
|
:endif
|
||||||
:" --- Check that "matchdelete()" returns 0 if succesfull and otherwise -1.
|
:" --- Check that "matchdelete()" returns 0 if successful and otherwise -1.
|
||||||
:let @r .= "*** Test 6: "
|
:let @r .= "*** Test 6: "
|
||||||
:let m = matchadd("MyGroup1", "TODO")
|
:let m = matchadd("MyGroup1", "TODO")
|
||||||
:let r1 = matchdelete(m)
|
:let r1 = matchdelete(m)
|
||||||
@@ -117,7 +117,7 @@ STARTTEST
|
|||||||
:" --- Check that "setmatches()" will not add two matches with the same ID. The
|
:" --- Check that "setmatches()" will not add two matches with the same ID. The
|
||||||
:" --- expected behaviour (for now) is to add the first match but not the
|
:" --- expected behaviour (for now) is to add the first match but not the
|
||||||
:" --- second and to return 0 (even though it is a matter of debate whether
|
:" --- second and to return 0 (even though it is a matter of debate whether
|
||||||
:" --- this can be considered succesfull behaviour).
|
:" --- this can be considered successful behaviour).
|
||||||
:let @r .= "*** Test 9: "
|
:let @r .= "*** Test 9: "
|
||||||
:let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])
|
:let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])
|
||||||
:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0
|
:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0
|
||||||
@@ -127,7 +127,7 @@ STARTTEST
|
|||||||
:endif
|
:endif
|
||||||
:call clearmatches()
|
:call clearmatches()
|
||||||
:unlet r1
|
:unlet r1
|
||||||
:" --- Check that "setmatches()" returns 0 if succesfull and otherwise -1.
|
:" --- Check that "setmatches()" returns 0 if successful and otherwise -1.
|
||||||
:" --- (A range of valid and invalid input values are tried out to generate the
|
:" --- (A range of valid and invalid input values are tried out to generate the
|
||||||
:" --- return values.)
|
:" --- return values.)
|
||||||
:let @r .= "*** Test 10: "
|
:let @r .= "*** Test 10: "
|
||||||
|
@@ -44,8 +44,10 @@ STARTTEST
|
|||||||
: $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
|
: $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
|
||||||
: endif
|
: endif
|
||||||
: endfor
|
: endfor
|
||||||
|
: unlet i
|
||||||
: endif
|
: endif
|
||||||
:endfor
|
:endfor
|
||||||
|
:unlet t tl e l
|
||||||
:/^Results/,$wq! test.out
|
:/^Results/,$wq! test.out
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
@@ -666,6 +666,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
120,
|
||||||
/**/
|
/**/
|
||||||
119,
|
119,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user