Skip to content

Commit 86e6a99

Browse files
committed
Show filter state in top right corner of Files panel frame
This includes the "only conflicting" status that the user can't switch to themselves. We display it anyway to give a hint that files are being filtered, and to let them know that they can turn the filter off if they want to.
1 parent d937591 commit 86e6a99

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

pkg/gui/controllers/files_controller.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controllers
22

33
import (
44
"errors"
5+
"fmt"
56
"strings"
67

78
"github.com/jesseduffield/gocui"
@@ -801,10 +802,30 @@ func (self *FilesController) handleStatusFilterPressed() error {
801802
})
802803
}
803804

805+
func (self *FilesController) filteringLabel(filter filetree.FileTreeDisplayFilter) string {
806+
switch filter {
807+
case filetree.DisplayAll:
808+
return ""
809+
case filetree.DisplayStaged:
810+
return self.c.Tr.FilterLabelStagedFiles
811+
case filetree.DisplayUnstaged:
812+
return self.c.Tr.FilterLabelUnstagedFiles
813+
case filetree.DisplayTracked:
814+
return self.c.Tr.FilterLabelTrackedFiles
815+
case filetree.DisplayUntracked:
816+
return self.c.Tr.FilterLabelUntrackedFiles
817+
case filetree.DisplayConflicted:
818+
return self.c.Tr.FilterLabelConflictingFiles
819+
}
820+
821+
panic(fmt.Sprintf("Unexpected files display filter: %d", filter))
822+
}
823+
804824
func (self *FilesController) setStatusFiltering(filter filetree.FileTreeDisplayFilter) error {
805825
previousFilter := self.context().GetFilter()
806826

807827
self.context().FileTreeViewModel.SetStatusFilter(filter)
828+
self.c.Contexts().Files.GetView().Subtitle = self.filteringLabel(filter)
808829

809830
// Whenever we switch between untracked and other filters, we need to refresh the files view
810831
// because the untracked files filter applies when running `git status`.

pkg/gui/controllers/helpers/refresh_helper.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,9 +591,11 @@ func (self *RefreshHelper) refreshStateFiles() error {
591591
if conflictFileCount > 0 && prevConflictFileCount == 0 {
592592
if fileTreeViewModel.GetFilter() == filetree.DisplayAll {
593593
fileTreeViewModel.SetStatusFilter(filetree.DisplayConflicted)
594+
self.c.Contexts().Files.GetView().Subtitle = self.c.Tr.FilterLabelConflictingFiles
594595
}
595596
} else if conflictFileCount == 0 && fileTreeViewModel.GetFilter() == filetree.DisplayConflicted {
596597
fileTreeViewModel.SetStatusFilter(filetree.DisplayAll)
598+
self.c.Contexts().Files.GetView().Subtitle = ""
597599
}
598600

599601
self.c.Model().Files = files

pkg/i18n/english.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ type TranslationSet struct {
9090
FilterTrackedFiles string
9191
FilterUntrackedFiles string
9292
NoFilter string
93+
FilterLabelStagedFiles string
94+
FilterLabelUnstagedFiles string
95+
FilterLabelTrackedFiles string
96+
FilterLabelUntrackedFiles string
97+
FilterLabelConflictingFiles string
9398
MergeConflictsTitle string
9499
Checkout string
95100
CheckoutTooltip string
@@ -1114,6 +1119,11 @@ func EnglishTranslationSet() *TranslationSet {
11141119
FilterTrackedFiles: "Show only tracked files",
11151120
FilterUntrackedFiles: "Show only untracked files",
11161121
NoFilter: "No filter",
1122+
FilterLabelStagedFiles: "(only staged)",
1123+
FilterLabelUnstagedFiles: "(only unstaged)",
1124+
FilterLabelTrackedFiles: "(only tracked)",
1125+
FilterLabelUntrackedFiles: "(only untracked)",
1126+
FilterLabelConflictingFiles: "(only conflicting)",
11171127
NoChangedFiles: "No changed files",
11181128
SoftReset: "Soft reset",
11191129
AlreadyCheckedOutBranch: "You have already checked out this branch",

0 commit comments

Comments
 (0)