-----------------------------------------------------------------------------
--- $Id: InteractiveUI.hs,v 1.56 2001/03/23 12:12:18 simonmar Exp $
+-- $Id: InteractiveUI.hs,v 1.58 2001/03/27 16:55:03 simonmar Exp $
--
-- GHC Interactive User Interface
--
import Util
import Name ( Name )
import Outputable
+import CmdLineOpts ( DynFlag(..), dopt_unset )
import Panic ( GhcException(..) )
import Config
\\
\ <stmt> evaluate/run <stmt>\n\
\ :cd <dir> change directory to <dir>\n\
-\ :def <cmd> <expr> define a macro :<cmd>\n\
+\ :def <cmd> <expr> define a command :<cmd>\n\
\ :help, :? display this list of commands\n\
\ :load <filename> load a module (and it dependents)\n\
\ :module <mod> set the context for expression evaluation to <mod>\n\
\ :reload reload the current module set\n\
\ :set <option> ... set options\n\
+\ :undef <name> undefine user-defined command :<name>\n\
\ :type <expr> show the type of <expr>\n\
\ :unset <option> ... unset options\n\
\ :quit exit GHCi\n\
case home of
Left e -> return ()
Right dir -> do
- dot_ghci <- io (IO.try (openFile (dir ++ "/.ghci") ReadMode))
- case dot_ghci of
- Left e -> return ()
- Right hdl -> fileLoop hdl False
+ cwd <- io (getCurrentDirectory)
+ when (dir /= cwd) $ do
+ dot_ghci <- io (IO.try (openFile (dir ++ "/.ghci") ReadMode))
+ case dot_ghci of
+ Left e -> return ()
+ Right hdl -> fileLoop hdl False
-- read commands from stdin
#ifndef NO_READLINE
| otherwise
= do st <- getGHCiState
dflags <- io (getDynFlags)
- (new_cmstate, names) <- io (cmRunStmt (cmstate st) dflags stmt)
+ let dflags' = dopt_unset dflags Opt_WarnUnusedBinds
+ (new_cmstate, names) <- io (cmRunStmt (cmstate st) dflags' stmt)
setGHCiState st{cmstate = new_cmstate}
return (Just names)
foldr1 (\a b -> a ++ ',':b) (map fst cs)
++ ")") >> return False)
-noArgs c = io (hPutStrLn stdout ("command `:" ++ c ++ "' takes no arguments"))
+noArgs c = throwDyn (OtherError ("command `" ++ c ++ "' takes no arguments"))
-----------------------------------------------------------------------------
-- Commands