mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-08-24 19:39:16 +02:00
Avoid duplicate key bindings in options map
Sometimes there is a local and a global keybinding for the same key; if both are configured to be shown in the options map, we should only show the local one because it takes precedence. This happens for example for <esc> in a popup, or for <esc> in the focused main view. Note that this is also a problem in the keybindings menu, and we don't solve that here.
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/jesseduffield/generics/set"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/keybindings"
|
||||
@@ -38,7 +39,14 @@ func (self *OptionsMapMgr) renderContextOptionsMap() {
|
||||
currentContextBindings := currentContext.GetKeybindings(self.c.KeybindingsOpts())
|
||||
globalBindings := self.c.Contexts().Global.GetKeybindings(self.c.KeybindingsOpts())
|
||||
|
||||
allBindings := append(currentContextBindings, globalBindings...)
|
||||
currentContextKeys := set.NewFromSlice(
|
||||
lo.Map(currentContextBindings, func(binding *types.Binding, _ int) types.Key {
|
||||
return binding.Key
|
||||
}))
|
||||
|
||||
allBindings := append(currentContextBindings, lo.Filter(globalBindings, func(b *types.Binding, _ int) bool {
|
||||
return !currentContextKeys.Includes(b.Key)
|
||||
})...)
|
||||
|
||||
bindingsToDisplay := lo.Filter(allBindings, func(binding *types.Binding, _ int) bool {
|
||||
return binding.DisplayOnScreen && !binding.IsDisabled()
|
||||
|
Reference in New Issue
Block a user