diff --git a/pkg/gui/options_map.go b/pkg/gui/options_map.go index 890d2f2de1e..962187bfff8 100644 --- a/pkg/gui/options_map.go +++ b/pkg/gui/options_map.go @@ -46,11 +46,11 @@ func (self *OptionsMapMgr) renderContextOptionsMap() { })) allBindings := append(currentContextBindings, lo.Filter(globalBindings, func(b *types.Binding, _ int) bool { - return len(b.Keys) == 0 || !currentContextKeys.Includes(b.Keys[0]) + return len(b.Keys) > 0 && !currentContextKeys.Includes(b.Keys[0]) })...) bindingsToDisplay := lo.Filter(allBindings, func(binding *types.Binding, _ int) bool { - return binding.DisplayOnScreen && !binding.IsDisabled() + return len(binding.Keys) > 0 && binding.DisplayOnScreen && !binding.IsDisabled() }) optionsMap := lo.Map(bindingsToDisplay, func(binding *types.Binding, _ int) bindingInfo { diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index aea37515b6d..2bf2837cdf1 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -466,6 +466,7 @@ var tests = []*components.IntegrationTest{ ui.Accordion, ui.DisableSwitchTabWithPanelJumpKeys, ui.EmptyMenu, + ui.KeybindingSuggestionsDontCrashOnDisabledBindings, ui.KeybindingSuggestionsWhenSwitchingRepos, ui.ModeSpecificKeybindingSuggestions, ui.OpenLinkFailure, diff --git a/pkg/integration/tests/ui/keybinding_suggestions_dont_crash_on_disabled_bindings.go b/pkg/integration/tests/ui/keybinding_suggestions_dont_crash_on_disabled_bindings.go new file mode 100644 index 00000000000..1db31595f1e --- /dev/null +++ b/pkg/integration/tests/ui/keybinding_suggestions_dont_crash_on_disabled_bindings.go @@ -0,0 +1,21 @@ +package ui + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var KeybindingSuggestionsDontCrashOnDisabledBindings = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Filter out keybinding suggestions whose bindings are disabled", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(config *config.AppConfig) { + config.GetUserConfig().Keybinding.Files.StashAllChanges = []string{} + }, + SetupRepo: func(shell *Shell) {}, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files().Focus() + t.Views().Options().Content( + Equals("Commit: c | Reset: D | Keybindings: ?")) + }, +})