mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-30 14:47:16 +09:00
Improve lua interface
This commit is contained in:
@@ -62,10 +62,11 @@ func luaImportMicroConfig() *lua.LTable {
|
|||||||
ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey))
|
ulua.L.SetField(pkg, "TryBindKey", luar.New(ulua.L, action.TryBindKey))
|
||||||
ulua.L.SetField(pkg, "Reload", luar.New(ulua.L, action.ReloadConfig))
|
ulua.L.SetField(pkg, "Reload", luar.New(ulua.L, action.ReloadConfig))
|
||||||
ulua.L.SetField(pkg, "AddRuntimeFileFromMemory", luar.New(ulua.L, config.PluginAddRuntimeFileFromMemory))
|
ulua.L.SetField(pkg, "AddRuntimeFileFromMemory", luar.New(ulua.L, config.PluginAddRuntimeFileFromMemory))
|
||||||
ulua.L.SetField(pkg, "AddRuntimeFilesFromDirectory", luar.New(ulua.L, config.PluginAddRuntimeFileFromMemory))
|
ulua.L.SetField(pkg, "AddRuntimeFilesFromDirectory", luar.New(ulua.L, config.PluginAddRuntimeFilesFromDirectory))
|
||||||
ulua.L.SetField(pkg, "AddRuntimeFile", luar.New(ulua.L, config.PluginAddRuntimeFile))
|
ulua.L.SetField(pkg, "AddRuntimeFile", luar.New(ulua.L, config.PluginAddRuntimeFile))
|
||||||
ulua.L.SetField(pkg, "ListRuntimeFiles", luar.New(ulua.L, config.PluginListRuntimeFiles))
|
ulua.L.SetField(pkg, "ListRuntimeFiles", luar.New(ulua.L, config.PluginListRuntimeFiles))
|
||||||
ulua.L.SetField(pkg, "ReadRuntimeFile", luar.New(ulua.L, config.PluginReadRuntimeFile))
|
ulua.L.SetField(pkg, "ReadRuntimeFile", luar.New(ulua.L, config.PluginReadRuntimeFile))
|
||||||
|
ulua.L.SetField(pkg, "NewRTFiletype", luar.New(ulua.L, config.NewRTFiletype))
|
||||||
ulua.L.SetField(pkg, "RTColorscheme", luar.New(ulua.L, config.RTColorscheme))
|
ulua.L.SetField(pkg, "RTColorscheme", luar.New(ulua.L, config.RTColorscheme))
|
||||||
ulua.L.SetField(pkg, "RTSyntax", luar.New(ulua.L, config.RTSyntax))
|
ulua.L.SetField(pkg, "RTSyntax", luar.New(ulua.L, config.RTSyntax))
|
||||||
ulua.L.SetField(pkg, "RTHelp", luar.New(ulua.L, config.RTHelp))
|
ulua.L.SetField(pkg, "RTHelp", luar.New(ulua.L, config.RTHelp))
|
||||||
@@ -130,6 +131,9 @@ func luaImportMicroUtil() *lua.LTable {
|
|||||||
ulua.L.SetField(pkg, "GetLeadingWhitespace", luar.New(ulua.L, util.LuaGetLeadingWhitespace))
|
ulua.L.SetField(pkg, "GetLeadingWhitespace", luar.New(ulua.L, util.LuaGetLeadingWhitespace))
|
||||||
ulua.L.SetField(pkg, "IsWordChar", luar.New(ulua.L, util.LuaIsWordChar))
|
ulua.L.SetField(pkg, "IsWordChar", luar.New(ulua.L, util.LuaIsWordChar))
|
||||||
ulua.L.SetField(pkg, "String", luar.New(ulua.L, util.String))
|
ulua.L.SetField(pkg, "String", luar.New(ulua.L, util.String))
|
||||||
|
ulua.L.SetField(pkg, "RuneStr", luar.New(ulua.L, func(r rune) string {
|
||||||
|
return string(r)
|
||||||
|
}))
|
||||||
|
|
||||||
return pkg
|
return pkg
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ func (eh *EventHandler) Execute(t *TextEvent) {
|
|||||||
}
|
}
|
||||||
eh.UndoStack.Push(t)
|
eh.UndoStack.Push(t)
|
||||||
|
|
||||||
b, err := config.RunPluginFnBool("onBeforeTextEvent", luar.New(ulua.L, t))
|
b, err := config.RunPluginFnBool("onBeforeTextEvent", luar.New(ulua.L, eh.buf), luar.New(ulua.L, t))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
screen.TermMessage(err)
|
screen.TermMessage(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,13 @@ const (
|
|||||||
RTHelp = 2
|
RTHelp = 2
|
||||||
RTPlugin = 3
|
RTPlugin = 3
|
||||||
RTSyntaxHeader = 4
|
RTSyntaxHeader = 4
|
||||||
NumTypes = 5 // How many filetypes are there
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type RTFiletype byte
|
var (
|
||||||
|
NumTypes = 5 // How many filetypes are there
|
||||||
|
)
|
||||||
|
|
||||||
|
type RTFiletype int
|
||||||
|
|
||||||
// RuntimeFile allows the program to read runtime data like colorschemes or syntax files
|
// RuntimeFile allows the program to read runtime data like colorschemes or syntax files
|
||||||
type RuntimeFile interface {
|
type RuntimeFile interface {
|
||||||
@@ -31,8 +34,20 @@ type RuntimeFile interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// allFiles contains all available files, mapped by filetype
|
// allFiles contains all available files, mapped by filetype
|
||||||
var allFiles [NumTypes][]RuntimeFile
|
var allFiles [][]RuntimeFile
|
||||||
var realFiles [NumTypes][]RuntimeFile
|
var realFiles [][]RuntimeFile
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
allFiles = make([][]RuntimeFile, NumTypes)
|
||||||
|
realFiles = make([][]RuntimeFile, NumTypes)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRTFiletype() int {
|
||||||
|
NumTypes++
|
||||||
|
allFiles = append(allFiles, []RuntimeFile{})
|
||||||
|
realFiles = append(realFiles, []RuntimeFile{})
|
||||||
|
return NumTypes - 1
|
||||||
|
}
|
||||||
|
|
||||||
// some file on filesystem
|
// some file on filesystem
|
||||||
type realFile string
|
type realFile string
|
||||||
|
|||||||
Reference in New Issue
Block a user