@@ -17,14 +17,13 @@ type App = RWST Vty () (Seq String) IO
19 vty <- mkVty def
19 vty <- mkVty def
20− _ <- execRWST vty_interact vty Seq.empty
20+ _ <- execRWST (vty_interact False) vty Seq.empty
21 shutdown vty
21 shutdown vty
23−vty_interact :: App ()
23+vty_interact :: Bool -> App ()
24−vty_interact = do
24+vty_interact should_exit = do
25 update_display
25 update_display
26− done <- handle_next_event
26+ unless should_exit $ handle_next_event >>= vty_interact
27− unless done vty_interact
29update_display :: App ()
28update_display :: App ()
30update_display = do
29update_display = do
@@ -36,8 +35,7 @@ update_display = do
37handle_next_event = ask >>= liftIO . next_event >>= handle_event
36handle_next_event = ask >>= liftIO . next_event >>= handle_event
39− handle_event (EvKey KEsc []) = return True
40 handle_event e = do
38 handle_event e = do
41 modify $ (<|) (show e) >>> Seq.take event_buffer_size
39 modify $ (<|) (show e) >>> Seq.take event_buffer_size
42− return False
40+ return $ e == EvKey KEsc []