summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Anklesaria <amsay@amsay.net>2011-06-19 17:36:07 -0500
committerIan Lynagh <igloo@earth.li>2011-06-26 22:24:12 +0100
commit991f141989940c897cb2fc3dba7b5b49342d402a (patch)
tree34d666df6354c99c31bc6bcb281b64c31990cbb2
parent8023014ecf192381ffba4b60a3dd21630e5c1d18 (diff)
downloadhaskell-991f141989940c897cb2fc3dba7b5b49342d402a.tar.gz
trac #5265 (support for additional .ghci files)
-rw-r--r--compiler/main/StaticFlags.hs11
-rw-r--r--docs/users_guide/flags.xml6
-rw-r--r--docs/users_guide/ghci.xml4
-rw-r--r--ghc/InteractiveUI.hs3
4 files changed, 22 insertions, 2 deletions
diff --git a/compiler/main/StaticFlags.hs b/compiler/main/StaticFlags.hs
index f6d0af2665..d8e63aba8c 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
@@ -189,6 +195,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.
diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml
index 43c713e119..7ef9e80045 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 72481eb24f..62522e855b 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 1869040a80..981abdfe79 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