Пример #1
0
        public async Task HandleAsync(
            RequestCompletions command,
            KernelInvocationContext context)
        {
            var completionList =
                await GetCompletionList(
                    command.Code,
                    SourceUtilities.GetCursorOffsetFromPosition(command.Code, command.LinePosition));

            context.Publish(new CompletionsProduced(completionList, command));
        }
Пример #2
0
        public async Task HandleAsync(
            RequestCompletion requestCompletion,
            KernelInvocationContext context)
        {
            var completionRequestReceived = new CompletionRequestReceived(requestCompletion);

            context.Publish(completionRequestReceived);

            var completionList =
                await GetCompletionList(
                    requestCompletion.Code,
                    SourceUtilities.GetCursorOffsetFromPosition(requestCompletion.Code, requestCompletion.Position));

            context.Publish(new CompletionRequestCompleted(completionList, requestCompletion));
        }
        private static void OnCompletionRequestCompleted(CompletionRequestCompleted completionRequestCompleted, IJupyterMessageSender jupyterMessageSender)
        {
            var command = completionRequestCompleted.Command as RequestCompletion;

            int startPosition, endPosition;

            if (completionRequestCompleted.Range != null)
            {
                startPosition = SourceUtilities.GetCursorOffsetFromPosition(command.Code, completionRequestCompleted.Range.GetValueOrDefault().Start);
                endPosition   = SourceUtilities.GetCursorOffsetFromPosition(command.Code, completionRequestCompleted.Range.GetValueOrDefault().End);
            }
            else
            {
                var cursorOffset = SourceUtilities.GetCursorOffsetFromPosition(command.Code, command.Position);
                startPosition = SourceUtilities.ComputeReplacementStartPosition(command.Code, cursorOffset);
                endPosition   = cursorOffset;
            }

            var reply = new CompleteReply(startPosition, endPosition, matches: completionRequestCompleted.CompletionList.Select(e => e.InsertText ?? e.DisplayText).ToList());

            jupyterMessageSender.Send(reply);
        }
        private static void OnCompletionRequestCompleted(CompletionsProduced completionsProduced, IJupyterMessageSender jupyterMessageSender)
        {
            var startPosition = 0;
            var endPosition   = 0;

            if (completionsProduced.Command is RequestCompletions command)
            {
                if (completionsProduced.LinePositionSpan is not null)
                {
                    startPosition = SourceUtilities.GetCursorOffsetFromPosition(command.Code, completionsProduced.LinePositionSpan.Start);
                    endPosition   = SourceUtilities.GetCursorOffsetFromPosition(command.Code, completionsProduced.LinePositionSpan.End);
                }
                else
                {
                    var cursorOffset = SourceUtilities.GetCursorOffsetFromPosition(command.Code, command.LinePosition);
                    startPosition = SourceUtilities.ComputeReplacementStartPosition(command.Code, cursorOffset);
                    endPosition   = cursorOffset;
                }
            }

            var reply = new CompleteReply(startPosition, endPosition, matches: completionsProduced.Completions.Select(e => e.InsertText ?? e.DisplayText).ToList());

            jupyterMessageSender.Send(reply);
        }