diff --git a/src/GF/System/NoReadline.hs b/src/GF/System/NoReadline.hs new file mode 100644 index 000000000..138ba4e28 --- /dev/null +++ b/src/GF/System/NoReadline.hs @@ -0,0 +1,27 @@ +---------------------------------------------------------------------- +-- | +-- Module : GF.System.NoReadline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 15:04:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.1 $ +-- +-- Do not use readline. +----------------------------------------------------------------------------- + +module GF.System.NoReadline (fetchCommand) where + +import System.IO.Error (try) +import System.IO (stdout,hFlush) + +fetchCommand :: String -> IO (String) +fetchCommand s = do + putStr s + hFlush stdout + res <- try getLine + case res of + Left e -> return "q" + Right l -> return l diff --git a/src/GF/System/Readline.hs b/src/GF/System/Readline.hs index 588b277d0..c12493f98 100644 --- a/src/GF/System/Readline.hs +++ b/src/GF/System/Readline.hs @@ -7,9 +7,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/05/10 14:55:01 $ +-- > CVS $Date: 2005/05/10 15:04:01 $ -- > CVS $Author: bringert $ --- > CVS $Revision: 1.1 $ +-- > CVS $Revision: 1.2 $ -- -- Uses the right readline library to read user input. ----------------------------------------------------------------------------- @@ -18,34 +18,10 @@ module GF.System.Readline (fetchCommand) where #ifdef USE_READLINE -import System.Console.Readline (readline, addHistory) +import GF.System.UseReadline (fetchCommand) #else -import System.IO.Error (try) -import System.IO (stdout,hFlush) - -#endif - -#ifdef USE_READLINE - -fetchCommand :: String -> IO (String) -fetchCommand s = do - res <- readline s - case res of - Nothing -> return "q" - Just s -> do addHistory s - return s - -#else - -fetchCommand :: String -> IO (String) -fetchCommand s = do - putStr s - hFlush stdout - res <- try getLine - case res of - Left e -> return "q" - Right l -> return l +import GF.System.NoReadline (fetchCommand) #endif diff --git a/src/GF/System/UseReadline.hs b/src/GF/System/UseReadline.hs new file mode 100644 index 000000000..c84b9d7f4 --- /dev/null +++ b/src/GF/System/UseReadline.hs @@ -0,0 +1,25 @@ +---------------------------------------------------------------------- +-- | +-- Module : GF.System.UseReadline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 15:04:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.1 $ +-- +-- Use GNU readline +----------------------------------------------------------------------------- + +module GF.System.UseReadline (fetchCommand) where + +import System.Console.Readline (readline, addHistory) + +fetchCommand :: String -> IO (String) +fetchCommand s = do + res <- readline s + case res of + Nothing -> return "q" + Just s -> do addHistory s + return s diff --git a/src/Makefile b/src/Makefile index 5efe4753e..77a208ced 100644 --- a/src/Makefile +++ b/src/Makefile @@ -112,8 +112,8 @@ ghci-trace: GHCFLAGS += -DTRACING ghci-trace: ghci touch-files: - rm -f GF/System/Tracing.{hi,o} GF/System/Readline.{hi,o} - touch GF/System/Tracing.hs GF/System/Readline.hs + rm -f GF/System/Tracing.{hi,o} + touch GF/System/Tracing.hs # profiling prof: GHCOPTFLAGS += -prof -auto-all -auto-dicts