aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--widgets/aerc.go35
1 files changed, 24 insertions, 11 deletions
diff --git a/widgets/aerc.go b/widgets/aerc.go
index beceb96..5563275 100644
--- a/widgets/aerc.go
+++ b/widgets/aerc.go
@@ -48,15 +48,6 @@ func NewAerc(logger *log.Logger) *Aerc {
statusline := NewStatusLine()
statusbar.Push(statusline)
- exline := NewExLine(func(command string) {
- statusline.Push(fmt.Sprintf("TODO: execute %s", command),
- 3 * time.Second)
- statusbar.Pop()
- }, func() {
- statusbar.Pop()
- })
- statusbar.Push(exline)
-
go (func() {
for {
time.Sleep(1 * time.Second)
@@ -66,7 +57,6 @@ func NewAerc(logger *log.Logger) *Aerc {
return &Aerc{
grid: grid,
- interactive: exline,
statusbar: statusbar,
statusline: statusline,
tabs: tabs,
@@ -86,5 +76,28 @@ func (aerc *Aerc) Draw(ctx *libui.Context) {
}
func (aerc *Aerc) Event(event tb.Event) bool {
- return aerc.interactive.Event(event)
+ switch event.Type {
+ case tb.EventKey:
+ if event.Ch == ':' {
+ exline := NewExLine(func(command string) {
+ aerc.statusline.Push(fmt.Sprintf("TODO: execute %s", command),
+ 3 * time.Second)
+ aerc.statusbar.Pop()
+ aerc.interactive = nil
+ }, func() {
+ aerc.statusbar.Pop()
+ aerc.interactive = nil
+ })
+ aerc.interactive = exline
+ aerc.statusbar.Push(exline)
+ return true
+ }
+ fallthrough
+ default:
+ if aerc.interactive != nil {
+ return aerc.interactive.Event(event)
+ } else {
+ return false
+ }
+ }
}