Merge pull request #3535 from xiongmao86/issue3417

Try to solve issue 3417.
This commit is contained in:
Seiichi Uchida 2019-05-16 11:12:56 +09:00 committed by GitHub
commit 531b2d9136
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 91 additions and 11 deletions

View File

@ -2,6 +2,7 @@
## [Unreleased]
- Change option `format_doc_comment` to `format_code_in_doc_comment`.
- `use_small_heuristics` changed to be an enum and stabilised. Configuration
options are now ready for 1.0.

View File

@ -1978,9 +1978,9 @@ fn main() {
}
```
## `format_doc_comments`
## `format_code_in_doc_comments`
Format doc comments.
Format code snippet included in doc comments.
- **Default value**: `false`
- **Possible values**: `true`, `false`

View File

@ -353,7 +353,7 @@ fn identify_comment(
trim_left_preserve_layout(first_group, shape.indent, config)?
} else if !config.normalize_comments()
&& !config.wrap_comments()
&& !config.format_doc_comments()
&& !config.format_code_in_doc_comments()
{
light_rewrite_comment(first_group, shape.indent, config, is_doc_comment)
} else {
@ -656,9 +656,16 @@ impl<'a> CommentRewrite<'a> {
_ => {
let mut config = self.fmt.config.clone();
config.set().wrap_comments(false);
match crate::format_code_block(&self.code_block_buffer, &config) {
Some(ref s) => trim_custom_comment_prefix(&s.snippet),
None => trim_custom_comment_prefix(&self.code_block_buffer),
if config.format_code_in_doc_comments() {
if let Some(s) =
crate::format_code_block(&self.code_block_buffer, &config)
{
trim_custom_comment_prefix(&s.snippet)
} else {
trim_custom_comment_prefix(&self.code_block_buffer)
}
} else {
trim_custom_comment_prefix(&self.code_block_buffer)
}
}
};

View File

@ -40,7 +40,7 @@ create_config! {
// Comments. macros, and strings
wrap_comments: bool, false, false, "Break comments to fit on the line";
format_doc_comments: bool, false, false, "Format doc comments.";
format_code_in_doc_comments: bool, false, false, "Format the code snippet in doc comments.";
comment_width: usize, 80, false,
"Maximum length of comments. No effect unless wrap_comments = true";
normalize_comments: bool, false, false, "Convert /* */ comments to // comments where possible";

View File

@ -1,4 +1,4 @@
// rustfmt-format_doc_comments: true
// rustfmt-format_code_in_doc_comments: true
/// Foo
///

View File

@ -1,4 +1,4 @@
// rustfmt-format_doc_comments: true
// rustfmt-format_code_in_doc_comments: true
/// ```rust
/// if (true) { … }

View File

@ -1,4 +1,5 @@
// rustfmt-normalize_comments: true
// rustfmt-format_code_in_doc_comments: true
//! ```rust
//! println!( "hello, world" );

View File

@ -1,4 +1,5 @@
// rustfmt-normalize_comments: true
// rustfmt-format_code_in_doc_comments: true
// Do not unindent macro calls in comment with unformattable syntax.
//! ```rust

View File

@ -1,4 +1,5 @@
// rustfmt-wrap_comments: true
// rustfmt-format_code_in_doc_comments: true
/// Vestibulum elit nibh, rhoncus non, euismod sit amet, pretium eu, enim. Nunc commodo ultricies dui.
///

View File

@ -1,4 +1,5 @@
// rustfmt-normalize_comments: true
// rustfmt-format_code_in_doc_comments: true
//! This is a list:
//! * Outer

View File

@ -1,4 +1,5 @@
// rustfmt-wrap_comments: true
// rustfmt-format_code_in_doc_comments: true
// rustfmt-max_width: 50
//! This is a list:

View File

@ -0,0 +1,15 @@
// rustfmt-normalize_doc_attributes: true
/// Foo
///
/// # Example
/// ```
/// # #![cfg_attr(not(dox), feature(cfg_target_feature, target_feature, stdsimd))]
/// # #![cfg_attr(not(dox), no_std)]
/// fn foo() { }
/// ```
///
fn foo() {}
#[doc = "Bar documents"]
fn bar() {}

View File

@ -0,0 +1,16 @@
// rustfmt-wrap_comments: true
/// Foo
///
/// # Example
/// ```
/// # #![cfg_attr(not(dox), feature(cfg_target_feature, target_feature, stdsimd))]
/// # #![cfg_attr(not(dox), no_std)]
/// fn foo() { }
/// ```
///
fn foo() {}
/// A long commment for wrapping
/// This is a long long long long long long long long long long long long long long long long long long long long sentence.
fn bar() {}

View File

@ -1,4 +1,4 @@
// rustfmt-format_doc_comments: true
// rustfmt-format_code_in_doc_comments: true
/// Foo
///

View File

@ -1,4 +1,4 @@
// rustfmt-format_doc_comments: true
// rustfmt-format_code_in_doc_comments: true
/// ```rust
/// if (true) { … }

View File

@ -1,4 +1,5 @@
// rustfmt-normalize_comments: true
// rustfmt-format_code_in_doc_comments: true
//! ```rust
//! println!("hello, world");

View File

@ -1,4 +1,5 @@
// rustfmt-normalize_comments: true
// rustfmt-format_code_in_doc_comments: true
// Do not unindent macro calls in comment with unformattable syntax.
//! ```rust

View File

@ -1,4 +1,5 @@
// rustfmt-wrap_comments: true
// rustfmt-format_code_in_doc_comments: true
/// Vestibulum elit nibh, rhoncus non, euismod sit amet, pretium eu, enim. Nunc
/// commodo ultricies dui.

View File

@ -1,4 +1,5 @@
// rustfmt-normalize_comments: true
// rustfmt-format_code_in_doc_comments: true
//! This is a list:
//! * Outer

View File

@ -1,4 +1,5 @@
// rustfmt-wrap_comments: true
// rustfmt-format_code_in_doc_comments: true
// rustfmt-max_width: 50
//! This is a list:

View File

@ -0,0 +1,15 @@
// rustfmt-normalize_doc_attributes: true
/// Foo
///
/// # Example
/// ```
/// # #![cfg_attr(not(dox), feature(cfg_target_feature, target_feature, stdsimd))]
/// # #![cfg_attr(not(dox), no_std)]
/// fn foo() { }
/// ```
///
fn foo() {}
///Bar documents
fn bar() {}

View File

@ -0,0 +1,16 @@
// rustfmt-wrap_comments: true
/// Foo
///
/// # Example
/// ```
/// # #![cfg_attr(not(dox), feature(cfg_target_feature, target_feature, stdsimd))]
/// # #![cfg_attr(not(dox), no_std)]
/// fn foo() { }
/// ```
fn foo() {}
/// A long commment for wrapping
/// This is a long long long long long long long long long long long long long
/// long long long long long long long sentence.
fn bar() {}