Merge pull request #79958 from van800/master-rider-path-locator-fleet
Delegate opening files for Rider to the RiderPathLocator NuGet package
This commit is contained in:
commit
c236503b75
4 changed files with 25 additions and 44 deletions
|
@ -280,7 +280,7 @@ namespace GodotTools
|
||||||
case ExternalEditorId.Rider:
|
case ExternalEditorId.Rider:
|
||||||
{
|
{
|
||||||
string scriptPath = ProjectSettings.GlobalizePath(script.ResourcePath);
|
string scriptPath = ProjectSettings.GlobalizePath(script.ResourcePath);
|
||||||
RiderPathManager.OpenFile(GodotSharpDirs.ProjectSlnPath, scriptPath, line);
|
RiderPathManager.OpenFile(GodotSharpDirs.ProjectSlnPath, scriptPath, line + 1, col);
|
||||||
return Error.Ok;
|
return Error.Ok;
|
||||||
}
|
}
|
||||||
case ExternalEditorId.MonoDevelop:
|
case ExternalEditorId.MonoDevelop:
|
||||||
|
@ -540,7 +540,7 @@ namespace GodotTools
|
||||||
settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudio}" +
|
settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudio}" +
|
||||||
$",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
|
$",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
|
||||||
$",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
|
$",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
|
||||||
$",JetBrains Rider:{(int)ExternalEditorId.Rider}" +
|
$",JetBrains Rider and Fleet:{(int)ExternalEditorId.Rider}" +
|
||||||
$",Custom:{(int)ExternalEditorId.CustomEditor}";
|
$",Custom:{(int)ExternalEditorId.CustomEditor}";
|
||||||
}
|
}
|
||||||
else if (OS.IsMacOS)
|
else if (OS.IsMacOS)
|
||||||
|
@ -548,14 +548,14 @@ namespace GodotTools
|
||||||
settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudioForMac}" +
|
settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudioForMac}" +
|
||||||
$",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
|
$",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
|
||||||
$",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
|
$",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
|
||||||
$",JetBrains Rider:{(int)ExternalEditorId.Rider}" +
|
$",JetBrains Rider and Fleet:{(int)ExternalEditorId.Rider}" +
|
||||||
$",Custom:{(int)ExternalEditorId.CustomEditor}";
|
$",Custom:{(int)ExternalEditorId.CustomEditor}";
|
||||||
}
|
}
|
||||||
else if (OS.IsUnixLike)
|
else if (OS.IsUnixLike)
|
||||||
{
|
{
|
||||||
settingsHintStr += $",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
|
settingsHintStr += $",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" +
|
||||||
$",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
|
$",Visual Studio Code:{(int)ExternalEditorId.VsCode}" +
|
||||||
$",JetBrains Rider:{(int)ExternalEditorId.Rider}" +
|
$",JetBrains Rider and Fleet:{(int)ExternalEditorId.Rider}" +
|
||||||
$",Custom:{(int)ExternalEditorId.CustomEditor}";
|
$",Custom:{(int)ExternalEditorId.CustomEditor}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="JetBrains.Annotations" Version="2019.1.3.0" ExcludeAssets="runtime" PrivateAssets="all" />
|
<PackageReference Include="JetBrains.Annotations" Version="2019.1.3.0" ExcludeAssets="runtime" PrivateAssets="all" />
|
||||||
<PackageReference Include="JetBrains.Rider.PathLocator" Version="1.0.1" />
|
<PackageReference Include="JetBrains.Rider.PathLocator" Version="1.0.4" />
|
||||||
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All" />
|
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<Reference Include="GodotSharp">
|
<Reference Include="GodotSharp">
|
||||||
|
|
|
@ -48,4 +48,9 @@ public class RiderLocatorEnvironment : IRiderLocatorEnvironment
|
||||||
else
|
else
|
||||||
GD.PushError(message, e);
|
GD.PushError(message, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Verbose(string message, Exception e = null)
|
||||||
|
{
|
||||||
|
// do nothing, since IDK how to write only to the log, without spamming the output
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
@ -11,10 +10,13 @@ namespace GodotTools.Ides.Rider
|
||||||
public static class RiderPathManager
|
public static class RiderPathManager
|
||||||
{
|
{
|
||||||
private static readonly RiderPathLocator RiderPathLocator;
|
private static readonly RiderPathLocator RiderPathLocator;
|
||||||
|
private static readonly RiderFileOpener RiderFileOpener;
|
||||||
|
|
||||||
static RiderPathManager()
|
static RiderPathManager()
|
||||||
{
|
{
|
||||||
RiderPathLocator = new RiderPathLocator(new RiderLocatorEnvironment());
|
var riderLocatorEnvironment = new RiderLocatorEnvironment();
|
||||||
|
RiderPathLocator = new RiderPathLocator(riderLocatorEnvironment);
|
||||||
|
RiderFileOpener = new RiderFileOpener(riderLocatorEnvironment);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly string EditorPathSettingName = "dotnet/editor/editor_path_optional";
|
public static readonly string EditorPathSettingName = "dotnet/editor/editor_path_optional";
|
||||||
|
@ -46,7 +48,7 @@ namespace GodotTools.Ides.Rider
|
||||||
}
|
}
|
||||||
|
|
||||||
var riderPath = (string)editorSettings.GetSetting(EditorPathSettingName);
|
var riderPath = (string)editorSettings.GetSetting(EditorPathSettingName);
|
||||||
if (IsRiderAndExists(riderPath))
|
if (File.Exists(riderPath))
|
||||||
{
|
{
|
||||||
Globals.EditorDef(EditorPathSettingName, riderPath);
|
Globals.EditorDef(EditorPathSettingName, riderPath);
|
||||||
return;
|
return;
|
||||||
|
@ -63,12 +65,6 @@ namespace GodotTools.Ides.Rider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsExternalEditorSetToRider(EditorSettings editorSettings)
|
|
||||||
{
|
|
||||||
return editorSettings.HasSetting(EditorPathSettingName) &&
|
|
||||||
IsRider((string)editorSettings.GetSetting(EditorPathSettingName));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool IsRider(string path)
|
public static bool IsRider(string path)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(path))
|
if (string.IsNullOrEmpty(path))
|
||||||
|
@ -84,49 +80,29 @@ namespace GodotTools.Ides.Rider
|
||||||
|
|
||||||
private static string CheckAndUpdatePath(string riderPath)
|
private static string CheckAndUpdatePath(string riderPath)
|
||||||
{
|
{
|
||||||
if (IsRiderAndExists(riderPath))
|
if (File.Exists(riderPath))
|
||||||
{
|
{
|
||||||
return riderPath;
|
return riderPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings();
|
var allInfos = RiderPathLocator.GetAllRiderPaths();
|
||||||
var paths = RiderPathLocator.GetAllRiderPaths();
|
if (allInfos.Length == 0)
|
||||||
|
|
||||||
if (!paths.Any())
|
|
||||||
return null;
|
return null;
|
||||||
|
var riderInfos = allInfos.Where(info => IsRider(info.Path)).ToArray();
|
||||||
string newPath = paths.Last().Path;
|
string newPath = riderInfos.Length > 0
|
||||||
|
? riderInfos[riderInfos.Length - 1].Path
|
||||||
|
: allInfos[allInfos.Length - 1].Path;
|
||||||
|
var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings();
|
||||||
editorSettings.SetSetting(EditorPathSettingName, newPath);
|
editorSettings.SetSetting(EditorPathSettingName, newPath);
|
||||||
Globals.EditorDef(EditorPathSettingName, newPath);
|
Globals.EditorDef(EditorPathSettingName, newPath);
|
||||||
return newPath;
|
return newPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsRiderAndExists(string riderPath)
|
public static void OpenFile(string slnPath, string scriptPath, int line, int column)
|
||||||
{
|
|
||||||
return !string.IsNullOrEmpty(riderPath) && IsRider(riderPath) && new FileInfo(riderPath).Exists;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void OpenFile(string slnPath, string scriptPath, int line)
|
|
||||||
{
|
{
|
||||||
string pathFromSettings = GetRiderPathFromSettings();
|
string pathFromSettings = GetRiderPathFromSettings();
|
||||||
string path = CheckAndUpdatePath(pathFromSettings);
|
string path = CheckAndUpdatePath(pathFromSettings);
|
||||||
|
RiderFileOpener.OpenFile(path, slnPath, scriptPath, line, column);
|
||||||
var args = new List<string>();
|
|
||||||
args.Add(slnPath);
|
|
||||||
if (line >= 0)
|
|
||||||
{
|
|
||||||
args.Add("--line");
|
|
||||||
args.Add((line + 1).ToString()); // https://github.com/JetBrains/godot-support/issues/61
|
|
||||||
}
|
|
||||||
args.Add(scriptPath);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Utils.OS.RunProcess(path, args);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
GD.PushError($"Error when trying to run code editor: JetBrains Rider. Exception message: '{e.Message}'");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue