))
}
+pub fn rewrite_doc_comment(orig: &str, shape: Shape, config: &Config) -> Option<String> {
+ _rewrite_comment(orig, false, shape, config, true)
+}
+
pub fn rewrite_comment(
orig: &str,
block_style: bool,
shape: Shape,
config: &Config,
+) -> Option<String> {
+ _rewrite_comment(orig, block_style, shape, config, false)
+}
+
+fn _rewrite_comment(
+ orig: &str,
+ block_style: bool,
+ shape: Shape,
+ config: &Config,
+ is_doc_comment: bool,
) -> Option<String> {
// If there are lines without a starting sigil, we won't format them correctly
// so in that case we won't even re-align (if !config.normalize_comments()) and
return Some(orig.to_owned());
}
if !config.normalize_comments() && !config.wrap_comments() {
- return light_rewrite_comment(orig, shape.indent, config);
+ return light_rewrite_comment(orig, shape.indent, config, is_doc_comment);
}
identify_comment(orig, block_style, shape, config)
}
/// Trim trailing whitespaces unless they consist of two whitespaces.
-fn trim_right_unless_two_whitespaces(s: &str) -> &str {
- if s.ends_with(" ") && !s.chars().rev().nth(2).map_or(true, char::is_whitespace) {
+fn trim_right_unless_two_whitespaces(s: &str, is_doc_comment: bool) -> &str {
+ if is_doc_comment && s.ends_with(" ")
+ && !s.chars().rev().nth(2).map_or(true, char::is_whitespace)
+ {
s
} else {
s.trim_right()
}
/// Trims whitespace and aligns to indent, but otherwise does not change comments.
-fn light_rewrite_comment(orig: &str, offset: Indent, config: &Config) -> Option<String> {
+fn light_rewrite_comment(
+ orig: &str,
+ offset: Indent,
+ config: &Config,
+ is_doc_comment: bool,
+) -> Option<String> {
let lines: Vec<&str> = orig.lines()
.map(|l| {
// This is basically just l.trim(), but in the case that a line starts
""
};
// Preserve markdown's double-space line break syntax.
- trim_right_unless_two_whitespaces(left_trimmed)
+ trim_right_unless_two_whitespaces(left_trimmed, is_doc_comment)
})
.collect();
Some(lines.join(&format!("\n{}", offset.to_string(config))))
use codemap::{LineRangeUtils, SpanUtils};
use comment::{combine_strs_with_missing_comments, contains_comment, CodeCharKind,
CommentCodeSlices, FindUncommented};
-use comment::rewrite_comment;
+use comment::rewrite_doc_comment;
use config::{BraceStyle, Config};
use expr::rewrite_literal;
use items::{format_impl, format_trait, format_trait_alias, rewrite_associated_impl_type,
.unwrap_or(0),
..shape
};
- rewrite_comment(snippet, false, doc_shape, context.config)
+ rewrite_doc_comment(snippet, doc_shape, context.config)
} else {
if contains_comment(snippet) {
return Some(snippet.to_owned());
.join("\n");
return Some((
sugared_docs.len(),
- rewrite_comment(&snippet, false, shape, context.config)?,
+ rewrite_doc_comment(&snippet, shape, context.config)?,
));
}
// Rewrite `#[derive(..)]`s.