Fix --show-all for UTF-16 encoding

This commit is contained in:
sharkdp
2018-11-01 20:29:48 +01:00
committed by David Peter
parent 50dc4a79b0
commit e81f9b23e6
3 changed files with 27 additions and 38 deletions

View File

@ -1,5 +1,4 @@
use std::io::{self, Write};
use std::mem::swap;
use app::Config;
use assets::HighlightingAssets;
@ -7,7 +6,6 @@ use errors::*;
use inputfile::{InputFile, InputFileReader};
use line_range::{LineRanges, RangeCheckResult};
use output::OutputType;
use preprocessor::replace_nonprintable;
use printer::{InteractivePrinter, Printer, SimplePrinter};
pub struct Controller<'a> {
@ -66,14 +64,7 @@ impl<'b> Controller<'b> {
input_file: InputFile<'a>,
) -> Result<()> {
printer.print_header(writer, input_file)?;
self.print_file_ranges(
printer,
writer,
reader,
&self.config.line_ranges,
self.config.show_nonprintable,
self.config.tab_width,
)?;
self.print_file_ranges(printer, writer, reader, &self.config.line_ranges)?;
printer.print_footer(writer)?;
Ok(())
@ -85,20 +76,11 @@ impl<'b> Controller<'b> {
writer: &mut Write,
mut reader: InputFileReader,
line_ranges: &LineRanges,
show_nonprintable: bool,
tab_width: usize,
) -> Result<()> {
let mut line_buffer = Vec::new();
let mut line_buffer_processed = Vec::new();
let mut line_number: usize = 1;
while reader.read_line(&mut line_buffer)? {
if show_nonprintable {
replace_nonprintable(&mut line_buffer, &mut line_buffer_processed, tab_width);
swap(&mut line_buffer, &mut line_buffer_processed);
}
match line_ranges.check(line_number) {
RangeCheckResult::OutsideRange => {
// Call the printer in case we need to call the syntax highlighter