Add custom comments (#1179)
* Add custom comments This allows users to use custom comments such as ``` //@ this is a custom comment //@ with multiple lines ``` without having them destroyed by rustfmt. * Fix issues with empty lines * Check non-whitespace right after custom comments
This commit is contained in:
parent
3e14af0eeb
commit
b8f7ec3dcc
@ -20,6 +20,18 @@ use rewrite::RewriteContext;
|
||||
use string::{StringFormat, rewrite_string};
|
||||
use utils::wrap_str;
|
||||
|
||||
fn is_custom_comment(comment: &str) -> bool {
|
||||
if !comment.starts_with("//") {
|
||||
false
|
||||
} else {
|
||||
if let Some(c) = comment.chars().nth(2) {
|
||||
!c.is_alphanumeric() && !c.is_whitespace()
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn rewrite_comment(orig: &str,
|
||||
block_style: bool,
|
||||
width: usize,
|
||||
@ -51,6 +63,12 @@ pub fn rewrite_comment(orig: &str,
|
||||
("/// ", "", "/// ")
|
||||
} else if orig.starts_with("//!") || orig.starts_with("/*!") {
|
||||
("//! ", "", "//! ")
|
||||
} else if is_custom_comment(orig) {
|
||||
if orig.chars().nth(3) == Some(' ') {
|
||||
(&orig[0..4], "", &orig[0..4])
|
||||
} else {
|
||||
(&orig[0..3], "", &orig[0..3])
|
||||
}
|
||||
} else {
|
||||
("// ", "", "// ")
|
||||
};
|
||||
@ -138,6 +156,12 @@ fn left_trim_comment_line(line: &str) -> &str {
|
||||
if line.starts_with("//! ") || line.starts_with("/// ") || line.starts_with("/*! ") ||
|
||||
line.starts_with("/** ") {
|
||||
&line[4..]
|
||||
} else if is_custom_comment(line) {
|
||||
if line.len() > 3 && line.chars().nth(3) == Some(' ') {
|
||||
&line[4..]
|
||||
} else {
|
||||
&line[3..]
|
||||
}
|
||||
} else if line.starts_with("/* ") || line.starts_with("// ") || line.starts_with("//!") ||
|
||||
line.starts_with("///") ||
|
||||
line.starts_with("** ") || line.starts_with("/*!") ||
|
||||
|
7
tests/source/comment5.rs
Normal file
7
tests/source/comment5.rs
Normal file
@ -0,0 +1,7 @@
|
||||
// rustfmt-wrap_comments: true
|
||||
|
||||
//@ special comment
|
||||
//@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec adiam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam
|
||||
//@
|
||||
//@foo
|
||||
fn test() {}
|
8
tests/target/comment5.rs
Normal file
8
tests/target/comment5.rs
Normal file
@ -0,0 +1,8 @@
|
||||
// rustfmt-wrap_comments: true
|
||||
|
||||
//@ special comment
|
||||
//@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec adiam
|
||||
//@ lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam
|
||||
//@
|
||||
//@ foo
|
||||
fn test() {}
|
Loading…
x
Reference in New Issue
Block a user