| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Haskell.Ghcid
Description
Library for spawning and working with Ghci sessions.
Synopsis
- data Ghci
- data GhciError = UnexpectedExit String String
- data Stream
- data Load
- = Loading {
- loadModule :: String
- loadFile :: FilePath
- | Message {
- loadSeverity :: Severity
- loadFile :: FilePath
- loadFilePos :: (Int, Int)
- loadFilePosEnd :: (Int, Int)
- loadMessage :: [String]
- | LoadConfig { }
- = 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 String String |
Instances
| Eq GhciError # | |
| Data GhciError # | |
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 :: (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 # | |
| Ord GhciError # | |
| Show GhciError # | |
| Exception GhciError # | Make GhciError an exception |
Defined in Language.Haskell.Ghcid.Types Methods toException :: GhciError -> SomeException # fromException :: SomeException -> Maybe GhciError # displayException :: GhciError -> String # | |
The stream Ghci is talking over.
Instances
| Bounded Stream # | |
| Enum Stream # | |
Defined in Language.Haskell.Ghcid.Types | |
| Eq Stream # | |
| Data Stream # | |
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 # toConstr :: Stream -> Constr # 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 :: (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 # | |
| Ord Stream # | |
| Read Stream # | |
| Show Stream # | |
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) |
Severity of messages
Instances
| Bounded Severity # | |
| Enum Severity # | |
Defined in Language.Haskell.Ghcid.Types | |
| Eq Severity # | |
| Data Severity # | |
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 :: (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 # | |
| Ord Severity # | |
Defined in Language.Haskell.Ghcid.Types | |
| Read Severity # | |
| Show Severity # | |
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]) #
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
Stop GHCi. Attempts to interrupt and execute :quit:, but if that doesn't complete
within 5 seconds it just terminates the process.
Interrupt Ghci, stopping the current computation (if any), but leaving the process open to new input.
process :: Ghci -> ProcessHandle #
Obtain the progress handle behind a GHCi instance.
execStream :: Ghci -> String -> (Stream -> String -> IO ()) -> IO () #
Execute a command, calling a callback on each response. The callback will be called single threaded.
showModules :: Ghci -> IO [(String, FilePath)] #
List the modules currently loaded, with module name and source file.
showPaths :: Ghci -> IO (FilePath, [FilePath]) #
Return the current working directory, and a list of module import paths