anchor.diff:  add_shell_macros(Env0) ->
       %% We write macros in LFE and expand them with macro package.
       Ms = [{c,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,c,?C_A(args)])]},
  +          {doc,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,docs,?Q(?C(args))])]},
             {ec,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,ec,?C_A(args)])]},
             {l,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,l,[list|?C(args)]])]},
             {ls,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,ls,[list|?C(args)]])]},
  
positive.code:     end.
  
  print_module_doc(Mod, Mdoc) ->
      lfe_io:format(?BLU("~p")++"\n\n~s\n", [Mod,Mdoc]).
  
  print_macro_doc(Mac, Docs) ->
      case lists:keyfind(Mac, #doc.name, Docs) of
          #doc{patterns=Pats,doc=Doc} ->
              lfe_io:format(?BLU("~p")++"\n  ~p\n\n~s\n", [Mac,Pats,Doc]);
          false ->
              lfe_io:format("~s\n", [<<"No macro defined">>])
      end.
  
  print_function_doc(Fun, Ar, Docs) ->
      case lists:keyfind({Fun,Ar}, #doc.name, Docs) of
          #doc{patterns=Pats,doc=Doc} ->
              lfe_io:format(?BLU("~p/~p")++"\n  ~p\n\n~s\n", [Fun,Ar,Pats,Doc]);
          false ->
              lfe_io:format("~s\n", [<<"No function defined">>])
      end.
  
negative.code: 
  add_shell_functions(Env0) ->
      Fs = [{cd,1,[lambda,[d],[':',lfe_shell,cd,d]]},
            {help,0,[lambda,[],[':',lfe_shell,help]]},
            {i,0,[lambda,[],[':',lfe_shell,i]]},
            {i,1,[lambda,[ps],[':',lfe_shell,i,ps]]},
  