@@ -6,6 +6,8 @@ use crate::config::{Config, VisibleLines};
66use crate :: diff:: { get_git_diff, LineChanges } ;
77use crate :: error:: * ;
88use crate :: input:: { Input , InputReader , OpenedInput } ;
9+ #[ cfg( feature = "lessopen" ) ]
10+ use crate :: lessopen:: LessOpenPreprocessor ;
911#[ cfg( feature = "git" ) ]
1012use crate :: line_range:: LineRange ;
1113use crate :: line_range:: { LineRanges , RangeCheckResult } ;
@@ -19,11 +21,18 @@ use clircle::{Clircle, Identifier};
1921pub struct Controller < ' a > {
2022 config : & ' a Config < ' a > ,
2123 assets : & ' a HighlightingAssets ,
24+ #[ cfg( feature = "lessopen" ) ]
25+ preprocessor : Option < LessOpenPreprocessor > ,
2226}
2327
2428impl < ' b > Controller < ' b > {
2529 pub fn new < ' a > ( config : & ' a Config , assets : & ' a HighlightingAssets ) -> Controller < ' a > {
26- Controller { config, assets }
30+ Controller {
31+ config,
32+ assets,
33+ #[ cfg( feature = "lessopen" ) ]
34+ preprocessor : LessOpenPreprocessor :: new ( ) . ok ( ) ,
35+ }
2736 }
2837
2938 pub fn run (
@@ -123,7 +132,18 @@ impl<'b> Controller<'b> {
123132 stdout_identifier : Option < & Identifier > ,
124133 is_first : bool ,
125134 ) -> Result < ( ) > {
126- let mut opened_input = input. open ( stdin, stdout_identifier) ?;
135+ let mut opened_input = {
136+ #[ cfg( feature = "lessopen" ) ]
137+ match self . preprocessor {
138+ Some ( ref preprocessor) if self . config . use_lessopen => {
139+ preprocessor. open ( input, stdin, stdout_identifier) ?
140+ }
141+ _ => input. open ( stdin, stdout_identifier) ?,
142+ }
143+
144+ #[ cfg( not( feature = "lessopen" ) ) ]
145+ input. open ( stdin, stdout_identifier) ?
146+ } ;
127147 #[ cfg( feature = "git" ) ]
128148 let line_changes = if self . config . visible_lines . diff_mode ( )
129149 || ( !self . config . loop_through && self . config . style_components . changes ( ) )
0 commit comments