@@ -713,8 +713,7 @@ impl HumanEmitter {
713713 Style :: LineNumber ,
714714 ) ;
715715 }
716- buffer. puts ( line_offset, 0 , & self . maybe_anonymized ( line_index) , Style :: LineNumber ) ;
717-
716+ self . draw_line_num ( buffer, line_index, line_offset, width_offset - 3 ) ;
718717 self . draw_col_separator_no_space ( buffer, line_offset, width_offset - 2 ) ;
719718 left
720719 }
@@ -2128,11 +2127,11 @@ impl HumanEmitter {
21282127 // Account for a suggestion to completely remove a line(s) with whitespace (#94192).
21292128 let line_end = sm. lookup_char_pos ( parts[ 0 ] . span . hi ( ) ) . line ;
21302129 for line in line_start..=line_end {
2131- buffer. puts (
2130+ self . draw_line_num (
2131+ & mut buffer,
2132+ line,
21322133 row_num - 1 + line - line_start,
2133- 0 ,
2134- & self . maybe_anonymized ( line) ,
2135- Style :: LineNumber ,
2134+ max_line_num_len,
21362135 ) ;
21372136 buffer. puts (
21382137 row_num - 1 + line - line_start,
@@ -2612,12 +2611,7 @@ impl HumanEmitter {
26122611 // For more info: https://github.com/rust-lang/rust/issues/92741
26132612 let lines_to_remove = file_lines. lines . iter ( ) . take ( file_lines. lines . len ( ) - 1 ) ;
26142613 for ( index, line_to_remove) in lines_to_remove. enumerate ( ) {
2615- buffer. puts (
2616- * row_num - 1 ,
2617- 0 ,
2618- & self . maybe_anonymized ( line_num + index) ,
2619- Style :: LineNumber ,
2620- ) ;
2614+ self . draw_line_num ( buffer, line_num + index, * row_num - 1 , max_line_num_len) ;
26212615 buffer. puts ( * row_num - 1 , max_line_num_len + 1 , "- " , Style :: Removal ) ;
26222616 let line = normalize_whitespace (
26232617 & file_lines. file . get_line ( line_to_remove. line_index ) . unwrap ( ) ,
@@ -2634,11 +2628,11 @@ impl HumanEmitter {
26342628 let last_line_index = file_lines. lines [ file_lines. lines . len ( ) - 1 ] . line_index ;
26352629 let last_line = & file_lines. file . get_line ( last_line_index) . unwrap ( ) ;
26362630 if last_line != line_to_add {
2637- buffer. puts (
2631+ self . draw_line_num (
2632+ buffer,
2633+ line_num + file_lines. lines . len ( ) - 1 ,
26382634 * row_num - 1 ,
2639- 0 ,
2640- & self . maybe_anonymized ( line_num + file_lines. lines . len ( ) - 1 ) ,
2641- Style :: LineNumber ,
2635+ max_line_num_len,
26422636 ) ;
26432637 buffer. puts ( * row_num - 1 , max_line_num_len + 1 , "- " , Style :: Removal ) ;
26442638 buffer. puts (
@@ -2661,7 +2655,7 @@ impl HumanEmitter {
26612655 // 2 - .await
26622656 // |
26632657 // *row_num -= 1;
2664- buffer . puts ( * row_num , 0 , & self . maybe_anonymized ( line_num ) , Style :: LineNumber ) ;
2658+ self . draw_line_num ( buffer , line_num , * row_num , max_line_num_len ) ;
26652659 buffer. puts ( * row_num, max_line_num_len + 1 , "+ " , Style :: Addition ) ;
26662660 buffer. append ( * row_num, & normalize_whitespace ( line_to_add) , Style :: NoStyle ) ;
26672661 } else {
@@ -2671,7 +2665,7 @@ impl HumanEmitter {
26712665 * row_num -= 2 ;
26722666 }
26732667 } else if is_multiline {
2674- buffer . puts ( * row_num , 0 , & self . maybe_anonymized ( line_num ) , Style :: LineNumber ) ;
2668+ self . draw_line_num ( buffer , line_num , * row_num , max_line_num_len ) ;
26752669 match & highlight_parts {
26762670 [ SubstitutionHighlight { start : 0 , end } ] if * end == line_to_add. len ( ) => {
26772671 buffer. puts ( * row_num, max_line_num_len + 1 , "+ " , Style :: Addition ) ;
@@ -2702,11 +2696,11 @@ impl HumanEmitter {
27022696 Style :: NoStyle ,
27032697 ) ;
27042698 } else if let DisplaySuggestion :: Add = show_code_change {
2705- buffer . puts ( * row_num , 0 , & self . maybe_anonymized ( line_num ) , Style :: LineNumber ) ;
2699+ self . draw_line_num ( buffer , line_num , * row_num , max_line_num_len ) ;
27062700 buffer. puts ( * row_num, max_line_num_len + 1 , "+ " , Style :: Addition ) ;
27072701 buffer. append ( * row_num, & normalize_whitespace ( line_to_add) , Style :: NoStyle ) ;
27082702 } else {
2709- buffer . puts ( * row_num , 0 , & self . maybe_anonymized ( line_num ) , Style :: LineNumber ) ;
2703+ self . draw_line_num ( buffer , line_num , * row_num , max_line_num_len ) ;
27102704 self . draw_col_separator ( buffer, * row_num, max_line_num_len + 1 ) ;
27112705 buffer. append ( * row_num, & normalize_whitespace ( line_to_add) , Style :: NoStyle ) ;
27122706 }
@@ -3016,6 +3010,22 @@ impl HumanEmitter {
30163010 OutputTheme :: Unicode => "…" ,
30173011 }
30183012 }
3013+
3014+ fn draw_line_num (
3015+ & self ,
3016+ buffer : & mut StyledBuffer ,
3017+ line_num : usize ,
3018+ line_offset : usize ,
3019+ max_line_num_len : usize ,
3020+ ) {
3021+ let line_num = self . maybe_anonymized ( line_num) ;
3022+ buffer. puts (
3023+ line_offset,
3024+ max_line_num_len. saturating_sub ( str_width ( & line_num) ) ,
3025+ & line_num,
3026+ Style :: LineNumber ,
3027+ ) ;
3028+ }
30193029}
30203030
30213031#[ derive( Debug , Clone , Copy ) ]
0 commit comments