From e7d53d6fc81fb14576fca035ab0360b44bbd6495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Tue, 29 Sep 2020 21:55:23 +0200 Subject: override colors and query via JSON config --- src/Much/State.hs | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) (limited to 'src/Much/State.hs') diff --git a/src/Much/State.hs b/src/Much/State.hs index b09d544..43756a7 100644 --- a/src/Much/State.hs +++ b/src/Much/State.hs @@ -1,13 +1,17 @@ {-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DeriveGeneric #-} module Much.State where import Blessings.String (Blessings) -import qualified Data.Text as T +import Data.Aeson import Data.Time -import qualified Data.Tree.Zipper as Z +import GHC.Generics +import Much.TreeView (TreeView) import Scanner import System.Posix.Signals -import Much.TreeView (TreeView) +import qualified Data.Text as T +import qualified Data.Map as M +import qualified Data.Tree.Zipper as Z data State = State { cursor :: Z.TreePos Z.Full TreeView @@ -23,24 +27,26 @@ data State = State , query :: String , keymap :: String -> State -> IO State , mousemap :: Scan -> State -> IO State - , tagSymbols :: [(T.Text, T.Text)] - , colorConfig :: ColorConfig - } - -data ColorConfig = ColorConfig - { alt :: Blessings String -> Blessings String - , search :: Blessings String -> Blessings String - , focus :: Blessings String -> Blessings String - , quote :: Blessings String -> Blessings String - , boring :: Blessings String -> Blessings String - , prefix :: Blessings String -> Blessings String - , date :: Blessings String -> Blessings String - , tags :: Blessings String -> Blessings String - , unreadSearch :: Blessings String -> Blessings String - , unreadMessage :: Blessings String -> Blessings String - , boringMessage :: Blessings String -> Blessings String - , tagMap :: [(T.Text, Blessings String -> Blessings String)] + , tagSymbols :: M.Map T.Text T.Text + , colorConfig :: ColorConfig (Blessings String -> Blessings String) } instance Show (State -> IO ()) where show = const "λ" + +data ColorConfig a = ColorConfig + { alt :: a + , search :: a + , focus :: a + , quote :: a + , boring :: a + , prefix :: a + , date :: a + , tags :: a + , unreadSearch :: a + , unreadMessage :: a + , boringMessage :: a + , tagMap :: M.Map T.Text a + } deriving (Generic, Show) + +instance FromJSON a => FromJSON (ColorConfig a) -- cgit v1.2.3