Skip to content

Commit 4756e44

Browse files
committed
Render lines for wraparound to make it more obvious when it happens
1 parent df9ce0c commit 4756e44

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

examples/wraparound.stdout

+8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
1:main│ │ ├─┐wraparound::recurse i=3
88
1:main│ │ │ ├─ms WARN wraparound boop
99
1:main│ │ │ ├─┐wraparound::recurse i=4
10+
1:main────────┘
1011
1:mainms WARN wraparound boop
1112
1:main┐wraparound::recurse i=5
1213
1:main├─ms WARN wraparound boop
@@ -17,6 +18,7 @@
1718
1:main│ │ ├─┐wraparound::recurse i=8
1819
1:main│ │ │ ├─ms WARN wraparound boop
1920
1:main│ │ │ ├─┐wraparound::recurse i=9
21+
1:main────────┘
2022
1:mainms WARN wraparound boop
2123
1:main┐wraparound::recurse i=10
2224
1:main├─ms WARN wraparound boop
@@ -27,6 +29,7 @@
2729
1:main│ │ ├─┐wraparound::recurse i=13
2830
1:main│ │ │ ├─ms WARN wraparound boop
2931
1:main│ │ │ ├─┐wraparound::recurse i=14
32+
1:main────────┘
3033
1:mainms WARN wraparound boop
3134
1:main┐wraparound::recurse i=15
3235
1:main├─ms WARN wraparound boop
@@ -37,6 +40,7 @@
3740
1:main│ │ ├─┐wraparound::recurse i=18
3841
1:main│ │ │ ├─ms WARN wraparound boop
3942
1:main│ │ │ ├─┐wraparound::recurse i=19
43+
1:main────────┘
4044
1:mainms WARN wraparound boop
4145
1:main┐wraparound::recurse i=20
4246
1:main├─ms WARN wraparound boop
@@ -47,6 +51,7 @@
4751
1:main├─ms WARN wraparound bop
4852
1:main┘
4953
1:mainms WARN wraparound bop
54+
1:main────────┐
5055
1:main│ │ │ ├─┘
5156
1:main│ │ │ ├─ms WARN wraparound bop
5257
1:main│ │ ├─┘
@@ -57,6 +62,7 @@
5762
1:main├─ms WARN wraparound bop
5863
1:main┘
5964
1:mainms WARN wraparound bop
65+
1:main────────┐
6066
1:main│ │ │ ├─┘
6167
1:main│ │ │ ├─ms WARN wraparound bop
6268
1:main│ │ ├─┘
@@ -67,6 +73,7 @@
6773
1:main├─ms WARN wraparound bop
6874
1:main┘
6975
1:mainms WARN wraparound bop
76+
1:main────────┐
7077
1:main│ │ │ ├─┘
7178
1:main│ │ │ ├─ms WARN wraparound bop
7279
1:main│ │ ├─┘
@@ -77,6 +84,7 @@
7784
1:main├─ms WARN wraparound bop
7885
1:main┘
7986
1:mainms WARN wraparound bop
87+
1:main────────┐
8088
1:main│ │ │ ├─┘
8189
1:main│ │ │ ├─ms WARN wraparound bop
8290
1:main│ │ ├─┘

src/format.rs

+38-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ pub(crate) const LINE_BRANCH: &str = "├";
1414
pub(crate) const LINE_CLOSE: &str = "┘";
1515
pub(crate) const LINE_OPEN: &str = "┐";
1616

17+
#[derive(Copy, Clone)]
1718
pub(crate) enum SpanMode {
1819
PreOpen,
1920
Open { verbose: bool },
@@ -167,17 +168,53 @@ impl Buffers {
167168

168169
pub(crate) fn indent_current(&mut self, indent: usize, config: &Config, style: SpanMode) {
169170
self.current_buf.push('\n');
171+
let prefix = config.prefix();
172+
173+
// Render something when wraparound occurs so the user is aware of it
174+
if config.indent_lines {
175+
match style {
176+
SpanMode::Close { .. } | SpanMode::PostClose => {
177+
if indent > 0 && (indent + 1) % config.wraparound == 0 {
178+
self.indent_buf.push_str(&prefix);
179+
for _ in 0..(indent % config.wraparound * config.indent_amount) {
180+
self.indent_buf.push_str(LINE_HORIZ);
181+
}
182+
self.indent_buf.push_str(LINE_OPEN);
183+
self.indent_buf.push('\n');
184+
}
185+
}
186+
_ => {}
187+
}
188+
}
189+
170190
indent_block(
171191
&mut self.current_buf,
172192
&mut self.indent_buf,
173193
indent % config.wraparound,
174194
config.indent_amount,
175195
config.indent_lines,
176-
&config.prefix(),
196+
&prefix,
177197
style,
178198
);
179199
self.current_buf.clear();
180200
self.flush_indent_buf();
201+
202+
// Render something when wraparound occurs so the user is aware of it
203+
if config.indent_lines {
204+
match style {
205+
SpanMode::PreOpen | SpanMode::Open { .. } => {
206+
if indent > 0 && (indent + 1) % config.wraparound == 0 {
207+
self.current_buf.push_str(&prefix);
208+
for _ in 0..(indent % config.wraparound * config.indent_amount) {
209+
self.current_buf.push_str(LINE_HORIZ);
210+
}
211+
self.current_buf.push_str(LINE_CLOSE);
212+
self.current_buf.push('\n');
213+
}
214+
}
215+
_ => {}
216+
}
217+
}
181218
}
182219
}
183220

0 commit comments

Comments
 (0)