From 9ce00b97a11218af8791d5acea111eab74b6e33a Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Mon, 27 Oct 2025 19:49:08 +1000 Subject: [PATCH] display icons in completions --- .../Features/CodeEditor/SharpIdeCodeEdit.cs | 3 +- .../SharpIdeCodeEdit_Completions.cs | 24 +++++++++ .../SharpIdeCodeEdit_Completions.cs.uid | 1 + .../Completions/Resources/class-icon.svg | 50 +++++++++---------- 4 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs create mode 100644 src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs.uid diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs index 6ede1a3..a131946 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs @@ -452,7 +452,8 @@ public partial class SharpIdeCodeEdit : CodeEdit SymbolKind.Field => CodeCompletionKind.Member, _ => CodeCompletionKind.PlainText }; - AddCodeCompletionOption(godotCompletionType, completionItem.DisplayText, completionItem.DisplayText, value: new RefCountedContainer(completionItem)); + var icon = GetIconForSymbolKind(symbolKind); + AddCodeCompletionOption(godotCompletionType, completionItem.DisplayText, completionItem.DisplayText, icon: icon, value: new RefCountedContainer(completionItem)); } // partially working - displays menu only when caret is what CodeEdit determines as valid UpdateCodeCompletionOptions(true); diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs new file mode 100644 index 0000000..a7d2b3e --- /dev/null +++ b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs @@ -0,0 +1,24 @@ +using Godot; +using Microsoft.CodeAnalysis; + +namespace SharpIDE.Godot.Features.CodeEditor; + +public partial class SharpIdeCodeEdit +{ + private readonly Texture2D _csharpMethodIcon = ResourceLoader.Load("uid://b17p18ijhvsep"); + private readonly Texture2D _csharpClassIcon = ResourceLoader.Load("uid://b027uufaewitj"); + + private Texture2D? GetIconForSymbolKind(SymbolKind? symbolKind) + { + var texture = symbolKind switch + { + SymbolKind.Method => _csharpMethodIcon, + SymbolKind.NamedType => _csharpClassIcon, + //SymbolKind.Local => , + //SymbolKind.Property => , + //SymbolKind.Field => , + _ => null + }; + return texture; + } +} \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs.uid b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs.uid new file mode 100644 index 0000000..6be4e68 --- /dev/null +++ b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit_Completions.cs.uid @@ -0,0 +1 @@ +uid://daa1p18jx6lgd diff --git a/src/SharpIDE.Godot/Features/Completions/Resources/class-icon.svg b/src/SharpIDE.Godot/Features/Completions/Resources/class-icon.svg index 5bed8bd..bb28cea 100644 --- a/src/SharpIDE.Godot/Features/Completions/Resources/class-icon.svg +++ b/src/SharpIDE.Godot/Features/Completions/Resources/class-icon.svg @@ -23,9 +23,9 @@ inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" - inkscape:zoom="0.36468749" - inkscape:cx="-246.78664" - inkscape:cy="-157.66924" + inkscape:zoom="0.72937499" + inkscape:cx="268.72323" + inkscape:cy="572.40789" inkscape:window-width="2560" inkscape:window-height="1369" inkscape:window-x="-8" @@ -37,36 +37,36 @@ transform="matrix(1.0007541,0,0,0.96334492,-0.19807395,9.6729914)">