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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander