diff --git a/src/formatting/newline_style.rs b/src/formatting/newline_style.rs index 1813ccad35a3..7d64441bd045 100644 --- a/src/formatting/newline_style.rs +++ b/src/formatting/newline_style.rs @@ -41,15 +41,17 @@ const LINE_FEED: char = '\n'; const CARRIAGE_RETURN: char = '\r'; fn auto_detect_newline_style(raw_input_text: &str) -> EffectiveNewlineStyle { - if let Some(pos) = raw_input_text.chars().position(|ch| ch == LINE_FEED) { - let pos = pos.saturating_sub(1); - if let Some(CARRIAGE_RETURN) = raw_input_text.chars().nth(pos) { - EffectiveNewlineStyle::Windows - } else { - EffectiveNewlineStyle::Unix + let first_line_feed_pos = raw_input_text.chars().position(|ch| ch == LINE_FEED); + match first_line_feed_pos { + Some(first_line_feed_pos) => { + let char_before_line_feed_pos = first_line_feed_pos.saturating_sub(1); + let char_before_line_feed = raw_input_text.chars().nth(char_before_line_feed_pos); + match char_before_line_feed { + Some(CARRIAGE_RETURN) => EffectiveNewlineStyle::Windows, + _ => EffectiveNewlineStyle::Unix, + } } - } else { - native_newline_style() + None => native_newline_style(), } }