Example #1
0
        private async Task AssertTextChanges(string source, string expected)
        {
            var testFile = new TestFile("dummy.cs", source);

            SharedOmniSharpTestHost.AddFilesToWorkspace(testFile);
            var span  = testFile.Content.GetSpans().Single();
            var range = testFile.Content.GetRangeFromSpan(span);

            var request = new FormatRangeRequest()
            {
                Buffer    = testFile.Content.Code,
                FileName  = testFile.FileName,
                Line      = range.Start.Line,
                Column    = range.Start.Offset,
                EndLine   = range.End.Line,
                EndColumn = range.End.Offset
            };

            var requestHandler = SharedOmniSharpTestHost.GetRequestHandler <FormatRangeService>(OmniSharpEndpoints.FormatRange);

            var response = await requestHandler.Handle(request);

            var actual = response.Changes.ToArray();

            var oldText     = testFile.Content.Text;
            var textChanges = GetTextChanges(oldText, response.Changes);
            var actualText  = oldText.WithChanges(textChanges).ToString();

            Assert.Equal(expected.Replace("\r\n", "\n"), actualText.Replace("\r\n", "\n"));
        }
Example #2
0
        private async Task AssertTextChanges(string source, params LinePositionSpanTextChange[] expected)
        {
            var testFile = new TestFile("dummy.cs", source);

            SharedOmniSharpTestHost.AddFilesToWorkspace(testFile);
            var span  = testFile.Content.GetSpans().Single();
            var range = testFile.Content.GetRangeFromSpan(span);

            var request = new FormatRangeRequest()
            {
                Buffer    = testFile.Content.Code,
                FileName  = testFile.FileName,
                Line      = range.Start.Line,
                Column    = range.Start.Offset,
                EndLine   = range.End.Line,
                EndColumn = range.End.Offset
            };

            var requestHandler = SharedOmniSharpTestHost.GetRequestHandler <FormatRangeService>(OmniSharpEndpoints.FormatRange);

            var response = await requestHandler.Handle(request);

            var actual = response.Changes.ToArray();

            Assert.Equal(expected.Length, actual.Length);

            for (var i = 0; i < expected.Length; i++)
            {
                Assert.Equal(expected[i].NewText, actual[i].NewText);
                Assert.Equal(expected[i].StartLine, actual[i].StartLine);
                Assert.Equal(expected[i].StartColumn, actual[i].StartColumn);
                Assert.Equal(expected[i].EndLine, actual[i].EndLine);
                Assert.Equal(expected[i].EndColumn, actual[i].EndColumn);
            }
        }
        public async override Task <TextEditContainer> Handle(DocumentRangeFormattingParams request, CancellationToken cancellationToken)
        {
            var omnisharpRequest = new FormatRangeRequest()
            {
                FileName  = Helpers.FromUri(request.TextDocument.Uri),
                Line      = Convert.ToInt32(request.Range.Start.Line),
                Column    = Convert.ToInt32(request.Range.Start.Character),
                EndLine   = Convert.ToInt32(request.Range.End.Line),
                EndColumn = Convert.ToInt32(request.Range.End.Character),
            };

            var omnisharpResponse = await _formatRangeHandler.Handle(omnisharpRequest);

            return(omnisharpResponse.Changes.Select(change => new TextEdit()
            {
                NewText = change.NewText,
                Range = new Range(new Position(change.StartLine, change.StartColumn), new Position(change.EndLine, change.EndColumn))
            }).ToArray());
        }
        public async Task <FormatRangeResponse> FormatRange(FormatRangeRequest request)
        {
            var document = _workspace.GetDocument(request.FileName);

            if (document == null)
            {
                return(null);
            }

            var lines   = (await document.GetSyntaxTreeAsync()).GetText().Lines;
            var start   = lines.GetPosition(new LinePosition(request.Line - 1, request.Column - 1));
            var end     = lines.GetPosition(new LinePosition(request.EndLine - 1, request.EndColumn - 1));
            var changes = await Formatting.GetFormattingChangesForRange(_workspace, Options, document, start, end);

            return(new FormatRangeResponse()
            {
                Changes = changes
            });
        }
        private static async Task <IEnumerable <LinePositionSpanTextChange> > FormattingChangesForRange(FormatRangeRequest req)
        {
            var workspace  = TestHelpers.CreateSimpleWorkspace(req.Buffer, req.FileName);
            var controller = new OmnisharpController(workspace, null);

            return((await controller.FormatRange(req)).Changes);
        }
        private static async Task <IEnumerable <LinePositionSpanTextChange> > FormattingChangesForRange(FormatRangeRequest req)
        {
            var workspace = await TestHelpers.CreateSimpleWorkspace(req.Buffer, req.FileName);

            RequestHandler <FormatRangeRequest, FormatRangeResponse> controller = new FormatRangeService(workspace, new FormattingOptions());

            return((await controller.Handle(req)).Changes);
        }