Merge pull request #20073 from zeertzjq/vim-088e8e344352

vim-patch:7.4.{1578,1624},088e8e344352
This commit is contained in:
zeertzjq
2022-09-04 20:41:01 +08:00
committed by GitHub
3 changed files with 34 additions and 2 deletions

View File

@@ -2507,10 +2507,11 @@ funcref({name} [, {arglist}] [, {dict}])
Can also be used as a |method|: > Can also be used as a |method|: >
GetFuncname()->funcref([arg]) GetFuncname()->funcref([arg])
< <
*function()* *E700* *E922* *E923* *function()* *partial* *E700* *E922* *E923*
function({name} [, {arglist}] [, {dict}]) function({name} [, {arglist}] [, {dict}])
Return a |Funcref| variable that refers to function {name}. Return a |Funcref| variable that refers to function {name}.
{name} can be a user defined function or an internal function. {name} can be the name of a user defined function or an
internal function.
{name} can also be a Funcref or a partial. When it is a {name} can also be a Funcref or a partial. When it is a
partial the dict stored in it will be used and the {dict} partial the dict stored in it will be used and the {dict}
@@ -2536,6 +2537,27 @@ function({name} [, {arglist}] [, {dict}])
< Invokes the function as with: > < Invokes the function as with: >
call Callback('one', 'two', 'name') call Callback('one', 'two', 'name')
< With a |method|: >
func Callback(one, two, three)
...
let Partial = function('Callback', ['two'])
...
eval 'one'->Partial('three')
< Invokes the function as with: >
call Callback('one', 'two', 'three')
< The function() call can be nested to add more arguments to the
Funcref. The extra arguments are appended to the list of
arguments. Example: >
func Callback(arg1, arg2, name)
...
let Func = function('Callback', ['one'])
let Func2 = function(Func, ['two'])
...
call Func2('name')
< Invokes the function as with: >
call Callback('one', 'two', 'name')
< The Dictionary is only useful when calling a "dict" function. < The Dictionary is only useful when calling a "dict" function.
In that case the {dict} is passed in as "self". Example: > In that case the {dict} is passed in as "self". Example: >
function Callback() dict function Callback() dict
@@ -2546,6 +2568,10 @@ function({name} [, {arglist}] [, {dict}])
let Func = function('Callback', context) let Func = function('Callback', context)
... ...
call Func() " will echo: called for example call Func() " will echo: called for example
< The use of function() is not needed when there are no extra
arguments, these two are equivalent: >
let Func = function('Callback', context)
let Func = context.Callback
< The argument list and the Dictionary can be combined: > < The argument list and the Dictionary can be combined: >
function Callback(arg1, count) dict function Callback(arg1, count) dict

View File

@@ -2622,6 +2622,11 @@ It is also possible to use `:eval`. It does not support a range, but does
allow for method chaining, e.g.: > allow for method chaining, e.g.: >
eval GetList()->Filter()->append('$') eval GetList()->Filter()->append('$')
A function can also be called as part of evaluating an expression or when it
is used as a method: >
let x = GetList()
let y = GetList()->Filter()
AUTOMATICALLY LOADING FUNCTIONS ~ AUTOMATICALLY LOADING FUNCTIONS ~
*autoload-functions* *autoload-functions*

View File

@@ -649,6 +649,7 @@ Short explanation of each option: *option-list*
'complete' 'cpt' specify how Insert mode completion works 'complete' 'cpt' specify how Insert mode completion works
'completefunc' 'cfu' function to be used for Insert mode completion 'completefunc' 'cfu' function to be used for Insert mode completion
'completeopt' 'cot' options for Insert mode completion 'completeopt' 'cot' options for Insert mode completion
'completeslash' 'csl' like 'shellslash' for completion
'concealcursor' 'cocu' whether concealable text is hidden in cursor line 'concealcursor' 'cocu' whether concealable text is hidden in cursor line
'conceallevel' 'cole' whether concealable text is shown or hidden 'conceallevel' 'cole' whether concealable text is shown or hidden
'confirm' 'cf' ask what to do about unsaved/read-only files 'confirm' 'cf' ask what to do about unsaved/read-only files