From 92d3e74d403bfa030d89beac00ab5ed11a77c26f Mon Sep 17 00:00:00 2001 From: Nitin Prakash Date: Wed, 22 May 2024 17:31:01 +0530 Subject: [PATCH] Handle backword kill word event in REPL (#1861) Closes #897 --- src/swarm-tui/Swarm/TUI/Controller.hs | 5 ++++- src/swarm-tui/Swarm/TUI/Controller/Util.hs | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/swarm-tui/Swarm/TUI/Controller.hs b/src/swarm-tui/Swarm/TUI/Controller.hs index 7c74e3a7..161e6004 100644 --- a/src/swarm-tui/Swarm/TUI/Controller.hs +++ b/src/swarm-tui/Swarm/TUI/Controller.hs @@ -40,7 +40,7 @@ module Swarm.TUI.Controller ( import Brick hiding (Direction, Location) import Brick.Focus import Brick.Widgets.Dialog -import Brick.Widgets.Edit (handleEditorEvent) +import Brick.Widgets.Edit (applyEdit, handleEditorEvent) import Brick.Widgets.List (handleListEvent) import Brick.Widgets.List qualified as BL import Control.Applicative (liftA2, pure) @@ -66,6 +66,7 @@ import Data.String (fromString) import Data.Text (Text) import Data.Text qualified as T import Data.Text.IO qualified as T +import Data.Text.Zipper.Generic.Words qualified as TZ import Data.Time (getZonedTime) import Data.Vector qualified as V import Graphics.Vty qualified as V @@ -1198,6 +1199,8 @@ handleREPLEventTyping = \case if text == T.empty then toggleModal QuitModal else continueWithoutRedraw + MetaKey V.KBS -> + uiState . uiGameplay . uiREPL . replPromptEditor %= applyEdit TZ.deletePrevWord -- finally if none match pass the event to the editor ev -> do Brick.zoom (uiState . uiGameplay . uiREPL . replPromptEditor) (handleEditorEvent ev) diff --git a/src/swarm-tui/Swarm/TUI/Controller/Util.hs b/src/swarm-tui/Swarm/TUI/Controller/Util.hs index 5683f4d9..bfa04241 100644 --- a/src/swarm-tui/Swarm/TUI/Controller/Util.hs +++ b/src/swarm-tui/Swarm/TUI/Controller/Util.hs @@ -37,6 +37,9 @@ pattern MetaChar c = VtyEvent (V.EvKey (V.KChar c) [V.MMeta]) pattern ShiftKey :: V.Key -> BrickEvent n e pattern ShiftKey k = VtyEvent (V.EvKey k [V.MShift]) +pattern MetaKey :: V.Key -> BrickEvent n e +pattern MetaKey k = VtyEvent (V.EvKey k [V.MMeta]) + pattern EscapeKey :: BrickEvent n e pattern EscapeKey = VtyEvent (V.EvKey V.KEsc [])