Closed corvofeng closed 4 years ago
增加expand的支持并不难, 主要是针对JavsScript函数的参数做了处理, 目前已经允许用户增加自定义的参数. 例如!v expand('%:r'), 需要将%:r参数进行传递.
!v expand('%:r')
%:r
可以看到jsFuncDecorator该装饰器中做了一些处理, 将有本身的参数也编码进了中间代码中, 形成了类似如下的中间代码:
jsFuncDecorator
`!js js_get_simple_box ["arg1","arg2","arg3"]`
采用这种复合形式的主要一个原因是可以使用eval('["arg1","arg2","arg3"]')马上将原始的参数进行还原, 对于真正进行处理的函数, 使用call进行函数调用.
eval('["arg1","arg2","arg3"]')
call
let args: string[] = []; if (funcArgs !== undefined) { // eslint-disable-next-line args = (eval(funcArgs) as string[]); } funcRlt = func.call(undefined, vsContext, ...args);
处理Issue: #14
增加expand的支持并不难, 主要是针对JavsScript函数的参数做了处理, 目前已经允许用户增加自定义的参数. 例如
!v expand('%:r')
, 需要将%:r
参数进行传递.可以看到
jsFuncDecorator
该装饰器中做了一些处理, 将有本身的参数也编码进了中间代码中, 形成了类似如下的中间代码:采用这种复合形式的主要一个原因是可以使用
eval('["arg1","arg2","arg3"]')
马上将原始的参数进行还原, 对于真正进行处理的函数, 使用call
进行函数调用.处理Issue: #14