From d68631dd20f99ff9f6eee8e82ef37069c1bd764b Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Thu, 18 Dec 2025 23:52:06 +0200 Subject: [PATCH] Fix Editor project file generation to use custom code editor arguments --- .../SourceCodeEditing/DefaultSourceCodeEditor.cs | 2 +- .../SourceCodeEditing/InBuildSourceCodeEditor.cs | 14 +------------- Source/Editor/Scripting/CodeEditor.cpp | 15 +++++++++++++++ Source/Editor/Scripting/CodeEditor.h | 16 ++++++++++++++++ .../Scripting/CodeEditors/RiderCodeEditor.cpp | 11 ++++++++--- .../Scripting/CodeEditors/RiderCodeEditor.h | 1 + .../VisualStudio/VisualStudioEditor.cpp | 11 ++++++++--- .../VisualStudio/VisualStudioEditor.h | 1 + .../CodeEditors/VisualStudioCodeEditor.cpp | 5 +++++ .../CodeEditors/VisualStudioCodeEditor.h | 1 + 10 files changed, 57 insertions(+), 20 deletions(-) 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;