diff --git a/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.cpp b/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.cpp index 5323917..48f1871 100644 --- a/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.cpp +++ b/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.cpp @@ -30,6 +30,44 @@ bool FSublimeTextSourceCodeAccessor::CanAccessSourceCode() const return FPaths::FileExists(TEXT("/usr/bin/clang")); } +bool FSublimeTextSourceCodeAccessor::DoesSolutionExist() const +{ + FString FullPath; + if ( FDesktopPlatformModule::Get()->GetSolutionPath(FullPath) ) + { + return FPaths::FileExists(FullPath); + } + return false; +} + +bool FSublimeTextSourceCodeAccessor::OpenSolutionAtPath(const FString& InSolutionPath) +{ + FString FullPath = InSolutionPath; + if ( FPaths::FileExists(FullPath) ) + { + // Add this to handle spaces in path names. + const FString NewFullPath = FString::Printf(TEXT("\"%s\""), *FullPath); + + FString Editor = FString(TEXT("/usr/bin/subl")); + if ( FLinuxPlatformProcess::CreateProc( + *Editor, + *NewFullPath, + true, + true, + false, + nullptr, + 0, + nullptr, + nullptr + ).IsValid() ) + { + return true; + } + } + return false; +} + + FName FSublimeTextSourceCodeAccessor::GetFName() const { return FName("SublimeTextSourceCodeAccessor"); diff --git a/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.h b/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.h index 312c982..4cbccd2 100644 --- a/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.h +++ b/Source/SublimeTextSourceCodeAccess/Private/SublimeTextSourceCodeAccessor.h @@ -33,6 +33,8 @@ class FSublimeTextSourceCodeAccessor : public ISourceCodeAccessor virtual FText GetNameText() const override; virtual FText GetDescriptionText() const override; virtual bool OpenSolution() override; + virtual bool OpenSolutionAtPath(const FString& InSolutionPath) override; + virtual bool DoesSolutionExist() const override; virtual bool OpenFileAtLine(const FString& FullPath, int32 LineNumber, int32 ColumnNumber = 0) override; virtual bool OpenSourceFiles(const TArray& AbsoluteSourcePaths) override; virtual bool SaveAllOpenDocuments() const override; diff --git a/Source/SublimeTextSourceCodeAccess/SublimeTextSourceCodeAccess.Build.cs b/Source/SublimeTextSourceCodeAccess/SublimeTextSourceCodeAccess.Build.cs index 0c274e7..c7fc1f3 100644 --- a/Source/SublimeTextSourceCodeAccess/SublimeTextSourceCodeAccess.Build.cs +++ b/Source/SublimeTextSourceCodeAccess/SublimeTextSourceCodeAccess.Build.cs @@ -23,7 +23,7 @@ namespace UnrealBuildTool.Rules { public class SublimeTextSourceCodeAccess : ModuleRules { - public SublimeTextSourceCodeAccess(TargetInfo Target) + public SublimeTextSourceCodeAccess(ReadOnlyTargetRules Target): base(Target) { PrivateDependencyModuleNames.AddRange( new string[]