anchor.diff:      wrapped := true;
     end;
     Start := P;
  -  while (P^ in ['0'..'9', 'a'..'z', 'A'..'Z', '_', '#', #0]) do begin
  +  while (P^ in ['0'..'9', 'a'..'z', 'A'..'Z', '_', '#']) do begin
       IncP;
     end;
     SetString(result, Start, P-Start);
  +  // skip whitespace
  +  while (P^ in [' ', #9]) do begin
  +    IncP;
  +  end;
     if (wrapped) then begin
       if (not (P^ = '}')) then begin
         // TODO: include line?
  
positive.code:   while (macroIfCnt > 0) do begin
      if ((P = FSourceEnd) or (P^ = #0)) then begin
        // TODO end of buffer?
      end;
      if (P^ = CALL_MACRO_CHAR) then begin
        IncP;
  
negative.code:   args: TStringArray;
    startP: PChar;
  begin
    result := '';
    macro := MacroName;
    Log('Found macro: '+macro, ltInfo);     // TODO remove
    if (macro = 'if') then begin
  