{-# LANGUAGE GeneralizedNewtypeDeriving #-} module Vgrep.KeybindingMap where import Data.Map.Strict (Map) import qualified Data.Map.Strict as M import Vgrep.Command import qualified Vgrep.Key as Key newtype KeybindingMap = KeybindingMap { KeybindingMap -> Map Chord Command unKeybindingMap :: Map Key.Chord Command } deriving (Int -> KeybindingMap -> ShowS [KeybindingMap] -> ShowS KeybindingMap -> String (Int -> KeybindingMap -> ShowS) -> (KeybindingMap -> String) -> ([KeybindingMap] -> ShowS) -> Show KeybindingMap forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [KeybindingMap] -> ShowS $cshowList :: [KeybindingMap] -> ShowS show :: KeybindingMap -> String $cshow :: KeybindingMap -> String showsPrec :: Int -> KeybindingMap -> ShowS $cshowsPrec :: Int -> KeybindingMap -> ShowS Show, KeybindingMap -> KeybindingMap -> Bool (KeybindingMap -> KeybindingMap -> Bool) -> (KeybindingMap -> KeybindingMap -> Bool) -> Eq KeybindingMap forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: KeybindingMap -> KeybindingMap -> Bool $c/= :: KeybindingMap -> KeybindingMap -> Bool == :: KeybindingMap -> KeybindingMap -> Bool $c== :: KeybindingMap -> KeybindingMap -> Bool Eq, b -> KeybindingMap -> KeybindingMap NonEmpty KeybindingMap -> KeybindingMap KeybindingMap -> KeybindingMap -> KeybindingMap (KeybindingMap -> KeybindingMap -> KeybindingMap) -> (NonEmpty KeybindingMap -> KeybindingMap) -> (forall b. Integral b => b -> KeybindingMap -> KeybindingMap) -> Semigroup KeybindingMap forall b. Integral b => b -> KeybindingMap -> KeybindingMap forall a. (a -> a -> a) -> (NonEmpty a -> a) -> (forall b. Integral b => b -> a -> a) -> Semigroup a stimes :: b -> KeybindingMap -> KeybindingMap $cstimes :: forall b. Integral b => b -> KeybindingMap -> KeybindingMap sconcat :: NonEmpty KeybindingMap -> KeybindingMap $csconcat :: NonEmpty KeybindingMap -> KeybindingMap <> :: KeybindingMap -> KeybindingMap -> KeybindingMap $c<> :: KeybindingMap -> KeybindingMap -> KeybindingMap Semigroup, Semigroup KeybindingMap KeybindingMap Semigroup KeybindingMap -> KeybindingMap -> (KeybindingMap -> KeybindingMap -> KeybindingMap) -> ([KeybindingMap] -> KeybindingMap) -> Monoid KeybindingMap [KeybindingMap] -> KeybindingMap KeybindingMap -> KeybindingMap -> KeybindingMap forall a. Semigroup a -> a -> (a -> a -> a) -> ([a] -> a) -> Monoid a mconcat :: [KeybindingMap] -> KeybindingMap $cmconcat :: [KeybindingMap] -> KeybindingMap mappend :: KeybindingMap -> KeybindingMap -> KeybindingMap $cmappend :: KeybindingMap -> KeybindingMap -> KeybindingMap mempty :: KeybindingMap $cmempty :: KeybindingMap $cp1Monoid :: Semigroup KeybindingMap Monoid) lookup :: Key.Chord -> KeybindingMap -> Maybe Command lookup :: Chord -> KeybindingMap -> Maybe Command lookup Chord chord (KeybindingMap Map Chord Command m) = Chord -> Map Chord Command -> Maybe Command forall k a. Ord k => k -> Map k a -> Maybe a M.lookup Chord chord Map Chord Command m fromList :: [(Key.Chord, Command)] -> KeybindingMap fromList :: [(Chord, Command)] -> KeybindingMap fromList = Map Chord Command -> KeybindingMap KeybindingMap (Map Chord Command -> KeybindingMap) -> ([(Chord, Command)] -> Map Chord Command) -> [(Chord, Command)] -> KeybindingMap forall b c a. (b -> c) -> (a -> b) -> a -> c . [(Chord, Command)] -> Map Chord Command forall k a. Ord k => [(k, a)] -> Map k a M.fromList