55 "os"
66 "path/filepath"
77 "sort"
8+ "strconv"
89 "strings"
910 "sync"
1011
@@ -35,6 +36,8 @@ func New() Model {
3536 Cursor : ">" ,
3637 AllowedTypes : []string {},
3738 selected : 0 ,
39+ ShowPermissions : true ,
40+ ShowSize : true ,
3841 ShowHidden : false ,
3942 DirAllowed : false ,
4043 FileAllowed : true ,
@@ -145,11 +148,13 @@ type Model struct {
145148 // If empty the user may select any file.
146149 AllowedTypes []string
147150
148- KeyMap KeyMap
149- files []os.DirEntry
150- ShowHidden bool
151- DirAllowed bool
152- FileAllowed bool
151+ KeyMap KeyMap
152+ files []os.DirEntry
153+ ShowPermissions bool
154+ ShowSize bool
155+ ShowHidden bool
156+ DirAllowed bool
157+ FileAllowed bool
153158
154159 FileSelected string
155160 selected int
@@ -382,9 +387,16 @@ func (m Model) View() string {
382387 disabled := ! m .canSelect (name ) && ! f .IsDir ()
383388
384389 if m .selected == i {
385- selected := fmt .Sprintf (" %s %" + fmt .Sprint (m .Styles .FileSize .GetWidth ())+ "s %s" , info .Mode ().String (), size , name )
390+ selected := ""
391+ if m .ShowPermissions {
392+ selected += " " + info .Mode ().String ()
393+ }
394+ if m .ShowSize {
395+ selected += " " + fmt .Sprintf ("%" + strconv .Itoa (m .Styles .FileSize .GetWidth ())+ "s" , size )
396+ }
397+ selected += " " + name
386398 if isSymlink {
387- selected = fmt . Sprintf ( "%s → %s" , selected , symlinkPath )
399+ selected += " → " + symlinkPath
388400 }
389401 if disabled {
390402 s .WriteString (m .Styles .DisabledSelected .Render (m .Cursor ) + m .Styles .DisabledSelected .Render (selected ))
@@ -405,10 +417,17 @@ func (m Model) View() string {
405417 }
406418
407419 fileName := style .Render (name )
420+ s .WriteString (m .Styles .Cursor .Render (" " ))
408421 if isSymlink {
409- fileName = fmt .Sprintf ("%s → %s" , fileName , symlinkPath )
422+ fileName += " → " + symlinkPath
423+ }
424+ if m .ShowPermissions {
425+ s .WriteString (" " + m .Styles .Permission .Render (info .Mode ().String ()))
426+ }
427+ if m .ShowSize {
428+ s .WriteString (" " + m .Styles .FileSize .Render (size ))
410429 }
411- s .WriteString (fmt . Sprintf ( " %s %s %s" , m . Styles . Permission . Render ( info . Mode (). String ()), m . Styles . FileSize . Render ( size ), fileName ) )
430+ s .WriteString (" " + fileName )
412431 s .WriteRune ('\n' )
413432 }
414433
0 commit comments