packages feed

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

module Chiasma.Data.Views where

import Control.Lens (makeClassy)
import Prettyprinter (Doc)
import Prettyprinter.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 stock (Eq, Show)

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

makeClassy ''Views

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