From 699135c00e4276378786b887bf12d41e76c19289 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Sun, 12 Oct 2025 13:29:50 +1000 Subject: [PATCH] refactor AddType --- .../Features/CodeEditor/SymbolTooltips/Common.cs | 8 ++++++++ .../CodeEditor/SymbolTooltips/FieldTooltip.cs | 4 +--- .../SymbolTooltips/LocalVariableTooltip.cs | 4 +--- .../CodeEditor/SymbolTooltips/MethodTooltip.cs | 8 ++------ .../CodeEditor/SymbolTooltips/NamedTypeTooltip.cs | 14 ++++---------- .../CodeEditor/SymbolTooltips/ParameterTooltip.cs | 4 +--- .../CodeEditor/SymbolTooltips/PropertyTooltip.cs | 4 +--- 7 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/Common.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/Common.cs index 4e9e473..7b5a57f 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/Common.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/Common.cs @@ -351,6 +351,14 @@ public static partial class SymbolInfoComponents label.Pop(); // table } + private static void AddType(this RichTextLabel label, ITypeSymbol symbol) + { + var colour = symbol.GetSymbolColourByType(); + label.PushColor(colour); + label.AddText(symbol.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); + label.Pop(); + } + // TODO: handle arrays etc, where there are multiple colours in one type private static Color GetSymbolColourByType(this ITypeSymbol symbol) { diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs index 20b6553..9935edd 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs @@ -57,9 +57,7 @@ public static partial class SymbolInfoComponents private static void AddFieldTypeName(this RichTextLabel label, IFieldSymbol fieldSymbol) { - label.PushColor(GetSymbolColourByType(fieldSymbol.Type)); - label.AddText(fieldSymbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(fieldSymbol.Type); label.AddText(" "); } diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/LocalVariableTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/LocalVariableTooltip.cs index f935c29..d90bf44 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/LocalVariableTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/LocalVariableTooltip.cs @@ -32,9 +32,7 @@ public static partial class SymbolInfoComponents private static void AddLocalVariableTypeName(this RichTextLabel label, ILocalSymbol symbol) { - label.PushColor(GetSymbolColourByType(symbol.Type)); - label.AddText(symbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(symbol.Type); label.AddText(" "); } diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/MethodTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/MethodTooltip.cs index b9512cf..246387d 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/MethodTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/MethodTooltip.cs @@ -124,9 +124,7 @@ public static partial class SymbolInfoComponents label.Pop(); label.AddText(" "); } - label.PushColor(parameterSymbol.Type.GetSymbolColourByType()); - label.AddText(parameterSymbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(parameterSymbol.Type); label.AddText(" "); label.PushColor(CachedColors.VariableBlue); label.AddText(parameterSymbol.Name); @@ -209,9 +207,7 @@ public static partial class SymbolInfoComponents label.AddText(typeParameter.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); label.Pop(); label.AddText(" is "); - label.PushColor(typeArgument.GetSymbolColourByType()); - label.AddText(typeArgument.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(typeArgument); if (index < methodSymbol.TypeArguments.Length - 1) { label.Newline(); diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/NamedTypeTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/NamedTypeTooltip.cs index ee96d80..af5e1a3 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/NamedTypeTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/NamedTypeTooltip.cs @@ -33,9 +33,7 @@ public static partial class SymbolInfoComponents private static void AddNamedTypeSymbolName(this RichTextLabel label, INamedTypeSymbol symbol) { - label.PushColor(GetSymbolColourByType(symbol)); - label.AddText(symbol.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(symbol); } private static void AddInheritedTypes(this RichTextLabel label, INamedTypeSymbol symbol) @@ -43,9 +41,7 @@ public static partial class SymbolInfoComponents if (symbol.BaseType is not null && symbol.BaseType.SpecialType != SpecialType.System_Object) { label.AddText(" : "); - label.PushColor(GetSymbolColourByType(symbol.BaseType)); - label.AddText(symbol.BaseType.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(symbol.BaseType); } if (symbol.Interfaces.Length > 0) { @@ -59,10 +55,8 @@ public static partial class SymbolInfoComponents } for (int i = 0; i < symbol.Interfaces.Length; i++) { - var iface = symbol.Interfaces[i]; - label.PushColor(GetSymbolColourByType(iface)); - label.AddText(iface.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + var @interface = symbol.Interfaces[i]; + label.AddType(@interface); if (i < symbol.Interfaces.Length - 1) { label.AddText(", "); diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs index 461b031..b3123b0 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs @@ -34,9 +34,7 @@ public static partial class SymbolInfoComponents private static void AddParameterTypeName(this RichTextLabel label, IParameterSymbol symbol) { - label.PushColor(GetSymbolColourByType(symbol.Type)); - label.AddText(symbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(symbol.Type); label.AddText(" "); } diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs index 5f33505..23c22b4 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs @@ -46,9 +46,7 @@ public partial class SymbolInfoComponents private static void AddPropertyTypeName(this RichTextLabel label, IPropertySymbol symbol) { - label.PushColor(GetSymbolColourByType(symbol.Type)); - label.AddText(symbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat)); - label.Pop(); + label.AddType(symbol.Type); label.AddText(" "); }