@@ -315,12 +315,16 @@ impl Renderer {
315315 let peek = message_iter. peek ( ) . map ( |( _, s) | s) . copied ( ) ;
316316 match & section {
317317 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+ } ;
318323 self . render_title (
319324 & mut buffer,
320325 title,
321- peek,
322326 max_line_num_len,
323- if i == 0 { false } else { !title . primary } ,
327+ title_style ,
324328 message. id . as_ref ( ) . and_then ( |id| {
325329 if g == 0 && i == 0 {
326330 Some ( id)
@@ -433,26 +437,14 @@ impl Renderer {
433437 & self ,
434438 buffer : & mut StyledBuffer ,
435439 title : & Title < ' _ > ,
436- next_section : Option < & Element < ' _ > > ,
437440 max_line_num_len : usize ,
438- is_secondary : bool ,
441+ title_style : TitleStyle ,
439442 id : Option < & & str > ,
440443 is_cont : bool ,
441444 ) {
442445 let line_offset = buffer. num_lines ( ) ;
443446
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 {
456448 // This is a secondary message with no span info
457449 for _ in 0 ..max_line_num_len {
458450 buffer. prepend ( line_offset, " " , ElementStyle :: NoStyle ) ;
@@ -503,10 +495,10 @@ impl Renderer {
503495 buffer. append ( line_offset, "]" , ElementStyle :: Level ( title. level . level ) ) ;
504496 label_width += 2 + id. len ( ) ;
505497 }
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 ! ( ) ,
510502 } ;
511503 if title. level . name != Some ( None ) {
512504 buffer. append ( line_offset, ": " , header_style) ;
@@ -661,7 +653,14 @@ impl Renderer {
661653 max_line_num_len + 1 ,
662654 ) ;
663655 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+ ) ;
665664 }
666665 }
667666
@@ -2717,6 +2716,13 @@ pub enum OutputTheme {
27172716 Unicode ,
27182717}
27192718
2719+ #[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
2720+ enum TitleStyle {
2721+ MainHeader ,
2722+ Header ,
2723+ Secondary ,
2724+ }
2725+
27202726#[ cfg( test) ]
27212727mod test {
27222728 use super :: OUTPUT_REPLACEMENTS ;
0 commit comments