0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.1.2013: more functions can be used as methods

Problem:    More functions can be used as methods.
Solution:   Make various functions usable as a method.
This commit is contained in:
Bram Moolenaar 2019-09-08 21:51:41 +02:00
parent 7ee80f7661
commit f92e58cadb
11 changed files with 145 additions and 49 deletions

View File

@ -9750,7 +9750,10 @@ timer_info([{id}])
"callback" the callback "callback" the callback
"paused" 1 if the timer is paused, 0 otherwise "paused" 1 if the timer is paused, 0 otherwise
{only available when compiled with the |+timers| feature} Can also be used as a |method|: >
GetTimer()->timer_info()
< {only available when compiled with the |+timers| feature}
timer_pause({timer}, {paused}) *timer_pause()* timer_pause({timer}, {paused}) *timer_pause()*
Pause or unpause a timer. A paused timer does not invoke its Pause or unpause a timer. A paused timer does not invoke its
@ -9765,7 +9768,10 @@ timer_pause({timer}, {paused}) *timer_pause()*
String, then the timer is paused, otherwise it is unpaused. String, then the timer is paused, otherwise it is unpaused.
See |non-zero-arg|. See |non-zero-arg|.
{only available when compiled with the |+timers| feature} Can also be used as a |method|: >
GetTimer()->timer_pause(1)
< {only available when compiled with the |+timers| feature}
*timer_start()* *timer* *timers* *timer_start()* *timer* *timers*
timer_start({time}, {callback} [, {options}]) timer_start({time}, {callback} [, {options}])
@ -9798,7 +9804,10 @@ timer_start({time}, {callback} [, {options}])
< This will invoke MyHandler() three times at 500 msec < This will invoke MyHandler() three times at 500 msec
intervals. intervals.
Not available in the |sandbox|. Can also be used as a |method|: >
GetMsec()->timer_start(callback)
< Not available in the |sandbox|.
{only available when compiled with the |+timers| feature} {only available when compiled with the |+timers| feature}
timer_stop({timer}) *timer_stop()* timer_stop({timer}) *timer_stop()*
@ -9806,7 +9815,10 @@ timer_stop({timer}) *timer_stop()*
{timer} is an ID returned by timer_start(), thus it must be a {timer} is an ID returned by timer_start(), thus it must be a
Number. If {timer} does not exist there is no error. Number. If {timer} does not exist there is no error.
{only available when compiled with the |+timers| feature} Can also be used as a |method|: >
GetTimer()->timer_stop()
< {only available when compiled with the |+timers| feature}
timer_stopall() *timer_stopall()* timer_stopall() *timer_stopall()*
Stop all timers. The timer callbacks will no longer be Stop all timers. The timer callbacks will no longer be
@ -9820,11 +9832,17 @@ tolower({expr}) *tolower()*
characters turned into lowercase (just like applying |gu| to characters turned into lowercase (just like applying |gu| to
the string). the string).
Can also be used as a |method|: >
GetText()->tolower()
toupper({expr}) *toupper()* toupper({expr}) *toupper()*
The result is a copy of the String given, with all lowercase The result is a copy of the String given, with all lowercase
characters turned into uppercase (just like applying |gU| to characters turned into uppercase (just like applying |gU| to
the string). the string).
Can also be used as a |method|: >
GetText()->toupper()
tr({src}, {fromstr}, {tostr}) *tr()* tr({src}, {fromstr}, {tostr}) *tr()*
The result is a copy of the {src} string with all characters The result is a copy of the {src} string with all characters
which appear in {fromstr} replaced by the character in that which appear in {fromstr} replaced by the character in that
@ -9839,6 +9857,9 @@ tr({src}, {fromstr}, {tostr}) *tr()*
echo tr("<blob>", "<>", "{}") echo tr("<blob>", "<>", "{}")
< returns "{blob}" < returns "{blob}"
Can also be used as a |method|: >
GetText()->tr(from, to)
trim({text} [, {mask}]) *trim()* trim({text} [, {mask}]) *trim()*
Return {text} as a String where any character in {mask} is Return {text} as a String where any character in {mask} is
removed from the beginning and end of {text}. removed from the beginning and end of {text}.
@ -9855,6 +9876,9 @@ trim({text} [, {mask}]) *trim()*
echo trim("rm<Xrm<>X>rrm", "rm<>") echo trim("rm<Xrm<>X>rrm", "rm<>")
< returns "Xrm<>X" (characters in the middle are not removed) < returns "Xrm<>X" (characters in the middle are not removed)
Can also be used as a |method|: >
GetText()->trim()
trunc({expr}) *trunc()* trunc({expr}) *trunc()*
Return the largest integral value with magnitude less than or Return the largest integral value with magnitude less than or
equal to {expr} as a |Float| (truncate towards zero). equal to {expr} as a |Float| (truncate towards zero).
@ -9915,6 +9939,9 @@ undofile({name}) *undofile()*
When compiled without the |+persistent_undo| option this always When compiled without the |+persistent_undo| option this always
returns an empty string. returns an empty string.
Can also be used as a |method|: >
GetFilename()->undofile()
undotree() *undotree()* undotree() *undotree()*
Return the current state of the undo tree in a dictionary with Return the current state of the undo tree in a dictionary with
the following items: the following items:
@ -10013,8 +10040,11 @@ virtcol({expr}) *virtcol()*
all lines: > all lines: >
echo max(map(range(1, line('$')), "virtcol([v:val, '$'])")) echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
< Can also be used as a |method|: >
GetPos()->virtcol()
visualmode([expr]) *visualmode()*
visualmode([{expr}]) *visualmode()*
The result is a String, which describes the last Visual mode The result is a String, which describes the last Visual mode
used in the current buffer. Initially it returns an empty used in the current buffer. Initially it returns an empty
string, but once Visual mode has been used, it returns "v", string, but once Visual mode has been used, it returns "v",
@ -10028,7 +10058,7 @@ visualmode([expr]) *visualmode()*
Visual mode that was used. Visual mode that was used.
If Visual mode is active, use |mode()| to get the Visual mode If Visual mode is active, use |mode()| to get the Visual mode
(e.g., in a |:vmap|). (e.g., in a |:vmap|).
If [expr] is supplied and it evaluates to a non-zero Number or If {expr} is supplied and it evaluates to a non-zero Number or
a non-empty String, then the Visual mode will be cleared and a non-empty String, then the Visual mode will be cleared and
the old value is returned. See |non-zero-arg|. the old value is returned. See |non-zero-arg|.
@ -10057,10 +10087,17 @@ win_execute({id}, {command} [, {silent}]) *win_execute()*
Not all commands are allowed in popup windows. Not all commands are allowed in popup windows.
When window {id} does not exist then no error is given. When window {id} does not exist then no error is given.
Can also be used as a |method|, the base is used for the
command: >
GetCommand()->win_execute(winid)
win_findbuf({bufnr}) *win_findbuf()* win_findbuf({bufnr}) *win_findbuf()*
Returns a list with |window-ID|s for windows that contain Returns a list with |window-ID|s for windows that contain
buffer {bufnr}. When there is none the list is empty. buffer {bufnr}. When there is none the list is empty.
Can also be used as a |method|: >
GetBufnr()->win_findbuf()
win_getid([{win} [, {tab}]]) *win_getid()* win_getid([{win} [, {tab}]]) *win_getid()*
Get the |window-ID| for the specified window. Get the |window-ID| for the specified window.
When {win} is missing use the current window. When {win} is missing use the current window.
@ -10070,20 +10107,32 @@ win_getid([{win} [, {tab}]]) *win_getid()*
number {tab}. The first tab has number one. number {tab}. The first tab has number one.
Return zero if the window cannot be found. Return zero if the window cannot be found.
Can also be used as a |method|: >
GetWinnr()->win_getid()
win_gotoid({expr}) *win_gotoid()* win_gotoid({expr}) *win_gotoid()*
Go to window with ID {expr}. This may also change the current Go to window with ID {expr}. This may also change the current
tabpage. tabpage.
Return 1 if successful, 0 if the window cannot be found. Return 1 if successful, 0 if the window cannot be found.
Can also be used as a |method|: >
GetWinid()->win_gotoid()
win_id2tabwin({expr}) *win_id2tabwin()* win_id2tabwin({expr}) *win_id2tabwin()*
Return a list with the tab number and window number of window Return a list with the tab number and window number of window
with ID {expr}: [tabnr, winnr]. with ID {expr}: [tabnr, winnr].
Return [0, 0] if the window cannot be found. Return [0, 0] if the window cannot be found.
Can also be used as a |method|: >
GetWinid()->win_id2tabwin()
win_id2win({expr}) *win_id2win()* win_id2win({expr}) *win_id2win()*
Return the window number of window with ID {expr}. Return the window number of window with ID {expr}.
Return 0 if the window cannot be found in the current tabpage. Return 0 if the window cannot be found in the current tabpage.
Can also be used as a |method|: >
GetWinid()->win_id2win()
win_screenpos({nr}) *win_screenpos()* win_screenpos({nr}) *win_screenpos()*
Return the screen position of window {nr} as a list with two Return the screen position of window {nr} as a list with two
numbers: [row, col]. The first window always has position numbers: [row, col]. The first window always has position
@ -10092,6 +10141,9 @@ win_screenpos({nr}) *win_screenpos()*
Return [0, 0] if the window cannot be found in the current Return [0, 0] if the window cannot be found in the current
tabpage. tabpage.
Can also be used as a |method|: >
GetWinid()->win_screenpos()
<
*winbufnr()* *winbufnr()*
winbufnr({nr}) The result is a Number, which is the number of the buffer winbufnr({nr}) The result is a Number, which is the number of the buffer
associated with window {nr}. {nr} can be the window number or associated with window {nr}. {nr} can be the window number or
@ -10119,6 +10171,9 @@ winheight({nr}) *winheight()*
This excludes any window toolbar line. This excludes any window toolbar line.
Examples: > Examples: >
:echo "The current window has " . winheight(0) . " lines." :echo "The current window has " . winheight(0) . " lines."
< Can also be used as a |method|: >
GetWinid()->winheight()
< <
winlayout([{tabnr}]) *winlayout()* winlayout([{tabnr}]) *winlayout()*
The result is a nested List containing the layout of windows The result is a nested List containing the layout of windows
@ -10148,6 +10203,9 @@ winlayout([{tabnr}]) *winlayout()*
:echo winlayout(2) :echo winlayout(2)
['col', [['leaf', 1002], ['row', ['leaf', 1003], ['col', [['leaf', 1002], ['row', ['leaf', 1003],
['leaf', 1001]]], ['leaf', 1000]] ['leaf', 1001]]], ['leaf', 1000]]
<
Can also be used as a |method|: >
GetTabnr()->winlayout()
< <
*winline()* *winline()*
winline() The result is a Number, which is the screen line of the cursor winline() The result is a Number, which is the screen line of the cursor
@ -10182,6 +10240,9 @@ winnr([{arg}]) The result is a Number, which is the number of the current
let window_count = winnr('$') let window_count = winnr('$')
let prev_window = winnr('#') let prev_window = winnr('#')
let wnum = winnr('3k') let wnum = winnr('3k')
< Can also be used as a |method|: >
GetWinval()->winnr()
< <
*winrestcmd()* *winrestcmd()*
winrestcmd() Returns a sequence of |:resize| commands that should restore winrestcmd() Returns a sequence of |:resize| commands that should restore
@ -10210,6 +10271,9 @@ winrestview({dict})
If you have changed the values the result is unpredictable. If you have changed the values the result is unpredictable.
If the window size changed the result won't be the same. If the window size changed the result won't be the same.
Can also be used as a |method|: >
GetView()->winrestview()
<
*winsaveview()* *winsaveview()*
winsaveview() Returns a |Dictionary| that contains information to restore winsaveview() Returns a |Dictionary| that contains information to restore
the view of the current window. Use |winrestview()| to the view of the current window. Use |winrestview()| to
@ -10247,6 +10311,9 @@ winwidth({nr}) *winwidth()*
< For getting the terminal or screen size, see the 'columns' < For getting the terminal or screen size, see the 'columns'
option. option.
Can also be used as a |method|: >
GetWinid()->winwidth()
wordcount() *wordcount()* wordcount() *wordcount()*
The result is a dictionary of byte/chars/word statistics for The result is a dictionary of byte/chars/word statistics for
@ -10308,6 +10375,9 @@ writefile({object}, {fname} [, {flags}])
:let fl = readfile("foo", "b") :let fl = readfile("foo", "b")
:call writefile(fl, "foocopy", "b") :call writefile(fl, "foocopy", "b")
< Can also be used as a |method|: >
GetText()->writefile("thefile")
xor({expr}, {expr}) *xor()* xor({expr}, {expr}) *xor()*
Bitwise XOR on the two arguments. The arguments are converted Bitwise XOR on the two arguments. The arguments are converted

