Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b157102

Browse files
committed
fix: Handle window close for lines with no annotations
1 parent ded7a3b commit b157102

File tree

5 files changed

+56
-4
lines changed

5 files changed

+56
-4
lines changed

‎examples/multislice.svg

Lines changed: 4 additions & 2 deletions
Loading[フレーム]

‎src/renderer/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,6 +1004,16 @@ impl Renderer {
10041004
margin,
10051005
);
10061006

1007+
// If there are no annotations, we are done
1008+
if line_info.annotations.is_empty() {
1009+
// `close_window` normally gets handled later, but we are early
1010+
// returning, so it needs to be handled here
1011+
if close_window {
1012+
self.draw_col_separator_end(buffer, line_offset + 1, width_offset - 2);
1013+
}
1014+
return vec![];
1015+
}
1016+
10071017
// Special case when there's only one annotation involved, it is the start of a multiline
10081018
// span and there's no text at the beginning of the code line. Instead of doing the whole
10091019
// graph:

‎tests/color/ann_multiline2.term.svg

Lines changed: 3 additions & 1 deletion
Loading[フレーム]

‎tests/color/multiple_annotations.term.svg

Lines changed: 3 additions & 1 deletion
Loading[フレーム]

‎tests/formatter.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ error:
194194
|
195195
5402 | This is line 1
196196
5403 | This is line 2
197+
|
197198
"#]];
198199
let renderer = Renderer::plain();
199200
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -203,6 +204,7 @@ error:
203204
╭▸
204205
5402 │ This is line 1
205206
5403 │ This is line 2
207+
╰╴
206208
"#]];
207209
let renderer = renderer.decor_style(DecorStyle::Unicode);
208210
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -234,6 +236,7 @@ error:
234236
::: file2.rs:2
235237
|
236238
2 | This is slice 2
239+
|
237240
"#]];
238241
let renderer = Renderer::plain();
239242
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -247,6 +250,7 @@ error:
247250
⸬ file2.rs:2
248251
249252
2 │ This is slice 2
253+
╰╴
250254
"#]];
251255
let renderer = renderer.decor_style(DecorStyle::Unicode);
252256
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -340,6 +344,7 @@ error:
340344
|
341345
56 | This is an example
342346
57 | of content lines
347+
|
343348
"#]];
344349
let renderer = Renderer::plain();
345350
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -349,6 +354,7 @@ error:
349354
╭▸
350355
56 │ This is an example
351356
57 │ of content lines
357+
╰╴
352358
"#]];
353359
let renderer = renderer.decor_style(DecorStyle::Unicode);
354360
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -427,6 +433,7 @@ error:
427433
--> file.rs
428434
|
429435
1 |
436+
|
430437
"#]];
431438
let renderer = Renderer::plain();
432439
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -436,6 +443,7 @@ error:
436443
╭▸ file.rs
437444
438445
1 │
446+
╰╴
439447
"#]];
440448
let renderer = renderer.decor_style(DecorStyle::Unicode);
441449
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -456,6 +464,7 @@ LL | This is an example
456464
LL | of content lines
457465
LL |
458466
LL | abc
467+
|
459468
"#]];
460469
let renderer = Renderer::plain().anonymized_line_numbers(true);
461470
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -467,6 +476,7 @@ LL │ This is an example
467476
LL │ of content lines
468477
LL │
469478
LL │ abc
479+
╰╴
470480
"#]];
471481
let renderer = renderer.decor_style(DecorStyle::Unicode);
472482
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -561,6 +571,7 @@ error:
561571
3 | a
562572
| ^
563573
4 | b
574+
|
564575
"#]];
565576
let renderer = Renderer::plain();
566577
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -572,6 +583,7 @@ error:
572583
3 │ a
573584
│ ━
574585
4 │ b
586+
╰╴
575587
"#]];
576588
let renderer = renderer.decor_style(DecorStyle::Unicode);
577589
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -629,6 +641,7 @@ error:
629641
2 | | にちは
630642
| |_^
631643
3 | 世界
644+
|
632645
"#]];
633646

634647
let renderer = Renderer::plain();
@@ -643,6 +656,7 @@ error:
643656
2 │ ┃ にちは
644657
│ ┗━┛
645658
3 │ 世界
659+
╰╴
646660
"#]];
647661
let renderer = renderer.decor_style(DecorStyle::Unicode);
648662
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -699,6 +713,7 @@ error:
699713
3 | a
700714
| ^
701715
4 | b
716+
|
702717
"#]];
703718
let renderer = Renderer::plain();
704719
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -710,6 +725,7 @@ error:
710725
3 │ a
711726
│ ━
712727
4 │ b
728+
╰╴
713729
"#]];
714730
let renderer = renderer.decor_style(DecorStyle::Unicode);
715731
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -803,6 +819,7 @@ error:
803819
3 | a
804820
| ^
805821
4 | b
822+
|
806823
"#]];
807824
let renderer = Renderer::plain();
808825
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -814,6 +831,7 @@ error:
814831
3 │ a
815832
│ ━
816833
4 │ b
834+
╰╴
817835
"#]];
818836
let renderer = renderer.decor_style(DecorStyle::Unicode);
819837
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -838,6 +856,7 @@ error:
838856
2 | | にちは
839857
| |_^
840858
3 | 世界
859+
|
841860
"#]];
842861

