in Source/RiderSourceCodeAccess/Private/RiderSourceCodeAccessor.cpp [178:199]
bool FRiderSourceCodeAccessor::OpenFileAtLine(const FString& FullPath, int32 LineNumber, int32)
{
if (!bHasRiderInstalled) return false;
TOptional<FString> OptionalSolutionPath = GetSolutionPath();
if (!OptionalSolutionPath.IsSet()) return false;
FString SolutionPath = OptionalSolutionPath.GetValue();
if (FPaths::IsRelative(SolutionPath))
SolutionPath = FPaths::ConvertRelativePathToFull(SolutionPath);
const TOptional<FString> OptionalPath = RSCA::ResolvePathToFile(FullPath);
if(!OptionalPath.IsSet()) return false;
const FString Path = OptionalPath.GetValue();
const FString Params = FString::Printf(TEXT("\"%s\" --line %d \"%s\""), *SolutionPath, LineNumber, *Path);
const FString ErrorMessage = FString::Printf(TEXT("Opening file (%s) at a line (%d) failed."), *Path, LineNumber);
return HandleOpeningRider([this, &Params, &ErrorMessage]() -> bool
{
return RSCA::OpenRider(ExecutablePath, Params, ErrorMessage);
});
}