----------------------------------------------------------------------------- -- -- 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 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 --liftIDE :: ReaderT (VCSConf,FilePath) IDEM a --liftIDE = VCSAction $ lift readIDE' :: (IDE -> a) -> VCSAction a readIDE' f = VCSAction $ lift $ readIDE f reflectIDE' :: IDEM a -> IDERef -> IO a reflectIDE' = reflectIDE