From 098200d7e14805e8ae8b8f3873faec3ee3c096ad Mon Sep 17 00:00:00 2001 From: pboutill Date: Wed, 12 Sep 2012 14:10:37 +0000 Subject: Coqide uses Glib to get the XDG_DATA/CONFIG_HOME/DIRS git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15793 85f007b7-540e-0410-9357-904b9bb8a0f7 --- Makefile.common | 2 +- ide/coqide.ml | 4 ++-- ide/ideutils.ml | 2 +- ide/minilib.ml | 15 +++++++++++++++ ide/minilib.mli | 3 +++ ide/preferences.ml | 18 +++++++++--------- ide/project_file.ml4 | 15 +++++++-------- ide/utils/configwin_messages.ml | 2 +- 8 files changed, 39 insertions(+), 22 deletions(-) diff --git a/Makefile.common b/Makefile.common index a64399cd8..63d194a4b 100644 --- a/Makefile.common +++ b/Makefile.common @@ -244,7 +244,7 @@ COQDEPCMO:=$(COQENVCMO) tools/coqdep_lexer.cmo tools/coqdep_common.cmo tools/coq COQDOCCMO:=lib/clib.cma $(addprefix tools/coqdoc/, \ cdglobals.cmo alpha.cmo index.cmo tokens.cmo output.cmo cpretty.cmo main.cmo ) -COQMAKEFILECMO:=lib/clib.cma ide/minilib.cmo ide/project_file.cmo tools/coq_makefile.cmo +COQMAKEFILECMO:=lib/clib.cma ide/project_file.cmo tools/coq_makefile.cmo ########################################################################### # vo files diff --git a/ide/coqide.ml b/ide/coqide.ml index 95ef38d37..b2fd0c1d7 100644 --- a/ide/coqide.ml +++ b/ide/coqide.ml @@ -1408,7 +1408,7 @@ let main files = (try let icon_image = Filename.concat (List.find (fun x -> Sys.file_exists (Filename.concat x "coq.png")) - (Envars.xdg_data_dirs Ideutils.flash_info)) "coq.png" in + (Minilib.coqide_data_dirs ())) "coq.png" in let icon = GdkPixbuf.from_file icon_image in w#set_icon (Some icon) with _ -> ()); @@ -2151,7 +2151,7 @@ let main files = try let image = Filename.concat (List.find (fun x -> Sys.file_exists (Filename.concat x "coq.png")) - (Envars.xdg_data_dirs Ideutils.flash_info)) "coq.png" in + (Minilib.coqide_data_dirs ())) "coq.png" in let startup_image = GdkPixbuf.from_file image in dialog#set_logo startup_image with _ -> () diff --git a/ide/ideutils.ml b/ide/ideutils.ml index 7b39972bd..949a8774d 100644 --- a/ide/ideutils.ml +++ b/ide/ideutils.ml @@ -296,7 +296,7 @@ let url_for_keyword = let cin = try let index_urls = Filename.concat (List.find (fun x -> Sys.file_exists (Filename.concat x "index_urls.txt")) - (Envars.xdg_config_dirs flash_info)) "index_urls.txt" in + (Minilib.coqide_config_dirs ())) "index_urls.txt" in open_in index_urls with Not_found -> let doc_url = doc_url () in diff --git a/ide/minilib.ml b/ide/minilib.ml index 825fc58cc..6a960e266 100644 --- a/ide/minilib.ml +++ b/ide/minilib.ml @@ -38,3 +38,18 @@ let log ?(level = `DEBUG) msg = try Printf.eprintf "[%s] %s\n%!" prefix msg with _ -> () end + +let coqify d = Filename.concat d "coq" + +let coqide_config_home () = + coqify (Glib.get_user_config_dir ()) + +let coqide_data_dirs () = + coqify (Glib.get_user_data_dir ()) + :: List.map coqify (Glib.get_system_data_dirs ()) + @ Option.List.cons Coq_config.datadir [] + +let coqide_config_dirs () = + coqide_config_home () + :: List.map coqify (Glib.get_system_config_dirs ()) + @ Option.List.cons Coq_config.configdir [] diff --git a/ide/minilib.mli b/ide/minilib.mli index c84321211..0508dbf83 100644 --- a/ide/minilib.mli +++ b/ide/minilib.mli @@ -22,3 +22,6 @@ val debug : bool ref val log : ?level:level -> string -> unit +val coqide_config_home : unit -> string +val coqide_config_dirs : unit -> string list +val coqide_data_dirs : unit -> string list diff --git a/ide/preferences.ml b/ide/preferences.ml index 9e226708f..3a2204601 100644 --- a/ide/preferences.ml +++ b/ide/preferences.ml @@ -9,28 +9,28 @@ open Configwin open Printf -let pref_file = Filename.concat (Envars.xdg_config_home Minilib.log) "coqiderc" -let accel_file = Filename.concat (Envars.xdg_config_home Minilib.log) "coqide.keys" +let pref_file = Filename.concat (Minilib.coqide_config_home ()) "coqiderc" +let accel_file = Filename.concat (Minilib.coqide_config_home ()) "coqide.keys" let lang_manager = GSourceView2.source_language_manager ~default:true let () = lang_manager#set_search_path - ((Envars.xdg_data_dirs Minilib.log)@lang_manager#search_path) + ((Minilib.coqide_data_dirs ())@lang_manager#search_path) let style_manager = GSourceView2.source_style_scheme_manager ~default:true let () = style_manager#set_search_path - ((Envars.xdg_data_dirs Minilib.log)@style_manager#search_path) + ((Minilib.coqide_data_dirs ())@style_manager#search_path) let get_config_file name = let find_config dir = Sys.file_exists (Filename.concat dir name) in - let config_dir = List.find find_config (Envars.xdg_config_dirs Minilib.log) in + let config_dir = List.find find_config (Minilib.coqide_config_dirs ()) in Filename.concat config_dir name (* Small hack to handle v8.3 to v8.4 change in configuration file *) let loaded_pref_file = try get_config_file "coqiderc" - with Not_found -> Filename.concat (Envars.home Minilib.log) ".coqiderc" + with Not_found -> Filename.concat (Option.default "" (Glib.get_home_dir ())) ".coqiderc" let loaded_accel_file = try get_config_file "coqide.keys" - with Not_found -> Filename.concat (Envars.home Minilib.log) ".coqide.keys" + with Not_found -> Filename.concat (Option.default "" (Glib.get_home_dir ())) ".coqide.keys" let mod_to_str (m:Gdk.Tags.modifier) = match m with @@ -231,8 +231,8 @@ let current = { } let save_pref () = - if not (Sys.file_exists (Envars.xdg_config_home Minilib.log)) - then Unix.mkdir (Envars.xdg_config_home Minilib.log) 0o700; + if not (Sys.file_exists (Minilib.coqide_config_home ())) + then Unix.mkdir (Minilib.coqide_config_home ()) 0o700; let () = try GtkData.AccelMap.save accel_file with _ -> () in let p = current in diff --git a/ide/project_file.ml4 b/ide/project_file.ml4 index 6ae5e08be..14af18d37 100644 --- a/ide/project_file.ml4 +++ b/ide/project_file.ml4 @@ -53,19 +53,19 @@ let rec process_cmd_line orig_dir ((project_file,makefile,install,opt) as opts) | ("-full"|"-opt") :: r -> process_cmd_line orig_dir (project_file,makefile,install,true) l r | "-impredicative-set" :: r -> - Minilib.log "Please now use \"-arg -impredicative-set\" instead of \"-impredicative-set\" alone to be more uniform."; + Pp.msg_warning (Pp.str "Please now use \"-arg -impredicative-set\" instead of \"-impredicative-set\" alone to be more uniform."); process_cmd_line orig_dir opts (Arg "-impredicative-set" :: l) r | "-no-install" :: r -> - Minilib.log "Option -no-install is deprecated. Use \"-install none\" instead"; + Pp.msg_warning (Pp.(++) (Pp.str "Option -no-install is deprecated.") (Pp.(++) (Pp.spc ()) (Pp.str "Use \"-install none\" instead"))); process_cmd_line orig_dir (project_file,makefile,NoInstall,opt) l r | "-install" :: d :: r -> - if install <> UnspecInstall then Minilib.log "Warning: -install sets more than once."; + if install <> UnspecInstall then Pp.msg_warning (Pp.str "-install sets more than once."); let install = match d with | "user" -> UserInstall | "none" -> NoInstall | "global" -> TraditionalInstall - | _ -> Minilib.log (String.concat "" ["Warning: invalid option '"; d; "' passed to -install."]); + | _ -> Pp.msg_warning (Pp.(++) (Pp.str "invalid option '") (Pp.(++) (Pp.str d) (Pp.str "' passed to -install."))); install in process_cmd_line orig_dir (project_file,makefile,install,opt) l r @@ -81,8 +81,8 @@ let rec process_cmd_line orig_dir ((project_file,makefile,install,opt) as opts) let file = CUnix.remove_path_dot (CUnix.correct_path file orig_dir) in let () = match project_file with | None -> () - | Some _ -> Minilib.log - "Warning: Several features will not work with multiple project files." + | Some _ -> Pp.msg_warning (Pp.str + "Several features will not work with multiple project files.") in let (opts',l') = process_cmd_line (Filename.dirname file) (Some file,makefile,install,opt) l (parse file) in process_cmd_line orig_dir opts' l' r @@ -96,7 +96,7 @@ let rec process_cmd_line orig_dir ((project_file,makefile,install,opt) as opts) let () = match makefile with |None -> () |Some f -> - Minilib.log ("Warning: Only one output file is genererated. "^f^" will not be.") + Pp.msg_warning (Pp.(++) (Pp.str "Only one output file is genererated. ") (Pp.(++) (Pp.str f) (Pp.str " will not be."))) in process_cmd_line orig_dir (project_file,Some file,install,opt) l r end | v :: "=" :: def :: r -> @@ -182,7 +182,6 @@ let args_from_project file project_files default_name = if contains_file dir v_files then build_cmd_line i_inc r_inc args else let newdir = Filename.dirname dir in - Minilib.log newdir; if dir = newdir then [] else find_project_file newdir with Sys_error s -> let newdir = Filename.dirname dir in diff --git a/ide/utils/configwin_messages.ml b/ide/utils/configwin_messages.ml index dbb490033..de1b4721d 100644 --- a/ide/utils/configwin_messages.ml +++ b/ide/utils/configwin_messages.ml @@ -30,7 +30,7 @@ let version = "1.2";; let html_config = "Configwin bindings configurator for html parameters" -let home = Envars.home ~warn:Minilib.log +let home = Option.default "" (Glib.get_home_dir ()) let mCapture = "Capture";; let mType_key = "Type key" ;; -- cgit v1.2.3