Beispiel #1
0
        public void replacement_position_can_be_found_at_the_end_of_a_string()
        {
            var code = "System.Linq.Enumerable.";
            // finding this                   ^
            var pos = SourceUtilities.ComputeReplacementStartPosition(code, code.Length);

            Assert.Equal(code.Length, pos);
        }
Beispiel #2
0
        public void replacement_position_can_be_found_not_at_the_end_of_a_string()
        {
            var code = "System.Linq.Enumerable.Ran";
            // finding this                   ^
            var lastDotPos = code.LastIndexOf('.') + 1;
            var pos        = SourceUtilities.ComputeReplacementStartPosition(code, lastDotPos);

            Assert.Equal(lastDotPos, pos);
        }
Beispiel #3
0
        private static void OnCompletionRequestCompleted(CompletionRequestCompleted completionRequestCompleted, IJupyterMessageSender jupyterMessageSender)
        {
            var command = completionRequestCompleted.Command as RequestCompletion;

            var pos   = SourceUtilities.ComputeReplacementStartPosition(command.Code, command.CursorPosition);
            var reply = new CompleteReply(pos, command.CursorPosition, matches: completionRequestCompleted.CompletionList.Select(e => e.InsertText ?? e.DisplayText).ToList());

            jupyterMessageSender.Send(reply);
        }
        public async Task Handle(JupyterRequestContext context)
        {
            var completeRequest = GetJupyterRequest(context);

            var position = SourceUtilities.GetPositionFromCursorOffset(completeRequest.Code, completeRequest.CursorPosition);
            var command  = new RequestCompletion(completeRequest.Code, position);

            await SendAsync(context, command);
        }
        public async Task Handle(JupyterRequestContext context)
        {
            var completeRequest  = GetJupyterRequest(context);
            var targetKernelName = context.GetLanguage();

            var position = SourceUtilities.GetPositionFromCursorOffset(completeRequest.Code, completeRequest.CursorPosition);
            var command  = new RequestCompletions(completeRequest.Code, position, targetKernelName);

            await SendAsync(context, command);
        }
Beispiel #6
0
        public void replacement_position_can_be_found_at_the_end_of_a_multiline_string()
        {
            var code       = @"
using System.Linq;
Enumerable.
//        ^ finding this";
            var lastDotPos = code.LastIndexOf('.') + 1;
            var pos        = SourceUtilities.ComputeReplacementStartPosition(code, lastDotPos);

            Assert.Equal(lastDotPos, pos);
        }
        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));
        }
        private static void AddTechnique(Class @class, Method reloadMethod, string technique, string methodName)
        {
            var field = new Field("EffectPass", $"{SourceUtilities.LowerCaseFirstLetter(technique)}Pass", "private");

            @class.Fields.Add(field);

            reloadMethod.Body.Expressions.Add(new Assignment($"this.{field.Name}", "=", $"this.Effect.Techniques[\"{technique}\"].Passes[0]"));

            var method = new Method("void", methodName, "public");

            @class.Methods.Add(method);

            method.Body.Expressions.Add(new Statement($"this.{field.Name}.Apply()"));
        }
 private static void AddTechniques(Effect effect, Class @class, Method reloadMethod)
 {
     if (effect.Techniques.Count == 1)
     {
         AddTechnique(@class, reloadMethod, effect.Techniques[0], "Apply");
     }
     else
     {
         foreach (var technique in effect.Techniques)
         {
             AddTechnique(@class, reloadMethod, technique, $"Apply{SourceUtilities.CapitalizeFirstLetter(technique)}");
         }
     }
 }
Beispiel #10
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 AddAndInitializeProperties(Effect effect, Class @class, Method reloadMethod)
        {
            foreach (var prop in effect.PublicProperties)
            {
                var fieldName = SourceUtilities.LowerCaseFirstLetter(prop.Name) + "Parameter";
                @class.Fields.Add(new Field("EffectParameter", fieldName, "private"));
                var assignment = new Assignment($"this.{fieldName}", "=", $"this.Effect.Parameters[\"{prop.Name}\"]");
                reloadMethod.Body.Expressions.Add(assignment);

                var property = new Property(prop.GetXNAType(), SourceUtilities.CapitalizeFirstLetter(prop.Name), false, "public");
                @class.Properties.Add(property);
                var propertySetter = new Body();
                property.SetSetter(propertySetter);
                propertySetter.Expressions.Add(new Statement($"this.{fieldName}.SetValue(value)"));
            }
        }
        private static void OnCompletionRequestCompleted(CompletionRequestCompleted completionRequestCompleted, IJupyterMessageSender jupyterMessageSender)
        {
            var command = completionRequestCompleted.Command as RequestCompletion;

            int startPosition, endPosition;

            if (completionRequestCompleted.ReplacementStartIndex != null)
            {
                startPosition = completionRequestCompleted.ReplacementStartIndex.Value;
                endPosition   = completionRequestCompleted.ReplacementEndIndex.Value;
            }
            else
            {
                startPosition = SourceUtilities.ComputeReplacementStartPosition(command.Code, command.CursorPosition);
                endPosition   = command.CursorPosition;
            }

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

            jupyterMessageSender.Send(reply);
        }
        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);
        }