blob: c3079c9bddbf543392bac62e9846ad82a4c0d83f (
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
|
module Daffm.Action.Keymap where
import Control.Monad.State (get, modify)
import Daffm.Action.Commands
import Daffm.Keymap (matchKeySequence)
import Daffm.Types
processKeySequence :: AppEvent KeyMatchResult
processKeySequence = do
(AppState {stateKeyMap, stateKeySequence}) <- get
let match = matchKeySequence stateKeyMap stateKeySequence
case match of
MatchSuccess cmd -> do
processCommand cmd ""
modify (\st -> st {stateKeySequence = []})
MatchPartial -> pure ()
MatchFailure -> do
modify (\st -> st {stateKeySequence = []})
pure match
appendToKeySequence :: Key -> AppEvent ()
appendToKeySequence key =
modify (\st -> st {stateKeySequence = stateKeySequence st <> [key]})
|