bool FVSAccessorModule::Exec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar ) { const TCHAR *Str = Cmd; if( FParse::Command(&Str,TEXT("OPEN_VS")) ) { // Valid column number? const FString Params( Str ); const FString Space( TEXT(" ") ); const int32 ColumnIndex = Params.Find( Space, ESearchCase::CaseSensitive, ESearchDir::FromEnd ); if ( ColumnIndex != INDEX_NONE ) { // Valid line number? const int32 ColumnNumber = FCString::Atoi( *Params.RightChop( ColumnIndex+Space.Len() ) ); const int32 LineIndex = Params.Find( Space, ESearchCase::CaseSensitive, ESearchDir::FromEnd, ColumnIndex ); if ( LineIndex != INDEX_NONE ) { // Valid source path? const int32 LineNumber = FCString::Atoi( *Params.Mid( LineIndex+Space.Len(), ColumnIndex-LineIndex-Space.Len() ) ); const FString FullPath = Params.LeftChop( Params.Len() - LineIndex ); if ( FullPath.Len() > 0 ) { OpenVisualStudioFileAtLineInternal( FullPath, LineNumber, ColumnNumber ); } } } return true; } return false; }
bool FVSAccessorModule::OpenVisualStudioFileAtLine(const FString& FullPath, int32 LineNumber, int32 ColumnNumber) { // Automatically fail if there's already an attempt in progress if (!IsVSLaunchInProgress()) { return OpenVisualStudioFileAtLineInternal( FullPath, LineNumber, ColumnNumber ); } return false; }
bool FVisualStudioSourceCodeAccessor::OpenFileAtLine(const FString& FullPath, int32 LineNumber, int32 ColumnNumber) { // column & line numbers are 1-based, so dont allow zero if(LineNumber == 0) { LineNumber++; } if(ColumnNumber == 0) { ColumnNumber++; } // Automatically fail if there's already an attempt in progress if (!IsVSLaunchInProgress()) { return OpenVisualStudioFileAtLineInternal(FullPath, LineNumber, ColumnNumber); } return false; }