diff --git a/kittens/ssh/utils.go b/kittens/ssh/utils.go index 6c37566f4..d50db81ca 100644 --- a/kittens/ssh/utils.go +++ b/kittens/ssh/utils.go @@ -224,7 +224,7 @@ type KittyOpts struct { Term, Shell_integration string } -func read_relevant_kitty_opts() KittyOpts { +func read_relevant_kitty_opts(override_conf_path ...string) KittyOpts { ans := KittyOpts{Term: kitty.KittyConfigDefaults.Term, Shell_integration: kitty.KittyConfigDefaults.Shell_integration} handle_line := func(key, val string) error { switch key { @@ -235,7 +235,7 @@ func read_relevant_kitty_opts() KittyOpts { } return nil } - config.ReadKittyConfig(handle_line) + config.ReadKittyConfig(handle_line, override_conf_path...) return ans } diff --git a/kittens/ssh/utils_test.go b/kittens/ssh/utils_test.go index a36c0df88..09197acbb 100644 --- a/kittens/ssh/utils_test.go +++ b/kittens/ssh/utils_test.go @@ -9,7 +9,6 @@ import ( "path/filepath" "testing" - "kitty/tools/config" "kitty/tools/utils/shlex" "github.com/google/go-cmp/cmp" @@ -67,10 +66,8 @@ func TestParseSSHArgs(t *testing.T) { func TestRelevantKittyOpts(t *testing.T) { tdir := t.TempDir() path := filepath.Join(tdir, "kitty.conf") - config.OverrideEffectiveConfigPath = path - defer func() { config.OverrideEffectiveConfigPath = "" }() os.WriteFile(path, []byte("term XXX\nshell_integration changed\nterm abcd"), 0o600) - rko := read_relevant_kitty_opts() + rko := read_relevant_kitty_opts(path) if rko.Term != "abcd" { t.Fatalf("Unexpected TERM: %s", RelevantKittyOpts().Term) } diff --git a/tools/config/api.go b/tools/config/api.go index 2ed51c95a..374dbc971 100644 --- a/tools/config/api.go +++ b/tools/config/api.go @@ -403,9 +403,12 @@ func ReloadConfigInKitty(in_parent_only bool) error { var OverrideEffectiveConfigPath string -func ReadKittyConfig(line_handler func(key, val string) error) error { +func ReadKittyConfig(line_handler func(key, val string) error, override_effective_config_path ...string) error { kp := os.Getenv("KITTY_PID") - kitty_conf_path := OverrideEffectiveConfigPath + kitty_conf_path := "" + if len(override_effective_config_path) > 0 { + kitty_conf_path = override_effective_config_path[0] + } if _, err := strconv.Atoi(kp); err == nil && kitty_conf_path == "" { effective_config_path := filepath.Join(utils.CacheDir(), "effective-config", kp) if unix.Access(effective_config_path, unix.R_OK) == nil {