Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : ghc-7.2

http://hackage.haskell.org/trac/ghc/changeset/7f477f0be9f8067b92b638473deb990d82a9d72a

>---------------------------------------------------------------

commit 7f477f0be9f8067b92b638473deb990d82a9d72a
Author: Sam Anklesaria <[email protected]>
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



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to