mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +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