aboutsummaryrefslogtreecommitdiff
path: root/lib/Daffm/Configuration.hs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/Daffm/Configuration.hs20
1 files changed, 3 insertions, 17 deletions
diff --git a/lib/Daffm/Configuration.hs b/lib/Daffm/Configuration.hs
index 6128816..a27d616 100644
--- a/lib/Daffm/Configuration.hs
+++ b/lib/Daffm/Configuration.hs
@@ -3,13 +3,13 @@ module Daffm.Configuration where
import Control.Arrow (ArrowChoice (left))
import Control.Exception (throwIO)
import Daffm.Action.Commands (parseCommand)
+import Daffm.Keymap (parseKeySequence)
import Daffm.Types
import Data.Bifunctor (Bifunctor (bimap))
import qualified Data.Map as Map
import Data.Maybe (fromMaybe)
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
-import qualified Graphics.Vty as V
import Toml ((.=))
import qualified Toml
@@ -21,7 +21,7 @@ loadConfigFile = Text.readFile "./config.toml" >>= parse
Right c -> pure c
parseConfig :: Text.Text -> Either Text.Text Configuration
-parseConfig txt = left Toml.prettyTomlDecodeErrors $ Toml.decode configurationCodec txt
+parseConfig = left Toml.prettyTomlDecodeErrors . Toml.decode configurationCodec
configurationCodec :: Toml.TomlCodec Configuration
configurationCodec =
@@ -32,19 +32,5 @@ configurationCodec =
keymapCodec = Toml.dimap (const Map.empty) toKeymap . keymapRawCodec
keymapRawCodec = Toml.tableMap Toml._KeyText Toml.text
toKeymap = Map.fromList . map (bimap toKeys toCmd) . Map.toList
- toKeys = fromMaybe [] . parseKey
+ toKeys = fromMaybe [] . parseKeySequence
toCmd = fromMaybe CmdNoop . parseCommand
-
-parseKey :: Text.Text -> Maybe [Key]
-parseKey keytxt = parse keytxt []
- where
- -- TODO: Refactor using https://hackage-content.haskell.org/package/brick-2.9/docs/Brick-Keybindings-Parse.html#v:parseBinding
- parse k keys = case k of
- (Text.null -> True) -> pure keys
- (Text.splitAt 1 -> (c, rest)) -> case (c, rest) of
- ("<", Text.splitAt 4 -> (Text.toLower -> "tab>", rest')) -> parse rest' $ keys <> [V.KChar '\t']
- ("<", Text.splitAt 3 -> (Text.toLower -> "cr>", rest')) -> parse rest' $ keys <> [V.KEnter]
- ("<", Text.splitAt 4 -> (Text.toLower -> "esc>", rest')) -> parse rest' $ keys <> [V.KEsc]
- _ -> do
- ch <- fst <$> Text.uncons c
- parse rest $ keys <> [V.KChar ch]