fortrangoingonforty/fuss / d56368f

Browse files

color indicators, mixed indicators

Authored by espadonne
SHA
d56368feb15121cc99dbd0c0add1d2fcd5d8f91d
Parents
661c81a
Tree
1a6c67a

2 changed files

StatusFile+-
M fuss.f90 27 11
M src/utils/helper.txt 1 0
fuss.f90modified
@@ -561,7 +561,9 @@ contains
561561
 
562562
         ! Print help
563563
         print '(A)', ''
564
-        print '(A)', '↑=staged ✗=unstaged | j/↓: down | k/↑: up | Space: git add | q: quit'
564
+        print '(A)', achar(27) // '[32m↑' // achar(27) // '[0m=staged ' // &
565
+                     achar(27) // '[31m✗' // achar(27) // '[0m=unstaged | ' // &
566
+                     'j/↓: down | k/↑: up | Space: git add | q: quit'
565567
 
566568
         call free_tree(root)
567569
     end subroutine draw_interactive_tree
@@ -584,10 +586,17 @@ contains
584586
         character(len=*), parameter :: branch_last = '└──'
585587
         character(len=*), parameter :: branch_mid = '├──'
586588
         character(len=*), parameter :: vertical = '│'
587
-        character(len=*), parameter :: mark_unstaged = ' ✗'
588
-        character(len=*), parameter :: mark_staged = ' ↑'
589589
         character(len=*), parameter :: highlight_on = achar(27) // '[7m'
590590
         character(len=*), parameter :: highlight_off = achar(27) // '[0m'
591
+        character(len=1), parameter :: ESC = achar(27)
592
+
593
+        ! Build colored marks as character arrays
594
+        character(len=50) :: mark_unstaged
595
+        character(len=50) :: mark_staged
596
+
597
+        ! Initialize colored marks with explicit ESC characters
598
+        write(mark_unstaged, '(A,A,A,A,A)') ESC, '[31m', ' ✗', ESC, '[0m'
599
+        write(mark_staged, '(A,A,A,A,A)') ESC, '[32m', ' ↑', ESC, '[0m'
591600
 
592601
         ! Count children first
593602
         n_children = 0
@@ -615,20 +624,20 @@ contains
615624
                 line = trim(line) // highlight_on // trim(node%name)
616625
                 ! Show both indicators if file has both staged and unstaged changes
617626
                 if (node%is_staged) then
618
-                    line = trim(line) // mark_staged
627
+                    line = trim(line) // trim(mark_staged)
619628
                 end if
620629
                 if (node%is_unstaged) then
621
-                    line = trim(line) // mark_unstaged
630
+                    line = trim(line) // trim(mark_unstaged)
622631
                 end if
623632
                 line = trim(line) // highlight_off
624633
             else
625634
                 line = trim(line) // trim(node%name)
626635
                 ! Show both indicators if file has both staged and unstaged changes
627636
                 if (node%is_staged) then
628
-                    line = trim(line) // mark_staged
637
+                    line = trim(line) // trim(mark_staged)
629638
                 end if
630639
                 if (node%is_unstaged) then
631
-                    line = trim(line) // mark_unstaged
640
+                    line = trim(line) // trim(mark_unstaged)
632641
                 end if
633642
             end if
634643
 
@@ -845,8 +854,15 @@ contains
845854
         character(len=*), parameter :: branch_last = '└──'
846855
         character(len=*), parameter :: branch_mid = '├──'
847856
         character(len=*), parameter :: vertical = '│'
848
-        character(len=*), parameter :: mark_unstaged = ' ✗'
849
-        character(len=*), parameter :: mark_staged = ' ↑'
857
+        character(len=1), parameter :: ESC = achar(27)
858
+
859
+        ! Build colored marks as character arrays
860
+        character(len=50) :: mark_unstaged
861
+        character(len=50) :: mark_staged
862
+
863
+        ! Initialize colored marks with explicit ESC characters
864
+        write(mark_unstaged, '(A,A,A,A,A)') ESC, '[31m', ' ✗', ESC, '[0m'
865
+        write(mark_staged, '(A,A,A,A,A)') ESC, '[32m', ' ↑', ESC, '[0m'
850866
 
851867
         ! Count children first
852868
         n_children = 0
@@ -866,10 +882,10 @@ contains
866882
             end if
867883
             ! Show both indicators if file has both staged and unstaged changes
868884
             if (node%is_staged) then
869
-                line = trim(line) // mark_staged
885
+                line = trim(line) // trim(mark_staged)
870886
             end if
871887
             if (node%is_unstaged) then
872
-                line = trim(line) // mark_unstaged
888
+                line = trim(line) // trim(mark_unstaged)
873889
             end if
874890
             print '(A)', trim(line)
875891
         end if
src/utils/helper.txtmodified
@@ -1,2 +1,3 @@
11
 test
22
 modified
3
+modified