packages feed

chiasma-0.2.0.0: lib/Chiasma/Data/Views.hs

{-# LANGUAGE DeriveAnyClass #-}

module Chiasma.Data.Views where

import Data.Text.Prettyprint.Doc (Doc)
import Data.Text.Prettyprint.Doc.Render.Terminal (AnsiStyle)

import Chiasma.Data.Ident (Ident)
import Chiasma.Data.TmuxId (PaneId, SessionId, WindowId)
import Chiasma.Data.View (View)

data ViewsError =
  NoSuchSession Ident
  |
  NoSuchWindow Ident
  |
  NoSuchPane Ident
  |
  NoPaneId Ident
  deriving (Eq, Show)

deepPrisms ''ViewsError

data Views =
  Views {
    _sessions :: [View SessionId],
    _windows :: [View WindowId],
    _panes :: [View PaneId],
    _log :: [Doc AnsiStyle]
  }
  deriving (Show, Generic, Default)

instance Eq Views where
  (Views sa wa pa _) == (Views sb wb pb _) =
    (sa == sb) && (wa == wb) && (pa == pb)

deepLenses ''Views