View File

@ -822,46 +822,46 @@ static funcentry_T global_functions[] =
#endif #endif
{"test_settime", 1, 1, FEARG_1, f_test_settime}, {"test_settime", 1, 1, FEARG_1, f_test_settime},
#ifdef FEAT_TIMERS #ifdef FEAT_TIMERS
{"timer_info", 0, 1, 0, f_timer_info}, {"timer_info", 0, 1, FEARG_1, f_timer_info},
{"timer_pause", 2, 2, 0, f_timer_pause}, {"timer_pause", 2, 2, FEARG_1, f_timer_pause},
{"timer_start", 2, 3, 0, f_timer_start}, {"timer_start", 2, 3, FEARG_1, f_timer_start},
{"timer_stop", 1, 1, 0, f_timer_stop}, {"timer_stop", 1, 1, FEARG_1, f_timer_stop},
{"timer_stopall", 0, 0, 0, f_timer_stopall}, {"timer_stopall", 0, 0, 0, f_timer_stopall},
#endif #endif
{"tolower", 1, 1, 0, f_tolower}, {"tolower", 1, 1, FEARG_1, f_tolower},
{"toupper", 1, 1, 0, f_toupper}, {"toupper", 1, 1, FEARG_1, f_toupper},
{"tr", 3, 3, 0, f_tr}, {"tr", 3, 3, FEARG_1, f_tr},
{"trim", 1, 2, 0, f_trim}, {"trim", 1, 2, FEARG_1, f_trim},
#ifdef FEAT_FLOAT #ifdef FEAT_FLOAT
{"trunc", 1, 1, FEARG_1, f_trunc}, {"trunc", 1, 1, FEARG_1, f_trunc},
#endif #endif
{"type", 1, 1, FEARG_1, f_type}, {"type", 1, 1, FEARG_1, f_type},
{"undofile", 1, 1, 0, f_undofile}, {"undofile", 1, 1, FEARG_1, f_undofile},
{"undotree", 0, 0, 0, f_undotree}, {"undotree", 0, 0, 0, f_undotree},
{"uniq", 1, 3, FEARG_1, f_uniq}, {"uniq", 1, 3, FEARG_1, f_uniq},
{"values", 1, 1, FEARG_1, f_values}, {"values", 1, 1, FEARG_1, f_values},
{"virtcol", 1, 1, 0, f_virtcol}, {"virtcol", 1, 1, FEARG_1, f_virtcol},
{"visualmode", 0, 1, 0, f_visualmode}, {"visualmode", 0, 1, 0, f_visualmode},
{"wildmenumode", 0, 0, 0, f_wildmenumode}, {"wildmenumode", 0, 0, 0, f_wildmenumode},
{"win_execute", 2, 3, 0, f_win_execute}, {"win_execute", 2, 3, FEARG_2, f_win_execute},
{"win_findbuf", 1, 1, 0, f_win_findbuf}, {"win_findbuf", 1, 1, FEARG_1, f_win_findbuf},
{"win_getid", 0, 2, 0, f_win_getid}, {"win_getid", 0, 2, FEARG_1, f_win_getid},
{"win_gotoid", 1, 1, 0, f_win_gotoid}, {"win_gotoid", 1, 1, FEARG_1, f_win_gotoid},
{"win_id2tabwin", 1, 1, 0, f_win_id2tabwin}, {"win_id2tabwin", 1, 1, FEARG_1, f_win_id2tabwin},
{"win_id2win", 1, 1, 0, f_win_id2win}, {"win_id2win", 1, 1, FEARG_1, f_win_id2win},
{"win_screenpos", 1, 1, 0, f_win_screenpos}, {"win_screenpos", 1, 1, FEARG_1, f_win_screenpos},
{"winbufnr", 1, 1, FEARG_1, f_winbufnr}, {"winbufnr", 1, 1, FEARG_1, f_winbufnr},
{"wincol", 0, 0, 0, f_wincol}, {"wincol", 0, 0, 0, f_wincol},
{"winheight", 1, 1, 0, f_winheight}, {"winheight", 1, 1, FEARG_1, f_winheight},
{"winlayout", 0, 1, 0, f_winlayout}, {"winlayout", 0, 1, FEARG_1, f_winlayout},
{"winline", 0, 0, 0, f_winline}, {"winline", 0, 0, 0, f_winline},
{"winnr", 0, 1, 0, f_winnr}, {"winnr", 0, 1, FEARG_1, f_winnr},
{"winrestcmd", 0, 0, 0, f_winrestcmd}, {"winrestcmd", 0, 0, 0, f_winrestcmd},
{"winrestview", 1, 1, 0, f_winrestview}, {"winrestview", 1, 1, FEARG_1, f_winrestview},
{"winsaveview", 0, 0, 0, f_winsaveview}, {"winsaveview", 0, 0, 0, f_winsaveview},
{"winwidth", 1, 1, 0, f_winwidth}, {"winwidth", 1, 1, FEARG_1, f_winwidth},
{"wordcount", 0, 0, 0, f_wordcount}, {"wordcount", 0, 0, 0, f_wordcount},
{"writefile", 2, 3, 0, f_writefile}, {"writefile", 2, 3, FEARG_1, f_writefile},
{"xor", 2, 2, FEARG_1, f_xor}, {"xor", 2, 2, FEARG_1, f_xor},
}; };

View File

@ -83,7 +83,7 @@ func Test_screenpos()
call assert_equal({'row': winrow, call assert_equal({'row': winrow,
\ 'col': wincol + 0, \ 'col': wincol + 0,
\ 'curscol': wincol + 7, \ 'curscol': wincol + 7,
\ 'endcol': wincol + 7}, screenpos(winid, 1, 1)) \ 'endcol': wincol + 7}, winid->screenpos(1, 1))
call assert_equal({'row': winrow, call assert_equal({'row': winrow,
\ 'col': wincol + 13, \ 'col': wincol + 13,
\ 'curscol': wincol + 13, \ 'curscol': wincol + 13,

View File

@ -91,7 +91,7 @@ func Test_win_execute()
if has('textprop') if has('textprop')
let popupwin = popup_create('the popup win', {'line': 2, 'col': 3}) let popupwin = popup_create('the popup win', {'line': 2, 'col': 3})
redraw redraw
let line = win_execute(popupwin, 'echo getline(1)') let line = 'echo getline(1)'->win_execute(popupwin)
call assert_match('the popup win', line) call assert_match('the popup win', line)
call popup_close(popupwin) call popup_close(popupwin)

View File

@ -266,7 +266,7 @@ endfunc
func s:normalize_fname(fname) func s:normalize_fname(fname)
let ret = substitute(a:fname, '\', '/', 'g') let ret = substitute(a:fname, '\', '/', 'g')
let ret = substitute(ret, '//', '/', 'g') let ret = substitute(ret, '//', '/', 'g')
return tolower(ret) return ret->tolower()
endfunc endfunc
func Test_resolve_win32() func Test_resolve_win32()
@ -505,7 +505,7 @@ func Test_toupper()
\ toupper(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~')) \ toupper(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'))
" Test with a few lowercase diacritics. " Test with a few lowercase diacritics.
call assert_equal("AÀÁÂÃÄÅĀĂĄǍǞǠẢ", toupper("aàáâãäåāăąǎǟǡả")) call assert_equal("AÀÁÂÃÄÅĀĂĄǍǞǠẢ", "aàáâãäåāăąǎǟǡả"->toupper())
call assert_equal("BḂḆ", toupper("bḃḇ")) call assert_equal("BḂḆ", toupper("bḃḇ"))
call assert_equal("CÇĆĈĊČ", toupper("cçćĉċč")) call assert_equal("CÇĆĈĊČ", toupper("cçćĉċč"))
call assert_equal("DĎĐḊḎḐ", toupper("dďđḋḏḑ")) call assert_equal("DĎĐḊḎḐ", toupper("dďđḋḏḑ"))
@ -568,6 +568,11 @@ func Test_toupper()
call toupper("123\xC0\x80\xC0") call toupper("123\xC0\x80\xC0")
endfunc endfunc
func Test_tr()
call assert_equal('foo', tr('bar', 'bar', 'foo'))
call assert_equal('zxy', 'cab'->tr('abc', 'xyz'))
endfunc
" Tests for the mode() function " Tests for the mode() function
let current_modes = '' let current_modes = ''
func Save_mode() func Save_mode()
@ -1203,7 +1208,7 @@ endfunc
func Test_trim() func Test_trim()
call assert_equal("Testing", trim(" \t\r\r\x0BTesting \t\n\r\n\t\x0B\x0B")) call assert_equal("Testing", trim(" \t\r\r\x0BTesting \t\n\r\n\t\x0B\x0B"))
call assert_equal("Testing", trim(" \t \r\r\n\n\x0BTesting \t\n\r\n\t\x0B\x0B")) call assert_equal("Testing", " \t \r\r\n\n\x0BTesting \t\n\r\n\t\x0B\x0B"->trim())
call assert_equal("RESERVE", trim("xyz \twwRESERVEzyww \t\t", " wxyz\t")) call assert_equal("RESERVE", trim("xyz \twwRESERVEzyww \t\t", " wxyz\t"))
call assert_equal("wRE \tSERVEzyww", trim("wRE \tSERVEzyww")) call assert_equal("wRE \tSERVEzyww", trim("wRE \tSERVEzyww"))
call assert_equal("abcd\t xxxx tail", trim(" \tabcd\t xxxx tail")) call assert_equal("abcd\t xxxx tail", trim(" \tabcd\t xxxx tail"))
@ -1617,7 +1622,7 @@ func Test_bufadd_bufload()
call assert_equal([''], getbufline(buf, 1, '$')) call assert_equal([''], getbufline(buf, 1, '$'))
let curbuf = bufnr('') let curbuf = bufnr('')
call writefile(['some', 'text'], 'XotherName') eval ['some', 'text']->writefile('XotherName')
let buf = 'XotherName'->bufadd() let buf = 'XotherName'->bufadd()
call assert_notequal(0, buf) call assert_notequal(0, buf)
eval 'XotherName'->bufexists()->assert_equal(1) eval 'XotherName'->bufexists()->assert_equal(1)

View File

@ -25,7 +25,7 @@ func Test_listchars()
redraw! redraw!
for i in range(1, 5) for i in range(1, 5)
call cursor(i, 1) call cursor(i, 1)
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$'))) call assert_equal([expected[i - 1]], ScreenLines(i, '$'->virtcol()))
endfor endfor
set listchars-=trail:< set listchars-=trail:<

View File

@ -71,7 +71,7 @@ endfunc
func Test_timer_info() func Test_timer_info()
let id = timer_start(1000, 'MyHandler') let id = timer_start(1000, 'MyHandler')
let info = timer_info(id) let info = id->timer_info()
call assert_equal(id, info[0]['id']) call assert_equal(id, info[0]['id'])
call assert_equal(1000, info[0]['time']) call assert_equal(1000, info[0]['time'])
call assert_true(info[0]['remaining'] > 500) call assert_true(info[0]['remaining'] > 500)
@ -109,7 +109,7 @@ func Test_timer_paused()
let info = timer_info(id) let info = timer_info(id)
call assert_equal(0, info[0]['paused']) call assert_equal(0, info[0]['paused'])
call timer_pause(id, 1) eval id->timer_pause(1)
let info = timer_info(id) let info = timer_info(id)
call assert_equal(1, info[0]['paused']) call assert_equal(1, info[0]['paused'])
sleep 100m sleep 100m
@ -149,7 +149,7 @@ func Test_timer_delete_myself()
endfunc endfunc
func StopTimer1(timer) func StopTimer1(timer)
let g:timer2 = timer_start(10, 'StopTimer2') let g:timer2 = 10->timer_start('StopTimer2')
" avoid maxfuncdepth error " avoid maxfuncdepth error
call timer_pause(g:timer1, 1) call timer_pause(g:timer1, 1)
sleep 20m sleep 20m
@ -262,7 +262,7 @@ func Test_timer_peek_and_get_char()
let intr = timer_start(100, 'Interrupt') let intr = timer_start(100, 'Interrupt')
let c = getchar() let c = getchar()
call assert_equal(char2nr('a'), c) call assert_equal(char2nr('a'), c)
call timer_stop(intr) eval intr->timer_stop()
endfunc endfunc
func Test_timer_getchar_zero() func Test_timer_getchar_zero()

View File

@ -456,7 +456,7 @@ funct Test_undofile()
call delete('Xundodir', 'd') call delete('Xundodir', 'd')
" Test undofile() with 'undodir' set to a non-existing directory. " Test undofile() with 'undodir' set to a non-existing directory.
call assert_equal('', undofile('Xundofoo')) call assert_equal('', 'Xundofoo'->undofile())
if isdirectory('/tmp') if isdirectory('/tmp')
set undodir=/tmp set undodir=/tmp

View File

@ -72,7 +72,7 @@ endfunc
func Test_window_quit() func Test_window_quit()
e Xa e Xa
split Xb split Xb
call assert_equal(2, winnr('$')) call assert_equal(2, '$'->winnr())
call assert_equal('Xb', bufname(winbufnr(1))) call assert_equal('Xb', bufname(winbufnr(1)))
call assert_equal('Xa', bufname(winbufnr(2))) call assert_equal('Xa', bufname(winbufnr(2)))
@ -88,7 +88,7 @@ func Test_window_horizontal_split()
3wincmd s 3wincmd s
call assert_equal(2, winnr('$')) call assert_equal(2, winnr('$'))
call assert_equal(3, winheight(0)) call assert_equal(3, winheight(0))
call assert_equal(winwidth(1), winwidth(2)) call assert_equal(winwidth(1), 2->winwidth())
call assert_fails('botright topleft wincmd s', 'E442:') call assert_fails('botright topleft wincmd s', 'E442:')
bw bw
@ -300,7 +300,7 @@ func Test_window_height()
wincmd + wincmd +
call assert_equal(wh1, winheight(1)) call assert_equal(wh1, winheight(1))
call assert_equal(wh2, winheight(2)) call assert_equal(wh2, 2->winheight())
2wincmd _ 2wincmd _
call assert_equal(2, winheight(1)) call assert_equal(2, winheight(1))
@ -845,4 +845,16 @@ func Test_winnr()
only | tabonly only | tabonly
endfunc endfunc
func Test_winrestview()
split runtest.vim
normal 50%
let view = winsaveview()
close
split runtest.vim
eval view->winrestview()
call assert_equal(view, winsaveview())
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@ -67,7 +67,7 @@ func Test_win_getid()
call win_gotoid(id2) call win_gotoid(id2)
call assert_equal("two", expand("%")) call assert_equal("two", expand("%"))
call win_gotoid(id4) eval id4->win_gotoid()
call assert_equal("four", expand("%")) call assert_equal("four", expand("%"))
call win_gotoid(id1) call win_gotoid(id1)
call assert_equal("one", expand("%")) call assert_equal("one", expand("%"))
@ -75,17 +75,17 @@ func Test_win_getid()
call assert_equal("five", expand("%")) call assert_equal("five", expand("%"))
call assert_equal(0, win_id2win(9999)) call assert_equal(0, win_id2win(9999))
call assert_equal(nr5, win_id2win(id5)) call assert_equal(nr5, id5->win_id2win())
call assert_equal(0, win_id2win(id1)) call assert_equal(0, win_id2win(id1))
tabnext tabnext
call assert_equal(nr1, win_id2win(id1)) call assert_equal(nr1, win_id2win(id1))
call assert_equal([0, 0], win_id2tabwin(9999)) call assert_equal([0, 0], win_id2tabwin(9999))
call assert_equal([1, nr2], win_id2tabwin(id2)) call assert_equal([1, nr2], id2->win_id2tabwin())
call assert_equal([2, nr4], win_id2tabwin(id4)) call assert_equal([2, nr4], win_id2tabwin(id4))
call assert_equal([], win_findbuf(9999)) call assert_equal([], win_findbuf(9999))
call assert_equal([id2], win_findbuf(bufnr2)) call assert_equal([id2], bufnr2->win_findbuf())
call win_gotoid(id5) call win_gotoid(id5)
split split
call assert_equal(sort([id5, win_getid()]), sort(win_findbuf(bufnr5))) call assert_equal(sort([id5, win_getid()]), sort(win_findbuf(bufnr5)))
@ -98,7 +98,7 @@ func Test_win_getid_curtab()
tabfirst tabfirst
copen copen
only only
call assert_equal(win_getid(1), win_getid(1, 1)) call assert_equal(win_getid(1), 1->win_getid( 1))
tabclose! tabclose!
endfunc endfunc
@ -120,4 +120,11 @@ func Test_winlayout()
call assert_equal(['col', [['leaf', w3], ['row', [['leaf', w4], ['leaf', w2]]], ['leaf', w1]]], winlayout()) call assert_equal(['col', [['leaf', w3], ['row', [['leaf', w4], ['leaf', w2]]], ['leaf', w1]]], winlayout())
only! only!
let w1 = win_getid()
call assert_equal(['leaf', w1], winlayout(1))
tabnew
let w2 = win_getid()
call assert_equal(['leaf', w2], 2->winlayout())
tabclose
endfunc endfunc

View File

@ -757,6 +757,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 */
/**/
2013,
/**/ /**/
2012, 2012,
/**/ /**/