display completions more frequently
This commit is contained in:
@@ -589,6 +589,19 @@ public class RoslynAnalysis(ILogger<RoslynAnalysis> logger, BuildService buildSe
|
|||||||
return completions;
|
return completions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Currently unused
|
||||||
|
private async Task<bool> ShouldTriggerCompletionAsync(SharpIdeFile file, LinePosition linePosition, CompletionTrigger completionTrigger, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
var document = await GetDocumentForSharpIdeFile(file, cancellationToken);
|
||||||
|
var completionService = CompletionService.GetService(document);
|
||||||
|
if (completionService is null) throw new InvalidOperationException("Completion service is not available for the document.");
|
||||||
|
|
||||||
|
var sourceText = await document.GetTextAsync(cancellationToken);
|
||||||
|
var position = sourceText.Lines.GetPosition(linePosition);
|
||||||
|
var shouldTrigger = completionService.ShouldTriggerCompletion(sourceText, position, completionTrigger);
|
||||||
|
return shouldTrigger;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<(string updatedText, SharpIdeFileLinePosition sharpIdeFileLinePosition)> GetCompletionApplyChanges(SharpIdeFile file, CompletionItem completionItem, CancellationToken cancellationToken = default)
|
public async Task<(string updatedText, SharpIdeFileLinePosition sharpIdeFileLinePosition)> GetCompletionApplyChanges(SharpIdeFile file, CompletionItem completionItem, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var documentId = _workspace!.CurrentSolution.GetDocumentIdsWithFilePath(file.Path).Single();
|
var documentId = _workspace!.CurrentSolution.GetDocumentIdsWithFilePath(file.Path).Single();
|
||||||
|
|||||||
@@ -174,6 +174,12 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
|
|
||||||
private void OnTextChanged()
|
private void OnTextChanged()
|
||||||
{
|
{
|
||||||
|
var codeCompletionPopupClosed = GetCodeCompletionSelectedIndex() is -1;
|
||||||
|
var shouldShowCodeCompletion = codeCompletionPopupClosed && HasFocus(); // This is a bad solution - it will be triggered on copy paste, undo redo, applying code fixes etc
|
||||||
|
if (codeCompletionPopupClosed)
|
||||||
|
{
|
||||||
|
EmitSignalCodeCompletionRequested();
|
||||||
|
}
|
||||||
_ = Task.GodotRun(async () =>
|
_ = Task.GodotRun(async () =>
|
||||||
{
|
{
|
||||||
var __ = SharpIdeOtel.Source.StartActivity($"{nameof(SharpIdeCodeEdit)}.{nameof(OnTextChanged)}");
|
var __ = SharpIdeOtel.Source.StartActivity($"{nameof(SharpIdeCodeEdit)}.{nameof(OnTextChanged)}");
|
||||||
|
|||||||
Reference in New Issue
Block a user