Skip to content

Commit 0343dc7

Browse files
committed
refactor: Right align line numbers
1 parent a0b88c5 commit 0343dc7

File tree

7 files changed

+39
-32
lines changed

7 files changed

+39
-32
lines changed

examples/multislice.svg

+1-1
Loading

src/renderer/mod.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,7 @@ impl Renderer {
533533
buffer,
534534
width_offset,
535535
code_offset,
536+
max_line_num_len,
536537
margin,
537538
);
538539

@@ -605,6 +606,7 @@ impl Renderer {
605606
last_buffer_line_num,
606607
width_offset,
607608
code_offset,
609+
max_line_num_len,
608610
margin,
609611
);
610612

@@ -646,6 +648,7 @@ impl Renderer {
646648
buffer: &mut StyledBuffer,
647649
width_offset: usize,
648650
code_offset: usize,
651+
max_line_num_len: usize,
649652
margin: Margin,
650653
) -> Vec<(usize, ElementStyle)> {
651654
// Draw:
@@ -684,6 +687,7 @@ impl Renderer {
684687
line_offset,
685688
width_offset,
686689
code_offset,
690+
max_line_num_len,
687691
margin,
688692
);
689693

@@ -1185,6 +1189,7 @@ impl Renderer {
11851189
line_offset: usize,
11861190
width_offset: usize,
11871191
code_offset: usize,
1192+
max_line_num_len: usize,
11881193
margin: Margin,
11891194
) {
11901195
// Tabs are assumed to have been replaced by spaces in calling code.
@@ -1228,7 +1233,7 @@ impl Renderer {
12281233
buffer.puts(
12291234
line_offset,
12301235
0,
1231-
&self.maybe_anonymized(line_index),
1236+
&format!("{:>max_line_num_len$}", self.maybe_anonymized(line_index)),
12321237
ElementStyle::LineNumber,
12331238
);
12341239

src/snippet.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,13 @@ impl Message<'_> {
102102
fn newline_count(body: &str) -> usize {
103103
#[cfg(feature = "simd")]
104104
{
105-
memchr::memchr_iter(b'\n', body.as_bytes()).count()
105+
memchr::memchr_iter(b'\n', body.as_bytes())
106+
.count()
107+
.saturating_sub(1)
106108
}
107109
#[cfg(not(feature = "simd"))]
108110
{
109-
body.lines().count()
111+
body.lines().count().saturating_sub(1)
110112
}
111113
}
112114

tests/fixtures/color/issue_9.svg

+11-11
Loading

tests/fixtures/color/multiple_annotations.svg

+4-4
Loading

tests/formatter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ error:
149149
|
150150
::: file2.rs
151151
|
152-
2 | This is slice 2
152+
2 | This is slice 2
153153
"#]];
154154
let renderer = Renderer::plain();
155155
assert_data_eq!(renderer.render(input), expected);

tests/rustc_tests.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -685,15 +685,15 @@ fn foo() {
685685
error: foo
686686
--> test.rs:3:6
687687
|
688-
3 | X0 Y0 Z0
688+
3 | X0 Y0 Z0
689689
| _______^
690-
4 | | X1 Y1 Z1
690+
4 | | X1 Y1 Z1
691691
| | ____^____-
692692
| ||____|
693693
| | `X` is a good letter
694-
5 | | 1
695-
6 | | 2
696-
7 | | 3
694+
5 | | 1
695+
6 | | 2
696+
7 | | 3
697697
... |
698698
15 | | X2 Y2 Z2
699699
16 | | X3 Y3 Z3
@@ -739,15 +739,15 @@ fn foo() {
739739
error: foo
740740
--> test.rs:3:6
741741
|
742-
3 | X0 Y0 Z0
742+
3 | X0 Y0 Z0
743743
| _______^
744-
4 | | 1
745-
5 | | 2
746-
6 | | 3
747-
7 | | X1 Y1 Z1
744+
4 | | 1
745+
5 | | 2
746+
6 | | 3
747+
7 | | X1 Y1 Z1
748748
| | _________-
749-
8 | || 4
750-
9 | || 5
749+
8 | || 4
750+
9 | || 5
751751
10 | || 6
752752
11 | || X2 Y2 Z2
753753
| ||__________- `Z` is a good letter too

0 commit comments

Comments
 (0)