module IDE.Command.VCS.Types (
--types
VCSAction(..)
,askIDERef
,readIDE'
,reflectIDE'
) where
import Control.Monad.Reader
import Control.Applicative
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
readIDE' :: (IDE -> a) -> VCSAction a
readIDE' f = VCSAction $ lift $ readIDE f
reflectIDE' :: IDEM a -> IDERef -> IO a
reflectIDE' = reflectIDE