From e3131a0779f73fb99541e9e1a4d8b331e5f3f02b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 31 Jan 2020 00:56:15 -0500 Subject: [PATCH] Add text event callback --- cmd/micro/micro.go | 9 +++++---- internal/buffer/eventhandler.go | 22 ++++++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 3e0284fc..ba387693 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -211,10 +211,6 @@ func main() { if err != nil { screen.TermMessage(err) } - err = config.RunPluginFn("init") - if err != nil { - screen.TermMessage(err) - } b := LoadInput() @@ -227,6 +223,11 @@ func main() { action.InitTabs(b) action.InitGlobals() + err = config.RunPluginFn("init") + if err != nil { + screen.TermMessage(err) + } + events = make(chan tcell.Event) // Here is the event loop which runs in a separate thread diff --git a/internal/buffer/eventhandler.go b/internal/buffer/eventhandler.go index eeb7b812..3f7b0f6a 100644 --- a/internal/buffer/eventhandler.go +++ b/internal/buffer/eventhandler.go @@ -5,6 +5,10 @@ import ( "unicode/utf8" dmp "github.com/sergi/go-diff/diffmatchpatch" + "github.com/zyedidia/micro/internal/config" + ulua "github.com/zyedidia/micro/internal/lua" + "github.com/zyedidia/micro/internal/screen" + luar "layeh.com/gopher-luar" ) const ( @@ -187,16 +191,14 @@ func (eh *EventHandler) Execute(t *TextEvent) { } eh.UndoStack.Push(t) - // TODO: Call plugins on text events - // for pl := range loadedPlugins { - // ret, err := Call(pl+".onBeforeTextEvent", t) - // if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") { - // screen.TermMessage(err) - // } - // if val, ok := ret.(lua.LBool); ok && val == lua.LFalse { - // return - // } - // } + b, err := config.RunPluginFnBool("onBeforeTextEvent", luar.New(ulua.L, t)) + if err != nil { + screen.TermMessage(err) + } + + if !b { + return + } ExecuteTextEvent(t, eh.buf) }