anchor.diff:          statustext : string; // current status text
           procedure NextBatchCommand;
           procedure ExecuteProgram(exe: string; params: TStringList = nil; prio: integer = -1; show: integer = SW_SHOW);
  -        procedure OpenSourceLine(uclass: TUClass; line, caret: integer);
  -        procedure OpenSourceInline(uclass: TUClass; line, caret: integer);      
  +        procedure OpenSourceLine(uclass: TUClass; line, caret: integer; exfile: string = '');
  +        procedure OpenSourceInline(uclass: TUClass; line, caret: integer; exfile: string = '');      
       end;
   
       // status redirecting
  
positive.code:             end;
              lst[i] := AnsiReplaceStr(lst[i], '%classname%', uclass.name);
              lst[i] := AnsiReplaceStr(lst[i], '%classfile%', uclass.filename);
              lst[i] := AnsiReplaceStr(lst[i], '%classpath%', uclass.package.path+PATHDELIM+uclass.filename);
              lst[i] := AnsiReplaceStr(lst[i], '%packagename%', uclass.package.name);
              lst[i] := AnsiReplaceStr(lst[i], '%packagepath%', uclass.package.path);
              lst[i] := AnsiReplaceStr(lst[i], '%classsearch%', SearchConfig.query);
  
negative.code:     end;
  end;
  
  //TODO: open include files where required
  procedure Tfrm_UnCodeX.OpenSourceInline(uclass: TUClass; line, caret: integer; exfile: string = '');
  var
      oldsel: TUClass;
      tmp2:   array[0..255] of char;
  begin
      exfile := ResolveFilename(uclass, exfile);
      if (not fileExists(exfile)) then begin
          Log('Could not open file '+exfile);
          exit;
      end;
  
      oldsel := SelectedUClass;
      SelectedUClass := uclass;
      SelectedUPackage := nil;
  