miv-0.3.0: src/Mode.hs
{-# LANGUAGE OverloadedStrings #-}
module Mode where
import Data.Text (unpack)
import ReadText
import ShowText
data Mode = NormalMode
| VisualMode
| SelectMode
| InsertMode
| CmdlineMode
| ExMode
| OperatorPendingMode
| ReplaceMode
| VirtualReplaceMode
| InsertNormalMode
| InesrtVisualMode
| InsertSelectMode
deriving Eq
instance ShowText Mode where
show NormalMode = "n"
show VisualMode = "v"
show SelectMode = "s"
show InsertMode = "i"
show CmdlineMode = "c"
show ExMode = "ex"
show OperatorPendingMode = "o"
show ReplaceMode = "r"
show VirtualReplaceMode = "vr"
show InsertNormalMode = "in"
show InesrtVisualMode = "iv"
show InsertSelectMode = "is"
instance ReadText Mode where
read "n" = NormalMode
read "v" = VisualMode
read "s" = SelectMode
read "i" = InsertMode
read "c" = CmdlineMode
read "ex" = ExMode
read "o" = OperatorPendingMode
read "r" = ReplaceMode
read "vr" = VirtualReplaceMode
read "in" = InsertNormalMode
read "iv" = InesrtVisualMode
read "is" = InsertSelectMode
read m = error $ "unknown mode: " ++ unpack m