Use character offsets in diff.
This commit is contained in:
parent
eaa38ce772
commit
f170a557ed
1
build.rs
1
build.rs
@ -75,6 +75,7 @@ fn is_expect_fail(name: &str) -> Option<&str> {
|
|||||||
"autogen_greater_element_drawer_drawer_with_headline_inside" => Some("Apparently lines with :end: become their own paragraph. This odd behavior needs to be investigated more."),
|
"autogen_greater_element_drawer_drawer_with_headline_inside" => Some("Apparently lines with :end: become their own paragraph. This odd behavior needs to be investigated more."),
|
||||||
"autogen_element_container_priority_footnote_definition_dynamic_block" => Some("Apparently broken begin lines become their own paragraph."),
|
"autogen_element_container_priority_footnote_definition_dynamic_block" => Some("Apparently broken begin lines become their own paragraph."),
|
||||||
"autogen_lesser_element_paragraphs_paragraph_with_backslash_line_breaks" => Some("The text we're getting out of the parse tree is already processed to remove line breaks, so our comparison needs to take that into account."),
|
"autogen_lesser_element_paragraphs_paragraph_with_backslash_line_breaks" => Some("The text we're getting out of the parse tree is already processed to remove line breaks, so our comparison needs to take that into account."),
|
||||||
|
"autogen_unicode_hearts" => Some("Unicode is coming out of emacs strange."),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
org_mode_samples/unicode/hearts.org
Normal file
1
org_mode_samples/unicode/hearts.org
Normal file
@ -0,0 +1 @@
|
|||||||
|
🧡💛💚💙💜
|
@ -115,12 +115,13 @@ impl<'s> DiffResult<'s> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let rust_offset = self.rust_source.as_ptr() as usize - original_document.as_ptr() as usize;
|
let rust_offset = self.rust_source.as_ptr() as usize - original_document.as_ptr() as usize;
|
||||||
|
let preceding_text = &original_document[..rust_offset];
|
||||||
println!(
|
println!(
|
||||||
"{indentation}{status_text} {name} char({char_offset}) {message}",
|
"{indentation}{status_text} {name} char({char_offset}) {message}",
|
||||||
indentation = " ".repeat(indentation),
|
indentation = " ".repeat(indentation),
|
||||||
status_text = status_text,
|
status_text = status_text,
|
||||||
name = self.name,
|
name = self.name,
|
||||||
char_offset = rust_offset + 1,
|
char_offset = preceding_text.chars().count() + 1,
|
||||||
message = self.message.as_ref().map(|m| m.as_str()).unwrap_or("")
|
message = self.message.as_ref().map(|m| m.as_str()).unwrap_or("")
|
||||||
);
|
);
|
||||||
for child in self.children.iter() {
|
for child in self.children.iter() {
|
||||||
|
@ -51,7 +51,7 @@ pub fn assert_bounds<'s, S: Source<'s>>(
|
|||||||
);
|
);
|
||||||
let (rust_begin, rust_end) = get_offsets(source, rust);
|
let (rust_begin, rust_end) = get_offsets(source, rust);
|
||||||
if (rust_begin + 1) != begin || (rust_end + 1) != end {
|
if (rust_begin + 1) != begin || (rust_end + 1) != end {
|
||||||
Err(format!("Rust bounds ({rust_begin}, {rust_end}) do not match emacs bounds ({emacs_begin}, {emacs_end})", rust_begin = rust_begin + 1, rust_end = rust_end + 1, emacs_begin=begin, emacs_end=end))?;
|
Err(format!("Rust bounds (in bytes) ({rust_begin}, {rust_end}) do not match emacs bounds ({emacs_begin}, {emacs_end})", rust_begin = rust_begin + 1, rust_end = rust_end + 1, emacs_begin=begin, emacs_end=end))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
Reference in New Issue
Block a user