mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-11-01 13:13:21 -07:00
53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
using Avalonia;
|
|
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 (Application.Current?.ActualThemeVariant == ThemeVariant.Dark)
|
|
return editor.InstallTextMate(new RegistryOptions(ThemeName.DarkPlus));
|
|
|
|
return editor.InstallTextMate(new RegistryOptions(ThemeName.LightPlus));
|
|
}
|
|
|
|
public static void SetThemeByApp(TextMate.Installation installation)
|
|
{
|
|
if (installation == null)
|
|
return;
|
|
|
|
if (installation.RegistryOptions is RegistryOptions reg)
|
|
{
|
|
if (Application.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 is { RegistryOptions: RegistryOptions reg })
|
|
{
|
|
var ext = Path.GetExtension(filePath);
|
|
if (ext == ".h")
|
|
ext = ".cpp";
|
|
else if (ext == ".resx" || ext == ".plist")
|
|
ext = ".xml";
|
|
|
|
installation.SetGrammar(reg.GetScopeByExtension(ext));
|
|
GC.Collect();
|
|
}
|
|
}
|
|
}
|
|
}
|