feature: external editor supports Sublime Text

This commit is contained in:
leo 2024-04-06 15:31:13 +08:00
parent d873f21b6a
commit 1196fabfc1
6 changed files with 101 additions and 4 deletions

View file

@ -71,6 +71,18 @@ namespace SourceGit.Native
});
}
var sublime = FindSublimeText();
if (!string.IsNullOrEmpty(sublime) && File.Exists(sublime))
{
editors.Add(new Models.ExternalEditor
{
Name = "Sublime Text",
Icon = "sublime_text.png",
Executable = sublime,
OpenCmdArgs = "\"{0}\"",
});
}
return editors;
}
@ -187,6 +199,25 @@ namespace SourceGit.Native
return string.Empty;
}
private string FindSublimeText()
{
if (File.Exists("/usr/bin/subl"))
{
return "/usr/bin/subl";
}
if (File.Exists("/usr/local/bin/subl"))
{
return "/usr/local/bin/subl";
}
var customPath = Environment.GetEnvironmentVariable("SUBLIME_TEXT_PATH");
if (!string.IsNullOrEmpty(customPath))
return customPath;
return string.Empty;
}
#endregion
}
}

View file

@ -68,6 +68,18 @@ namespace SourceGit.Native
});
}
var sublime = FindSublimeText();
if (!string.IsNullOrEmpty(sublime) && File.Exists(sublime))
{
editors.Add(new Models.ExternalEditor
{
Name = "Sublime Text",
Icon = "sublime_text.png",
Executable = sublime,
OpenCmdArgs = "\"{0}\"",
});
}
return editors;
}
@ -150,6 +162,20 @@ namespace SourceGit.Native
return string.Empty;
}
private string FindSublimeText()
{
if (File.Exists("/Applications/Sublime Text.app/Contents/SharedSupport/bin"))
{
return "/Applications/Sublime Text.app/Contents/SharedSupport/bin";
}
var customPath = Environment.GetEnvironmentVariable("SUBLIME_TEXT_PATH");
if (!string.IsNullOrEmpty(customPath))
return customPath;
return string.Empty;
}
#endregion
}
}

View file

@ -154,6 +154,18 @@ namespace SourceGit.Native
});
}
var sublime = FindSublimeText();
if (!string.IsNullOrEmpty(sublime) && File.Exists(sublime))
{
editors.Add(new Models.ExternalEditor
{
Name = "Sublime Text",
Icon = "sublime_text.png",
Executable = sublime,
OpenCmdArgs = "\"{0}\"",
});
}
return editors;
}
@ -303,6 +315,33 @@ namespace SourceGit.Native
return string.Empty;
}
private string FindSublimeText()
{
var localMachine = Microsoft.Win32.RegistryKey.OpenBaseKey(
Microsoft.Win32.RegistryHive.LocalMachine,
Microsoft.Win32.RegistryView.Registry64);
var sublime = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sublime Text_is1");
if (sublime != null)
{
var icon = sublime.GetValue("DisplayIcon") as string;
return Path.Combine(Path.GetDirectoryName(icon), "subl.exe");
}
var sublime3 = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Sublime Text 3_is1");
if (sublime3 != null)
{
var icon = sublime3.GetValue("DisplayIcon") as string;
return Path.Combine(Path.GetDirectoryName(icon), "subl.exe");
}
var customPath = Environment.GetEnvironmentVariable("SUBLIME_TEXT_PATH");
if (!string.IsNullOrEmpty(customPath))
return customPath;
return string.Empty;
}
#endregion
private void OpenFolderAndSelectFile(string folderPath)