6 lua "github.com/yuin/gopher-lua"
7 ulua "github.com/zyedidia/micro/internal/lua"
10 var ErrNoSuchFunction = errors.New("No such function exists")
12 // LoadAllPlugins loads all detected plugins (in runtime/plugins and ConfigDir/plugins)
13 func LoadAllPlugins() {
14 for _, p := range Plugins {
19 // RunPluginFn runs a given function in all plugins
20 func RunPluginFn(fn string, args ...lua.LValue) error {
22 for _, p := range Plugins {
26 _, err := p.Call(fn, args...)
27 if err != nil && err != ErrNoSuchFunction {
28 reterr = errors.New("Plugin " + p.Name + ": " + err.Error())
35 Name string // name of plugin
36 Info RuntimeFile // json file containing info
37 Srcs []RuntimeFile // lua files
41 func (p *Plugin) IsEnabled() bool {
42 if v, ok := GlobalSettings[p.Name]; ok {
50 func (p *Plugin) Load() error {
51 for _, f := range p.Srcs {
59 err = ulua.LoadFile(p.Name, f.Name(), dat)
64 if _, ok := GlobalSettings[p.Name]; !ok {
65 AddOption(p.Name, true)
71 func (p *Plugin) Call(fn string, args ...lua.LValue) (lua.LValue, error) {
72 plug := ulua.L.GetGlobal(p.Name)
73 luafn := ulua.L.GetField(plug, fn)
74 if luafn == lua.LNil {
75 return nil, ErrNoSuchFunction
77 err := ulua.L.CallByParam(lua.P{