Add new filter to only show tracked files in Files panel

This allows to hide all non-tracked files on large repos
This commit is contained in:
Yaroslav Veremenko 2024-11-01 16:21:09 -06:00 committed by Jesse Duffield
parent b0a766cc95
commit fdeaf9cea0
4 changed files with 25 additions and 0 deletions

View file

@ -695,6 +695,13 @@ func (self *FilesController) handleStatusFilterPressed() error {
},
Key: 'u',
},
{
Label: self.c.Tr.FilterTrackedFiles,
OnPress: func() error {
return self.setStatusFiltering(filetree.DisplayTracked)
},
Key: 't',
},
{
Label: self.c.Tr.ResetFilter,
OnPress: func() error {

View file

@ -15,6 +15,7 @@ const (
DisplayAll FileTreeDisplayFilter = iota
DisplayStaged
DisplayUnstaged
DisplayTracked
// this shows files with merge conflicts
DisplayConflicted
)
@ -82,6 +83,8 @@ func (self *FileTree) getFilesForDisplay() []*models.File {
return self.FilterFiles(func(file *models.File) bool { return file.HasStagedChanges })
case DisplayUnstaged:
return self.FilterFiles(func(file *models.File) bool { return file.HasUnstagedChanges })
case DisplayTracked:
return self.FilterFiles(func(file *models.File) bool { return file.Tracked })
case DisplayConflicted:
return self.FilterFiles(func(file *models.File) bool { return file.HasMergeConflicts })
default:

View file

@ -40,6 +40,19 @@ func TestFilterAction(t *testing.T) {
{Name: "file1", ShortStatus: "M ", HasStagedChanges: true},
},
},
{
name: "filter files that are tracked",
filter: DisplayTracked,
files: []*models.File{
{Name: "dir2/dir2/file4", ShortStatus: "M ", Tracked: true},
{Name: "dir2/file5", ShortStatus: "M ", Tracked: false},
{Name: "file1", ShortStatus: "M ", Tracked: true},
},
expected: []*models.File{
{Name: "dir2/dir2/file4", ShortStatus: "M ", Tracked: true},
{Name: "file1", ShortStatus: "M ", Tracked: true},
},
},
{
name: "filter all files",
filter: DisplayAll,

View file

@ -87,6 +87,7 @@ type TranslationSet struct {
AllFilesDiffCopiedToast string
FilterStagedFiles string
FilterUnstagedFiles string
FilterTrackedFiles string
ResetFilter string
MergeConflictsTitle string
Checkout string
@ -1075,6 +1076,7 @@ func EnglishTranslationSet() *TranslationSet {
AllFilesDiffCopiedToast: "All files diff copied to clipboard",
FilterStagedFiles: "Show only staged files",
FilterUnstagedFiles: "Show only unstaged files",
FilterTrackedFiles: "Show only tracked files",
ResetFilter: "Reset filter",
NoChangedFiles: "No changed files",
SoftReset: "Soft reset",