public override Task <CodeCompletion.ParameterHintingResult> ParameterCompletionCommand(CodeCompletion.CodeCompletionContext completionContext) { if (!IsActiveExtension()) { return(null); } return(completionTextEditorExtension.ParameterCompletionCommand(completionContext)); }
internal static async void UpdateCursorPosition(CompletionTextEditorExtension ext, ICompletionWidget widget) { updateSrc.Cancel(); updateSrc = new CancellationTokenSource(); var token = updateSrc.Token; // Called after the key has been processed by the editor if (currentMethodGroup == null) { return; } var actualMethodGroup = new MethodData(); actualMethodGroup.CompletionContext = widget.CurrentCodeCompletionContext; if (!currentMethodGroup.MethodProvider.ApplicableSpan.Contains(ext.Editor.CaretOffset)) { actualMethodGroup.MethodProvider = await ext.ParameterCompletionCommand(widget.CurrentCodeCompletionContext); if (actualMethodGroup.MethodProvider == null) { HideWindow(ext, widget); } } if (actualMethodGroup.MethodProvider != null && (currentMethodGroup == null || !actualMethodGroup.MethodProvider.Equals(currentMethodGroup.MethodProvider))) { currentMethodGroup = actualMethodGroup; } try { int pos = await ext.GetCurrentParameterIndex(currentMethodGroup.MethodProvider.ApplicableSpan.Start, token); if (pos == -1) { if (actualMethodGroup.MethodProvider == null) { currentMethodGroup = null; } else { pos = await ext.GetCurrentParameterIndex(actualMethodGroup.MethodProvider.ApplicableSpan.Start, token); currentMethodGroup = pos >= 0 ? actualMethodGroup : null; } } // If the user enters more parameters than the current overload has, // look for another overload with more parameters. UpdateOverload(ext, widget, token); // Refresh. UpdateWindow(ext, widget); } catch (OperationCanceledException) { } catch (Exception e) { LoggingService.LogError("Error while updating cursor position for parameter info window.", e); } }
internal static async void UpdateCursorPosition(CompletionTextEditorExtension ext, ICompletionWidget widget) { updateSrc.Cancel(); updateSrc = new CancellationTokenSource(); var token = updateSrc.Token; // Called after the key has been processed by the editor if (currentMethodGroup == null) { return; } var actualMethodGroup = new MethodData(); actualMethodGroup.CompletionContext = widget.CurrentCodeCompletionContext; actualMethodGroup.MethodProvider = await ext.ParameterCompletionCommand(widget.CurrentCodeCompletionContext); if (actualMethodGroup.MethodProvider != null && (currentMethodGroup == null || !actualMethodGroup.MethodProvider.Equals(currentMethodGroup.MethodProvider))) { currentMethodGroup = actualMethodGroup; } int pos = await ext.GetCurrentParameterIndex(currentMethodGroup.MethodProvider.StartOffset, token); if (pos == -1) { if (actualMethodGroup.MethodProvider == null) { currentMethodGroup = null; } else { pos = await ext.GetCurrentParameterIndex(actualMethodGroup.MethodProvider.StartOffset, token); currentMethodGroup = pos >= 0 ? actualMethodGroup : null; } } // If the user enters more parameters than the current overload has, // look for another overload with more parameters. UpdateOverload(ext, widget, token); // Refresh. UpdateWindow(ext, widget); }
internal static async void UpdateCursorPosition (CompletionTextEditorExtension ext, ICompletionWidget widget) { updateSrc.Cancel (); updateSrc = new CancellationTokenSource (); var token = updateSrc.Token; // Called after the key has been processed by the editor if (currentMethodGroup == null) return; var actualMethodGroup = new MethodData (); actualMethodGroup.CompletionContext = widget.CurrentCodeCompletionContext; actualMethodGroup.MethodProvider = await ext.ParameterCompletionCommand (widget.CurrentCodeCompletionContext); if (actualMethodGroup.MethodProvider != null && !actualMethodGroup.MethodProvider.Equals (currentMethodGroup.MethodProvider)) currentMethodGroup = actualMethodGroup; int pos = await ext.GetCurrentParameterIndex (currentMethodGroup.MethodProvider.StartOffset, token); if (pos == -1) { if (actualMethodGroup.MethodProvider == null) { currentMethodGroup = null; } else { pos = await ext.GetCurrentParameterIndex (actualMethodGroup.MethodProvider.StartOffset, token); currentMethodGroup = pos >= 0 ? actualMethodGroup : null; } } // If the user enters more parameters than the current overload has, // look for another overload with more parameters. UpdateOverload (ext, widget); // Refresh. UpdateWindow (ext, widget); }