show namesake for child views

This commit is contained in:
Jesse Duffield
2022-03-26 18:00:46 +11:00
parent 13b90ac37f
commit ad7703df65
32 changed files with 766 additions and 649 deletions
+20 -19
View File
@@ -131,16 +131,19 @@ func getBindingSections(bindings []*types.Binding, tr *i18n.TranslationSet) []*b
return getHeaders(binding, tr)
})
bindingGroups := maps.MapToSlice(bindingsByHeader, func(header header, hBindings []*types.Binding) headerWithBindings {
uniqBindings := lo.UniqBy(hBindings, func(binding *types.Binding) string {
return binding.Description + gui.GetKeyDisplay(binding.Key)
})
bindingGroups := maps.MapToSlice(
bindingsByHeader,
func(header header, hBindings []*types.Binding) headerWithBindings {
uniqBindings := lo.UniqBy(hBindings, func(binding *types.Binding) string {
return binding.Description + gui.GetKeyDisplay(binding.Key)
})
return headerWithBindings{
header: header,
bindings: uniqBindings,
}
})
return headerWithBindings{
header: header,
bindings: uniqBindings,
}
},
)
slices.SortFunc(bindingGroups, func(a, b headerWithBindings) bool {
if a.header.priority != b.header.priority {
@@ -169,18 +172,11 @@ func getHeaders(binding *types.Binding, tr *i18n.TranslationSet) []header {
}
if len(binding.Contexts) == 0 {
translatedView := localisedTitle(tr, binding.ViewName)
title := fmt.Sprintf("%s %s", translatedView, tr.Panel)
return []header{{priority: 1, title: title}}
return []header{}
}
return slices.Map(binding.Contexts, func(context string) header {
translatedView := localisedTitle(tr, binding.ViewName)
translatedContextName := localisedTitle(tr, context)
title := fmt.Sprintf("%s %s (%s)", translatedView, tr.Panel, translatedContextName)
return header{priority: 1, title: title}
return header{priority: 1, title: localisedTitle(tr, context)}
})
}
@@ -205,7 +201,12 @@ func formatTitle(title string) string {
func formatBinding(binding *types.Binding) string {
if binding.Alternative != "" {
return fmt.Sprintf(" <kbd>%s</kbd>: %s (%s)\n", gui.GetKeyDisplay(binding.Key), binding.Description, binding.Alternative)
return fmt.Sprintf(
" <kbd>%s</kbd>: %s (%s)\n",
gui.GetKeyDisplay(binding.Key),
binding.Description,
binding.Alternative,
)
}
return fmt.Sprintf(" <kbd>%s</kbd>: %s\n", gui.GetKeyDisplay(binding.Key), binding.Description)
}
+28 -42
View File
@@ -26,43 +26,23 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "stage file",
},
},
expected: []*bindingSection{
{
title: "Files Panel",
title: "Files",
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "stage file",
},
},
},
},
},
{
testName: "one binding with context",
bindings: []*types.Binding{
{
ViewName: "files",
Description: "stage file",
Contexts: []string{"submodules"},
},
},
expected: []*bindingSection{
{
title: "Files Panel (Submodules)",
bindings: []*types.Binding{
{
ViewName: "files",
Description: "stage file",
Contexts: []string{"submodules"},
},
},
},
},
},
{
testName: "global binding",
bindings: []*types.Binding{
@@ -101,23 +81,10 @@ func TestGetBindingSections(t *testing.T) {
Description: "drop submodule",
Contexts: []string{"submodules"},
},
{
ViewName: "commits",
Description: "revert commit",
},
},
expected: []*bindingSection{
{
title: "Commits Panel",
bindings: []*types.Binding{
{
ViewName: "commits",
Description: "revert commit",
},
},
},
{
title: "Files Panel (Files)",
title: "Files",
bindings: []*types.Binding{
{
ViewName: "files",
@@ -132,7 +99,7 @@ func TestGetBindingSections(t *testing.T) {
},
},
{
title: "Files Panel (Submodules)",
title: "Submodules",
bindings: []*types.Binding{
{
ViewName: "files",
@@ -148,19 +115,23 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
Contexts: []string{"files"},
Description: "unstage file",
},
{
ViewName: "files",
Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "revert commit",
},
},
@@ -170,29 +141,33 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
},
},
{
title: "Commits Panel",
title: "Commits",
bindings: []*types.Binding{
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "revert commit",
},
},
},
{
title: "Files Panel",
title: "Files",
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
Contexts: []string{"files"},
Description: "unstage file",
},
},
@@ -204,28 +179,34 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
Contexts: []string{"files"},
Description: "unstage file",
},
{
ViewName: "files",
Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "revert commit",
},
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "page up",
Tag: "navigation",
},
@@ -236,34 +217,39 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "page up",
Tag: "navigation",
},
},
},
{
title: "Commits Panel",
title: "Commits",
bindings: []*types.Binding{
{
ViewName: "commits",
Contexts: []string{"commits"},
Description: "revert commit",
},
},
},
{
title: "Files Panel",
title: "Files",
bindings: []*types.Binding{
{
ViewName: "files",
Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
Contexts: []string{"files"},
Description: "unstage file",
},
},