fix: correct comment handling for first line

This commit is contained in:
Jonathan Kelley 2022-07-05 00:30:09 -04:00
parent 150d824561
commit 47f3cc2529
3 changed files with 45 additions and 28 deletions

View file

@ -92,29 +92,18 @@ impl Buffer {
let start = child.span().start();
let line_start = start.line;
// make sure the comments are actually relevant to this element.
let this_line = self.src[line_start - 1].as_str();
let beginning = if this_line.len() > start.column {
this_line[..start.column].trim()
} else {
""
};
if beginning.is_empty() {
if self.current_element_has_comments(child) {
for (id, line) in self.src[..line_start - 1].iter().enumerate().rev() {
if line.trim().starts_with("//") || line.is_empty() {
comments.push(id);
if id != 0 {
comments.push(id);
}
} else {
break;
}
}
}
if comments.len() == 1 && self.src[comments[0]].is_empty() {
comments.pop();
}
let mut last_was_empty = false;
for comment_line in comments.drain(..).rev() {
let line = &self.src[comment_line];

View file

@ -216,6 +216,22 @@ impl Buffer {
Ok(())
}
pub fn current_element_has_comments(&self, child: &BodyNode) -> bool {
let start = child.span().start();
let line_start = start.line;
// make sure the comments are actually relevant to this element.
let this_line = self.src[line_start - 1].as_str();
let beginning = if this_line.len() > start.column {
this_line[..start.column].trim()
} else {
""
};
beginning.is_empty()
}
// check if the children are short enough to be on the same line
// We don't have the notion of current line depth - each line tries to be < 80 total
// returns the total line length if it's short
@ -229,19 +245,7 @@ impl Buffer {
}
for child in children {
let start = child.span().start();
let line_start = start.line;
// make sure the comments are actually relevant to this element.
let this_line = self.src[line_start - 1].as_str();
let beginning = if this_line.len() > start.column {
this_line[..start.column].trim()
} else {
""
};
if beginning.is_empty() {
if self.current_element_has_comments(child) {
'line: for line in self.src[..child.span().start().line - 1].iter().rev() {
match (line.trim().starts_with("//"), line.is_empty()) {
(true, _) => return None,

View file

@ -14,5 +14,29 @@ rsx! {
// body
div { "text" }
div {
// adadsasd
// adadsasd
// adadsasd
// adadsasd
// adadsasd
// adadsasd
div {}
}
}
}