@@ -13,6 +13,7 @@ use std::path::Path;
1313use std::process;
1414
1515use ansi_term::Colour::{Fixed, Green, Red, White, Yellow};
16+use ansi_term::Style;
1617use atty::Stream;
1718use clap::{App, AppSettings, Arg, ArgMatches};
1819use console::Term;
@@ -33,22 +34,23 @@ enum LineChange {
3334
3435type LineChanges = HashMap<u32, LineChange>;
3536
36−const GRID_COLOR : u8 = 238;
37+const PANEL_WIDTH: usize = 7;
38+const GRID_COLOR: u8 = 238;
3739
3840fn print_horizontal_line(grid_char: char, term_width: usize) {
39− let prefix = format!("{}{}", "─".repeat(7), grid_char);
40− let line = "─".repeat(term_width - prefix.len());
41− println!("{}{}", Fixed(GRID_COLOR).paint(prefix), Fixed(GRID_COLOR).paint(line));
41+ let bar = "─".repeat(term_width - (PANEL_WIDTH + 1));
42+ let line = format!("{}{}{}", "─".repeat(PANEL_WIDTH), grid_char, bar);
43+
44+ println!("{}", Fixed(GRID_COLOR).paint(line));
4245}
4346
4447fn print_file<P: AsRef<Path>>(
4548 theme: &Theme,
49+ syntax_set: &SyntaxSet,
4650 filename: P,
4751 line_changes: Option<LineChanges>,
4852) -> io::Result<()> {
49− let ss = SyntaxSet::load_defaults_nonewlines();
50−
51− let mut highlighter = HighlightFile::new(filename.as_ref().clone(), &ss, &theme)?;
53+ let mut highlighter = HighlightFile::new(filename.as_ref().clone(), syntax_set, theme)?;
5254
5355 let term = Term::stdout();
5456 let (_, term_width) = term.size();
@@ -57,7 +59,8 @@ fn print_file<P: AsRef<Path>>(
5759 print_horizontal_line('┬', term_width);
5860
5961 println!(
60− " {} {}",
62+ "{}{} {}",
63+ " ".repeat(PANEL_WIDTH),
6164 Fixed(GRID_COLOR).paint("│"),
6265 White.bold().paint(filename.as_ref().to_string_lossy())
6366 );
@@ -75,10 +78,10 @@ fn print_file<P: AsRef<Path>>(
7578 Some(&LineChange::RemovedAbove) => Red.paint("‾"),
7679 Some(&LineChange::RemovedBelow) => Red.paint("_"),
7780 Some(&LineChange::Modified) => Yellow.paint("~"),
78− _ => Fixed(1).paint(" "), // TODO
81+ _ => Style::default().paint(" "),
7982 }
8083 } else {
81− Fixed(1).paint(" ") // TODO
84+ Style::default().paint(" ")
8285 };
8386
8487 println!(
@@ -152,10 +155,12 @@ fn run(matches: &ArgMatches) -> Result<()> {
152155 let theme_set = ThemeSet::load_from_folder("/home/shark/Informatik/rust/bat/themes").unwrap();
153156 let theme = &theme_set.themes["Monokai"];
154157
158+ let syntax_set = SyntaxSet::load_defaults_nonewlines();
159+
155160 if let Some(files) = matches.values_of("FILE") {
156161 for file in files {
157162 let line_changes = get_line_changes(file.to_string());
158− print_file(theme, file, line_changes)?;
163+ print_file(theme, &syntax_set, file, line_changes)?;
159164 }
160165 }
161166