diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2016-08-29 14:03:21 +0200 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2016-08-29 14:05:40 +0200 |
commit | 85790fe5ffc81aaead5961abac820492e2e2c871 (patch) | |
tree | 4c6253485bfc1f804d77b953c0fdedeb54bd8a3e /ide/preferences.ml | |
parent | 95212aba8ba0ad76e6ee913566040f5c6e2c291d (diff) |
CoqIDE preserves unknown preferences.
This allows a smoother transition between various versions of CoqIDE, by
not erasing options which are unknown at the present time.
Diffstat (limited to 'ide/preferences.ml')
-rw-r--r-- | ide/preferences.ml | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/ide/preferences.ml b/ide/preferences.ml index 3241a962d..64327d74f 100644 --- a/ide/preferences.ml +++ b/ide/preferences.ml @@ -33,6 +33,7 @@ type obj = { } let preferences : obj Util.String.Map.t ref = ref Util.String.Map.empty +let unknown_preferences : string list Util.String.Map.t ref = ref Util.String.Map.empty class type ['a] repr = object @@ -617,19 +618,19 @@ let save_pref () = then Unix.mkdir (Minilib.coqide_config_home ()) 0o700; let () = try GtkData.AccelMap.save accel_file with _ -> () in let add = Util.String.Map.add in - let (++) x f = f x in let fold key obj accu = add key (obj.get ()) accu in - - (Util.String.Map.fold fold !preferences Util.String.Map.empty) ++ - Config_lexer.print_file pref_file + let prefs = Util.String.Map.fold fold !preferences Util.String.Map.empty in + let prefs = Util.String.Map.fold Util.String.Map.add !unknown_preferences prefs in + Config_lexer.print_file pref_file prefs let load_pref () = let () = try GtkData.AccelMap.load loaded_accel_file with _ -> () in let m = Config_lexer.load_file loaded_pref_file in let iter name v = - try (Util.String.Map.find name !preferences).set v - with _ -> () + if Util.String.Map.mem name !preferences then + try (Util.String.Map.find name !preferences).set v with _ -> () + else unknown_preferences := Util.String.Map.add name v !unknown_preferences in Util.String.Map.iter iter m |