package main import "core:fmt" import "core:os" import "core:strings" import json "core:encoding/json" Editor_Settings :: struct { font_path: string, } editor_settings_load :: proc() -> Editor_Settings { settings := Editor_Settings{} path, ok := editor_settings_path(context.temp_allocator) if !ok do return settings data, err := os.read_entire_file(path, context.allocator) if err != nil do return settings defer delete(data) value, parse_err := json.parse_string(string(data), .JSON, true) if parse_err != nil do return settings defer json.destroy_value(value) font_path, has_font_path := json_get_string(value, "fontPath") if has_font_path && len(strings.trim_space(font_path)) > 0 { settings.font_path = strings.clone(strings.trim_space(font_path)) } return settings } editor_settings_destroy :: proc(settings: ^Editor_Settings) { delete(settings.font_path) } editor_settings_path :: proc(allocator := context.allocator) -> (string, bool) { if env := os.get_env("NATIVE_EDITOR_SETTINGS", allocator); len(env) > 0 { return env, true } home := os.get_env("HOME", allocator) if len(home) == 0 do return "", false return fmt.aprintf("%s/.config/native-kotlin-editor/settings.json", home), true }