diff --git a/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs b/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs
index 64e3f8d9c..5c4a366be 100644
--- a/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs
+++ b/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs
@@ -54,6 +54,9 @@ namespace FlaxEditor.Modules.SourceCodeEditing
case CodeEditorTypes.VSCode:
Name = "Visual Studio Code";
break;
+ case CodeEditorTypes.VSCodeInsiders:
+ Name = "Visual Studio Code - Insiders";
+ break;
default: throw new ArgumentOutOfRangeException(nameof(type), type, null);
}
}
@@ -68,7 +71,9 @@ namespace FlaxEditor.Modules.SourceCodeEditing
{
switch (Type)
{
- case CodeEditorTypes.VSCode: return "-vscode";
+ case CodeEditorTypes.VSCodeInsiders:
+ case CodeEditorTypes.VSCode:
+ return "-vscode";
default: return null;
}
}
diff --git a/Source/Editor/Scripting/CodeEditor.h b/Source/Editor/Scripting/CodeEditor.h
index 1a89eb13d..546907464 100644
--- a/Source/Editor/Scripting/CodeEditor.h
+++ b/Source/Editor/Scripting/CodeEditor.h
@@ -62,6 +62,11 @@ API_ENUM(Namespace="FlaxEditor", Attributes="HideInEditor") enum class CodeEdito
///
VSCode,
+ ///
+ /// Visual Studio Code Insiders
+ ///
+ VSCodeInsiders,
+
MAX
};
diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp
index 27e8e5e48..6abca62ba 100644
--- a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp
+++ b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp
@@ -8,8 +8,9 @@
#include "Engine/Engine/Globals.h"
#include "Engine/Platform/Win32/IncludeWindowsHeaders.h"
-VisualStudioCodeEditor::VisualStudioCodeEditor(const String& execPath)
+VisualStudioCodeEditor::VisualStudioCodeEditor(const String& execPath, const bool isInsiders)
: _execPath(execPath)
+ , _isInsiders(isInsiders)
, _workspacePath(Globals::ProjectFolder / Editor::Project->Name + TEXT(".code-workspace"))
{
}
@@ -18,29 +19,40 @@ void VisualStudioCodeEditor::FindEditors(Array* output)
{
#if PLATFORM_WINDOWS
String cmd;
+ bool isInsiders = false;
if (Platform::ReadRegValue(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Classes\\Applications\\Code.exe\\shell\\open\\command"), TEXT(""), &cmd) || cmd.IsEmpty())
{
if (Platform::ReadRegValue(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Classes\\Applications\\Code.exe\\shell\\open\\command"), TEXT(""), &cmd) || cmd.IsEmpty())
{
- return;
+ if (Platform::ReadRegValue(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Classes\\Applications\\Code - Insiders.exe\\shell\\open\\command"), TEXT(""), &cmd) || cmd.IsEmpty())
+ {
+ if (Platform::ReadRegValue(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Classes\\Applications\\Code - Insiders.exe\\shell\\open\\command"), TEXT(""), &cmd) || cmd.IsEmpty())
+ {
+ return;
+ }
+ else
+ isInsiders = true;
+ }
+ else
+ isInsiders = true;
}
}
const String path = cmd.Substring(1, cmd.Length() - String(TEXT("\" \"%1\"")).Length() - 1);
if (FileSystem::FileExists(path))
{
- output->Add(New(path));
+ output->Add(New(path, isInsiders));
}
#endif
}
CodeEditorTypes VisualStudioCodeEditor::GetType() const
{
- return CodeEditorTypes::VSCode;
+ return _isInsiders ? CodeEditorTypes::VSCodeInsiders : CodeEditorTypes::VSCode;
}
String VisualStudioCodeEditor::GetName() const
{
- return TEXT("Visual Studio Code");
+ return _isInsiders ? TEXT("Visual Studio Code - Insiders") : TEXT("Visual Studio Code");
}
void VisualStudioCodeEditor::OpenFile(const String& path, int32 line)
diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h
index 8742cef31..27939b845 100644
--- a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h
+++ b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.h
@@ -13,6 +13,7 @@ private:
String _execPath;
String _workspacePath;
+ bool _isInsiders;
public:
@@ -20,7 +21,8 @@ public:
/// Initializes a new instance of the class.
///
/// Executable file path
- VisualStudioCodeEditor(const String& execPath);
+ /// Is insiders edition
+ VisualStudioCodeEditor(const String& execPath, const bool isInsiders);
public: