From b3e40a26440f3ec5674bf5d17989269ceed61936 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Wed, 15 Jan 2020 22:25:08 -0500 Subject: [PATCH] Make debug mode flag, plugins can access logbuf --- cmd/micro/initlua.go | 2 ++ cmd/micro/micro.go | 11 +++++++++-- internal/buffer/buffer.go | 5 +++++ runtime/help/plugins.md | 2 ++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cmd/micro/initlua.go b/cmd/micro/initlua.go index 6363ddf3..0c6d113d 100644 --- a/cmd/micro/initlua.go +++ b/cmd/micro/initlua.go @@ -117,6 +117,8 @@ func luaImportMicroBuffer() *lua.LTable { return buffer.NewBufferFromFile(path, buffer.BTDefault) })) ulua.L.SetField(pkg, "ByteOffset", luar.New(ulua.L, buffer.ByteOffset)) + ulua.L.SetField(pkg, "Log", luar.New(ulua.L, buffer.WriteLog)) + ulua.L.SetField(pkg, "LogBuf", luar.New(ulua.L, buffer.GetLogBuf)) return pkg } diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 3be216e7..3e2f95fa 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -28,6 +28,7 @@ var ( flagVersion = flag.Bool("version", false, "Show the version number and information") flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory") flagOptions = flag.Bool("options", false, "Show all option help") + flagDebug = flag.Bool("debug", false, "Enable debug mode (prints debug info to ./log.txt)") optionFlags map[string]*string ) @@ -41,6 +42,8 @@ func InitFlags() { fmt.Println(" \tThis can also be done by opening file:LINE:COL") fmt.Println("-options") fmt.Println(" \tShow all option help") + fmt.Println("-debug") + fmt.Println(" \tEnable debug mode (enables logging to ./log.txt)") fmt.Println("-version") fmt.Println(" \tShow the version number and information") @@ -82,6 +85,10 @@ func InitFlags() { } os.Exit(0) } + + if util.Debug == "OFF" && *flagDebug { + util.Debug = "ON" + } } // LoadInput determines which files should be loaded into buffers @@ -144,10 +151,10 @@ func main() { var err error - InitLog() - InitFlags() + InitLog() + err = config.InitConfigDir(*flagConfigDir) if err != nil { screen.TermMessage(err) diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 6535b87f..296f6bf7 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -879,3 +879,8 @@ func (b *Buffer) Line(i int) string { func WriteLog(s string) { LogBuf.EventHandler.Insert(LogBuf.End(), s) } + +// GetLogBuf returns the log buffer +func GetLogBuf() *Buffer { + return LogBuf +} diff --git a/runtime/help/plugins.md b/runtime/help/plugins.md index e68df426..6c431068 100644 --- a/runtime/help/plugins.md +++ b/runtime/help/plugins.md @@ -178,6 +178,8 @@ The packages and functions are listed below (in Go type signatures): - `BTInfo` - `NewBufferFromFile` - `ByteOffset` + - `Log` + - `LogBuf` * `micro/util` - `RuneAt` - `GetLeadingWhitespace`