我使用以下解决方法:我有一个插件可以为其他插件创建命令、全局函数等功能。它还注册了所有插件,所以我有一本大字典,里面有很多与插件相关的东西。如果看到错误,我将使用函数findnr搜索生成它的函数:
"{{{3 stuf.findf:
function s:F.stuf.findf(nr, pos, d)
if type(a:d)==2 && string(a:d)=~#"'".a:nr."'"
return a:pos
elseif type(a:d)==type({})
for [key, Value] in items(a:d)
let pos=s:F.stuf.findf(a:nr, a:pos."/".key, Value)
unlet Value
if type(pos)==type("")
return pos
endif
endfor
endif
return 0
endfunction
"{{{3 stuf.findr:
function s:F.stuf.findnr(nr)
for [key, value] in items(s:g.reg.registered)+[["load", {"F": s:F}]]
let pos=s:F.stuf.findf(a:nr, "/".key, value.F)
if type(pos)==type("")
return pos
endif
endfor
return 0
endfunction
这里我在s:g.reg.registered[plugname].f dictionary下的s:f.key dictionary和其他插件函数中有这个插件函数。