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

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

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

impl<'a> HighlightFile<'a>[src]

pub fn new<P: AsRef<Path>>(
    path_obj: P,
    ss: &SyntaxSet,
    theme: &'a Theme
) -> Result<HighlightFile<'a>>
[src]

Constructs a file reader and a line highlighter to get you reading files as fast as possible. 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);
        println!("{}", 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

impl<'a> RefUnwindSafe for HighlightFile<'a>

impl<'a> !Send for HighlightFile<'a>

impl<'a> !Sync for HighlightFile<'a>

impl<'a> Unpin for HighlightFile<'a>

impl<'a> UnwindSafe for HighlightFile<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.