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
-