Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : master
http://hackage.haskell.org/trac/ghc/changeset/458ee4fe496bf55a827900fe5fd1498dadfb8fb1 >--------------------------------------------------------------- commit 458ee4fe496bf55a827900fe5fd1498dadfb8fb1 Author: Simon Marlow <marlo...@gmail.com> Date: Thu Nov 1 08:51:12 2012 +0000 Add -fghci-hist-size=N to set the number of previous steps stored by :trace >--------------------------------------------------------------- compiler/main/DynFlags.hs | 6 ++++++ compiler/main/InteractiveEval.hs | 10 ++++++---- docs/users_guide/flags.xml | 6 ++++++ docs/users_guide/ghci.xml | 13 +++++++------ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index d745cd6..4810ce8 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -670,6 +670,8 @@ data DynFlags = DynFlags { maxWorkerArgs :: Int, + ghciHistSize :: Int, + -- | MsgDoc output action: use "ErrUtils" instead of this if you can log_action :: LogAction, flushOut :: FlushOut, @@ -1227,6 +1229,8 @@ defaultDynFlags mySettings = maxWorkerArgs = 10, + ghciHistSize = 50, -- keep a log of length 50 by default + log_action = defaultLogAction, flushOut = defaultFlushOut, flushErr = defaultFlushErr, @@ -2126,6 +2130,8 @@ dynamic_flags = [ , Flag "fmax-worker-args" (intSuffix (\n d -> d {maxWorkerArgs = n})) + , Flag "fghci-hist-size" (intSuffix (\n d -> d {ghciHistSize = n})) + ------ Profiling ---------------------------------------------------- -- OLD profiling flags diff --git a/compiler/main/InteractiveEval.hs b/compiler/main/InteractiveEval.hs index 64b2d33..9b9c14b 100644 --- a/compiler/main/InteractiveEval.hs +++ b/compiler/main/InteractiveEval.hs @@ -220,13 +220,15 @@ runStmtWithLocation source linenumber expr step = let ic = hsc_IC hsc_env bindings = (ic_tythings ic, ic_rn_gbl_env ic) + size = ghciHistSize idflags' + case step of RunAndLogSteps -> traceRunStatus expr bindings tyThings - breakMVar statusMVar status emptyHistory + breakMVar statusMVar status (emptyHistory size) _other -> handleRunStatus expr bindings tyThings - breakMVar statusMVar status emptyHistory + breakMVar statusMVar status (emptyHistory size) runDecls :: GhcMonad m => String -> m [Name] runDecls = runDeclsWithLocation "<interactive>" 1 @@ -268,8 +270,8 @@ withVirtualCWD m = do parseImportDecl :: GhcMonad m => String -> m (ImportDecl RdrName) parseImportDecl expr = withSession $ \hsc_env -> liftIO $ hscImport hsc_env expr -emptyHistory :: BoundedList History -emptyHistory = nilBL 50 -- keep a log of length 50 +emptyHistory :: Int -> BoundedList History +emptyHistory size = nilBL size handleRunStatus :: GhcMonad m => String-> ([TyThing],GlobalRdrEnv) -> [Id] diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml index d670cb9..bc1c228 100644 --- a/docs/users_guide/flags.xml +++ b/docs/users_guide/flags.xml @@ -511,6 +511,12 @@ <entry><option>-fno-break-on-error</option></entry> </row> <row> + <entry><option>-fghci-hist-size=<replaceable>n</replaceable></option></entry> + <entry><link linkend="ghci-debugger">Set the number of entries GHCi keeps for <literal>:history</literal></link></entry> + <entry>dynamic</entry> + <entry><option>(default is 50)</option></entry> + </row> + <row> <entry><option>-fprint-evld-with-show</option></entry> <entry><link linkend="breakpoints">Enable usage of Show instances in <literal>:print</literal></link></entry> <entry>dynamic</entry> diff --git a/docs/users_guide/ghci.xml b/docs/users_guide/ghci.xml index 3d1aecc..c59f4b3 100644 --- a/docs/users_guide/ghci.xml +++ b/docs/users_guide/ghci.xml @@ -1715,8 +1715,7 @@ a :: a <para>The history is only available when using <literal>:trace</literal>; the reason for this is we found that logging each breakpoint in the history cuts performance by a factor of - 2 or more. GHCi remembers the last 50 steps in the history (perhaps in - the future we'll make this configurable).</para> + 2 or more. By default, GHCi remembers the last 50 steps in the history, but this can be changed with the <option>-fghci-hist-size=<replaceable>n</replaceable></option><indexterm><primary><option>–fghci-hist-size</option></primary></indexterm> option).</para> </sect2> <sect2 id="ghci-debugger-exceptions"> @@ -2381,10 +2380,12 @@ Prelude> :. cmds.ghci <indexterm><primary><literal>:history</literal></primary></indexterm> </term> <listitem> - <para>Display the history of evaluation steps. With a number, - displays that many steps (default: 20). For use with - <literal>:trace</literal>; see <xref - linkend="tracing" />.</para> + <para>Display the history of evaluation steps. With a + number, displays that many steps (default: 20). For use + with <literal>:trace</literal>; see <xref linkend="tracing" + />. To set the number of history entries stored by GHCi, + use + <option>-fghci-hist-size=<replaceable>n</replaceable></option>.</para> </listitem> </varlistentry> _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc