1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-15 00:15:32 +02:00

Support filtering files

This commit is contained in:
Jesse Duffield
2023-05-27 19:58:48 +10:00
parent 84870d4503
commit 13326344f0
9 changed files with 72 additions and 19 deletions

View File

@ -10,6 +10,7 @@ import (
)
type CommitFilesContext struct {
*FilteredList[*models.CommitFile]
*filetree.CommitFileTreeViewModel
*ListContextTrait
*DynamicTitleBuilder
@ -21,8 +22,13 @@ var (
)
func NewCommitFilesContext(c *ContextCommon) *CommitFilesContext {
viewModel := filetree.NewCommitFileTreeViewModel(
filteredList := NewFilteredList(
func() []*models.CommitFile { return c.Model().CommitFiles },
func(file *models.CommitFile) []string { return []string{file.GetPath()} },
)
viewModel := filetree.NewCommitFileTreeViewModel(
func() []*models.CommitFile { return filteredList.GetFilteredList() },
c.Log,
c.UserConfig.Gui.ShowFileTree,
)
@ -39,6 +45,7 @@ func NewCommitFilesContext(c *ContextCommon) *CommitFilesContext {
}
return &CommitFilesContext{
FilteredList: filteredList,
CommitFileTreeViewModel: viewModel,
DynamicTitleBuilder: NewDynamicTitleBuilder(c.Tr.CommitFilesDynamicTitle),
ListContextTrait: &ListContextTrait{
@ -71,3 +78,17 @@ func (self *CommitFilesContext) GetSelectedItemId() string {
func (self *CommitFilesContext) GetDiffTerminals() []string {
return []string{self.GetRef().RefName()}
}
// used for type switch
func (self *CommitFilesContext) IsFilterableContext() {}
// TODO: see if we can just call SetTree() within HandleRender(). It doesn't seem
// right that we need to imperatively refresh the view model like this
func (self *CommitFilesContext) SetFilter(filter string) {
self.FilteredList.SetFilter(filter)
self.SetTree()
}
func (self *CommitFilesContext) ClearFilter() {
self.SetFilter("")
}