leksah-0.13.4.0: src/IDE/Command/VCS/Types.hs
-----------------------------------------------------------------------------
--
-- 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' c ideR = reflectIDE c ideR