Struct syntect::easy::HighlightFile[][src]

pub struct HighlightFile<'a> {
    pub reader: BufReader<File>,
    pub highlight_lines: HighlightLines<'a>,
}
Expand description

Convenience struct containing everything you need to highlight a file

Use the reader to get the lines of the file and the highlight_lines to highlight them. See the new method docs for more information.

Fields

reader: BufReader<File>highlight_lines: HighlightLines<'a>

Implementations

Constructs a file reader and a line highlighter to get you reading files as fast as possible.

This auto-detects the syntax from the extension and constructs a HighlightLines with the correct syntax and theme.

Examples

Using the newlines mode is a bit involved but yields more robust and glitch-free highlighting, as well as being slightly faster since it can re-use a line buffer.

use syntect::parsing::SyntaxSet;
use syntect::highlighting::{ThemeSet, Style};
use syntect::util::as_24_bit_terminal_escaped;
use syntect::easy::HighlightFile;
use std::io::BufRead;

let ss = SyntaxSet::load_defaults_newlines();
let ts = ThemeSet::load_defaults();

let mut highlighter = HighlightFile::new("testdata/highlight_test.erb", &ss, &ts.themes["base16-ocean.dark"]).unwrap();
let mut line = String::new();
while highlighter.reader.read_line(&mut line)? > 0 {
    {
        let regions: Vec<(Style, &str)> = highlighter.highlight_lines.highlight(&line, &ss);
        print!("{}", as_24_bit_terminal_escaped(&regions[..], true));
    } // until NLL this scope is needed so we can clear the buffer after
    line.clear(); // read_line appends so we need to clear between lines
}

This example uses reader.lines() to get lines without a newline character, it’s simpler but may break on rare tricky cases.

use syntect::parsing::SyntaxSet;
use syntect::highlighting::{ThemeSet, Style};
use syntect::util::as_24_bit_terminal_escaped;
use syntect::easy::HighlightFile;
use std::io::BufRead;

let ss = SyntaxSet::load_defaults_nonewlines();
let ts = ThemeSet::load_defaults();

let mut highlighter = HighlightFile::new("testdata/highlight_test.erb", &ss, &ts.themes["base16-ocean.dark"]).unwrap();
for maybe_line in highlighter.reader.lines() {
    let line = maybe_line.unwrap();
    let regions: Vec<(Style, &str)> = highlighter.highlight_lines.highlight(&line, &ss);
    println!("{}", as_24_bit_terminal_escaped(&regions[..], true));
}

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.