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

View file

@ -45,6 +45,8 @@ view is passed in. This is useful for setting local options based on the
filetype, for example turning off `tabstospaces` only for Go files when they are
opened.
Similar to `onViewOpen(view)` there is also `onBufferOpen(buf)`.
---
There are a number of functions and variables that are available to you in order