@@ -315,12 +315,16 @@ impl Renderer {
315
315
let peek = message_iter. peek ( ) . map ( |( _, s) | s) . copied ( ) ;
316
316
match & section {
317
317
Element :: Title ( title) => {
318
+ let title_style = match ( i == 0 , g == 0 ) {
319
+ ( true , true ) => TitleStyle :: MainHeader ,
320
+ ( true , false ) => TitleStyle :: Header ,
321
+ ( false , _) => TitleStyle :: Secondary ,
322
+ } ;
318
323
self . render_title (
319
324
& mut buffer,
320
325
title,
321
- peek,
322
326
max_line_num_len,
323
- if i == 0 { false } else { !title . primary } ,
327
+ title_style ,
324
328
message. id . as_ref ( ) . and_then ( |id| {
325
329
if g == 0 && i == 0 {
326
330
Some ( id)
@@ -433,26 +437,14 @@ impl Renderer {
433
437
& self ,
434
438
buffer : & mut StyledBuffer ,
435
439
title : & Title < ' _ > ,
436
- next_section : Option < & Element < ' _ > > ,
437
440
max_line_num_len : usize ,
438
- is_secondary : bool ,
441
+ title_style : TitleStyle ,
439
442
id : Option < & & str > ,
440
443
is_cont : bool ,
441
444
) {
442
445
let line_offset = buffer. num_lines ( ) ;
443
446
444
- let ( has_primary_spans, has_span_labels) =
445
- next_section. map_or ( ( false , false ) , |s| match s {
446
- Element :: Title ( _) | Element :: Padding ( _) => ( false , false ) ,
447
- Element :: Cause ( cause) => (
448
- cause. markers . iter ( ) . any ( |m| m. kind . is_primary ( ) ) ,
449
- cause. markers . iter ( ) . any ( |m| m. label . is_some ( ) ) ,
450
- ) ,
451
- Element :: Suggestion ( _) => ( true , false ) ,
452
- Element :: Origin ( _) => ( false , true ) ,
453
- } ) ;
454
-
455
- if !has_primary_spans && !has_span_labels && is_secondary {
447
+ if title_style == TitleStyle :: Secondary {
456
448
// This is a secondary message with no span info
457
449
for _ in 0 ..max_line_num_len {
458
450
buffer. prepend ( line_offset, " " , ElementStyle :: NoStyle ) ;
@@ -503,10 +495,10 @@ impl Renderer {
503
495
buffer. append ( line_offset, "]" , ElementStyle :: Level ( title. level . level ) ) ;
504
496
label_width += 2 + id. len ( ) ;
505
497
}
506
- let header_style = if is_secondary {
507
- ElementStyle :: HeaderMsg
508
- } else {
509
- ElementStyle :: MainHeaderMsg
498
+ let header_style = match title_style {
499
+ TitleStyle :: MainHeader => ElementStyle :: MainHeaderMsg ,
500
+ TitleStyle :: Header => ElementStyle :: HeaderMsg ,
501
+ TitleStyle :: Secondary => unreachable ! ( ) ,
510
502
} ;
511
503
if title. level . name != Some ( None ) {
512
504
buffer. append ( line_offset, ": " , header_style) ;
@@ -661,7 +653,14 @@ impl Renderer {
661
653
max_line_num_len + 1 ,
662
654
) ;
663
655
let title = Level :: NOTE . title ( label) ;
664
- self . render_title ( buffer, & title, None , max_line_num_len, true , None , false ) ;
656
+ self . render_title (
657
+ buffer,
658
+ & title,
659
+ max_line_num_len,
660
+ TitleStyle :: Secondary ,
661
+ None ,
662
+ false ,
663
+ ) ;
665
664
}
666
665
}
667
666
@@ -2717,6 +2716,13 @@ pub enum OutputTheme {
2717
2716
Unicode ,
2718
2717
}
2719
2718
2719
+ #[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
2720
+ enum TitleStyle {
2721
+ MainHeader ,
2722
+ Header ,
2723
+ Secondary ,
2724
+ }
2725
+
2720
2726
#[ cfg( test) ]
2721
2727
mod test {
2722
2728
use super :: OUTPUT_REPLACEMENTS ;
0 commit comments