Some plugin callbacks

This commit is contained in:
Zachary Yedidia
2019-03-19 18:28:51 -04:00
parent 5ab6c9795f
commit 3335f377a9
8 changed files with 96 additions and 22 deletions

37
cmd/micro/initlua.go Normal file
View File

@@ -0,0 +1,37 @@
package main
import (
"log"
lua "github.com/yuin/gopher-lua"
luar "layeh.com/gopher-luar"
"github.com/zyedidia/micro/internal/action"
ulua "github.com/zyedidia/micro/internal/lua"
"github.com/zyedidia/micro/internal/screen"
)
func init() {
ulua.L = lua.NewState()
ulua.L.SetGlobal("import", luar.New(ulua.L, LuaImport))
}
func LuaImport(pkg string) *lua.LTable {
if pkg == "micro" {
return luaImportMicro()
} else {
return ulua.Import(pkg)
}
}
func luaImportMicro() *lua.LTable {
pkg := ulua.L.NewTable()
ulua.L.SetField(pkg, "TermMessage", luar.New(ulua.L, screen.TermMessage))
ulua.L.SetField(pkg, "TermError", luar.New(ulua.L, screen.TermError))
ulua.L.SetField(pkg, "InfoBar", luar.New(ulua.L, action.GetInfoBar))
ulua.L.SetField(pkg, "Log", luar.New(ulua.L, log.Println))
ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey))
return pkg
}

View File

@@ -27,6 +27,7 @@ var (
flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.")
flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory")
flagOptions = flag.Bool("options", false, "Show all option help")
optionFlags map[string]*string
)
func InitFlags() {
@@ -50,7 +51,7 @@ func InitFlags() {
fmt.Println("\nUse `micro -options` to see the full list of configuration options")
}
optionFlags := make(map[string]*string)
optionFlags = make(map[string]*string)
for k, v := range config.DefaultGlobalSettings() {
optionFlags[k] = flag.String(k, "", fmt.Sprintf("The %s option. Default value: '%v'", k, v))
@@ -74,16 +75,6 @@ func InitFlags() {
}
os.Exit(0)
}
for k, v := range optionFlags {
if *v != "" {
nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v)
if err != nil {
screen.TermMessage(err)
continue
}
config.GlobalSettings[k] = nativeValue
}
}
}
// LoadInput determines which files should be loaded into buffers
@@ -151,6 +142,13 @@ func main() {
InitLog()
InitFlags()
err = config.InitConfigDir(*flagConfigDir)
if err != nil {
screen.TermMessage(err)
}
config.InitRuntimeFiles()
err = config.ReadSettings()
if err != nil {
@@ -158,11 +156,16 @@ func main() {
}
config.InitGlobalSettings()
InitFlags()
err = config.InitConfigDir(*flagConfigDir)
if err != nil {
screen.TermMessage(err)
// flag options
for k, v := range optionFlags {
if *v != "" {
nativeValue, err := config.GetNativeValue(k, config.GlobalSettings[k], *v)
if err != nil {
screen.TermMessage(err)
continue
}
config.GlobalSettings[k] = nativeValue
}
}
action.InitBindings()
@@ -174,6 +177,10 @@ func main() {
}
config.LoadAllPlugins()
err = config.RunPluginFn("init")
if err != nil {
screen.TermMessage(err)
}
screen.Init()