blob: 34e5e41fc47e604628d4d0bb5382eaeac5aec842 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
module Daffm.Action.Cmdline where
import qualified Brick.Widgets.Edit as Editor
import Control.Monad.State (gets, modify)
import qualified Control.Monad.State.Strict as StateStrict
import Daffm.Types
import Daffm.Utils (trimStart)
import qualified Data.Text as Text
import qualified Data.Text.Zipper as Z
import qualified Data.Text.Zipper as Zipper
getCmdlineText :: AppEvent Text.Text
getCmdlineText = StateStrict.gets cmdtext
where
cmdtext = trimStart . Text.unlines . Editor.getEditContents . stateCmdlineEditor
leaveCmdline :: AppEvent ()
leaveCmdline = clearCmdline >> modify (\st -> st {stateFocusTarget = FocusMain})
enterCmdline :: AppEvent ()
enterCmdline = modify (\st -> st {stateFocusTarget = FocusCmdline})
setCmdlineText :: Text.Text -> AppEvent ()
setCmdlineText text =
applyCmdlineEdit (const $ Z.textZipper [text] (Just 1))
clearCmdline :: AppEvent ()
clearCmdline = applyCmdlineEdit Z.clearZipper
applyCmdlineEdit :: (Zipper.TextZipper Text.Text -> Zipper.TextZipper Text.Text) -> AppEvent ()
applyCmdlineEdit zipper = do
editor <- gets stateCmdlineEditor
let editor' = Editor.applyEdit zipper editor
modify (\s -> s {stateCmdlineEditor = editor'})
|