on master help sign in
Use syntect newlines mode (instead of nonewlines)
commitb625d07c3401237a0e02d2947106e861179654e3 authorsharkdp <davidpeter@web.de> dateSun 6 May 2018, 14:23 (9 years ago) parentec606e5
2 files changed+21−8
assets/syntax_set src/main.rs+21−8
assets/syntax_set

Binary file not shown.

src/main.rs+21−8
@@ -169,7 +169,7 @@ fn print_file<P: AsRef<Path>>(
169169 filename: P,
170170 line_changes: &Option<LineChanges>,
171171) -> Result<()> {
172− let reader = BufReader::new(File::open(filename.as_ref())?);
172+ let mut reader = BufReader::new(File::open(filename.as_ref())?);
173173 let syntax = match options.language {
174174 Some(language) => syntax_set.find_syntax_by_token(language),
175175 None => syntax_set.find_syntax_for_file(filename.as_ref())?,
@@ -206,10 +206,21 @@ fn print_file<P: AsRef<Path>>(
206206 OptionsStyle::Plain => {}
207207 };
208208
209− for (idx, maybe_line) in reader.lines().enumerate() {
210− let line_nr = idx + 1;
211− let line = maybe_line.unwrap_or_else(|_| "<INVALID UTF-8>".into());
212− let regions = highlighter.highlight(&line);
209+ let mut line_nr = 1;
210+ let mut line_buffer = String::new();
211+ loop {
212+ line_buffer.clear();
213+ let num_bytes = reader.read_line(&mut line_buffer);
214+
215+ let line = match num_bytes {
216+ Ok(0) => {
217+ break;
218+ }
219+ Ok(_) => &line_buffer,
220+ Err(_) => "<bat: INVALID UTF-8>\n",
221+ };
222+
223+ let regions = highlighter.highlight(line);
213224
214225 let line_change = if let Some(ref changes) = *line_changes {
215226 match changes.get(&(line_nr as u32)) {
@@ -225,12 +236,12 @@ fn print_file<P: AsRef<Path>>(
225236
226237 match options.style {
227238 // Show only content for plain style
228− OptionsStyle::Plain => writeln!(
239+ OptionsStyle::Plain => write!(
229240 handle,
230241 "{}",
231242 as_terminal_escaped(&regions, options.true_color, options.colored_output)
232243 )?,
233− _ => writeln!(
244+ _ => write!(
234245 handle,
235246 "{} {} {} {}",
236247 colors.line_number.paint(format!("{:4}", line_nr)),
@@ -243,6 +254,8 @@ fn print_file<P: AsRef<Path>>(
243254 as_terminal_escaped(&regions, options.true_color, options.colored_output)
244255 )?,
245256 }
257+
258+ line_nr += 1;
246259 }
247260
248261 // Show bars for all but plain style
@@ -358,7 +371,7 @@ impl HighlightingAssets {
358371
359372 let mut syntax_set = SyntaxSet::new();
360373 let syntax_dir = config_dir.join("syntax");
361− let _ = syntax_set.load_syntaxes(syntax_dir, false);
374+ let _ = syntax_set.load_syntaxes(syntax_dir, true);
362375 syntax_set.load_plain_text_syntax();
363376
364377 Ok(HighlightingAssets {