summaryrefslogtreecommitdiffstats
path: root/modules/mono/editor/GodotTools
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2024-03-01 16:46:52 +0100
committerHugo Locurcio <hugo.locurcio@hugo.pro>2024-11-02 00:00:41 +0100
commit9f2bd57b7b8d78f1e92221e0fe5fc2d5c03b6ddd (patch)
tree95af237ae19593575c15c09a9d7c0a1830b65e4d /modules/mono/editor/GodotTools
parentc6c464cf9ae56e8b68620af65125dd980d0e8122 (diff)
downloadredot-engine-9f2bd57b7b8d78f1e92221e0fe5fc2d5c03b6ddd.tar.gz
Add Codium support to C# external editors
Selecting the VS Code option will now work if Codium is installed, picking it as the last option after attempting to run VS Code.
Diffstat (limited to 'modules/mono/editor/GodotTools')
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs38
1 files changed, 30 insertions, 8 deletions
diff --git a/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs b/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs
index 788b46ab9a..74e04b46a1 100644
--- a/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs
@@ -177,7 +177,7 @@ namespace GodotTools
private static readonly string[] VsCodeNames =
{
- "code", "code-oss", "vscode", "vscode-oss", "visual-studio-code", "visual-studio-code-oss"
+ "code", "code-oss", "vscode", "vscode-oss", "visual-studio-code", "visual-studio-code-oss", "codium"
};
[UsedImplicitly]
@@ -330,7 +330,7 @@ namespace GodotTools
args.Add("-b");
args.Add(vscodeBundleId);
- // The reusing of existing windows made by the 'open' command might not choose a wubdiw that is
+ // The reusing of existing windows made by the 'open' command might not choose a window that is
// editing our folder. It's better to ask for a new window and let VSCode do the window management.
args.Add("-n");
@@ -339,6 +339,28 @@ namespace GodotTools
args.Add("--args");
}
+
+ // Try VSCodium as a fallback if Visual Studio Code can't be found.
+ if (!macOSAppBundleInstalled)
+ {
+ const string VscodiumBundleId = "com.vscodium.codium";
+ macOSAppBundleInstalled = Internal.IsMacOSAppBundleInstalled(VscodiumBundleId);
+
+ if (macOSAppBundleInstalled)
+ {
+ args.Add("-b");
+ args.Add(VscodiumBundleId);
+
+ // The reusing of existing windows made by the 'open' command might not choose a window that is
+ // editing our folder. It's better to ask for a new window and let VSCode do the window management.
+ args.Add("-n");
+
+ // The open process must wait until the application finishes (which is instant in VSCode's case)
+ args.Add("--wait-apps");
+
+ args.Add("--args");
+ }
+ }
}
args.Add(Path.GetDirectoryName(GodotSharpDirs.ProjectSlnPath)!);
@@ -361,7 +383,7 @@ namespace GodotTools
{
if (!macOSAppBundleInstalled && string.IsNullOrEmpty(_vsCodePath))
{
- GD.PushError("Cannot find code editor: VSCode");
+ GD.PushError("Cannot find code editor: Visual Studio Code or VSCodium");
return Error.FileNotFound;
}
@@ -371,7 +393,7 @@ namespace GodotTools
{
if (string.IsNullOrEmpty(_vsCodePath))
{
- GD.PushError("Cannot find code editor: VSCode");
+ GD.PushError("Cannot find code editor: Visual Studio Code or VSCodium");
return Error.FileNotFound;
}
@@ -384,7 +406,7 @@ namespace GodotTools
}
catch (Exception e)
{
- GD.PushError($"Error when trying to run code editor: VSCode. Exception message: '{e.Message}'");
+ GD.PushError($"Error when trying to run code editor: Visual Studio Code or VSCodium. Exception message: '{e.Message}'");
}
break;
@@ -550,7 +572,7 @@ namespace GodotTools
{
settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudio}" +
$",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
- $",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
+ $",Visual Studio Code and VSCodium:{(int)ExternalEditorId.VsCode}" +
$",JetBrains Rider and Fleet:{(int)ExternalEditorId.Rider}" +
$",Custom:{(int)ExternalEditorId.CustomEditor}";
}
@@ -558,14 +580,14 @@ namespace GodotTools
{
settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudioForMac}" +
$",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
- $",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
+ $",Visual Studio Code and VSCodium:{(int)ExternalEditorId.VsCode}" +
$",JetBrains Rider and Fleet:{(int)ExternalEditorId.Rider}" +
$",Custom:{(int)ExternalEditorId.CustomEditor}";
}
else if (OS.IsUnixLike)
{
settingsHintStr += $",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
- $",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
+ $",Visual Studio Code and VSCodium:{(int)ExternalEditorId.VsCode}" +
$",JetBrains Rider and Fleet:{(int)ExternalEditorId.Rider}" +
$",Custom:{(int)ExternalEditorId.CustomEditor}";
}