Add onBufferOpen plugin callback

Closes #948
This commit is contained in:
Zachary Yedidia
2018-01-08 17:08:11 -05:00
parent 9a6054fc43
commit 3f01101da4
5 changed files with 20 additions and 9 deletions

View File

@@ -7,7 +7,6 @@ import (
"os"
"path/filepath"
"runtime"
"strings"
"time"
"github.com/go-errors/errors"
@@ -434,17 +433,13 @@ func main() {
for _, t := range tabs {
for _, v := range t.views {
for pl := range loadedPlugins {
_, err := Call(pl+".onViewOpen", v)
if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") {
TermMessage(err)
continue
}
}
GlobalPluginCall("onViewOpen", v)
GlobalPluginCall("onBufferOpen", v.Buf)
}
}
InitColorscheme()
messenger.style = defStyle
// Here is the event loop which runs in a separate thread
go func() {

View File

@@ -170,3 +170,15 @@ func LoadPlugins() {
loadedPlugins["init"] = "init"
}
}
// GlobalCall makes a call to a function in every plugin that is currently
// loaded
func GlobalPluginCall(function string, args ...interface{}) {
for pl := range loadedPlugins {
_, err := Call(pl+"."+function, args...)
if err != nil && !strings.HasPrefix(err.Error(), "function does not exist") {
TermMessage(err)
continue
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -277,6 +277,8 @@ func (v *View) OpenBuffer(buf *Buffer) {
// is opened
v.isOverwriteMode = false
v.lastClickTime = time.Time{}
GlobalPluginCall("onBufferOpen", v.Buf)
}
// Open opens the given file in the view