]> git.lizzy.rs Git - micro.git/commitdiff
Add text event callback
authorZachary Yedidia <zyedidia@gmail.com>
Fri, 31 Jan 2020 05:56:15 +0000 (00:56 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Fri, 31 Jan 2020 05:56:15 +0000 (00:56 -0500)
cmd/micro/micro.go
internal/buffer/eventhandler.go

index 3e0284fcd6fe92070b34fc6e11ecf7e241b5d278..ba387693a36dfcd75617cb579ee9bfc9c2467fec 100644 (file)
@@ -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
index eeb7b8129023f60f55f5eeb7f842e95411fec523..3f7b0f6a0ad7b6c1764f314603999a2438a9d700 100644 (file)
@@ -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)
 }