summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2024-11-12 17:00:58 +1100
committerGitHub <noreply@github.com>2024-11-12 17:00:58 +1100
commite1e4e1be1fb6d0757b2f8590e55aca2738e9f9bd (patch)
treebc95ea4303ad4a8f90bfc9fcd03c1eeaa4d4643e
parentb0a766cc9529dadde5e5bd51bb1cc5c503213f66 (diff)
parentfdeaf9cea0cbd71f3ed8dbf9a369f78f02d0a3a6 (diff)
Add new filter to only show tracked files in Files panel (#4024)
- **PR Description** Added new filter to only show tracked files in Files panel. This allows to hide all non-tracked files on large repos. - **Please check if the PR fulfills these requirements** * [x] Cheatsheets are up-to-date (run `go generate ./...`) * [x] Code has been formatted (see [here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#code-formatting)) * [x] Tests have been added/updated (see [here](https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md) for the integration test guide) * [x] Text is internationalised (see [here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#internationalisation)) * [ ] If a new UserConfig entry was added, make sure it can be hot-reloaded (see [here](https://github.com/jesseduffield/lazygit/blob/master/docs/dev/Codebase_Guide.md#using-userconfig)) * [ ] Docs have been updated if necessary * [x] You've read through your own file changes for silly mistakes etc <!-- Be sure to name your PR with an imperative e.g. 'Add worktrees view' see https://github.com/jesseduffield/lazygit/releases/tag/v0.40.0 for examples --> FYI This is my first PR in this repo.
-rw-r--r--pkg/gui/controllers/files_controller.go7
-rw-r--r--pkg/gui/filetree/file_tree.go3
-rw-r--r--pkg/gui/filetree/file_tree_test.go13
-rw-r--r--pkg/i18n/english.go2
4 files changed, 25 insertions, 0 deletions
diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go
index 5380c8909..1ea20eeb2 100644
--- a/pkg/gui/controllers/files_controller.go
+++ b/pkg/gui/controllers/files_controller.go
@@ -696,6 +696,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 {
return self.setStatusFiltering(filetree.DisplayAll)
diff --git a/pkg/gui/filetree/file_tree.go b/pkg/gui/filetree/file_tree.go
index f2108ab28..12780e3ed 100644
--- a/pkg/gui/filetree/file_tree.go
+++ b/pkg/gui/filetree/file_tree.go
@@ -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:
diff --git a/pkg/gui/filetree/file_tree_test.go b/pkg/gui/filetree/file_tree_test.go
index 856d25f9a..a3cdfd966 100644
--- a/pkg/gui/filetree/file_tree_test.go
+++ b/pkg/gui/filetree/file_tree_test.go
@@ -41,6 +41,19 @@ func TestFilterAction(t *testing.T) {
},
},
{
+ 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,
files: []*models.File{
diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go
index e141a614c..fa28130a9 100644
--- a/pkg/i18n/english.go
+++ b/pkg/i18n/english.go
@@ -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",