ncdu: add empty folder flag into ncdu browser
Implemented empty folder flag for ncdu browser interface. If there is empty folder in the list the flag e is prepended before size. If there is no empty folder this flag is ommited. It has the same behaviour as original ncdu browser. (https://dev.yorhel.nl/ncdu/man)
This commit is contained in:
parent
65eee674b9
commit
b218bc5bed
1 changed files with 24 additions and 1 deletions
|
@ -289,6 +289,20 @@ func (u *UI) biggestEntry() (biggest int64) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hasEmptyDir returns true if there is empty folder in current listing
|
||||||
|
func (u *UI) hasEmptyDir() bool {
|
||||||
|
if u.d == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for i := range u.entries {
|
||||||
|
_, count, isDir, _, _, _ := u.d.AttrI(u.sortPerm[i])
|
||||||
|
if isDir && count == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Draw the current screen
|
// Draw the current screen
|
||||||
func (u *UI) Draw() error {
|
func (u *UI) Draw() error {
|
||||||
w, h := termbox.Size()
|
w, h := termbox.Size()
|
||||||
|
@ -319,6 +333,7 @@ func (u *UI) Draw() error {
|
||||||
if perBar == 0 {
|
if perBar == 0 {
|
||||||
perBar = 1
|
perBar = 1
|
||||||
}
|
}
|
||||||
|
showEmptyDir := u.hasEmptyDir()
|
||||||
dirPos := u.dirPosMap[u.path]
|
dirPos := u.dirPosMap[u.path]
|
||||||
for i, j := range u.sortPerm[dirPos.offset:] {
|
for i, j := range u.sortPerm[dirPos.offset:] {
|
||||||
entry := u.entries[j]
|
entry := u.entries[j]
|
||||||
|
@ -373,6 +388,14 @@ func (u *UI) Draw() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
emptyDir := ""
|
||||||
|
if showEmptyDir {
|
||||||
|
if isDir && count == 0 {
|
||||||
|
emptyDir = "e"
|
||||||
|
} else {
|
||||||
|
emptyDir = " "
|
||||||
|
}
|
||||||
|
}
|
||||||
if u.showGraph {
|
if u.showGraph {
|
||||||
bars := (size + perBar/2 - 1) / perBar
|
bars := (size + perBar/2 - 1) / perBar
|
||||||
// clip if necessary - only happens during startup
|
// clip if necessary - only happens during startup
|
||||||
|
@ -383,7 +406,7 @@ func (u *UI) Draw() error {
|
||||||
}
|
}
|
||||||
extras += "[" + graph[graphBars-bars:2*graphBars-bars] + "] "
|
extras += "[" + graph[graphBars-bars:2*graphBars-bars] + "] "
|
||||||
}
|
}
|
||||||
Linef(0, y, w, fg, bg, ' ', "%8v %s%c%s%s", fs.SizeSuffix(size), extras, mark, path.Base(entry.Remote()), message)
|
Linef(0, y, w, fg, bg, ' ', "%s %8v %s%c%s%s", emptyDir, fs.SizeSuffix(size), extras, mark, path.Base(entry.Remote()), message)
|
||||||
y++
|
y++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue