@@ -136,17 +136,27 @@ impl FromStr for ErrorFormat {
136
136
pub enum ColorConfig {
137
137
Auto ,
138
138
Always ,
139
+ Tame ,
139
140
Never ,
140
141
}
141
142
142
143
impl ColorConfig {
143
144
fn use_color ( & self ) -> bool {
144
145
match * self {
145
- ColorConfig :: Always => true ,
146
+ ColorConfig :: Always |
147
+ ColorConfig :: Tame => true ,
146
148
ColorConfig :: Never => false ,
147
149
ColorConfig :: Auto => stderr_isatty ( ) ,
148
150
}
149
151
}
152
+ fn extra_colorful ( & self ) -> bool {
153
+ match * self {
154
+ ColorConfig :: Always |
155
+ ColorConfig :: Auto => stderr_isatty ( ) ,
156
+ ColorConfig :: Tame |
157
+ ColorConfig :: Never => false ,
158
+ }
159
+ }
150
160
}
151
161
152
162
impl FromEnv for ColorConfig {
@@ -164,6 +174,7 @@ impl FromStr for ColorConfig {
164
174
match s {
165
175
"" | "auto" => Ok ( ColorConfig :: Auto ) ,
166
176
"1" | "always" => Ok ( ColorConfig :: Always ) ,
177
+ "tame" => Ok ( ColorConfig :: Tame ) ,
167
178
"never" => Ok ( ColorConfig :: Never ) ,
168
179
_ => Err ( s. into ( ) ) ,
169
180
}
@@ -174,6 +185,7 @@ pub struct EmitterWriter {
174
185
dst : Destination ,
175
186
cm : Option < Rc < CodeMapper > > ,
176
187
short_message : bool ,
188
+ extra_colorful : bool ,
177
189
}
178
190
179
191
struct FileWithAnnotatedLines {
@@ -193,12 +205,14 @@ impl EmitterWriter {
193
205
dst,
194
206
cm : code_map,
195
207
short_message : short_message,
208
+ extra_colorful : color_config. extra_colorful ( ) ,
196
209
}
197
210
} else {
198
211
EmitterWriter {
199
212
dst : Raw ( Box :: new ( io:: stderr ( ) ) ) ,
200
213
cm : code_map,
201
214
short_message : short_message,
215
+ extra_colorful : false ,
202
216
}
203
217
}
204
218
}
@@ -211,6 +225,7 @@ impl EmitterWriter {
211
225
dst : Raw ( dst) ,
212
226
cm : code_map,
213
227
short_message : short_message,
228
+ extra_colorful : false ,
214
229
}
215
230
}
216
231
@@ -620,11 +635,13 @@ impl EmitterWriter {
620
635
style) ;
621
636
}
622
637
_ => {
623
- buffer. set_style_range ( line_offset,
624
- code_offset + annotation. start_col ,
625
- code_offset + annotation. end_col ,
626
- style,
627
- annotation. is_primary ) ;
638
+ if self . extra_colorful {
639
+ buffer. set_style_range ( line_offset,
640
+ code_offset + annotation. start_col ,
641
+ code_offset + annotation. end_col ,
642
+ style,
643
+ annotation. is_primary ) ;
644
+ }
628
645
}
629
646
}
630
647
}
@@ -979,10 +996,18 @@ impl EmitterWriter {
979
996
line_number += 1 ;
980
997
buffer. append ( line_number, & padding, Style :: NoStyle ) ;
981
998
}
982
- buffer. append ( line_number, line, style_or_override ( * style, override_style) ) ;
999
+ buffer. append ( line_number, line, if self . extra_colorful {
1000
+ style_or_override ( * style, override_style)
1001
+ } else {
1002
+ Style :: NoStyle
1003
+ } ) ;
983
1004
}
984
1005
} else {
985
- buffer. append ( line_number, text, style_or_override ( * style, override_style) ) ;
1006
+ buffer. append ( line_number, text, if self . extra_colorful {
1007
+ style_or_override ( * style, override_style)
1008
+ } else {
1009
+ Style :: NoStyle
1010
+ } ) ;
986
1011
}
987
1012
}
988
1013
}
0 commit comments