protected TextEdit[] RemapTextEdits(RazorCodeDocument codeDocument, TextEdit[] projectedTextEdits, RazorLanguageKind projectedKind) { if (codeDocument is null) { throw new ArgumentNullException(nameof(codeDocument)); } if (projectedTextEdits is null) { throw new ArgumentNullException(nameof(projectedTextEdits)); } if (projectedKind != RazorLanguageKind.CSharp) { // Non C# projections map directly to Razor. No need to remap. return(projectedTextEdits); } if (codeDocument.IsUnsupported()) { return(Array.Empty <TextEdit>()); } var edits = DocumentMappingService.GetProjectedDocumentEdits(codeDocument, projectedTextEdits); return(edits); }
protected TextEdit[] RemapTextEdits(RazorCodeDocument codeDocument, TextEdit[] projectedTextEdits, RazorLanguageKind projectedKind) { if (codeDocument is null) { throw new ArgumentNullException(nameof(codeDocument)); } if (projectedTextEdits is null) { throw new ArgumentNullException(nameof(projectedTextEdits)); } if (projectedKind != RazorLanguageKind.CSharp) { // Non C# projections map directly to Razor. No need to remap. return(projectedTextEdits); } var edits = new List <TextEdit>(); for (var i = 0; i < projectedTextEdits.Length; i++) { var projectedRange = projectedTextEdits[i].Range; if (codeDocument.IsUnsupported() || !_documentMappingService.TryMapFromProjectedDocumentRange(codeDocument, projectedRange, out var originalRange)) { // Can't map range. Discard this edit. continue; } var edit = new TextEdit() { Range = originalRange, NewText = projectedTextEdits[i].NewText }; edits.Add(edit); } return(edits.ToArray()); }