[−][src]Struct syntect::easy::HighlightFile
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>
Methods
impl<'a> HighlightFile<'a>
[src]
pub fn new<P: AsRef<Path>>(
path_obj: P,
ss: &SyntaxSet,
theme: &'a Theme
) -> Result<HighlightFile<'a>>
[src]
path_obj: P,
ss: &SyntaxSet,
theme: &'a Theme
) -> Result<HighlightFile<'a>>
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(®ions[..], 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(®ions[..], 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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,