843862
let renderer = Renderer::plain();
@@ -852,6 +871,7 @@ error:
852871
2 │ ┃ にちは
853872
│ ┗━┛
854873
3 │ 世界
874+
╰╴
855875
"#]];
856876
let renderer = renderer.decor_style(DecorStyle::Unicode);
857877
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -981,6 +1001,7 @@ error:
9811001
2 | | にちは
9821002
| |__^
9831003
3 | 世界
1004+
|
9841005
"#]];
9851006

9861007
let renderer = Renderer::plain();
@@ -995,6 +1016,7 @@ error:
9951016
2 │ ┃ にちは
9961017
│ ┗━━┛
9971018
3 │ 世界
1019+
╰╴
9981020
"#]];
9991021
let renderer = renderer.decor_style(DecorStyle::Unicode);
10001022
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -1057,6 +1079,7 @@ error:
10571079
4 | | b
10581080
| |__^
10591081
5 | c
1082+
|
10601083
"#]];
10611084
let renderer = Renderer::plain();
10621085
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -1070,6 +1093,7 @@ error:
10701093
4 │ ┃ b
10711094
│ ┗━━┛
10721095
5 │ c
1096+
╰╴
10731097
"#]];
10741098
let renderer = renderer.decor_style(DecorStyle::Unicode);
10751099
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -1444,6 +1468,7 @@ error: title
14441468
3 | ccc
14451469
| ^^^ annotation
14461470
4 | ddd
1471+
|
14471472
"#]];
14481473
let renderer = Renderer::plain();
14491474
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -1457,6 +1482,7 @@ error: title
14571482
3 │ ccc
14581483
│ ━━━ annotation
14591484
4 │ ddd
1485+
╰╴
14601486
"#]];
14611487
let renderer = renderer.decor_style(DecorStyle::Unicode);
14621488
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -1487,6 +1513,7 @@ error: title
14871513
3 | ccc
14881514
| ^^ annotation
14891515
4 | ddd
1516+
|
14901517
"#]];
14911518
let renderer = Renderer::plain();
14921519
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -1500,6 +1527,7 @@ error: title
15001527
3 │ ccc
15011528
│ ━━ annotation
15021529
4 │ ddd
1530+
╰╴
15031531
"#]];
15041532
let renderer = renderer.decor_style(DecorStyle::Unicode);
15051533
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -3467,6 +3495,7 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim
34673495
12 | crazy
34683496
13 | quack
34693497
14 | zappy
3498+
|
34703499
"#]];
34713500
let renderer = Renderer::plain();
34723501
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -3482,6 +3511,7 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim
34823511
12 │ crazy
34833512
13 │ quack
34843513
14 │ zappy
3514+
╰╴
34853515
"#]];
34863516
let renderer = renderer.decor_style(DecorStyle::Unicode);
34873517
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -3505,6 +3535,7 @@ fn empty_span_start_line() {
35053535
| ^ E112
35063536
10 | #: E113
35073537
11 | print()
3538+
|
35083539
"#]];
35093540
let renderer = Renderer::plain();
35103541
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -3517,6 +3548,7 @@ fn empty_span_start_line() {
35173548
│ ━ E112
35183549
10 │ #: E113
35193550
11 │ print()
3551+
╰╴
35203552
"#]];
35213553
let renderer = renderer.decor_style(DecorStyle::Unicode);
35223554
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -3973,6 +4005,7 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim
39734005
| ^^^^^
39744006
...
39754007
18 | zappy
4008+
|
39764009
"#]];
39774010
let renderer = Renderer::plain();
39784011
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -3984,6 +4017,7 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim
39844017
│ ━━━━━
39854018
39864019
18 │ zappy
4020+
╰╴
39874021
"#]];
39884022
let renderer = renderer.decor_style(DecorStyle::Unicode);
39894023
assert_data_eq!(renderer.render(input), expected_unicode);
@@ -4019,6 +4053,7 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim
40194053
| ^^^^^
40204054
13 | fuzzy
40214055
14 | pizza
4056+
|
40224057
"#]];
40234058
let renderer = Renderer::plain();
40244059
assert_data_eq!(renderer.render(input), expected_ascii);
@@ -4030,6 +4065,7 @@ error[E0277]: the size for values of type `T` cannot be known at compilation tim
40304065
│ ━━━━━
40314066
13 │ fuzzy
40324067
14 │ pizza
4068+
╰╴
40334069
"#]];
40344070
let renderer = renderer.decor_style(DecorStyle::Unicode);
40354071
assert_data_eq!(renderer.render(input), expected_unicode);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /