# HG changeset patch # User Bram Moolenaar # Date 1567271703 -7200 # Node ID 9fac6d0de69a37d9e0940ebb3bc7623c2ddee042 # Parent 6ec211f844364077236c66c97c776fd7de4aabf1 patch 8.1.1952: more functions can be used as a method Commit: https://github.com/vim/vim/commit/5d69fdb7c4b91faf2d92b8d449cc9460f3035fb3 Author: Bram Moolenaar Date: Sat Aug 31 19:13:58 2019 +0200 patch 8.1.1952: more functions can be used as a method Problem: More functions can be used as a method. Solution: Allow more functions to be used as a method. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.1. Last change: 2019 Aug 28 +*eval.txt* For Vim version 8.1. Last change: 2019 Aug 31 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5517,7 +5517,7 @@ gettabwinvar({tabnr}, {winnr}, {varname} gettabwinvar({tabnr}, {winnr}, '&') < Can also be used as a |method|: > - GetTabnr()->gettabvar(winnr, varname) + GetTabnr()->gettabwinvar(winnr, varname) gettagstack([{nr}]) *gettagstack()* The result is a Dict, which is the tag stack of window {nr}. @@ -5547,6 +5547,9 @@ gettagstack([{nr}]) *gettagstack()* See |tagstack| for more information about the tag stack. + Can also be used as a |method|: > + GetWinnr()->gettagstack() + getwininfo([{winid}]) *getwininfo()* Returns information about windows as a List with Dictionaries. @@ -5581,6 +5584,9 @@ getwininfo([{winid}]) *getwininfo()* winrow topmost screen column of the window, row from |win_screenpos()| + Can also be used as a |method|: > + GetWinnr()->getwininfo() + getwinpos([{timeout}]) *getwinpos()* The result is a list with two numbers, the result of getwinposx() and getwinposy() combined: @@ -5600,6 +5606,10 @@ getwinpos([{timeout}]) *getwinpos()* " Do some work here endwhile < + + Can also be used as a |method|: > + GetTimeout()->getwinpos() +< *getwinposx()* getwinposx() The result is a Number, which is the X coordinate in pixels of the left hand side of the GUI Vim window. Also works for an @@ -5619,6 +5629,9 @@ getwinvar({winnr}, {varname} [, {def}]) Examples: > :let list_is_on = getwinvar(2, '&list') :echo "myvar = " . getwinvar(1, 'myvar') + +< Can also be used as a |method|: > + GetWinnr()->getwinvar(varname) < glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()* Expand the file wildcards in {expr}. See |wildcards| for the @@ -5656,6 +5669,9 @@ glob({expr} [, {nosuf} [, {list} [, {all See |expand()| for expanding special Vim variables. See |system()| for getting the raw output of an external command. + Can also be used as a |method|: > + GetExpr()->glob() + glob2regpat({expr}) *glob2regpat()* Convert a file pattern, as used by glob(), into a search pattern. The result can be used to match with a string that @@ -5668,7 +5684,9 @@ glob2regpat({expr}) *glob2regpat()* Note that the result depends on the system. On MS-Windows a backslash usually means a path separator. - *globpath()* + Can also be used as a |method|: > + GetExpr()->glob2regpat() +< *globpath()* globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) Perform glob() on all directories in {path} and concatenate the results. Example: > @@ -5704,6 +5722,10 @@ globpath({path}, {expr} [, {nosuf} [, {l < Upwards search and limiting the depth of "**" is not supported, thus using 'path' will not always work properly. + Can also be used as a |method|, the base is passed as the + second argument: > + GetExpr()->globpath(&rtp) +< *has()* has({feature}) The result is a Number, which is 1 if the feature {feature} is supported, zero otherwise. The {feature} argument is a diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -584,15 +584,15 @@ static funcentry_T global_functions[] = {"gettabinfo", 0, 1, FEARG_1, f_gettabinfo}, {"gettabvar", 2, 3, FEARG_1, f_gettabvar}, {"gettabwinvar", 3, 4, FEARG_1, f_gettabwinvar}, - {"gettagstack", 0, 1, 0, f_gettagstack}, - {"getwininfo", 0, 1, 0, f_getwininfo}, - {"getwinpos", 0, 1, 0, f_getwinpos}, + {"gettagstack", 0, 1, FEARG_1, f_gettagstack}, + {"getwininfo", 0, 1, FEARG_1, f_getwininfo}, + {"getwinpos", 0, 1, FEARG_1, f_getwinpos}, {"getwinposx", 0, 0, 0, f_getwinposx}, {"getwinposy", 0, 0, 0, f_getwinposy}, - {"getwinvar", 2, 3, 0, f_getwinvar}, - {"glob", 1, 4, 0, f_glob}, - {"glob2regpat", 1, 1, 0, f_glob2regpat}, - {"globpath", 2, 5, 0, f_globpath}, + {"getwinvar", 2, 3, FEARG_1, f_getwinvar}, + {"glob", 1, 4, FEARG_1, f_glob}, + {"glob2regpat", 1, 1, FEARG_1, f_glob2regpat}, + {"globpath", 2, 5, FEARG_2, f_globpath}, {"has", 1, 1, 0, f_has}, {"has_key", 2, 2, FEARG_1, f_has_key}, {"haslocaldir", 0, 2, 0, f_haslocaldir}, diff --git a/src/testdir/test_bufwintabinfo.vim b/src/testdir/test_bufwintabinfo.vim --- a/src/testdir/test_bufwintabinfo.vim +++ b/src/testdir/test_bufwintabinfo.vim @@ -77,7 +77,7 @@ function Test_getbufwintabinfo() call assert_equal('green', winlist[2].variables.signal) call assert_equal(w4_id, winlist[3].winid) - let winfo = getwininfo(w5_id)[0] + let winfo = w5_id->getwininfo()[0] call assert_equal(2, winfo.tabnr) call assert_equal([], getwininfo(3)) diff --git a/src/testdir/test_escaped_glob.vim b/src/testdir/test_escaped_glob.vim --- a/src/testdir/test_escaped_glob.vim +++ b/src/testdir/test_escaped_glob.vim @@ -16,7 +16,7 @@ function Test_glob() " Execute these commands in the sandbox, so that using the shell fails. " Setting 'shell' to an invalid name causes a memory leak. sandbox call assert_equal("", glob('Xxx\{')) - sandbox call assert_equal("", glob('Xxx\$')) + sandbox call assert_equal("", 'Xxx\$'->glob()) w! Xxx\{ w! Xxx\$ sandbox call assert_equal("Xxx{", glob('Xxx\{')) @@ -29,5 +29,5 @@ function Test_globpath() sandbox call assert_equal("sautest/autoload/globone.vim\nsautest/autoload/globtwo.vim", \ globpath('sautest/autoload', 'glob*.vim')) sandbox call assert_equal(['sautest/autoload/globone.vim', 'sautest/autoload/globtwo.vim'], - \ globpath('sautest/autoload', 'glob*.vim', 0, 1)) + \ 'glob*.vim'->globpath('sautest/autoload', 0, 1)) endfunction diff --git a/src/testdir/test_getvar.vim b/src/testdir/test_getvar.vim --- a/src/testdir/test_getvar.vim +++ b/src/testdir/test_getvar.vim @@ -12,8 +12,8 @@ func Test_var() let def_str = "Chance" call assert_equal('Dance', getwinvar(1, 'var_str')) call assert_equal('Dance', getwinvar(1, 'var_str', def_str)) - call assert_equal({'var_str': 'Dance'}, getwinvar(1, '')) - call assert_equal({'var_str': 'Dance'}, getwinvar(1, '', def_str)) + call assert_equal({'var_str': 'Dance'}, 1->getwinvar('')) + call assert_equal({'var_str': 'Dance'}, 1->getwinvar('', def_str)) unlet w:var_str call assert_equal('Chance', getwinvar(1, 'var_str', def_str)) call assert_equal({}, getwinvar(1, '')) diff --git a/src/testdir/test_glob2regpat.vim b/src/testdir/test_glob2regpat.vim --- a/src/testdir/test_glob2regpat.vim +++ b/src/testdir/test_glob2regpat.vim @@ -8,7 +8,7 @@ endfunc func Test_glob2regpat_valid() call assert_equal('^foo\.', glob2regpat('foo.*')) - call assert_equal('^foo.$', glob2regpat('foo?')) + call assert_equal('^foo.$', 'foo?'->glob2regpat()) call assert_equal('\.vim$', glob2regpat('*.vim')) call assert_equal('^[abc]$', glob2regpat('[abc]')) call assert_equal('^foo bar$', glob2regpat('foo\ bar')) diff --git a/src/testdir/test_tagjump.vim b/src/testdir/test_tagjump.vim --- a/src/testdir/test_tagjump.vim +++ b/src/testdir/test_tagjump.vim @@ -268,7 +268,7 @@ func Test_getsettagstack() enew | only call settagstack(1, {'items' : []}) call assert_equal(0, gettagstack(1).length) - call assert_equal([], gettagstack(1).items) + call assert_equal([], 1->gettagstack().items) " Error cases call assert_equal({}, gettagstack(100)) call assert_equal(-1, settagstack(100, {'items' : []})) diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -2066,6 +2066,9 @@ func Test_terminal_getwinpos() " In the GUI it can be more, let's assume a 20 x 14 cell. " And then add 100 / 200 tolerance. let [xroot, yroot] = getwinpos() + let winpos = 50->getwinpos() + call assert_equal(xroot, winpos[0]) + call assert_equal(yroot, winpos[1]) let [winrow, wincol] = win_screenpos('.') let xoff = wincol * (has('gui_running') ? 14 : 7) + 100 let yoff = winrow * (has('gui_running') ? 20 : 10) + 200 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1952, +/**/ 1951, /**/ 1950,