fix: correct comment handling for first line

This commit is contained in:
Jonathan Kelley committed 2022-07-05 00:30:09 -04:00
1 parent 150d824561
commit 47f3cc2529
3 files changed
+45 -28

No files matched your search

+4 -15
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];
+17 -13
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,
@@ -14,5 +14,29 @@ rsx! {
// body
div { "text" }
div {
// adadsasd
// adadsasd
// adadsasd
// adadsasd
// adadsasd
// adadsasd
div {}
}
}
}