bool TryFormat(IEditorFormattingService formattingService, char typedChar, int position, bool formatOnReturn, CancellationToken cancellationToken) { var document = DocumentContext.AnalysisDocument; IList <TextChange> changes; if (formatOnReturn) { if (!formattingService.SupportsFormatOnReturn) { return(false); } changes = formattingService.GetFormattingChangesOnReturnAsync(document, position, cancellationToken).WaitAndGetResult(cancellationToken); } else { if (!formattingService.SupportsFormattingOnTypedCharacter(document, typedChar)) { return(false); } changes = formattingService.GetFormattingChangesAsync(document, typedChar, position, cancellationToken).WaitAndGetResult(cancellationToken); } if (changes == null || changes.Count == 0) { return(false); } Editor.ApplyTextChanges(changes); return(true); }
bool TryFormat(IEditorFormattingService formattingService, char typedChar, int position, bool formatOnReturn, CancellationToken cancellationToken) { var document = DocumentContext.AnalysisDocument; IEnumerable <TextChange> changes; if (formatOnReturn) { if (!formattingService.SupportsFormatOnReturn) { return(false); } changes = formattingService.GetFormattingChangesOnReturnAsync(document, position, cancellationToken).WaitAndGetResult(cancellationToken); } else { if (!formattingService.SupportsFormattingOnTypedCharacter(document, typedChar)) { return(false); } changes = formattingService.GetFormattingChangesAsync(document, typedChar, position, cancellationToken).WaitAndGetResult(cancellationToken); var line = Editor.GetLineByOffset(position); if (typedChar == '#') { changes = changes.Where(c => c.Span.Start >= line.Offset); } } if (changes == null) { return(false); } Editor.ApplyTextChanges(changes); return(true); }