chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package luaplugin
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
lua "github.com/yuin/gopher-lua"
|
||||
)
|
||||
|
||||
// messageMaxDuration caps how long a plugin-supplied status message can stay on
|
||||
// screen. Plugins can request longer durations, but they get clamped so a
|
||||
// runaway script cannot pin the status bar indefinitely.
|
||||
const messageMaxDuration = 60 * time.Second
|
||||
|
||||
// registerMessageAPI adds cliamp.message(text, duration_secs?) which displays a
|
||||
// temporary message in the status bar at the bottom of the UI. A missing or
|
||||
// non-positive duration falls back to the default status TTL (set by the UI).
|
||||
func registerMessageAPI(L *lua.LState, cliamp *lua.LTable, ui *UIProvider) {
|
||||
L.SetField(cliamp, "message", L.NewFunction(func(L *lua.LState) int {
|
||||
if ui.ShowMessage == nil {
|
||||
return 0
|
||||
}
|
||||
text := L.CheckString(1)
|
||||
var dur time.Duration
|
||||
if secs := float64(L.OptNumber(2, 0)); secs > 0 {
|
||||
dur = min(time.Duration(secs*float64(time.Second)), messageMaxDuration)
|
||||
}
|
||||
ui.ShowMessage(text, dur)
|
||||
return 0
|
||||
}))
|
||||
}
|
||||
Reference in New Issue
Block a user