summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-08-23 22:31:37 +0200
committerBram Moolenaar <Bram@vim.org>2019-08-23 22:31:37 +0200
commit1a3a89168d61c2fed91cbca812cf1c6983901b79 (patch)
treea28bb59bc78f9832066fe00c551eefaafc4b8daa
parentd019039ccd7cbeae8923db20383a241d7fc77e2c (diff)
patch 8.1.1915: more functions can be used as methodsv8.1.1915
Problem: More functions can be used as methods. Solution: Make various functions usable as a method.
-rw-r--r--runtime/doc/eval.txt48
-rw-r--r--src/evalfunc.c32
-rw-r--r--src/testdir/test_bufline.vim2
-rw-r--r--src/testdir/test_cd.vim2
-rw-r--r--src/testdir/test_cindent.vim6
-rw-r--r--src/testdir/test_cursor_func.vim2
-rw-r--r--src/testdir/test_diffmode.vim4
-rw-r--r--src/testdir/test_functions.vim7
-rw-r--r--src/testdir/test_match.vim2
-rw-r--r--src/testdir/test_method.vim2
-rw-r--r--src/testdir/test_popup.vim6
-rw-r--r--src/version.c2
12 files changed, 84 insertions, 31 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index aa27beac10..9facfaf420 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -3410,6 +3410,9 @@ char2nr({expr} [, {utf8}]) *char2nr()*
let list = map(split(str, '\zs'), {_, val -> char2nr(val)})
< Result: [65, 66, 67]
+ Can also be used as a |method|: >
+ GetChar()->char2nr()
+
chdir({dir}) *chdir()*
Change the current working directory to {dir}. The scope of
the directory change depends on the directory of the current
@@ -3430,6 +3433,9 @@ chdir({dir}) *chdir()*
" ... do some work
call chdir(save_dir)
endif
+
+< Can also be used as a |method|: >
+ GetDir()->chdir()
<
cindent({lnum}) *cindent()*
Get the amount of indent for line {lnum} according the C
@@ -3440,12 +3446,18 @@ cindent({lnum}) *cindent()*
feature, -1 is returned.
See |C-indenting|.
+ Can also be used as a |method|: >
+ GetLnum()->cindent()
+
clearmatches([{win}]) *clearmatches()*
Clears all matches previously defined for the current window
by |matchadd()| and the |:match| commands.
If {win} is specified, use the window with this number or
window ID instead of the current window.
+ Can also be used as a |method|: >
+ GetWin()->clearmatches()
+<
*col()*
col({expr}) The result is a Number, which is the byte index of the column
position given with {expr}. The accepted positions are:
@@ -3481,6 +3493,9 @@ col({expr}) The result is a Number, which is the byte index of the column
\<C-O>:set ve=all<CR>
\<C-O>:echo col(".") . "\n" <Bar>
\let &ve = save_ve<CR>
+
+< Can also be used as a |method|: >
+ GetPos()->col()
<
complete({startcol}, {matches}) *complete()* *E785*
@@ -3512,6 +3527,10 @@ complete({startcol}, {matches}) *complete()* *E785*
< This isn't very useful, but it shows how it works. Note that
an empty string is returned to avoid a zero being inserted.
+ Can also be used as a |method|, the second argument is passed
+ in: >
+ GetMatches()->complete(col('.'))
+
complete_add({expr}) *complete_add()*
Add {expr} to the list of matches. Only to be used by the
function specified with the 'completefunc' option.
@@ -3521,6 +3540,9 @@ complete_add({expr}) *complete_add()*
See |complete-functions| for an explanation of {expr}. It is
the same as one item in the list that 'omnifunc' would return.
+ Can also be used as a |method|: >
+ GetMoreMatches()->complete_add()
+
complete_check() *complete_check()*
Check for a key typed while looking for completion matches.
This is to be used when looking for matches takes some time.
@@ -3581,6 +3603,9 @@ complete_info([{what}])
call complete_info(['mode'])
" Get only 'mode' and 'pum_visible'
call complete_info(['mode', 'pum_visible'])
+
+< Can also be used as a |method|: >
+ GetItems()->complete_info()
<
*confirm()*
confirm({msg} [, {choices} [, {default} [, {type}]]])
@@ -3636,6 +3661,9 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
don't fit, a vertical layout is used anyway. For some systems
the horizontal layout is always used.
+ Can also be used as a |method|in: >
+ BuildMessage()->confirm("&Yes\n&No")
+
*copy()*
copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't
different from using {expr} directly.
@@ -3765,12 +3793,18 @@ cursor({list})
position within a <Tab> or after the last character.
Returns 0 when the position could be set, -1 otherwise.
+ Can also be used as a |method|: >
+ GetCursorPos()->cursor()
+
debugbreak({pid}) *debugbreak()*
Specifically used to interrupt a program being debugged. It
will cause process {pid} to get a SIGTRAP. Behavior for other
processes is undefined. See |terminal-debugger|.
{only available on MS-Windows}
+ Can also be used as a |method|: >
+ GetPid()->debugbreak()
+
deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
Make a copy of {expr}. For Numbers and Strings this isn't
different from using {expr} directly.
@@ -3792,6 +3826,9 @@ deepcopy({expr} [, {noref}]) *deepcopy()* *E698*
{noref} set to 1 will fail.
Also see |copy()|.
+ Can also be used as a |method|: >
+ GetObject()->deepcopy()
+
delete({fname} [, {flags}]) *delete()*
Without {flags} or with {flags} empty: Deletes the file by the
name {fname}. This also works when {fname} is a symbolic link.
@@ -3813,6 +3850,9 @@ delete({fname} [, {flags}]) *delete()*
To delete a line from the buffer use |:delete| or
|deletebufline()|.
+ Can also be used as a |method|: >
+ GetName()->delete()
+
deletebufline({expr}, {first} [, {last}]) *deletebufline()*
Delete lines {first} to {last} (inclusive) from buffer {expr}.
If {last} is omitted then delete line {first} only.
@@ -3824,6 +3864,9 @@ deletebufline({expr}, {first} [, {last}]) *deletebufline()*
when using |line()| this refers to the current buffer. Use "$"
to refer to the last line in buffer {expr}.
+ Can also be used as a |method|: >
+ GetBuffer()->deletebufline(1)
+
*did_filetype()*
did_filetype() Returns |TRUE| when autocommands are being executed and the
FileType event has been triggered at least once. Can be used
@@ -3845,6 +3888,9 @@ diff_filler({lnum}) *diff_filler()*
line, "'m" mark m, etc.
Returns 0 if the current window is not in diff mode.
+ Can also be used as a |method|: >
+ GetLnum()->diff_filler()
+
diff_hlID({lnum}, {col}) *diff_hlID()*
Returns the highlight ID for diff mode at line {lnum} column
{col} (byte index). When the current line does not have a
@@ -3856,6 +3902,8 @@ diff_hlID({lnum}, {col}) *diff_hlID()*
The highlight ID can be used with |synIDattr()| to obtain
syntax information about the highlighting.
+ Can also be used as a |method|: >
+ GetLnum()->diff_hlID(col)
environ() *environ()*
Return all of environment variables as dictionary. You can
check if an environment variable exists like this: >
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 14fc6df640..b5e98f43b3 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -494,16 +494,16 @@ static funcentry_T global_functions[] =
{"ch_status", 1, 2, FEARG_1, f_ch_status},
#endif
{"changenr", 0, 0, 0, f_changenr},
- {"char2nr", 1, 2, 0, f_char2nr},
- {"chdir", 1, 1, 0, f_chdir},
- {"cindent", 1, 1, 0, f_cindent},
- {"clearmatches", 0, 1, 0, f_clearmatches},
- {"col", 1, 1, 0, f_col},
- {"complete", 2, 2, 0, f_complete},
- {"complete_add", 1, 1, 0, f_complete_add},
+ {"char2nr", 1, 2, FEARG_1, f_char2nr},
+ {"chdir", 1, 1, FEARG_1, f_chdir},
+ {"cindent", 1, 1, FEARG_1, f_cindent},
+ {"clearmatches", 0, 1, FEARG_1, f_clearmatches},
+ {"col", 1, 1, FEARG_1, f_col},
+ {"complete", 2, 2, FEARG_2, f_complete},
+ {"complete_add", 1, 1, FEARG_1, f_complete_add},
{"complete_check", 0, 0, 0, f_complete_check},
- {"complete_info", 0, 1, 0, f_complete_info},
- {"confirm", 1, 4, 0, f_confirm},
+ {"complete_info", 0, 1, FEARG_1, f_complete_info},
+ {"confirm", 1, 4, FEARG_1, f_confirm},
{"copy", 1, 1, FEARG_1, f_copy},
#ifdef FEAT_FLOAT
{"cos", 1, 1, FEARG_1, f_cos},
@@ -511,16 +511,16 @@ static funcentry_T global_functions[] =
#endif
{"count", 2, 4, FEARG_1, f_count},
{"cscope_connection",0,3, 0, f_cscope_connection},
- {"cursor", 1, 3, 0, f_cursor},
+ {"cursor", 1, 3, FEARG_1, f_cursor},
#ifdef MSWIN
- {"debugbreak", 1, 1, 0, f_debugbreak},
+ {"debugbreak", 1, 1, FEARG_1, f_debugbreak},
#endif
- {"deepcopy", 1, 2, 0, f_deepcopy},
- {"delete", 1, 2, 0, f_delete},
- {"deletebufline", 2, 3, 0, f_deletebufline},
+ {"deepcopy", 1, 2, FEARG_1, f_deepcopy},
+ {"delete", 1, 2, FEARG_1, f_delete},
+ {"deletebufline", 2, 3, FEARG_1, f_deletebufline},
{"did_filetype", 0, 0, 0, f_did_filetype},
- {"diff_filler", 1, 1, 0, f_diff_filler},
- {"diff_hlID", 2, 2, 0, f_diff_hlID},
+ {"diff_filler", 1, 1, FEARG_1, f_diff_filler},
+ {"diff_hlID", 2, 2, FEARG_1, f_diff_hlID},
{"empty", 1, 1, FEARG_1, f_empty},
{"environ", 0, 0, 0, f_environ},
{"escape", 2, 2, 0, f_escape},
diff --git a/src/testdir/test_bufline.vim b/src/testdir/test_bufline.vim
index 6d62e51610..183a186c45 100644
--- a/src/testdir/test_bufline.vim
+++ b/src/testdir/test_bufline.vim
@@ -132,7 +132,7 @@ func Test_deletebufline()
call assert_equal(0, deletebufline(b, 2, 8))
call assert_equal(['aaa'], getbufline(b, 1, 2))
exe "bd!" b
- call assert_equal(1, deletebufline(b, 1))
+ call assert_equal(1, b->deletebufline(1))
call assert_equal(1, deletebufline(-1, 1))
diff --git a/src/testdir/test_cd.vim b/src/testdir/test_cd.vim
index 31859542e5..e0dedfbf08 100644
--- a/src/testdir/test_cd.vim
+++ b/src/testdir/test_cd.vim
@@ -85,7 +85,7 @@ func Test_chdir_func()
call assert_equal('y', fnamemodify(getcwd(1, 2), ':t'))
call assert_equal('z', fnamemodify(getcwd(3, 2), ':t'))
tabnext | wincmd t
- call chdir('..')
+ eval '..'->chdir()
call assert_equal('Xdir', fnamemodify(getcwd(1, 2), ':t'))
call assert_equal('Xdir', fnamemodify(getcwd(2, 2), ':t'))
call assert_equal('z', fnamemodify(getcwd(3, 2), ':t'))
diff --git a/src/testdir/test_cindent.vim b/src/testdir/test_cindent.vim
index a8a2345577..e12e457876 100644
--- a/src/testdir/test_cindent.vim
+++ b/src/testdir/test_cindent.vim
@@ -121,9 +121,9 @@ func Test_cindent_func()
new
setlocal cindent
call setline(1, ['int main(void)', '{', 'return 0;', '}'])
- call assert_equal(cindent(0), -1)
- call assert_equal(cindent(3), &sw)
- call assert_equal(cindent(line('$')+1), -1)
+ call assert_equal(-1, cindent(0))
+ call assert_equal(&sw, 3->cindent())
+ call assert_equal(-1, cindent(line('$')+1))
bwipe!
endfunc
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index 0f638b3575..fbe7be7b79 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -22,7 +22,7 @@ func Test_move_cursor()
call cursor(3, 0)
call assert_equal([3, 1, 0, 1], getcurpos()[1:])
" below last line goes to last line
- call cursor(9, 1)
+ eval [9, 1]->cursor()
call assert_equal([4, 1, 0, 1], getcurpos()[1:])
call setline(1, ["\<TAB>"])
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index 027cdc88eb..bbdbfb8c01 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -674,7 +674,7 @@ func Test_diff_hlID()
call diff_hlID(1, 2)->synIDattr("name")->assert_equal("DiffText")
call diff_hlID(2, 1)->synIDattr("name")->assert_equal("")
call diff_hlID(3, 1)->synIDattr("name")->assert_equal("DiffAdd")
- call diff_hlID(4, 1)->synIDattr("name")->assert_equal("")
+ eval 4->diff_hlID(1)->synIDattr("name")->assert_equal("")
wincmd w
call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange")
@@ -693,7 +693,7 @@ func Test_diff_filler()
diffthis
redraw
- call assert_equal([0, 0, 0, 0, 0, 0, 0, 1, 0], map(range(-1, 7), 'diff_filler(v:val)'))
+ call assert_equal([0, 0, 0, 0, 0, 0, 0, 1, 0], map(range(-1, 7), 'v:val->diff_filler()'))
wincmd w
call assert_equal([0, 0, 0, 0, 2, 0, 0, 0], map(range(-1, 6), 'diff_filler(v:val)'))
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 6f65ae0866..7a3d05467e 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1078,7 +1078,7 @@ func Test_col()
call assert_equal(7, col('$'))
call assert_equal(4, col("'x"))
call assert_equal(6, col("'Y"))
- call assert_equal(2, col([1, 2]))
+ call assert_equal(2, [1, 2]->col())
call assert_equal(7, col([1, '$']))
call assert_equal(0, col(''))
@@ -1413,7 +1413,7 @@ func Test_confirm()
call assert_equal(1, a)
call feedkeys('y', 'L')
- let a = confirm('Are you sure?', "&Yes\n&No")
+ let a = 'Are you sure?'->confirm("&Yes\n&No")
call assert_equal(1, a)
call feedkeys('n', 'L')
@@ -1514,7 +1514,7 @@ func Test_readdir()
let files = readdir('Xdir', {x -> len(add(l, x)) == 2 ? -1 : 1})
call assert_equal(1, len(files))
- call delete('Xdir', 'rf')
+ eval 'Xdir'->delete('rf')
endfunc
func Test_delete_rf()
@@ -1548,6 +1548,7 @@ endfunc
func Test_char2nr()
call assert_equal(12354, char2nr('あ', 1))
+ call assert_equal(120, 'x'->char2nr())
endfunc
func Test_eventhandler()
diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim
index db87914f82..0bc186375d 100644
--- a/src/testdir/test_match.vim
+++ b/src/testdir/test_match.vim
@@ -215,7 +215,7 @@ func Test_matchaddpos_otherwin()
\]
call assert_equal(expect, savematches)
- call clearmatches(winid)
+ eval winid->clearmatches()
call assert_equal([], getmatches(winid))
call setmatches(savematches, winid)
diff --git a/src/testdir/test_method.vim b/src/testdir/test_method.vim
index 8c5f35b5ce..69adc30c06 100644
--- a/src/testdir/test_method.vim
+++ b/src/testdir/test_method.vim
@@ -8,6 +8,7 @@ func Test_list_method()
eval l->assert_notequal([3, 2, 1])
eval l->assert_notequal([3, 2, 1], 'wrong')
call assert_equal(l, l->copy())
+ call assert_equal(l, l->deepcopy())
call assert_equal(1, l->count(2))
call assert_false(l->empty())
call assert_true([]->empty())
@@ -38,6 +39,7 @@ func Test_dict_method()
let d = #{one: 1, two: 2, three: 3}
call assert_equal(d, d->copy())
+ call assert_equal(d, d->deepcopy())
call assert_equal(1, d->count(2))
call assert_false(d->empty())
call assert_true({}->empty())
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 6c86d6936a..5b602cc12e 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -250,7 +250,7 @@ endfunc
func Test_noinsert_complete()
func! s:complTest1() abort
- call complete(1, ['source', 'soundfold'])
+ eval ['source', 'soundfold']->complete(1)
return ''
endfunc
@@ -403,7 +403,7 @@ func DummyCompleteFour(findstart, base)
return 0
else
call complete_add('four1')
- call complete_add('four2')
+ eval 'four2'->complete_add()
call complete_check()
call complete_add('four3')
call complete_add('four4')
@@ -993,7 +993,7 @@ func GetCompleteInfo()
if empty(g:compl_what)
let g:compl_info = complete_info()
else
- let g:compl_info = complete_info(g:compl_what)
+ let g:compl_info = g:compl_what->complete_info()
endif
return ''
endfunc
diff --git a/src/version.c b/src/version.c
index 020a11b028..8ece6f1cbe 100644
--- 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 */
/**/
+ 1915,
+/**/
1914,
/**/
1913,