@@ -99,7 +99,8 @@ pub(crate) fn worktree(
99
99
return Ok ( ( ) ) ;
100
100
}
101
101
102
- for ( stack_id, ( details, assignments) ) in stack_details {
102
+ let stack_details_len = stack_details. len ( ) ;
103
+ for ( i, ( stack_id, ( details, assignments) ) ) in stack_details. into_iter ( ) . enumerate ( ) {
103
104
let mut stack_mark = stack_id. and_then ( |stack_id| {
104
105
if crate :: mark:: stack_marked ( ctx, stack_id) . unwrap_or_default ( ) {
105
106
Some ( "◀ Marked ▶" . red ( ) . bold ( ) )
@@ -117,18 +118,20 @@ pub(crate) fn worktree(
117
118
verbose,
118
119
& mut stack_mark,
119
120
ctx,
121
+ i == stack_details_len - 1 ,
122
+ i == 0 ,
120
123
) ?;
121
124
}
122
125
println ! (
123
- " ● {} (common base) [{}] {}" ,
126
+ " ● {} (common base) [{}] {}" ,
124
127
common_merge_base_data. common_merge_base. dimmed( ) ,
125
128
common_merge_base_data. target_name. green( ) . bold( ) ,
126
129
common_merge_base_data. message
127
130
) ;
128
131
Ok ( ( ) )
129
132
}
130
133
131
- fn print_assignments ( assignments : & Vec < FileAssignment > , changes : & [ TreeChange ] ) {
134
+ fn print_assignments ( assignments : & Vec < FileAssignment > , changes : & [ TreeChange ] , dotted : bool ) {
132
135
for fa in assignments {
133
136
let state = status_from_changes ( changes, fa. path . clone ( ) ) ;
134
137
let path = match & state {
@@ -164,7 +167,11 @@ fn print_assignments(assignments: &Vec<FileAssignment>, changes: &[TreeChange])
164
167
if !locks. is_empty ( ) {
165
168
locks = format ! ( "🔒 {locks}" ) ;
166
169
}
167
- println ! ( "│ {id} {status} {path} {locks}" ) ;
170
+ if dotted {
171
+ println ! ( "┊ {id} {status} {path} {locks}" ) ;
172
+ } else {
173
+ println ! ( "│ {id} {status} {path} {locks}" ) ;
174
+ }
168
175
}
169
176
}
170
177
@@ -178,6 +185,8 @@ pub fn print_group(
178
185
verbose : bool ,
179
186
stack_mark : & mut Option < ColoredString > ,
180
187
ctx : & mut CommandContext ,
188
+ last : bool ,
189
+ first : bool ,
181
190
) -> anyhow:: Result < ( ) > {
182
191
if let Some ( group) = & group {
183
192
let mut first = true ;
@@ -209,7 +218,7 @@ pub fn print_group(
209
218
) ;
210
219
* stack_mark = None ; // Only show the stack mark for the first branch
211
220
if first {
212
- print_assignments ( & assignments, changes) ;
221
+ print_assignments ( & assignments, changes, false ) ;
213
222
}
214
223
first = false ;
215
224
for commit in & branch. commits {
@@ -295,9 +304,16 @@ pub fn print_group(
295
304
"Unassigned Changes" . to_string( ) . green( ) . bold( ) ,
296
305
stack_mark. clone( ) . unwrap_or_default( )
297
306
) ;
298
- print_assignments ( & assignments, changes) ;
307
+ print_assignments ( & assignments, changes, true ) ;
308
+ }
309
+ if !first {
310
+ println ! ( "╰╮" ) ;
299
311
}
300
- println ! ( "╰┄┄┄╮" ) ;
312
+ if last {
313
+ println ! ( " ┊" ) ;
314
+ } else {
315
+ println ! ( " " ) ;
316
+ } ;
301
317
Ok ( ( ) )
302
318
}
303
319
0 commit comments