mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-11-01 13:13:21 -07:00
60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
|
using System.IO;
|
|||
|
|
|||
|
using Avalonia.Styling;
|
|||
|
|
|||
|
using AvaloniaEdit;
|
|||
|
using AvaloniaEdit.TextMate;
|
|||
|
|
|||
|
using TextMateSharp.Grammars;
|
|||
|
|
|||
|
namespace SourceGit.Models
|
|||
|
{
|
|||
|
public static class TextMateHelper
|
|||
|
{
|
|||
|
public static TextMate.Installation CreateForEditor(TextEditor editor)
|
|||
|
{
|
|||
|
if (App.Current?.ActualThemeVariant == ThemeVariant.Dark)
|
|||
|
{
|
|||
|
return editor.InstallTextMate(new RegistryOptions(ThemeName.DarkPlus));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return editor.InstallTextMate(new RegistryOptions(ThemeName.LightPlus));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static void SetThemeByApp(TextMate.Installation installation)
|
|||
|
{
|
|||
|
if (installation == null) return;
|
|||
|
|
|||
|
var reg = installation.RegistryOptions as RegistryOptions;
|
|||
|
if (App.Current?.ActualThemeVariant == ThemeVariant.Dark)
|
|||
|
{
|
|||
|
installation.SetTheme(reg.LoadTheme(ThemeName.DarkPlus));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
installation.SetTheme(reg.LoadTheme(ThemeName.LightPlus));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static void SetGrammarByFileName(TextMate.Installation installation, string filePath)
|
|||
|
{
|
|||
|
if (installation == null) return;
|
|||
|
|
|||
|
var ext = Path.GetExtension(filePath);
|
|||
|
if (ext == ".h")
|
|||
|
{
|
|||
|
ext = ".cpp";
|
|||
|
}
|
|||
|
else if (ext == ".resx")
|
|||
|
{
|
|||
|
ext = ".xml";
|
|||
|
}
|
|||
|
|
|||
|
var reg = installation.RegistryOptions as RegistryOptions;
|
|||
|
installation.SetGrammar(reg.GetScopeByExtension(ext));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|