temporarily fix completions
This commit is contained in:
@@ -500,7 +500,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
var selectedIndex = GetCodeCompletionSelectedIndex();
|
var selectedIndex = GetCodeCompletionSelectedIndex();
|
||||||
var selectedText = GetCodeCompletionOption(selectedIndex);
|
var selectedText = GetCodeCompletionOption(selectedIndex);
|
||||||
if (selectedText is null) return;
|
if (selectedText is null) return;
|
||||||
var completionItem = selectedText["default_value"].As<RefCountedContainer<IdeCompletionItem>>().Item;
|
var completionItem = selectedText["default_value"].As<GodotObjectContainer<IdeCompletionItem>>().Item;
|
||||||
_ = Task.GodotRun(async () =>
|
_ = Task.GodotRun(async () =>
|
||||||
{
|
{
|
||||||
await _ideApplyCompletionService.ApplyCompletion(_currentFile, completionItem.CompletionItem, completionItem.Document);
|
await _ideApplyCompletionService.ApplyCompletion(_currentFile, completionItem.CompletionItem, completionItem.Document);
|
||||||
@@ -519,7 +519,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
var linePos = new LinePosition(caretLine, caretColumn);
|
var linePos = new LinePosition(caretLine, caretColumn);
|
||||||
|
|
||||||
var completionsResult = await _roslynAnalysis.GetCodeCompletionsForDocumentAtPosition(_currentFile, linePos);
|
var completionsResult = await _roslynAnalysis.GetCodeCompletionsForDocumentAtPosition(_currentFile, linePos);
|
||||||
var completionOptions = new List<(CodeCompletionKind kind, string displayText, Texture2D? icon, RefCountedContainer<IdeCompletionItem> refCountedContainer)>(completionsResult.CompletionList.ItemsList.Count);
|
var completionOptions = new List<(CodeCompletionKind kind, string displayText, Texture2D? icon, GodotObjectContainer<IdeCompletionItem> refCountedContainer)>(completionsResult.CompletionList.ItemsList.Count);
|
||||||
|
|
||||||
foreach (var completionItem in completionsResult.CompletionList.ItemsList)
|
foreach (var completionItem in completionsResult.CompletionList.ItemsList)
|
||||||
{
|
{
|
||||||
@@ -546,7 +546,8 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
if (symbolKind is null && (isMethod || isExtensionMethod)) symbolKind = SymbolKind.Method;
|
if (symbolKind is null && (isMethod || isExtensionMethod)) symbolKind = SymbolKind.Method;
|
||||||
var icon = GetIconForCompletion(symbolKind, typeKind, accessibilityModifier, isKeyword);
|
var icon = GetIconForCompletion(symbolKind, typeKind, accessibilityModifier, isKeyword);
|
||||||
var ideItem = new IdeCompletionItem(completionItem, completionsResult.Document);
|
var ideItem = new IdeCompletionItem(completionItem, completionsResult.Document);
|
||||||
var refContainer = new RefCountedContainer<IdeCompletionItem>(ideItem);
|
// TODO: This is a GodotObjectContainer to avoid errors with the RefCountedContainer?? But the workaround 100% causes a memory leak as these are never freed, unlike RefCounted. Do this better
|
||||||
|
var refContainer = new GodotObjectContainer<IdeCompletionItem>(ideItem);
|
||||||
|
|
||||||
completionOptions.Add((godotCompletionType, completionItem.DisplayText, icon, refContainer));
|
completionOptions.Add((godotCompletionType, completionItem.DisplayText, icon, refContainer));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,3 +6,8 @@ public partial class RefCountedContainer<T>(T item) : RefCounted
|
|||||||
{
|
{
|
||||||
public T Item { get; } = item;
|
public T Item { get; } = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public partial class GodotObjectContainer<T>(T item) : GodotObject
|
||||||
|
{
|
||||||
|
public T Item { get; } = item;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user