chiasma-0.12.2.0: lib/Chiasma/Data/SplitParams.hs
module Chiasma.Data.SplitParams where
import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), flag1, optionArgs)
import Chiasma.Data.Axis (Axis)
import Chiasma.Data.Target (Target (Current), formatTarget)
data SplitSize =
Units Int
|
Percentage Int
deriving stock (Eq, Show)
instance CmdArgs SplitSize where
cmdArgs = \case
Units n -> ["-l", show n]
Percentage n -> ["-p", show n]
data SplitWindowParams =
SplitWindowParams {
axis :: Maybe Axis,
size :: Maybe SplitSize,
before :: Bool,
fullSize :: Bool,
readStdin :: Bool
}
deriving stock (Eq, Show)
instance Default SplitWindowParams where
def =
SplitWindowParams {
axis = Nothing,
size = Nothing,
before = False,
fullSize = False,
readStdin = False
}
instance CmdArgs SplitWindowParams where
cmdArgs SplitWindowParams {..} =
optionArgs axis
<>
optionArgs size
<>
flag1 "-b" before
<>
flag1 "-f" fullSize
<>
flag1 "-K" readStdin
data JoinPaneParams =
JoinPaneParams {
axis :: Maybe Axis,
size :: Maybe SplitSize,
before :: Bool,
detach :: Bool,
source :: Maybe Target,
target :: Target
}
deriving stock (Eq, Show)
instance Default JoinPaneParams where
def =
JoinPaneParams {
axis = Nothing,
size = Nothing,
before = False,
detach = False,
source = Nothing,
target = Current
}
instance CmdArgs JoinPaneParams where
cmdArgs JoinPaneParams {..} =
optionArgs axis
<>
optionArgs size
<>
flag1 "-b" before
<>
flag1 "-d" detach
<>
foldMap (formatTarget ["-s"]) source
<>
cmdArgs target