diff --git a/tools/tui/loop/timers.go b/tools/tui/loop/timers.go index d3105b7ad..38d211039 100644 --- a/tools/tui/loop/timers.go +++ b/tools/tui/loop/timers.go @@ -4,13 +4,12 @@ package loop import ( "fmt" - "reflect" - "runtime" "time" "golang.org/x/exp/slices" "kitty/tools/tty" + "kitty/tools/utils" ) var debugprintln = tty.DebugPrintln @@ -28,15 +27,7 @@ func (self *timer) update_deadline(now time.Time) { } func (self timer) String() string { - funcname := "" - if self.callback != nil { - p := reflect.ValueOf(self.callback).Pointer() - f := runtime.FuncForPC(p) - if f != nil { - funcname = f.Name() - } - } - return fmt.Sprintf("Timer(id=%d, callback=%s, deadline=%s, repeats=%v)", self.id, funcname, self.deadline.Sub(time.Now()), self.repeats) + return fmt.Sprintf("Timer(id=%d, callback=%s, deadline=%s, repeats=%v)", self.id, utils.FunctionName(self.callback), self.deadline.Sub(time.Now()), self.repeats) } func (self *Loop) add_timer(interval time.Duration, repeats bool, callback TimerCallback) (IdType, error) { diff --git a/tools/utils/misc.go b/tools/utils/misc.go index d83460eb8..24b46a46c 100644 --- a/tools/utils/misc.go +++ b/tools/utils/misc.go @@ -294,3 +294,15 @@ func SourceLoc(skip_frames ...int) string { } return "unknown" } + +func FunctionName(a any) string { + if a == nil { + return "" + } + p := reflect.ValueOf(a).Pointer() + f := runtime.FuncForPC(p) + if f != nil { + return f.Name() + } + return "" +}