anchor.diff:  
   %% unslurp(State) -> {ok,State}.
   %% slurp(File, State) -> {{ok,Mod},State}.
  -%%  Load in a file making all functions available. We call the
  -%%  compiler directly and only add defined functions, macros are
  -%%  lost. Any exported macros will be available in the
  -%%  LFE-EXPAND-EXPORTED-MACRO/3 function.
  -
  --record(slurp, {mod,imps=[]}).                  %For slurping
  +%%  Load in a file making all the functions and macros available.
  +%%  There is a bit of trickery to get hold of the compile environment
  +%%  to get hold of the macros. We call the compiler directly but don't
  +%%  make the LFE-EXPAND-EXPORTED-MACRO/3 function.
  +
  +-record(slurp, {mod,funs=[],imps=[]}).          %For slurping
   
   unslurp(St0) ->
       St1 = case St0#state.slurp of
  
positive.code:             error
      end.
  
  slurp_errors(Errors) ->
      foreach(fun ({File,Es}) -> slurp_errors(File, Es) end, Errors).
  
  slurp_warnings(Warnings) ->
      foreach(fun ({File,Ws}) -> slurp_warnings(File, Ws) end, Warnings).
  
  slurp_errors(File, Es) -> slurp_ews(File, "~s:~w: ~s\n", Es).
  
  slurp_warnings(File, Es) -> slurp_ews(File, "~s:~w: Warning: ~s\n", Es).
  
  slurp_ews(File, Format, Ews) ->
      foreach(fun ({Line,Mod,Error}) ->
                      Cs = Mod:format_error(Error),
                      lfe_io:format(Format, [File,Line,Cs])
              end, Ews).
  
  collect_form(['define-module',Mod|Mdef], _, St0) ->
      St1 = collect_mdef(Mdef, St0),
      {[],St1#slurp{mod=Mod}};
  collect_form(['extend-module'|Mdef], _, St0) ->
      St1 = collect_mdef(Mdef, St0),
      {[],St1};
  collect_form(['eval-when-compile'|_], _, St) ->
      %% Can safely ignore this, everything already in environment.
      {[],St};
  collect_form(['define-function',F,Def], _, St) ->
      Ar = function_arity(Def),
      {[{F,Ar,Def}],St}.
  
  collect_mdef([[import|Is]|Mdef], St) ->
      collect_mdef(Mdef, collect_imps(Is, St));
  
negative.code:     Imps0 = safe_fetch(Mod, St#slurp.imps, []),
      Imps1 = foldl(Fun, Imps0, Fs),
      St#slurp{imps=store(Mod, Imps1, St#slurp.imps)}.
  
  %% slurp_errors([File, ]Errors) -> ok.
  %% slurp_warnings([File, ]Warnings) -> ok.
  %%  Print errors and warnings.
  
  slurp_errors(Errors) ->
      foreach(fun ({File,Es}) -> slurp_errors(File, Es) end, Errors).
  
  slurp_errors(File, Es) -> slurp_ews(File, "~s:~w: ~s\n", Es).
  
  slurp_warnings(Warnings) ->
      foreach(fun ({File,Ws}) -> slurp_warnings(File, Ws) end, Warnings).
  
  slurp_warnings(File, Es) -> slurp_ews(File, "~s:~w: Warning: ~s\n", Es).
  
  slurp_ews(File, Format, Ews) ->
      foreach(fun ({Line,Mod,Error}) ->
                      Cs = Mod:format_error(Error),
                      lfe_io:format(Format, [File,Line,Cs])
              end, Ews).
  
  %% run(Args, State) -> {Value,State}.
  %%  Run the shell expressions in a file. Abort on errors and only
  