From 868efa6574f980ae9fb261c264b86566e8d77776 Mon Sep 17 00:00:00 2001 From: DHR60 Date: Sat, 14 Mar 2026 18:50:54 +0800 Subject: [PATCH] Remove TextMateSharp.Grammars --- v2rayN/Directory.Packages.props | 2 - .../v2rayN.Desktop/Views/JsonEditor.axaml.cs | 49 +++++++++++++++---- v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj | 2 - 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/v2rayN/Directory.Packages.props b/v2rayN/Directory.Packages.props index 89db7035..839b3384 100644 --- a/v2rayN/Directory.Packages.props +++ b/v2rayN/Directory.Packages.props @@ -9,7 +9,6 @@ - @@ -26,7 +25,6 @@ - diff --git a/v2rayN/v2rayN.Desktop/Views/JsonEditor.axaml.cs b/v2rayN/v2rayN.Desktop/Views/JsonEditor.axaml.cs index 1ed6203b..f577c85e 100644 --- a/v2rayN/v2rayN.Desktop/Views/JsonEditor.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/JsonEditor.axaml.cs @@ -1,6 +1,7 @@ using System.Text.Json; -using AvaloniaEdit.TextMate; -using TextMateSharp.Grammars; +using System.Xml; +using AvaloniaEdit.Highlighting; +using AvaloniaEdit.Highlighting.Xshd; namespace v2rayN.Desktop.Views; @@ -8,19 +9,49 @@ public partial class JsonEditor : UserControl { private static readonly JsonSerializerOptions SIndentedOptions = new() { WriteIndented = true }; + private static readonly Lazy SHighlightingDark = + new(() => BuildHighlighting(dark: true), isThreadSafe: true); + + private static readonly Lazy SHighlightingLight = + new(() => BuildHighlighting(dark: false), isThreadSafe: true); + public JsonEditor() { InitializeComponent(); - var currentTheme = Application.Current?.ActualThemeVariant; - var themeName = currentTheme == ThemeVariant.Dark ? ThemeName.DarkPlus : - currentTheme == ThemeVariant.Light ? ThemeName.LightPlus : - ThemeName.DarkPlus; - var jsonRegistryOptions = new RegistryOptions(themeName); - var grammarScopeName = jsonRegistryOptions.GetScopeByLanguageId(jsonRegistryOptions.GetLanguageByExtension(".json").Id); - Editor.InstallTextMate(jsonRegistryOptions).SetGrammar(grammarScopeName); + var isDark = Application.Current?.ActualThemeVariant != ThemeVariant.Light; + Editor.SyntaxHighlighting = isDark ? SHighlightingDark.Value : SHighlightingLight.Value; Editor.TextArea.TextView.Options.EnableHyperlinks = false; } + private static IHighlightingDefinition BuildHighlighting(bool dark) + { + var keyColor = dark ? "#9CDCFE" : "#0451A5"; + var strColor = dark ? "#CE9178" : "#A31515"; + var numColor = dark ? "#B5CEA8" : "#098658"; + var kwColor = dark ? "#569CD6" : "#0000FF"; + var xshd = $""" + + + + + + + + "([^"\\]|\\.)*"(?=\s*:) + "([^"\\]|\\.)*" + -?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)? + + true + false + null + + + + """; + using var reader = XmlReader.Create(new StringReader(xshd)); + return HighlightingLoader.Load(reader, HighlightingManager.Instance); + } + public string Text { get => Editor.Text; diff --git a/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj b/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj index baaa36dd..6212ce12 100644 --- a/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj +++ b/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj @@ -15,7 +15,6 @@ - @@ -29,7 +28,6 @@ true -