content: -----------------------------------------------------------------------------
  --
  -- Module      :  IDE.Command.VCS.Types
  -- Copyright   :  2007-2011 Juergen Nicklisch-Franken, Hamish Mackenzie
  -- License     :  GPL Nothing
  --
  -- Maintainer  :  maintainer@leksah.org
  -- Stability   :  provisional
  -- Portability :
  --
  -- |
  --
  -----------------------------------------------------------------------------
  {-# LANGUAGE FlexibleInstances, GeneralizedNewtypeDeriving #-}
  module IDE.Command.VCS.Types (
      --types
      VCSAction(..)
      ,askIDERef
      ,readIDE'
      ,reflectIDE'
  ) where
  
  import Prelude ()
  import Prelude.Compat
  import Control.Monad.Reader
  import Control.Lens (Getting)
  import IDE.Core.Types
  import IDE.Core.State
  
  newtype VCSAction a = VCSAction (ReaderT (VCSConf,FilePath) IDEM a)
      deriving (Functor, Applicative, Monad, MonadIO, MonadReader (VCSConf,FilePath))
  
  askIDERef :: VCSAction IDERef
  askIDERef = VCSAction $ lift ask
  
  --liftIDE :: ReaderT (VCSConf,FilePath) IDEM a
  --liftIDE = VCSAction $ lift
  
  readIDE' :: Getting a IDE a -> VCSAction a
  readIDE' f = VCSAction $ lift $ readIDE f
  
  reflectIDE' :: IDEM a -> IDERef -> IO a
  reflectIDE' = reflectIDE
  