anchor.diff:  term([comma,E], D, I, L) -> [",",term(E, D, I+1, L)];
   term(['comma-at',E], D, I, L) -> [",@",term(E, D, I+2, L)];
   term([map|MapBody], D, I, L) ->
  -    F = fun F([K,V|KVs]) -> [{K,V}|F(KVs)]; F(_) -> [] end,
  -    map(F, MapBody, "(map ", D, I, L);
  +    Mcs = map_body(MapBody, D, I+5, L),
  +    ["(map ",Mcs,$)];
   term([Car|_]=List, D, I, L) ->
       %% Handle printable lists specially.
       case io_lib:printable_unicode_list(List) of
  
positive.code: term(Bit, D, _, _) when is_bitstring(Bit) ->
      bitstring(Bit, D);                          %First D bytes
  term(Map, D, I, L) when ?IS_MAP(Map) ->
      map(Map, D, I, L);
  term(Other, _, _, _) ->
      lfe_io_write:term(Other).                   %Use standard LFE for rest
  
  
negative.code: indent_type('match-spec') -> 0;
  indent_type(_) -> none.
  
  %% map(KVs, Depth, Indentation, LineLength).
  %% map_body(KVs, CurrentLineIndent, Depth, Indentation, LineLength)
  
  map_body(KVs, D, I, L) ->
      map_body(KVs, I, D, I, L-1).
  
  map_body([K,V|KVs], CurL, D, I, L) ->
      case map_assoc(K, V, CurL, D, I, L) of
          {both_fit,KVcs,KVl} ->			%Both fit on this line
              [KVcs,map_rest(KVs, CurL+KVl, D-1, I, L)];
          {both_line,KVcs,KVl} ->			%Both fit on single line
              [KVcs,map_rest(KVs, I+KVl, D-1, I, L)];
          {break,KVcs} ->		                %On separate lines
              %% Force a break after K/V split.
              [KVcs,map_rest(KVs, L, D-1, I, L)]
      end;
  map_body(E, CurL, D, I, L) ->
      map_last(E, CurL, D, I, L).
  
  %% map_rest(KVs, Depth, Indentation, LineLength)
  %% map_rest(KVs, CurrentLineIndent, Depth, Indentation, LineLength)
  
  map_rest(KVs, D, I, L) ->
      map_rest(KVs, I, D, I, L-1).
  
  map_rest([], _, _, _, _) -> "";
  map_rest(_, _, 0, _, _) -> " ...";
  map_rest([K,V|KVs], CurL, D, I, L) ->
      case map_assoc(K, V, CurL+1, D, I, L) of
          {both_fit,KVcs,KVl} ->			%Both fit on this line
              [$\s,KVcs,map_rest(KVs, CurL+KVl+1, D-1, I, L)];
          {both_line,KVcs,KVl} ->		        %Both fit on single line
              [newline(I, KVcs),map_rest(KVs, I+KVl, D-1, I, L)];
          {break,KVcs} ->				%On separate lines
              %% Force a break after K/V split.
              [newline(I, KVcs),map_rest(KVs, L, D-1, I, L)]
      end;
  map_rest(E, CurL, D, I, L) ->
      map_last(E, CurL, D, I, L).
  
  map_last(Tail, CurL, D, I, L) ->
      list_tail(Tail, CurL, D, I, L).
  
  map_assoc(K, V, CurL, D, I, L) ->
      Kcs = term(K, D, 0, 99999),                 %Never break the line
  