[commit: ghc] master: trac #5265 (support for additional .ghci files) (991f141)
Ian Lynagh
igloo at earth.li
Mon Jun 27 17:49:30 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/991f141989940c897cb2fc3dba7b5b49342d402a
>---------------------------------------------------------------
commit 991f141989940c897cb2fc3dba7b5b49342d402a
Author: Sam Anklesaria <amsay at amsay.net>
Date: Sun Jun 19 17:36:07 2011 -0500
trac #5265 (support for additional .ghci files)
>---------------------------------------------------------------
compiler/main/StaticFlags.hs | 11 ++++++++++-
docs/users_guide/flags.xml | 6 ++++++
docs/users_guide/ghci.xml | 4 ++++
ghc/InteractiveUI.hs | 3 ++-
4 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/compiler/main/StaticFlags.hs b/compiler/main/StaticFlags.hs
index f6d0af2..d8e63ab 100644
--- a/compiler/main/StaticFlags.hs
+++ b/compiler/main/StaticFlags.hs
@@ -72,6 +72,7 @@ module StaticFlags (
-- misc opts
opt_IgnoreDotGhci,
+ opt_GhciScripts,
opt_ErrorSpans,
opt_GranMacros,
opt_HiVersion,
@@ -92,7 +93,7 @@ module StaticFlags (
import Config
import FastString
import Util
-import Maybes ( firstJusts )
+import Maybes ( firstJusts, catMaybes )
import Panic
import Data.Maybe ( listToMaybe )
@@ -121,6 +122,7 @@ lookUp :: FastString -> Bool
lookup_def_int :: String -> Int -> Int
lookup_def_float :: String -> Float -> Float
lookup_str :: String -> Maybe String
+lookup_all_str :: String -> [String]
-- holds the static opts while they're being collected, before
-- being unsafely read by unpacked_static_opts below.
@@ -151,6 +153,10 @@ lookup_str sw
Just str -> Just str
Nothing -> Nothing
+lookup_all_str sw = map f $ catMaybes (map (stripPrefix sw) staticFlags) where
+ f ('=' : str) = str
+ f str = str
+
lookup_def_int sw def = case (lookup_str sw) of
Nothing -> def -- Use default
Just xx -> try_read sw xx
@@ -190,6 +196,9 @@ unpacked_opts =
opt_IgnoreDotGhci :: Bool
opt_IgnoreDotGhci = lookUp (fsLit "-ignore-dot-ghci")
+opt_GhciScripts :: [String]
+opt_GhciScripts = lookup_all_str "-ghci-script"
+
-- debugging options
-- | Suppress all that is suppressable in core dumps.
-- Except for uniques, as some simplifier phases introduce new varibles that
diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml
index 43c713e..7ef9e80 100644
--- a/docs/users_guide/flags.xml
+++ b/docs/users_guide/flags.xml
@@ -487,6 +487,12 @@
<entry>-</entry>
</row>
<row>
+ <entry><option>-ghci-script</option></entry>
+ <entry>Load the given additional <filename>.ghci</filename> file</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-read-dot-ghci</option></entry>
<entry>Enable reading of <filename>.ghci</filename> files</entry>
<entry>static</entry>
diff --git a/docs/users_guide/ghci.xml b/docs/users_guide/ghci.xml
index 72481eb..62522e8 100644
--- a/docs/users_guide/ghci.xml
+++ b/docs/users_guide/ghci.xml
@@ -2872,6 +2872,10 @@ Prelude> :set -fno-glasgow-exts
</varlistentry>
</variablelist>
+ <para>Additional <filename>.ghci</filename> files can be added
+ through the <option>-ghci-script</option> option. These are
+ loaded after the normal <filename>.ghci</filename> files.</para>
+
</sect1>
<sect1 id="ghci-obj">
diff --git a/ghc/InteractiveUI.hs b/ghc/InteractiveUI.hs
index 1869040..981abdf 100644
--- a/ghc/InteractiveUI.hs
+++ b/ghc/InteractiveUI.hs
@@ -426,7 +426,8 @@ runGHCi paths maybe_exprs = do
getDirectory f = case takeDirectory f of "" -> "."; d -> d
when (read_dot_files) $ do
- mcfgs0 <- sequence [ current_dir, app_user_dir, home_dir ]
+ mcfgs0 <- sequence $ [ current_dir, app_user_dir, home_dir ]
+ ++ map (return . Just) opt_GhciScripts
mcfgs <- liftIO $ mapM canonicalizePath' (catMaybes mcfgs0)
mapM_ sourceConfigFile $ nub $ catMaybes mcfgs
-- nub, because we don't want to read .ghci twice if the
More information about the Cvs-ghc
mailing list