Skip to content

Commit 7518b81

Browse files
committed
refactor: Right align line numbers
1 parent 1763275 commit 7518b81

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
@@ -686,15 +686,15 @@ fn foo() {
686686
error: foo
687687
--> test.rs:3:6
688688
|
689-
3 | X0 Y0 Z0
689+
3 | X0 Y0 Z0
690690
| _______^
691-
4 | | X1 Y1 Z1
691+
4 | | X1 Y1 Z1
692692
| | ____^____-
693693
| ||____|
694694
| | `X` is a good letter
695-
5 | | 1
696-
6 | | 2
697-
7 | | 3
695+
5 | | 1
696+
6 | | 2
697+
7 | | 3
698698
... |
699699
15 | | X2 Y2 Z2
700700
16 | | X3 Y3 Z3
@@ -740,15 +740,15 @@ fn foo() {
740740
error: foo
741741
--> test.rs:3:6
742742
|
743-
3 | X0 Y0 Z0
743+
3 | X0 Y0 Z0
744744
| _______^
745-
4 | | 1
746-
5 | | 2
747-
6 | | 3
748-
7 | | X1 Y1 Z1
745+
4 | | 1
746+
5 | | 2
747+
6 | | 3
748+
7 | | X1 Y1 Z1
749749
| | _________-
750-
8 | || 4
751-
9 | || 5
750+
8 | || 4
751+
9 | || 5
752752
10 | || 6
753753
11 | || X2 Y2 Z2
754754
| ||__________- `Z` is a good letter too

0 commit comments

Comments
 (0)