anchor.diff:  
   eval_form(Form, Shell, St0) ->
       try
  -	Ce1 = add_vbinding('-', Form, St0#state.curr),
  -	%% Macro expand and evaluate it.
  -	{Value,St1} = eval_form(Form, St0#state{curr=Ce1}),
  -	%% Print the result, but only to depth 30.
  -	VS = lfe_io:prettyprint1(Value, 30),
  -	io:requests([{put_chars,VS},nl]),
  -	%% Update bindings.
  -	Ce2 = update_shell_vars(Form, Value, St1#state.curr),
  -	St2 = St1#state{curr=Ce2},
  -	%% Return value and updated state.
  -	Shell ! {eval_value,self(),Value,St2},
  -	St2
  +        Ce1 = add_vbinding('-', Form, St0#state.curr),
  +        %% Macro expand and evaluate it.
  +        {Value,St1} = eval_form(Form, St0#state{curr=Ce1}),
  +        %% Print the result, but only to depth 30.
  +        VS = lfe_io:prettyprint1(Value, 30),
  +        io:requests([{put_chars,VS},nl]),
  +        %% Update bindings.
  +        Ce2 = update_shell_vars(Form, Value, St1#state.curr),
  +        St2 = St1#state{curr=Ce2},
  +        %% Return value and updated state.
  +        Shell ! {eval_value,self(),Value,St2},
  +        St2
       catch
  -	exit:normal -> exit(normal);
  -	Class:Reason ->
  -	    Stk = erlang:get_stacktrace(),
  -	    %% We don't want the ERROR REPORT generated by the
  -	    %% emulator. Note: exit(kill) needs nothing special.
  -	    %% {links,Ps} = process_info(self(), links),
  -	    %% E = nocatch(Class, {Reason,Stk}),
  -	    %% foreach(fun (P) -> exit(P, E) end, Ps -- [Shell]),
  -	    %% Shell ! {eval_exit,self(),Class,{Reason,Stk}},
  -	    %% exit(normal)
  -	    E = nocatch(Class, {Reason,Stk}),
  -	    exit(E)
  +        exit:normal -> exit(normal);
  +        Class:Reason ->
  +            Stk = erlang:get_stacktrace(),
  +            %% We don't want the ERROR REPORT generated by the
  +            %% emulator. Note: exit(kill) needs nothing special.
  +            Shell ! {eval_error,self(),Class},
  +            E = nocatch(Class, {Reason,Stk}),
  +            exit(E)
       end.
   
   nocatch(throw, {Term,Stack}) ->
  
positive.code: server(default) ->
      server(lfe_env:new());
  server(Env) ->
      process_flag(trap_exit, true),		%Must trap exists
      io:fwrite("LFE Shell V~s (abort with ^G)\n",
                [erlang:system_info(version)]),
      %% Create a default base env of predefined shell variables with
      %% default nil bindings and basic shell macros.
      St = new_state("lfe", [], Env),
      Eval = start_eval(St),
      server_loop(Eval, St).			%Run the loop
  
  server_loop(Eval0, St0) ->
      %% Read the form
      Prompt = prompt(),
      {Ret,Eval1} = read_expression(Prompt, Eval0, St0),
      case Ret of
  	{ok,Form} ->
  	    {Eval2,St1} = shell_eval(Form, Eval1, St0),
  	    server_loop(Eval2, St1);
  	{error,E} ->
  	    list_errors([E]),
  	    server_loop(Eval1, St0)
      end.
  
  shell_eval(Form, Eval0, St0) ->
      Eval0 ! {eval_expr,self(),Form},
      receive
  	{eval_value,Eval0,_Value,St1} ->
  	    server_loop(Eval0, St1);
  	{eval_exit,Eval0,Class,Reason} ->
  	    receive {'EXIT',Eval0,normal} -> ok end,
  	    report_exception(Class, Reason),
  	    Eval1 = start_eval(St0),
  	    server_loop(Eval1, St0);
  	{'EXIT',Eval0,Reason} ->
  	    report_exception(error, Reason),
  	    Eval1 = start_eval(St0),
  	    server_loop(Eval1, St0)
      end.
  
  %% prompt() -> Prompt.
  
negative.code: 
  read_expression(Prompt, Eval, St) ->
      Read = fun () ->
                     %% Ret = lfe_io:read(Prompt),
                     io:put_chars(Prompt),
                     Ret = lfe_io:read(),
                     exit(Ret)
             end,
      Rdr = spawn_link(Read),
      read_expression_1(Rdr, Eval, St).
  
  read_expression_1(Rdr, Eval, St) ->
      %% Eval is not doing anything here, so exits from it can only
      %% occur if it was terminated by a signal from another process.
      receive
          {'EXIT',Rdr,Ret} ->
              {Ret,Eval};
          {'EXIT',Eval,{Reason,Stk}} ->
              report_exception(error, Reason, Stk),
              read_expression_1(Rdr, start_eval(St), St);
          {'EXIT',Eval,Reason} ->
              report_exception(exit, Reason, []),
              read_expression_1(Rdr, start_eval(St), St)
      end.
  
  %% new_state(ScriptName, Args [,Env]) -> State.
  