Don't wrap comments that are part of a table

Closes #4210
This commit is contained in:
Ayaz Hafiz 2020-05-30 09:36:44 -07:00 committed by Caleb Cartwright
parent fb1a223eba
commit 846662cdb3
2 changed files with 29 additions and 1 deletions

View File

@ -806,7 +806,8 @@ impl<'a> CommentRewrite<'a> {
let should_wrap_comment = self.fmt.config.wrap_comments()
&& !is_markdown_header_doc_comment
&& unicode_str_width(line) > self.fmt.shape.width
&& !has_url(line);
&& !has_url(line)
&& !is_table_item(line);
if should_wrap_comment {
match rewrite_string(line, &self.fmt, self.max_width) {
@ -941,6 +942,18 @@ fn has_url(s: &str) -> bool {
|| REFERENCE_LINK_URL.is_match(s)
}
/// Returns true if the given string may be part of a Markdown talble.
fn is_table_item(mut s: &str) -> bool {
// This function may return false positive, but should get its job done in most cases (i.e.
// markdown tables with two column delimiters).
s = s.trim_start();
return s.starts_with('|')
&& match s.rfind('|') {
Some(0) | None => false,
_ => true,
};
}
/// Given the span, rewrite the missing comment inside it if available.
/// Note that the given span must only include comments (or leading/trailing whitespaces).
pub(crate) fn rewrite_missing_comment(

View File

@ -0,0 +1,15 @@
// rustfmt-wrap_comments: true
/// Table that is > 80 symbols:
///
/// | table | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
/// |-------|-----------------------------------------------------------------------------|
/// | val | x |
pub struct Item;
/// Table that is > 80 symbols:
///
/// | table | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/// |-------|-----------------------------------------------------------------------------
/// | val | x
pub struct Item;