module Chiasma.Data.CopyModeParams where

import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), flag1)
import Chiasma.Data.Target (Target)

data CopyModeParams =
  CopyModeParams {
    CopyModeParams -> Bool
mouseDrag :: Bool,
    CopyModeParams -> Bool
scrollUp :: Bool,
    CopyModeParams -> Bool
exitBottom :: Bool,
    CopyModeParams -> Target
target :: Target
  }
  deriving stock (CopyModeParams -> CopyModeParams -> Bool
(CopyModeParams -> CopyModeParams -> Bool)
-> (CopyModeParams -> CopyModeParams -> Bool) -> Eq CopyModeParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CopyModeParams -> CopyModeParams -> Bool
$c/= :: CopyModeParams -> CopyModeParams -> Bool
== :: CopyModeParams -> CopyModeParams -> Bool
$c== :: CopyModeParams -> CopyModeParams -> Bool
Eq, Int -> CopyModeParams -> ShowS
[CopyModeParams] -> ShowS
CopyModeParams -> String
(Int -> CopyModeParams -> ShowS)
-> (CopyModeParams -> String)
-> ([CopyModeParams] -> ShowS)
-> Show CopyModeParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CopyModeParams] -> ShowS
$cshowList :: [CopyModeParams] -> ShowS
show :: CopyModeParams -> String
$cshow :: CopyModeParams -> String
showsPrec :: Int -> CopyModeParams -> ShowS
$cshowsPrec :: Int -> CopyModeParams -> ShowS
Show)

instance Default CopyModeParams where
  def :: CopyModeParams
def =
    CopyModeParams :: Bool -> Bool -> Bool -> Target -> CopyModeParams
CopyModeParams {
      $sel:mouseDrag:CopyModeParams :: Bool
mouseDrag = Bool
False,
      $sel:scrollUp:CopyModeParams :: Bool
scrollUp = Bool
False,
      $sel:exitBottom:CopyModeParams :: Bool
exitBottom = Bool
False,
      $sel:target:CopyModeParams :: Target
target = Target
forall a. Default a => a
def
    }

instance CmdArgs CopyModeParams where
  cmdArgs :: CopyModeParams -> [Text]
cmdArgs CopyModeParams {Bool
Target
target :: Target
exitBottom :: Bool
scrollUp :: Bool
mouseDrag :: Bool
$sel:target:CopyModeParams :: CopyModeParams -> Target
$sel:exitBottom:CopyModeParams :: CopyModeParams -> Bool
$sel:scrollUp:CopyModeParams :: CopyModeParams -> Bool
$sel:mouseDrag:CopyModeParams :: CopyModeParams -> Bool
..} =
    Text -> Bool -> [Text]
flag1 Text
"-M" Bool
mouseDrag
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Text -> Bool -> [Text]
flag1 Text
"-u" Bool
scrollUp
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Text -> Bool -> [Text]
flag1 Text
"-e" Bool
exitBottom
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Target -> [Text]
forall a. CmdArgs a => a -> [Text]
cmdArgs Target
target