Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Language.Haskell.Ghcid
Description
Library for spawning and working with Ghci sessions.
Synopsis
- data Ghci
- data GhciError = UnexpectedExit {
- ghciErrorCmd :: String
- ghciErrorMsg :: String
- ghciErrorLastStdErr :: Maybe String
- data Stream
- data Load
- = Loading {
- loadModule :: String
- loadFile :: FilePath
- | Message {
- loadSeverity :: Severity
- loadFile :: FilePath
- loadFilePos :: (Int, Int)
- loadFilePosEnd :: (Int, Int)
- loadMessage :: [String]
- | LoadConfig {
- loadFile :: FilePath
- | Eval EvalResult
- = Loading {
- data Severity
- startGhci :: String -> Maybe FilePath -> (Stream -> String -> IO ()) -> IO (Ghci, [Load])
- startGhciProcess :: CreateProcess -> (Stream -> String -> IO ()) -> IO (Ghci, [Load])
- stopGhci :: Ghci -> IO ()
- interrupt :: Ghci -> IO ()
- process :: Ghci -> ProcessHandle
- execStream :: Ghci -> String -> (Stream -> String -> IO ()) -> IO ()
- showModules :: Ghci -> IO [(String, FilePath)]
- showPaths :: Ghci -> IO (FilePath, [FilePath])
- reload :: Ghci -> IO [Load]
- exec :: Ghci -> String -> IO [String]
- quit :: Ghci -> IO ()
Documentation
GHCi shut down
Constructors
UnexpectedExit | |
Fields
|
Instances
Data GhciError Source # | |
Defined in Language.Haskell.Ghcid.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GhciError -> c GhciError gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GhciError toConstr :: GhciError -> Constr dataTypeOf :: GhciError -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GhciError) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GhciError) gmapT :: (forall b. Data b => b -> b) -> GhciError -> GhciError gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GhciError -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GhciError -> r gmapQ :: (forall d. Data d => d -> u) -> GhciError -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> GhciError -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> GhciError -> m GhciError gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GhciError -> m GhciError gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GhciError -> m GhciError | |
Exception GhciError Source # | Make GhciError an exception |
Defined in Language.Haskell.Ghcid.Types Methods toException :: GhciError -> SomeException fromException :: SomeException -> Maybe GhciError displayException :: GhciError -> String | |
Show GhciError Source # | |
Eq GhciError Source # | |
Ord GhciError Source # | |
Defined in Language.Haskell.Ghcid.Types |
The stream Ghci is talking over.
Instances
Data Stream Source # | |
Defined in Language.Haskell.Ghcid.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Stream -> c Stream gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Stream dataTypeOf :: Stream -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Stream) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Stream) gmapT :: (forall b. Data b => b -> b) -> Stream -> Stream gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Stream -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Stream -> r gmapQ :: (forall d. Data d => d -> u) -> Stream -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Stream -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Stream -> m Stream gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Stream -> m Stream gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Stream -> m Stream | |
Bounded Stream Source # | |
Defined in Language.Haskell.Ghcid.Types | |
Enum Stream Source # | |
Defined in Language.Haskell.Ghcid.Types | |
Read Stream Source # | |
Defined in Language.Haskell.Ghcid.Types | |
Show Stream Source # | |
Eq Stream Source # | |
Ord Stream Source # | |
Load messages
Constructors
Loading | A module/file was being loaded. |
Fields
| |
Message | An error/warning was emitted. |
Fields
| |
LoadConfig | A config file was loaded, usually a .ghci file (GHC 8.2 and above only) |
Fields
| |
Eval EvalResult | A response to an eval comment |
Severity of messages
Instances
Data Severity Source # | |
Defined in Language.Haskell.Ghcid.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Severity -> c Severity gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Severity toConstr :: Severity -> Constr dataTypeOf :: Severity -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Severity) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Severity) gmapT :: (forall b. Data b => b -> b) -> Severity -> Severity gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Severity -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Severity -> r gmapQ :: (forall d. Data d => d -> u) -> Severity -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Severity -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Severity -> m Severity gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Severity -> m Severity gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Severity -> m Severity | |
Bounded Severity Source # | |
Defined in Language.Haskell.Ghcid.Types | |
Enum Severity Source # | |
Defined in Language.Haskell.Ghcid.Types | |
Read Severity Source # | |
Defined in Language.Haskell.Ghcid.Types | |
Show Severity Source # | |
Eq Severity Source # | |
Ord Severity Source # | |
Defined in Language.Haskell.Ghcid.Types |
Arguments
:: String | Shell command |
-> Maybe FilePath | Working directory |
-> (Stream -> String -> IO ()) | Output callback |
-> IO (Ghci, [Load]) |
Start GHCi by running the given shell command, a helper around startGhciProcess
.
startGhciProcess :: CreateProcess -> (Stream -> String -> IO ()) -> IO (Ghci, [Load]) Source #
Start GHCi by running the described process, returning the result of the initial loading.
If you do not call stopGhci
then the underlying process may be leaked.
The callback will be given the messages produced while loading, useful if invoking something like "cabal repl"
which might compile dependent packages before really loading.
To create a CreateProcess
use the functions in System.Process, particularly
shell
and proc
.
Since: 0.6.11
stopGhci :: Ghci -> IO () Source #
Stop GHCi. Attempts to interrupt and execute :quit:
, but if that doesn't complete
within 5 seconds it just terminates the process.
interrupt :: Ghci -> IO () Source #
Interrupt Ghci, stopping the current computation (if any), but leaving the process open to new input.
execStream :: Ghci -> String -> (Stream -> String -> IO ()) -> IO () Source #
Execute a command, calling a callback on each response. The callback will be called single threaded.
showModules :: Ghci -> IO [(String, FilePath)] Source #
List the modules currently loaded, with module name and source file.
showPaths :: Ghci -> IO (FilePath, [FilePath]) Source #
Return the current working directory, and a list of module import paths