diff options
| author | Florian Gilcher <florian.gilcher@asquera.de> | 2016-09-29 21:34:46 +0200 |
|---|---|---|
| committer | Nick Cameron <nrc@ncameron.org> | 2016-09-30 08:34:46 +1300 |
| commit | b8f7ec3dcc8a08c835eba577b64efa92913ad429 (patch) | |
| tree | e682a0c12d2a46bb146322d6953ad43089aa60c6 /src | |
| parent | 3e14af0eeb9cd90b299aacc87bdd52c8fd797203 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/comment.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/comment.rs b/src/comment.rs index 4ced667ef78..23d7dab3de9 100644 --- a/src/comment.rs +++ b/src/comment.rs @@ -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("/*!") || |
