diff options
| -rw-r--r-- | src/Ghci.hs | 20 | 
1 files changed, 15 insertions, 5 deletions
| diff --git a/src/Ghci.hs b/src/Ghci.hs index 47777f2..d8410b7 100644 --- a/src/Ghci.hs +++ b/src/Ghci.hs @@ -23,7 +23,7 @@ import qualified Data.ByteString.Short as BSS  import Data.Char (isSpace, toLower)  import Data.List (nub)  import Foreign (allocaBytes) -import System.IO (hFlush, hIsClosed, hGetBufSome, hPutStrLn, Handle) +import System.IO (hFlush, hIsClosed, hGetBufSome, hPutStrLn, stderr, Handle)  import System.Process  import System.Random (getStdRandom, uniformR)  import System.Timeout (timeout) @@ -31,6 +31,15 @@ import System.Timeout (timeout)  import ExitEarly +debugPrints :: Bool +debugPrints = False + +ghciPutStrLn :: Handle -> String -> IO () +ghciPutStrLn h s = do +  when debugPrints $ hPutStrLn stderr ("Writing: <" ++ s ++ ">") +  hPutStrLn h s + +  data Ghci = Ghci    { ghciProc :: ProcessHandle    , ghciStdin :: Handle @@ -49,8 +58,8 @@ makeGhci = do        , std_in = CreatePipe        , std_out = UseHandle pipeIn        , std_err = UseHandle pipeIn } -  hPutStrLn stdinH ":set -interactive-print=Yahb2Defs.limitedPrint" -  hPutStrLn stdinH ":m" +  ghciPutStrLn stdinH ":set -interactive-print=Yahb2Defs.limitedPrint" +  ghciPutStrLn stdinH ":m"    hFlush stdinH    return Ghci { ghciProc = proch                , ghciStdin = stdinH @@ -115,7 +124,7 @@ terminateGhci ghci = terminateProcess (ghciProc ghci)  runStmt' :: Ghci -> String -> IO String  runStmt' ghci stmt = do    tag <- updatePrompt ghci -  hPutStrLn (ghciStdin ghci) stmt +  ghciPutStrLn (ghciStdin ghci) stmt    hFlush (ghciStdin ghci)    (output, reason) <- hGetUntilUTF8 (ghciStdout ghci) (Just 8192) tag    case reason of @@ -138,7 +147,7 @@ updatePrompt :: Ghci -> IO String  updatePrompt ghci = do    tag <- genTag    -- putStrLn ("chose prompt: " ++ tag) -  hPutStrLn (ghciStdin ghci) (":set prompt " ++ tag) +  ghciPutStrLn (ghciStdin ghci) (":set prompt " ++ tag)    hFlush (ghciStdin ghci)    -- putStrLn ("set prompt " ++ tag)    _ <- hGetUntilUTF8 (ghciStdout ghci) (Just 8192) tag @@ -189,4 +198,5 @@ hGetUntil h mmax tag = do            -- lift $ putStrLn ("nextPrefixes = " ++ show nextPrefixes)            loop (yet + nread) nextPrefixes (builder <> BSB.byteString bs)      result <- execExitEarlyT (loop 0 [] mempty) +    when debugPrints $ hPutStrLn stderr ("Read: <" ++ show result ++ ">")      return $! result | 
