1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

Add an alternate keybinding (default <c-s>) for ConfirmInEditor

The default binding for ConfirmInEditor is <a-enter>, which has two problems:
- some terminal emulators don't support it, including the default terminal on
  Mac (Terminal.app)
- on Windows it is bound to toggling full-screen

Ideally we would use <c-enter> instead (and Command-Enter on Mac), but neither
is possible without https://github.com/gdamore/tcell/issues/671, so for the time
being add an alternate keybinding which works everywhere.

Show both bindings in the footer of the commit description panel if they are
both non-null. While we're at it, fix the footer for the case where either or
both of the keybindings are set to <disabled>.

And finally, change "commit" to "submit" in that footer; we use the same panel
also for creating tags, in which case "commit" is not quite right.
This commit is contained in:
Stefan Haller
2025-05-03 17:22:18 +02:00
parent c3081ef02e
commit 450239d5c8
5 changed files with 35 additions and 5 deletions

View File

@ -516,6 +516,7 @@ keybinding:
goInto: <enter> goInto: <enter>
confirm: <enter> confirm: <enter>
confirmInEditor: <a-enter> confirmInEditor: <a-enter>
confirmInEditor-alt: <c-s>
remove: d remove: d
new: "n" new: "n"
edit: e edit: e

View File

@ -405,6 +405,7 @@ type KeybindingUniversalConfig struct {
GoInto string `yaml:"goInto"` GoInto string `yaml:"goInto"`
Confirm string `yaml:"confirm"` Confirm string `yaml:"confirm"`
ConfirmInEditor string `yaml:"confirmInEditor"` ConfirmInEditor string `yaml:"confirmInEditor"`
ConfirmInEditorAlt string `yaml:"confirmInEditor-alt"`
Remove string `yaml:"remove"` Remove string `yaml:"remove"`
New string `yaml:"new"` New string `yaml:"new"`
Edit string `yaml:"edit"` Edit string `yaml:"edit"`
@ -882,6 +883,7 @@ func GetDefaultConfig() *UserConfig {
GoInto: "<enter>", GoInto: "<enter>",
Confirm: "<enter>", Confirm: "<enter>",
ConfirmInEditor: "<a-enter>", ConfirmInEditor: "<a-enter>",
ConfirmInEditorAlt: "<c-s>",
Remove: "d", Remove: "d",
New: "n", New: "n",
Edit: "e", Edit: "e",

View File

@ -38,6 +38,10 @@ func (self *CommitDescriptionController) GetKeybindings(opts types.KeybindingsOp
Key: opts.GetKey(opts.Config.Universal.ConfirmInEditor), Key: opts.GetKey(opts.Config.Universal.ConfirmInEditor),
Handler: self.confirm, Handler: self.confirm,
}, },
{
Key: opts.GetKey(opts.Config.Universal.ConfirmInEditorAlt),
Handler: self.confirm,
},
{ {
Key: opts.GetKey(opts.Config.CommitMessage.CommitMenu), Key: opts.GetKey(opts.Config.CommitMessage.CommitMenu),
Handler: self.openCommitMenu, Handler: self.openCommitMenu,
@ -63,10 +67,27 @@ func (self *CommitDescriptionController) GetMouseKeybindings(opts types.Keybindi
func (self *CommitDescriptionController) GetOnFocus() func(types.OnFocusOpts) { func (self *CommitDescriptionController) GetOnFocus() func(types.OnFocusOpts) {
return func(types.OnFocusOpts) { return func(types.OnFocusOpts) {
self.c.Views().CommitDescription.Footer = utils.ResolvePlaceholderString(self.c.Tr.CommitDescriptionFooter, footer := ""
map[string]string{ if self.c.UserConfig().Keybinding.Universal.ConfirmInEditor != "<disabled>" || self.c.UserConfig().Keybinding.Universal.ConfirmInEditorAlt != "<disabled>" {
"confirmInEditorKeybinding": keybindings.Label(self.c.UserConfig().Keybinding.Universal.ConfirmInEditor), if self.c.UserConfig().Keybinding.Universal.ConfirmInEditor == "<disabled>" {
}) footer = utils.ResolvePlaceholderString(self.c.Tr.CommitDescriptionFooter,
map[string]string{
"confirmInEditorKeybinding": keybindings.Label(self.c.UserConfig().Keybinding.Universal.ConfirmInEditorAlt),
})
} else if self.c.UserConfig().Keybinding.Universal.ConfirmInEditorAlt == "<disabled>" {
footer = utils.ResolvePlaceholderString(self.c.Tr.CommitDescriptionFooter,
map[string]string{
"confirmInEditorKeybinding": keybindings.Label(self.c.UserConfig().Keybinding.Universal.ConfirmInEditor),
})
} else {
footer = utils.ResolvePlaceholderString(self.c.Tr.CommitDescriptionFooterTwoBindings,
map[string]string{
"confirmInEditorKeybinding1": keybindings.Label(self.c.UserConfig().Keybinding.Universal.ConfirmInEditor),
"confirmInEditorKeybinding2": keybindings.Label(self.c.UserConfig().Keybinding.Universal.ConfirmInEditorAlt),
})
}
}
self.c.Views().CommitDescription.Footer = footer
} }
} }

View File

@ -330,6 +330,7 @@ type TranslationSet struct {
CommitDescriptionTitle string CommitDescriptionTitle string
CommitDescriptionSubTitle string CommitDescriptionSubTitle string
CommitDescriptionFooter string CommitDescriptionFooter string
CommitDescriptionFooterTwoBindings string
CommitHooksDisabledSubTitle string CommitHooksDisabledSubTitle string
LocalBranchesTitle string LocalBranchesTitle string
SearchTitle string SearchTitle string
@ -1410,7 +1411,8 @@ func EnglishTranslationSet() *TranslationSet {
CommitSummaryTitle: "Commit summary", CommitSummaryTitle: "Commit summary",
CommitDescriptionTitle: "Commit description", CommitDescriptionTitle: "Commit description",
CommitDescriptionSubTitle: "Press {{.togglePanelKeyBinding}} to toggle focus, {{.commitMenuKeybinding}} to open menu", CommitDescriptionSubTitle: "Press {{.togglePanelKeyBinding}} to toggle focus, {{.commitMenuKeybinding}} to open menu",
CommitDescriptionFooter: "Press {{.confirmInEditorKeybinding}} to commit", CommitDescriptionFooter: "Press {{.confirmInEditorKeybinding}} to submit",
CommitDescriptionFooterTwoBindings: "Press {{.confirmInEditorKeybinding1}} or {{.confirmInEditorKeybinding2}} to submit",
CommitHooksDisabledSubTitle: "(hooks disabled)", CommitHooksDisabledSubTitle: "(hooks disabled)",
LocalBranchesTitle: "Local branches", LocalBranchesTitle: "Local branches",
SearchTitle: "Search", SearchTitle: "Search",

View File

@ -1310,6 +1310,10 @@
"type": "string", "type": "string",
"default": "\u003ca-enter\u003e" "default": "\u003ca-enter\u003e"
}, },
"confirmInEditor-alt": {
"type": "string",
"default": "\u003cc-s\u003e"
},
"remove": { "remove": {
"type": "string", "type": "string",
"default": "d" "default": "d"