From 578ee9a31b1ff39c30d363510c42433cb297259f Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Thu, 2 Apr 2026 16:45:22 +0200 Subject: [PATCH] Change a-enter keybinding to m-enter on mac, and c-enter elsewhere --- docs-master/Config.md | 4 +++- pkg/app/entry_point.go | 2 +- pkg/config/app_config.go | 3 ++- pkg/config/user_config.go | 17 +++++++++++++++-- schema-master/config.json | 3 ++- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs-master/Config.md b/docs-master/Config.md index 265ba2311..6d2b41fb4 100644 --- a/docs-master/Config.md +++ b/docs-master/Config.md @@ -637,7 +637,9 @@ keybinding: confirm: confirmMenu: confirmSuggestion: - confirmInEditor: + + # on Mac + confirmInEditor: confirmInEditor-alt: remove: d new: "n" diff --git a/pkg/app/entry_point.go b/pkg/app/entry_point.go index 3a692ac53..8b1a2a040 100644 --- a/pkg/app/entry_point.go +++ b/pkg/app/entry_point.go @@ -102,7 +102,7 @@ func Start(buildInfo *BuildInfo, integrationTest integrationTypes.IntegrationTes if cliArgs.PrintDefaultConfig { var buf bytes.Buffer encoder := yaml.NewEncoder(&buf) - err := encoder.Encode(config.GetDefaultConfig()) + err := encoder.Encode(config.GetDefaultConfigForPlatform(runtime.GOOS)) if err != nil { log.Fatal(err.Error()) } diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index 038d6c117..27ee38c0b 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -7,6 +7,7 @@ import ( "os" "path/filepath" "reflect" + "runtime" "strings" "time" @@ -136,7 +137,7 @@ func findOrCreateConfigDir() (string, error) { } func loadUserConfigWithDefaults(configFiles []*ConfigFile, isGuiInitialized bool) (*UserConfig, error) { - return loadUserConfig(configFiles, GetDefaultConfig(), isGuiInitialized) + return loadUserConfig(configFiles, GetDefaultConfigForPlatform(runtime.GOOS), isGuiInitialized) } func loadUserConfig(configFiles []*ConfigFile, base *UserConfig, isGuiInitialized bool) (*UserConfig, error) { diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index 2106e2ad2..2298f7205 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -461,7 +461,7 @@ type KeybindingUniversalConfig struct { Confirm string `yaml:"confirm"` ConfirmMenu string `yaml:"confirmMenu"` ConfirmSuggestion string `yaml:"confirmSuggestion"` - ConfirmInEditor string `yaml:"confirmInEditor"` + ConfirmInEditor string `yaml:"confirmInEditor"` // on Mac ConfirmInEditorAlt string `yaml:"confirmInEditor-alt"` Remove string `yaml:"remove"` New string `yaml:"new"` @@ -766,6 +766,12 @@ type IconProperties struct { } func GetDefaultConfig() *UserConfig { + // This is only for tests; we don't want to use the test runner's host platform in that case, + // but always use the fallback bindings + return GetDefaultConfigForPlatform("") +} + +func GetDefaultConfigForPlatform(platform string) *UserConfig { return &UserConfig{ Gui: GuiConfig{ ScrollHeight: 2, @@ -934,7 +940,7 @@ func GetDefaultConfig() *UserConfig { Confirm: "", ConfirmMenu: "", ConfirmSuggestion: "", - ConfirmInEditor: "", + ConfirmInEditor: platformKeyBinding(platform, map[string]string{"darwin": ""}, ""), ConfirmInEditorAlt: "", Remove: "d", New: "n", @@ -1081,3 +1087,10 @@ func GetDefaultConfig() *UserConfig { }, } } + +func platformKeyBinding(platform string, bindingByPlatform map[string]string, fallback string) string { + if binding, ok := bindingByPlatform[platform]; ok { + return binding + } + return fallback +} diff --git a/schema-master/config.json b/schema-master/config.json index 590a1a9b9..ece571bdf 100644 --- a/schema-master/config.json +++ b/schema-master/config.json @@ -1440,7 +1440,8 @@ }, "confirmInEditor": { "type": "string", - "default": "\u003ca-enter\u003e" + "description": "\u003cm-enter\u003e on Mac", + "default": "\u003cc-enter\u003e" }, "confirmInEditor-alt": { "type": "string",