X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=cmd%2Fmicro%2Fplugin.go;h=04e7b78b27b448221b6c382551d3934753491a3a;hb=64d574c35cfdbd61c5abb456adf58da3ed328b1d;hp=4b42f5bdd7a620a4c6563d724eecd100bccb4f3c;hpb=379a49f9449bf1524bb050a4694824a39be13a42;p=micro.git diff --git a/cmd/micro/plugin.go b/cmd/micro/plugin.go index 4b42f5bd..04e7b78b 100644 --- a/cmd/micro/plugin.go +++ b/cmd/micro/plugin.go @@ -6,8 +6,9 @@ import ( "os" "strings" - "github.com/layeh/gopher-luar" "github.com/yuin/gopher-lua" + "github.com/zyedidia/tcell" + "layeh.com/gopher-luar" ) var loadedPlugins map[string]string @@ -60,6 +61,16 @@ func LuaFunctionBinding(function string) func(*View, bool) bool { } } +func LuaFunctionMouseBinding(function string) func(*View, bool, *tcell.EventMouse) bool { + return func(v *View, _ bool, e *tcell.EventMouse) bool { + _, err := Call(function, e) + if err != nil { + TermMessage(err) + } + return false + } +} + func unpack(old []string) []interface{} { new := make([]interface{}, len(old)) for i, v := range old { @@ -119,11 +130,9 @@ func luaPluginName(name string) string { // LoadPlugins loads the pre-installed plugins and the plugins located in ~/.config/micro/plugins func LoadPlugins() { - loadedPlugins = make(map[string]string) for _, plugin := range ListRuntimeFiles(RTPlugin) { - pluginName := plugin.Name() if _, ok := loadedPlugins[pluginName]; ok { continue @@ -136,9 +145,8 @@ func LoadPlugins() { } pluginLuaName := luaPluginName(pluginName) - pluginDef := "\nlocal P = {}\n" + pluginLuaName + " = P\nsetmetatable(" + pluginLuaName + ", {__index = _G})\nsetfenv(1, P)\n" - if err := L.DoString(pluginDef + string(data)); err != nil { + if err := LoadFile(pluginName, pluginName, string(data)); err != nil { TermMessage(err) continue } @@ -148,9 +156,8 @@ func LoadPlugins() { } if _, err := os.Stat(configDir + "/init.lua"); err == nil { - pluginDef := "\nlocal P = {}\n" + "init" + " = P\nsetmetatable(" + "init" + ", {__index = _G})\nsetfenv(1, P)\n" data, _ := ioutil.ReadFile(configDir + "/init.lua") - if err := L.DoString(pluginDef + string(data)); err != nil { + if err := LoadFile("init", configDir+"init.lua", string(data)); err != nil { TermMessage(err) } loadedPlugins["init"] = "init"