diff options
author | Sam Anklesaria <amsay@amsay.net> | 2011-06-19 17:36:07 -0500 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2011-06-26 22:24:12 +0100 |
commit | 991f141989940c897cb2fc3dba7b5b49342d402a (patch) | |
tree | 34d666df6354c99c31bc6bcb281b64c31990cbb2 | |
parent | 8023014ecf192381ffba4b60a3dd21630e5c1d18 (diff) | |
download | haskell-991f141989940c897cb2fc3dba7b5b49342d402a.tar.gz |
trac #5265 (support for additional .ghci files)
-rw-r--r-- | compiler/main/StaticFlags.hs | 11 | ||||
-rw-r--r-- | docs/users_guide/flags.xml | 6 | ||||
-rw-r--r-- | docs/users_guide/ghci.xml | 4 | ||||
-rw-r--r-- | ghc/InteractiveUI.hs | 3 |
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 |