unicode_input: Only serialize favorites if no user config exists

This commit is contained in:
Kovid Goyal 2023-04-26 16:02:18 +05:30
parent a7b4d07601
commit c2fc4eadc8
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -92,6 +92,7 @@ func serialize_favorites(favs []rune) string {
} }
var loaded_favorites []rune var loaded_favorites []rune
var favorites_loaded_from_user_config bool
func favorites_path() string { func favorites_path() string {
return filepath.Join(utils.ConfigDir(), "unicode-input-favorites.conf") return filepath.Join(utils.ConfigDir(), "unicode-input-favorites.conf")
@ -102,8 +103,10 @@ func load_favorites(refresh bool) []rune {
raw, err := os.ReadFile(favorites_path()) raw, err := os.ReadFile(favorites_path())
if err == nil { if err == nil {
loaded_favorites = parse_favorites(utils.UnsafeBytesToString(raw)) loaded_favorites = parse_favorites(utils.UnsafeBytesToString(raw))
favorites_loaded_from_user_config = true
} else { } else {
loaded_favorites = DEFAULT_SET loaded_favorites = DEFAULT_SET
favorites_loaded_from_user_config = false
} }
} }
return loaded_favorites return loaded_favorites
@ -427,8 +430,9 @@ func (self *handler) handle_favorites_key_event(event *loop.KeyEvent) {
self.lp.Quit(1) self.lp.Quit(1)
return return
} }
raw := serialize_favorites(load_favorites(false))
fp := favorites_path() fp := favorites_path()
if len(load_favorites(false)) == 0 || !favorites_loaded_from_user_config {
raw := serialize_favorites(load_favorites(false))
err = os.MkdirAll(filepath.Dir(fp), 0o755) err = os.MkdirAll(filepath.Dir(fp), 0o755)
if err != nil { if err != nil {
self.err = fmt.Errorf("Failed to create config directory to store favorites in: %w", err) self.err = fmt.Errorf("Failed to create config directory to store favorites in: %w", err)
@ -441,6 +445,7 @@ func (self *handler) handle_favorites_key_event(event *loop.KeyEvent) {
self.lp.Quit(1) self.lp.Quit(1)
return return
} }
}
err = self.lp.SuspendAndRun(func() error { err = self.lp.SuspendAndRun(func() error {
cmd := exec.Command(exe, "edit-in-kitty", "--type=overlay", fp) cmd := exec.Command(exe, "edit-in-kitty", "--type=overlay", fp)
cmd.Stdin = os.Stdin cmd.Stdin = os.Stdin