summaryrefslogtreecommitdiffstats
path: root/modules/mono/editor/godotsharp_editor.cpp
diff options
context:
space:
mode:
authorIgnacio Etcheverry <neikeq@users.noreply.github.com>2019-02-11 22:25:11 +0100
committerGitHub <noreply@github.com>2019-02-11 22:25:11 +0100
commit9115c6ab15c7751a13383a5be847205057ea9f1c (patch)
tree5da9f9189caa6a84a69af13cd086fcf1a375d9df /modules/mono/editor/godotsharp_editor.cpp
parentfa7329f6485058fde30b8e2bfe26291dfbfc4434 (diff)
parentda00c338a37037447d6806a301ae89201ee574a7 (diff)
downloadredot-engine-9115c6ab15c7751a13383a5be847205057ea9f1c.tar.gz
Merge pull request #25803 from neikeq/yy
Windows: Default to system MSBuild and add VSCode hint path
Diffstat (limited to 'modules/mono/editor/godotsharp_editor.cpp')
-rw-r--r--modules/mono/editor/godotsharp_editor.cpp51
1 files changed, 41 insertions, 10 deletions
diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp
index ee93229700..17e29fba19 100644
--- a/modules/mono/editor/godotsharp_editor.cpp
+++ b/modules/mono/editor/godotsharp_editor.cpp
@@ -272,19 +272,50 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int
static String vscode_path;
if (vscode_path.empty() || !FileAccess::exists(vscode_path)) {
- static List<String> vscode_name;
- vscode_name.push_back("code");
- vscode_name.push_back("code-oss");
- vscode_name.push_back("vscode");
- vscode_name.push_back("vscode-oss");
- vscode_name.push_back("visual-studio-code");
- vscode_name.push_back("visual-studio-code-oss");
// Try to search it again if it wasn't found last time or if it was removed from its location
- for (int i = 0; i < vscode_name.size(); i++) {
- vscode_path = path_which(vscode_name[i]);
- if (!vscode_path.empty() || FileAccess::exists(vscode_path))
+ bool found = false;
+
+ // TODO: Use initializer lists once C++11 is allowed
+
+ // Try with hint paths
+ static Vector<String> hint_paths;
+#ifdef WINDOWS_ENABLED
+ if (hint_paths.empty()) {
+ hint_paths.push_back(OS::get_singleton()->get_environment("ProgramFiles") + "\\Microsoft VS Code\\Code.exe");
+ if (sizeof(size_t) == 8) {
+ hint_paths.push_back(OS::get_singleton()->get_environment("ProgramFiles(x86)") + "\\Microsoft VS Code\\Code.exe");
+ }
+ }
+#endif
+ for (int i = 0; i < hint_paths.size(); i++) {
+ vscode_path = hint_paths[i];
+ if (FileAccess::exists(vscode_path)) {
+ found = true;
break;
+ }
+ }
+
+ if (!found) {
+ static Vector<String> vscode_names;
+ if (vscode_names.empty()) {
+ vscode_names.push_back("code");
+ vscode_names.push_back("code-oss");
+ vscode_names.push_back("vscode");
+ vscode_names.push_back("vscode-oss");
+ vscode_names.push_back("visual-studio-code");
+ vscode_names.push_back("visual-studio-code-oss");
+ }
+ for (int i = 0; i < vscode_names.size(); i++) {
+ vscode_path = path_which(vscode_names[i]);
+ if (!vscode_path.empty()) {
+ found = true;
+ break;
+ }
+ }
}
+
+ if (!found)
+ vscode_path.clear(); // Not found, clear so next time the empty() check is enough
}
List<String> args;