Skip to content

Commit a08799a

Browse files
committed
Allow filterable contexts to customize the filter label
1 parent 2ed1133 commit a08799a

File tree

6 files changed

+25
-5
lines changed

6 files changed

+25
-5
lines changed

pkg/gui/context/filtered_list_view_model.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package context
22

3+
import "github.com/jesseduffield/lazygit/pkg/i18n"
4+
35
type FilteredListViewModel[T HasID] struct {
46
*FilteredList[T]
57
*ListViewModel[T]
@@ -33,3 +35,8 @@ func (self *FilteredListViewModel[T]) ClearFilter() {
3335

3436
self.SetSelection(unfilteredIndex)
3537
}
38+
39+
// Default implementation of most filterable contexts. Can be overridden if needed.
40+
func (self *FilteredListViewModel[T]) FilterPrefix(tr *i18n.TranslationSet) string {
41+
return tr.FilterPrefix
42+
}

pkg/gui/context/menu_context.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/jesseduffield/lazygit/pkg/gui/keybindings"
88
"github.com/jesseduffield/lazygit/pkg/gui/style"
99
"github.com/jesseduffield/lazygit/pkg/gui/types"
10+
"github.com/jesseduffield/lazygit/pkg/i18n"
1011
"github.com/jesseduffield/lazygit/pkg/utils"
1112
"github.com/samber/lo"
1213
)
@@ -238,3 +239,11 @@ func (self *MenuContext) OnMenuPress(selectedItem *types.MenuItem) error {
238239
func (self *MenuContext) RangeSelectEnabled() bool {
239240
return false
240241
}
242+
243+
func (self *MenuContext) FilterPrefix(tr *i18n.TranslationSet) string {
244+
if self.allowFilteringKeybindings {
245+
return tr.FilterPrefixMenu
246+
}
247+
248+
return self.FilteredListViewModel.FilterPrefix(tr)
249+
}

pkg/gui/controllers/helpers/search_helper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (self *SearchHelper) OpenFilterPrompt(context types.IFilterableContext) err
3535

3636
state.Context = context
3737

38-
self.searchPrefixView().SetContent(self.c.Tr.FilterPrefix)
38+
self.searchPrefixView().SetContent(context.FilterPrefix(self.c.Tr))
3939
promptView := self.promptView()
4040
promptView.ClearTextArea()
4141
self.OnPromptContentChanged("")
@@ -69,7 +69,7 @@ func (self *SearchHelper) DisplayFilterStatus(context types.IFilterableContext)
6969
state.Context = context
7070
searchString := context.GetFilter()
7171

72-
self.searchPrefixView().SetContent(self.c.Tr.FilterPrefix)
72+
self.searchPrefixView().SetContent(context.FilterPrefix(self.c.Tr))
7373

7474
promptView := self.promptView()
7575
keybindingConfig := self.c.UserConfig().Keybinding

pkg/gui/controllers/helpers/window_arrangement_helper.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ func (self *WindowArrangementHelper) GetWindowDimensions(informationStr string,
7979
repoState := self.c.State().GetRepoState()
8080

8181
var searchPrefix string
82-
if repoState.GetSearchState().SearchType() == types.SearchTypeSearch {
83-
searchPrefix = self.c.Tr.SearchPrefix
82+
if filterableContext, ok := repoState.GetSearchState().Context.(types.IFilterableContext); ok {
83+
searchPrefix = filterableContext.FilterPrefix(self.c.Tr)
8484
} else {
85-
searchPrefix = self.c.Tr.FilterPrefix
85+
searchPrefix = self.c.Tr.SearchPrefix
8686
}
8787

8888
args := WindowArrangementArgs{

pkg/gui/types/context.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/jesseduffield/gocui"
55
"github.com/jesseduffield/lazygit/pkg/config"
66
"github.com/jesseduffield/lazygit/pkg/gui/patch_exploring"
7+
"github.com/jesseduffield/lazygit/pkg/i18n"
78
"github.com/jesseduffield/lazygit/pkg/utils"
89
"github.com/sasha-s/go-deadlock"
910
)
@@ -130,6 +131,7 @@ type IFilterableContext interface {
130131
ReApplyFilter(bool)
131132
IsFiltering() bool
132133
IsFilterableContext()
134+
FilterPrefix(tr *i18n.TranslationSet) string
133135
}
134136

135137
type ISearchableContext interface {

pkg/i18n/english.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -816,6 +816,7 @@ type TranslationSet struct {
816816
SearchKeybindings string
817817
SearchPrefix string
818818
FilterPrefix string
819+
FilterPrefixMenu string
819820
ExitSearchMode string
820821
ExitTextFilterMode string
821822
Switch string
@@ -1881,6 +1882,7 @@ func EnglishTranslationSet() *TranslationSet {
18811882
SearchKeybindings: "%s: Next match, %s: Previous match, %s: Exit search mode",
18821883
SearchPrefix: "Search: ",
18831884
FilterPrefix: "Filter: ",
1885+
FilterPrefixMenu: "Filter (prepend '@' to filter keybindings): ",
18841886
WorktreesTitle: "Worktrees",
18851887
WorktreeTitle: "Worktree",
18861888
Switch: "Switch",

0 commit comments

Comments
 (0)