"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
}
}
+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 {
// 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
}
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
}
}
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"