fortrangoingonforty/fortress / 3e78f26

Browse files

fix some pipes unaligned

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
3e78f2693fbec1c7fe4c1dd56a24a4bba4ea4e4e
Parents
85744a8
Tree
44b7e05

1 changed file

StatusFile+-
M src/ui/display.f90 16 6
src/ui/display.f90modified
@@ -36,7 +36,7 @@ contains
3636
         logical, dimension(*), intent(in) :: is_selected
3737
         integer, intent(in) :: selection_count
3838
         logical, dimension(*), intent(in) :: current_is_favorite, parent_is_favorite
39
-        integer :: left_w, i, parent_idx, current_idx, vis_h
39
+        integer :: left_w, i, parent_idx, current_idx, vis_h, display_len
4040
         character(len=256) :: fname
4141
         character(len=20) :: color_code
4242
 
@@ -84,9 +84,11 @@ contains
8484
             if (parent_idx >= 1 .and. parent_idx <= parent_count) then
8585
                 fname = parent_files(parent_idx)
8686
 
87
-                ! Add star for favorited directories
87
+                ! Track if this item has a star (for visual width adjustment)
88
+                display_len = 0
8889
                 if (parent_is_favorite(parent_idx)) then
8990
                     fname = "★ " // trim(fname)
91
+                    display_len = 1  ! Star takes 2 visual columns, so add 1 extra
9092
                 end if
9193
 
9294
                 if (parent_is_dir(parent_idx) .and. parent_files(parent_idx) /= "." .and. parent_files(parent_idx) /= "..") then
@@ -96,14 +98,17 @@ contains
9698
                 ! Get color for parent file
9799
                 color_code = get_file_color(parent_files(parent_idx), parent_is_dir(parent_idx), parent_is_exec(parent_idx))
98100
 
101
+                ! Calculate visual width: string length + extra for wide char
102
+                display_len = min(len_trim(fname) + display_len, left_w)
103
+
99104
                 if (parent_idx == parent_selected) then
100105
                     write(output_unit, '(a)', advance='no') DIM // BOLD // trim(color_code) // &
101
-                        fname(1:min(len_trim(fname),left_w)) // RESET
106
+                        fname(1:min(len_trim(fname), left_w)) // RESET
102107
                 else
103108
                     write(output_unit, '(a)', advance='no') DIM // trim(color_code) // &
104
-                        fname(1:min(len_trim(fname),left_w)) // RESET
109
+                        fname(1:min(len_trim(fname), left_w)) // RESET
105110
                 end if
106
-                write(output_unit, '(a)', advance='no') repeat(" ", max(0, left_w - len_trim(fname)))
111
+                write(output_unit, '(a)', advance='no') repeat(" ", max(0, left_w - display_len))
107112
             else
108113
                 write(output_unit, '(a)', advance='no') repeat(" ", left_w)
109114
             end if
@@ -115,15 +120,20 @@ contains
115120
             if (current_idx >= 1 .and. current_idx <= current_count) then
116121
                 fname = current_files(current_idx)
117122
 
118
-                ! Add star for favorited directories
123
+                ! Track if this item has a star (for visual width - star takes 2 columns)
124
+                display_len = 0
119125
                 if (current_is_favorite(current_idx)) then
120126
                     fname = "★ " // trim(fname)
127
+                    display_len = 1  ! Add 1 to account for star being 2 visual columns
121128
                 end if
122129
 
123130
                 if (current_is_dir(current_idx) .and. current_files(current_idx) /= "." .and. current_files(current_idx) /= "..") then
124131
                     fname = trim(fname) // "/"
125132
                 end if
126133
 
134
+                ! Store the visual display length for this line (used by git indicators)
135
+                display_len = len_trim(fname) + display_len
136
+
127137
                 ! Get color for current file
128138
                 color_code = get_file_color(current_files(current_idx), current_is_dir(current_idx), current_is_exec(current_idx))
129139