You've already forked com.unity.ide.cursor
mirror of
https://github.com/boxqkrtm/com.unity.ide.cursor.git
synced 2026-05-14 22:30:10 +00:00
Merge pull request #18 from zhust2003/master
Add macOS and Linux support for finding and reusing Cursor workspace instances
This commit is contained in:
@@ -125,7 +125,17 @@ namespace Microsoft.Unity.VisualStudio.Editor
|
||||
{
|
||||
var workspaces = new List<string>();
|
||||
var userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
|
||||
var cursorStoragePath = Path.Combine(userProfile, "AppData", "Roaming", "cursor", "User", "workspaceStorage");
|
||||
string cursorStoragePath;
|
||||
|
||||
#if UNITY_EDITOR_OSX
|
||||
cursorStoragePath = Path.Combine(userProfile, "Library", "Application Support", "cursor", "User", "workspaceStorage");
|
||||
#elif UNITY_EDITOR_LINUX
|
||||
cursorStoragePath = Path.Combine(userProfile, ".config", "Cursor", "User", "workspaceStorage");
|
||||
#else
|
||||
cursorStoragePath = Path.Combine(userProfile, "AppData", "Roaming", "cursor", "User", "workspaceStorage");
|
||||
#endif
|
||||
|
||||
Debug.Log($"[Cursor] Looking for workspaces in: {cursorStoragePath}");
|
||||
|
||||
if (Directory.Exists(cursorStoragePath))
|
||||
{
|
||||
@@ -186,6 +196,10 @@ namespace Microsoft.Unity.VisualStudio.Editor
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"[Cursor] Workspace storage directory not found: {cursorStoragePath}");
|
||||
}
|
||||
|
||||
return workspaces.Distinct().ToArray();
|
||||
}
|
||||
|
||||
@@ -450,10 +450,29 @@ namespace Microsoft.Unity.VisualStudio.Editor {
|
||||
}
|
||||
|
||||
private Process FindRunningCursorWithSolution(string solutionPath) {
|
||||
var directory = IOPath.GetDirectoryName(solutionPath);
|
||||
var processes = Process.GetProcessesByName("cursor");
|
||||
var normalizedTargetPath = solutionPath.Replace('\\', '/').TrimEnd('/').ToLowerInvariant();
|
||||
|
||||
var normalizedTargetPath = directory.Replace('\\', '/').TrimEnd('/').ToLowerInvariant();
|
||||
#if UNITY_EDITOR_WIN
|
||||
// Keep as is for Windows platform since path already includes drive letter
|
||||
#else
|
||||
// Ensure path starts with / for macOS and Linux platforms
|
||||
if (!normalizedTargetPath.StartsWith("/")) {
|
||||
normalizedTargetPath = "/" + normalizedTargetPath;
|
||||
}
|
||||
#endif
|
||||
|
||||
var processes = new List<Process>();
|
||||
|
||||
// Get process name list based on different operating systems
|
||||
#if UNITY_EDITOR_OSX
|
||||
processes.AddRange(Process.GetProcessesByName("Cursor"));
|
||||
processes.AddRange(Process.GetProcessesByName("Cursor Helper"));
|
||||
#elif UNITY_EDITOR_LINUX
|
||||
processes.AddRange(Process.GetProcessesByName("cursor"));
|
||||
processes.AddRange(Process.GetProcessesByName("Cursor"));
|
||||
#else
|
||||
processes.AddRange(Process.GetProcessesByName("cursor"));
|
||||
#endif
|
||||
|
||||
foreach (var process in processes) {
|
||||
try {
|
||||
@@ -462,6 +481,15 @@ namespace Microsoft.Unity.VisualStudio.Editor {
|
||||
foreach (var workspace in workspaces) {
|
||||
var normalizedWorkspaceDir = workspace.Replace('\\', '/').TrimEnd('/').ToLowerInvariant();
|
||||
|
||||
#if UNITY_EDITOR_WIN
|
||||
// Keep as is for Windows platform
|
||||
#else
|
||||
// Ensure path starts with / for macOS and Linux platforms
|
||||
if (!normalizedWorkspaceDir.StartsWith("/")) {
|
||||
normalizedWorkspaceDir = "/" + normalizedWorkspaceDir;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (string.Equals(normalizedWorkspaceDir, normalizedTargetPath, StringComparison.OrdinalIgnoreCase) ||
|
||||
normalizedTargetPath.StartsWith(normalizedWorkspaceDir + "/", StringComparison.OrdinalIgnoreCase) ||
|
||||
normalizedWorkspaceDir.StartsWith(normalizedTargetPath + "/", StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
Reference in New Issue
Block a user