@@ -2,31 +2,65 @@ package handler
22
33import (
44 "fmt"
5+ "time"
56
67 "github.com/termkit/gama/internal/config"
78
89 teakey "github.com/charmbracelet/bubbles/key"
910)
1011
12+ // ---------------------------------------------------------------------------
13+
14+ type handlerKeyMap struct {
15+ SwitchTabRight teakey.Binding
16+ SwitchTabLeft teakey.Binding
17+ Quit teakey.Binding
18+ }
19+
1120func loadConfig () * config.Config {
1221 cfg , err := config .LoadConfig ()
1322 if err != nil {
14- panic (fmt .Sprintf ("failed to load config: %v" , err ))
23+ // Return a config with default values instead of panicking
24+ cfg = & config.Config {}
25+ cfg = fillDefaultShortcuts (cfg )
26+ cfg = fillDefaultSettings (cfg )
1527 }
1628 return cfg
1729}
1830
19- // ---------------------------------------------------------------------------
20-
21- type handlerKeyMap struct {
22- SwitchTabRight teakey.Binding
23- SwitchTabLeft teakey.Binding
24- Quit teakey.Binding
31+ func fillDefaultShortcuts (cfg * config.Config ) * config.Config {
32+ if cfg .Shortcuts .SwitchTabRight == "" {
33+ cfg .Shortcuts .SwitchTabRight = "shift+right"
34+ }
35+ if cfg .Shortcuts .SwitchTabLeft == "" {
36+ cfg .Shortcuts .SwitchTabLeft = "shift+left"
37+ }
38+ if cfg .Shortcuts .Quit == "" {
39+ cfg .Shortcuts .Quit = "ctrl+c"
40+ }
41+ if cfg .Shortcuts .Refresh == "" {
42+ cfg .Shortcuts .Refresh = "ctrl+r"
43+ }
44+ if cfg .Shortcuts .Enter == "" {
45+ cfg .Shortcuts .Enter = "enter"
46+ }
47+ if cfg .Shortcuts .Tab == "" {
48+ cfg .Shortcuts .Tab = "tab"
49+ }
50+ if cfg .Shortcuts .LiveMode == "" {
51+ cfg .Shortcuts .LiveMode = "ctrl+l"
52+ }
53+ return cfg
2554}
2655
27- var handlerKeys = func () handlerKeyMap {
28- cfg := loadConfig ()
56+ func fillDefaultSettings (cfg * config.Config ) * config.Config {
57+ if cfg .Settings .LiveMode .Interval == 0 {
58+ cfg .Settings .LiveMode .Interval = 15 * time .Second
59+ }
60+ return cfg
61+ }
2962
63+ func createHandlerKeys (cfg * config.Config ) handlerKeyMap {
3064 return handlerKeyMap {
3165 SwitchTabRight : teakey .NewBinding (
3266 teakey .WithKeys (cfg .Shortcuts .SwitchTabRight ),
@@ -38,7 +72,7 @@ var handlerKeys = func() handlerKeyMap {
3872 teakey .WithKeys (cfg .Shortcuts .Quit ),
3973 ),
4074 }
41- }()
75+ }
4276
4377// ---------------------------------------------------------------------------
4478
0 commit comments