private bool OnWhitespace(SyntaxTrivia trivia) { if (trivia.Kind() != SyntaxKind.WhitespaceTrivia) { return(false); } // there was noisy char after end of line trivia if (!this.UseIndentation || _touchedNoisyCharacterOnCurrentLine) { _hasTrailingSpace = true; return(false); } // right after end of line trivia. calculate indentation for current line Debug.Assert(trivia.ToString() == trivia.ToFullString()); var text = trivia.ToString(); // if text contains tab, we will give up perf optimization and use more expensive one to see whether we need to replace this trivia if (text.IndexOf('\t') >= 0) { return(true); } _indentation += text.ConvertTabToSpace(_options.GetOption(FormattingOptions2.TabSize), _indentation, text.Length); return(false); }
public override SyntaxTrivia VisitTrivia(SyntaxTrivia trivia) { if (trivia.Kind() == SyntaxKind.DocumentationCommentExteriorTrivia) { if (IsBeginningOrEndOfDocumentComment(trivia)) { return(base.VisitTrivia(trivia)); } else { var triviaText = trivia.ToFullString(); var newTriviaText = triviaText.AdjustIndentForXmlDocExteriorTrivia( _forceIndentation, _indentation, _indentationDelta, _options.GetOption(FormattingOptions2.UseTabs), _options.GetOption(FormattingOptions2.TabSize)); if (triviaText == newTriviaText) { return(base.VisitTrivia(trivia)); } var parsedNewTrivia = SyntaxFactory.DocumentationCommentExterior(newTriviaText); return(parsedNewTrivia); } } return(base.VisitTrivia(trivia)); }