diff --git a/Source/Editor/Modules/SourceCodeEditing/DefaultSourceCodeEditor.cs b/Source/Editor/Modules/SourceCodeEditing/DefaultSourceCodeEditor.cs
index e0c23831f..00057e9a7 100644
--- a/Source/Editor/Modules/SourceCodeEditing/DefaultSourceCodeEditor.cs
+++ b/Source/Editor/Modules/SourceCodeEditing/DefaultSourceCodeEditor.cs
@@ -74,7 +74,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing
public string Name => "Default";
///
- public string GenerateProjectCustomArgs => null;
+ public string GenerateProjectCustomArgs => _currentEditor?.GenerateProjectCustomArgs;
///
public void OpenSolution()
diff --git a/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs b/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs
index 87d9e3eb7..222a7a0bc 100644
--- a/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs
+++ b/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs
@@ -29,19 +29,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing
public string Name { get; set; }
///
- public string GenerateProjectCustomArgs
- {
- get
- {
- switch (Type)
- {
- case CodeEditorTypes.VSCodeInsiders:
- case CodeEditorTypes.VSCode: return "-vscode -vs2022";
- case CodeEditorTypes.Rider: return "-vs2022";
- default: return null;
- }
- }
- }
+ public string GenerateProjectCustomArgs => CodeEditingManager.GetGenerateProjectCustomArgs(Type);
///
public void OpenSolution()
diff --git a/Source/Editor/Scripting/CodeEditor.cpp b/Source/Editor/Scripting/CodeEditor.cpp
index 038ec0329..fcc8eef7c 100644
--- a/Source/Editor/Scripting/CodeEditor.cpp
+++ b/Source/Editor/Scripting/CodeEditor.cpp
@@ -152,6 +152,21 @@ String CodeEditingManager::GetName(CodeEditorTypes editorType)
return String::Empty;
}
}
+
+String CodeEditingManager::GetGenerateProjectCustomArgs(CodeEditorTypes editorType)
+{
+ const auto editor = GetCodeEditor(editorType);
+ if (editor)
+ {
+ return editor->GetGenerateProjectCustomArgs();
+ }
+ else
+ {
+ LOG(Warning, "Missing code editor type {0}", (int32)editorType);
+ return String::Empty;
+ }
+}
+
void CodeEditingManager::OpenFile(CodeEditorTypes editorType, const String& path, int32 line)
{
const auto editor = GetCodeEditor(editorType);
diff --git a/Source/Editor/Scripting/CodeEditor.h b/Source/Editor/Scripting/CodeEditor.h
index 670ec51e2..0baae21b0 100644
--- a/Source/Editor/Scripting/CodeEditor.h
+++ b/Source/Editor/Scripting/CodeEditor.h
@@ -112,6 +112,15 @@ public:
/// The name.
virtual String GetName() const = 0;
+ ///
+ /// Gets the custom arguments for the Flax.Build tool to add when generating project files for this code editor.
+ ///
+ /// The custom arguments to generate project files.
+ virtual String GetGenerateProjectCustomArgs() const
+ {
+ return String::Empty;
+ }
+
///
/// Opens the file.
///
@@ -176,6 +185,13 @@ public:
/// The name.
API_FUNCTION() static String GetName(CodeEditorTypes editorType);
+ ///
+ /// Gets the custom arguments for the Flax.Build tool to add when generating project files for this code editor.
+ ///
+ /// The code editor type.
+ /// The custom arguments to generate project files.
+ API_FUNCTION() static String GetGenerateProjectCustomArgs(CodeEditorTypes editorType);
+
///
/// Opens the file. Handles async opening.
///
diff --git a/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.cpp b/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.cpp
index 8884ca322..b63815dce 100644
--- a/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.cpp
+++ b/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.cpp
@@ -257,12 +257,17 @@ String RiderCodeEditor::GetName() const
return TEXT("Rider");
}
+String RiderCodeEditor::GetGenerateProjectCustomArgs() const
+{
+ return TEXT("-vs2022");
+}
+
void RiderCodeEditor::OpenFile(const String& path, int32 line)
{
// Generate project files if solution is missing
if (!FileSystem::FileExists(_solutionPath))
{
- ScriptsBuilder::GenerateProject(TEXT("-vs2022"));
+ ScriptsBuilder::GenerateProject(GetGenerateProjectCustomArgs());
}
// Open file
@@ -290,7 +295,7 @@ void RiderCodeEditor::OpenSolution()
// Generate project files if solution is missing
if (!FileSystem::FileExists(_solutionPath))
{
- ScriptsBuilder::GenerateProject(TEXT("-vs2022"));
+ ScriptsBuilder::GenerateProject(GetGenerateProjectCustomArgs());
}
// Open solution
@@ -312,5 +317,5 @@ void RiderCodeEditor::OpenSolution()
void RiderCodeEditor::OnFileAdded(const String& path)
{
- ScriptsBuilder::GenerateProject();
+ ScriptsBuilder::GenerateProject(GetGenerateProjectCustomArgs());
}
diff --git a/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.h b/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.h
index d9bf00947..f3c43b5b2 100644
--- a/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.h
+++ b/Source/Editor/Scripting/CodeEditors/RiderCodeEditor.h
@@ -35,6 +35,7 @@ public:
// [CodeEditor]
CodeEditorTypes GetType() const override;
String GetName() const override;
+ String GetGenerateProjectCustomArgs() const override;
void OpenFile(const String& path, int32 line) override;
void OpenSolution() override;
void OnFileAdded(const String& path) override;
diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.cpp b/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.cpp
index 5c06eec9c..48b475275 100644
--- a/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.cpp
+++ b/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.cpp
@@ -148,12 +148,17 @@ String VisualStudioEditor::GetName() const
return String(ToString(_version));
}
+String VisualStudioEditor::GetGenerateProjectCustomArgs() const
+{
+ return String::Format(TEXT("-{0}"), String(ToString(_version)).ToLower());
+}
+
void VisualStudioEditor::OpenFile(const String& path, int32 line)
{
// Generate project files if solution is missing
if (!FileSystem::FileExists(_solutionPath))
{
- ScriptsBuilder::GenerateProject();
+ ScriptsBuilder::GenerateProject(GetGenerateProjectCustomArgs());
}
// Open file
@@ -172,7 +177,7 @@ void VisualStudioEditor::OpenSolution()
// Generate project files if solution is missing
if (!FileSystem::FileExists(_solutionPath))
{
- ScriptsBuilder::GenerateProject();
+ ScriptsBuilder::GenerateProject(GetGenerateProjectCustomArgs());
}
// Open solution
@@ -187,7 +192,7 @@ void VisualStudioEditor::OpenSolution()
void VisualStudioEditor::OnFileAdded(const String& path)
{
// TODO: finish dynamic files adding to the project - for now just regenerate it
- ScriptsBuilder::GenerateProject();
+ ScriptsBuilder::GenerateProject(GetGenerateProjectCustomArgs());
return;
if (!FileSystem::FileExists(_solutionPath))
{
diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.h b/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.h
index 1bf1f1433..5c32a1171 100644
--- a/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.h
+++ b/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioEditor.h
@@ -56,6 +56,7 @@ public:
// [CodeEditor]
CodeEditorTypes GetType() const override;
String GetName() const override;
+ String GetGenerateProjectCustomArgs() const override;
void OpenFile(const String& path, int32 line) override;
void OpenSolution() override;
void OnFileAdded(const String& path) override;
diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp
index 5eba7f20c..bf2ef6bb6 100644
--- a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp
+++ b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp
@@ -128,6 +128,11 @@ String VisualStudioCodeEditor::GetName() const
return _isInsiders ? TEXT("Visual Studio Code - Insiders") : TEXT("Visual Studio Code");
}
+String VisualStudioCodeEditor::GetGenerateProjectCustomArgs() const
+{
+ return TEXT("-vs2022 -vscode");
+}
+
void VisualStudioCodeEditor::OpenFile(const String& path, int32 line)
{
// Generate VS solution files for intellisense
diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h
index 0212f207e..5091e1134 100644
--- a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h
+++ b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h
@@ -37,6 +37,7 @@ public:
// [CodeEditor]
CodeEditorTypes GetType() const override;
String GetName() const override;
+ String GetGenerateProjectCustomArgs() const override;
void OpenFile(const String& path, int32 line) override;
void OpenSolution() override;
bool UseAsyncForOpen() const override;