about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--commands/account/pipe.go5
-rw-r--r--widgets/terminal.go6
2 files changed, 10 insertions, 1 deletions
diff --git a/commands/account/pipe.go b/commands/account/pipe.go
index a4c9848..f44de30 100644
--- a/commands/account/pipe.go
+++ b/commands/account/pipe.go
@@ -44,9 +44,12 @@ func Pipe(aerc *widgets.Aerc, args []string) error {
 				aerc.PushStatus(" "+err.Error(), 10*time.Second).
 					Color(tcell.ColorDefault, tcell.ColorRed)
 			} else {
-				// TODO: Tab-specific status stacks
 				aerc.PushStatus("Process complete, press any key to close.",
 					10*time.Second)
+				term.OnEvent = func(event tcell.Event) bool {
+					aerc.RemoveTab(term)
+					return true
+				}
 			}
 		}
 		term.OnStart = func() {
diff --git a/widgets/terminal.go b/widgets/terminal.go
index 63c105f..92736d5 100644
--- a/widgets/terminal.go
+++ b/widgets/terminal.go
@@ -104,6 +104,7 @@ type Terminal struct {
 	vterm       *vterm.VTerm
 
 	OnClose func(err error)
+	OnEvent func(event tcell.Event) bool
 	OnStart func()
 	OnTitle func(title string)
 }
@@ -354,6 +355,11 @@ func convertMods(mods tcell.ModMask) vterm.Modifier {
 }
 
 func (term *Terminal) Event(event tcell.Event) bool {
+	if term.OnEvent != nil {
+		if term.OnEvent(event) {
+			return true
+		}
+	}
 	if term.closed {
 		return false
 	}