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
