Skip to content

Commit b519aa0

Browse files
committed
fix: handle backslashes at the start of lines
Closes #62
1 parent ddc2608 commit b519aa0

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ tracing = ["dprint-core/tracing"]
2626
[dependencies]
2727
anyhow = "1.0.52"
2828
dprint-core = { version = "0.49.0", features = ["formatting"] }
29-
pulldown-cmark = { version = "0.9.0", default-features = false }
29+
pulldown-cmark = { version = "0.9.1", default-features = false }
3030
regex = "1"
3131
serde = { version = "1.0.88", features = ["derive"] }
3232
serde_json = { version = "1.0", optional = true }

src/generation/cmark/parse_cmark_ast.rs

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ impl<'a> EventIterator<'a> {
1919
pub fn new(file_text: &'a str, iterator: OffsetIter<'a, 'a>) -> EventIterator<'a> {
2020
let mut iterator = iterator;
2121
let next = iterator.next();
22+
// println!("Raw event: {:?}", next);
2223
EventIterator {
2324
file_text,
2425
iterator,
@@ -54,6 +55,7 @@ impl<'a> EventIterator<'a> {
5455

5556
fn move_iterator_next(&mut self) -> Option<(Event<'a>, Range)> {
5657
let next = self.iterator.next();
58+
// println!("Raw event: {:?}", next);
5759

5860
match next {
5961
Some((Event::Start(Tag::Table(_)), _)) => self.in_table_count += 1,
@@ -319,6 +321,9 @@ fn parse_text(iterator: &mut EventIterator) -> Result<Text, ParseError> {
319321
// Pulldown cmark breaks up text items when they have escape chars
320322
// in them, so just combine the results.
321323
let raw_start = iterator.get_last_range().start;
324+
// Pulldown cmark has the start range in the wrong place when there's a leading backslash
325+
let is_start_backslash = raw_start > 0 && iterator.file_text.as_bytes()[raw_start - 1] == b'\\';
326+
let raw_start = if is_start_backslash { raw_start - 1 } else { raw_start };
322327
while let Some((Event::Text(_), _)) = iterator.peek() {
323328
iterator.next();
324329
}

tests/specs/Issues/Issue0062.txt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
!! should not remove backslashes at start of line !!
2+
\\\\\\* asdasd
3+
\ttesting
4+
5+
\\\\\\* asdasd
6+
7+
[expect]
8+
\\\\\\* asdasd
9+
\ttesting
10+
11+
\\\\\\* asdasd

0 commit comments

Comments
 (0)