[using haskeline for REPL, allows Ctrl-C for interruption
martin.hofmann@uni-bamberg.de**20091210072813] hunk ./src/Igor2/UI/REPLoop.hs 1
---
--- Copyright (c) 2005 Lennart Augustsson
--- See LICENSE for licensing details.
---
+
hunk ./src/Igor2/UI/REPLoop.hs 3
-import Control.Monad.Error
-import System.Console.Editline.Readline(readline, addHistory)
+
+import Control.Monad.Trans
+import System.Console.Haskeline
hunk ./src/Igor2/UI/REPLoop.hs 16
-    let loop s = (do
-            maybeline <- readline prompt
-            case maybeline of
-                Nothing -> loop s
-                Just line -> do
-                    addHistory line
-                    (quit, s') <- repl_eval p s line
-                    if quit then
-                        repl_exit p s'
-                     else do
-                        loop s'
-            ) `catchError` ( \ err ->
-                do putStrLn $ "\nInterrupted (" ++ (show err) ++ " )"
-                   loop s
-            )
-    loop state
-
+    let loop s = (do 
+        minput <- getInputLine prompt
+        case minput of
+          Nothing    -> loop s
+          Just input -> do 
+            (quit, s') <- handleInterrupt 
+                            (outputStrLn " Interrupted" >> return (False, s))
+                            (withInterrupt $ lift $ repl_eval p s input)
+            if quit then lift $ repl_exit p s'
+              else do loop s'
+        )
+    runInputT defaultSettings (loop state)