From 5e62a6a476c925e58e169e43468ed0cee422bb1a Mon Sep 17 00:00:00 2001 From: pboutill Date: Mon, 21 Nov 2011 16:58:35 +0000 Subject: coqide default pref files are by default in /etc/xdg/coq/ git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14715 85f007b7-540e-0410-9357-904b9bb8a0f7 --- Makefile.build | 10 +++++++--- config/Makefile.template | 1 + config/coq_config.mli | 1 + configure | 28 ++++++++++++++++++++++++++++ ide/coqide_main.ml4 | 14 ++++++++------ ide/minilib.ml | 10 ++++++++++ ide/minilib.mli | 1 + ide/preferences.ml | 7 ++++--- 8 files changed, 60 insertions(+), 12 deletions(-) diff --git a/Makefile.build b/Makefile.build index 508776f3b..6c977712f 100644 --- a/Makefile.build +++ b/Makefile.build @@ -303,7 +303,7 @@ COQIDEFLAGS=-thread $(COQIDEINCLUDES) .SUFFIXES:.vo -IDEFILES=ide/coq.png ide/coqide-gtk2rc +IDEFILES=ide/coq.png ide/coqide-gtk2rc ide/mac_default_accel_map coqide-binaries: coqide-$(HASCOQIDE) coqide-no: @@ -352,8 +352,10 @@ install-ide-opt: install-ide-files: $(MKDIR) $(FULLIDELIB) - $(INSTALLLIB) $(IDEFILES) $(FULLIDELIB) - if [ $(IDEOPTINT) = QUARTZ ] ; then $(INSTALLLIB) ide/mac_default_accel_map $(FULLIDELIB)/default_accel_map ; fi + $(INSTALLLIB) ide/coq.png $(FULLIDELIB) + $(MKDIR) $(FULLCONFIGDIR) + $(INSTALLLIB) ide/coqide-gtk2rc $(FULLCONFIGDIR) + if [ $(IDEOPTINT) = QUARTZ ] ; then $(INSTALLLIB) ide/mac_default_accel_map $(FULLCONFIGDIR)/coqide.keys ; fi install-ide-info: $(MKDIR) $(FULLIDELIB) @@ -577,6 +579,7 @@ endif ifdef COQINSTALLPREFIX FULLBINDIR=$(BINDIR:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) FULLCOQLIB=$(COQLIBINSTALL:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) +FULLCONFIGDIR=$(CONFIGDIR:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) FULLMANDIR=$(MANDIR:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) FULLEMACSLIB=$(EMACSLIB:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) FULLCOQDOCDIR=$(COQDOCDIR:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) @@ -584,6 +587,7 @@ FULLDOCDIR=$(DOCDIR:"$(OLDROOT)%="$(COQINSTALLPREFIX)%) else FULLBINDIR=$(BINDIR) FULLCOQLIB=$(COQLIBINSTALL) +FULLCONFIGDIR=$(CONFIGDIR) FULLMANDIR=$(MANDIR) FULLEMACSLIB=$(EMACSLIB) FULLCOQDOCDIR=$(COQDOCDIR) diff --git a/config/Makefile.template b/config/Makefile.template index e9067e98f..11bc3ee7e 100644 --- a/config/Makefile.template +++ b/config/Makefile.template @@ -34,6 +34,7 @@ BUILDLDPATH= # EMACSDIR=path where to put Coq's Emacs mode (coq.el) BINDIR="BINDIRDIRECTORY" COQLIBINSTALL="COQLIBDIRECTORY" +CONFIGDIR="CONFIGDIRDIRECTORY" MANDIR="MANDIRDIRECTORY" DOCDIR="DOCDIRDIRECTORY" EMACSLIB="EMACSLIBDIRECTORY" diff --git a/config/coq_config.mli b/config/coq_config.mli index 4ad8dc58f..1fd361cc8 100644 --- a/config/coq_config.mli +++ b/config/coq_config.mli @@ -9,6 +9,7 @@ val local : bool (* local use (no installation) *) val coqlib : string option (* where the std library is installed *) +val configdir : string option (* where configuration files are installed *) val docdir : string (* where the doc is installed *) val ocaml : string (* names of ocaml binaries *) diff --git a/configure b/configure index 1d6b086f0..4d8912461 100755 --- a/configure +++ b/configure @@ -45,6 +45,7 @@ usage () { printf "\tSpecifies the source directory\n" echo "-bindir" echo "-libdir" + echo "-configdir" echo "-mandir" echo "-docdir" printf "\tSpecifies where to install bin/lib/man/doc files resp.\n" @@ -129,6 +130,7 @@ src_spec=no prefix_spec=no bindir_spec=no libdir_spec=no +configdir_spec=no mandir_spec=no docdir_spec=no emacslib_spec=no @@ -178,6 +180,9 @@ while : ; do -libdir|--libdir) libdir_spec=yes libdir="$2" shift;; + -configdir|--configdir) configdir_spec=yes + configdir="$2" + shift;; -mandir|--mandir) mandir_spec=yes mandir="$2" shift;; @@ -730,6 +735,7 @@ case $ARCH$CYGWIN in win32) bindir_def='C:\coq\bin' libdir_def='C:\coq\lib' + configdir_def='C:\coq\config' mandir_def='C:\coq\man' docdir_def='C:\coq\doc' emacslib_def='C:\coq\emacs' @@ -737,6 +743,7 @@ case $ARCH$CYGWIN in *) bindir_def=/usr/local/bin libdir_def=/usr/local/lib/coq + configdir_def=/etc/xdg/coq mandir_def=/usr/local/man docdir_def=/usr/local/share/doc/coq emacslib_def=/usr/local/share/emacs/site-lisp @@ -780,6 +787,23 @@ case $libdir_spec in *) LIBDIR_OPTION="None";; esac +case $configdir_spec/$local in + yes/*) CONFIGDIR=$configdir;; + */true) CONFIGDIR=$COQTOP/ide + configdir_spec=yes;; + *) printf "Where should I install the Coqide conguration files [$configdir_def]? " + read CONFIGDIR + case $CONFIGDIR in + "") CONFIGDIR=$configdir_def;; + *) configdir_spec=yes;; + esac;; +esac + +case $configdir_spec in + yes) CONFIGDIR_OPTION="Some \"$CONFIGDIR\"";; + *) CONFIGDIR_OPTION="None";; +esac + case $mandir_spec/$prefix_spec/$local in yes/*/*) MANDIR=$mandir;; */yes/*) MANDIR=$prefix/man ;; @@ -908,6 +932,7 @@ echo "" echo " Paths for true installation:" echo " binaries will be copied in $BINDIR" echo " library will be copied in $LIBDIR" +echo " config files will be copied in $CONFIGDIR" echo " man pages will be copied in $MANDIR" echo " documentation will be copied in $DOCDIR" echo " emacs mode will be copied in $EMACSLIB" @@ -977,6 +1002,7 @@ case $ARCH in BINDIR=`echo $BINDIR |sed -e 's|\\\|\\\\\\\|g'` COQSRC=`cygpath -m $COQSRC |sed -e 's|\\\|\\\\\\\|g'` LIBDIR=`echo $LIBDIR |sed -e 's|\\\|\\\\\\\|g'` + CONFIGDIR=`echo $CONFIGDIR |sed -e 's|\\\|\\\\\\\|g'` CAMLBIN=`echo $CAMLBIN |sed -e 's|\\\|\\\\\\\|g'` CAMLLIB=`echo $CAMLLIB |sed -e 's|\\\|\\\\\\\|g'` MANDIR=`echo $MANDIR |sed -e 's|\\\|\\\\\\\|g'` @@ -1012,6 +1038,7 @@ cat << END_OF_COQ_CONFIG > $mlconfig_file let local = $local let coqrunbyteflags = "$COQRUNBYTEFLAGS" let coqlib = $LIBDIR_OPTION +let configdir = $CONFIGDIR_OPTION let docdir = "$DOCDIR" let ocaml = "$ocamlexec" let ocamlc = "$bytecamlc" @@ -1085,6 +1112,7 @@ sed -e "s|LOCALINSTALLATION|$local|" \ -e "s|COQVERSION|$VERSION|" \ -e "s|BINDIRDIRECTORY|$BINDIR|" \ -e "s|COQLIBDIRECTORY|$LIBDIR|" \ + -e "s|CONFIGDIRDIRECTORY|$CONFIGDIR|" \ -e "s|BUILDLDPATH=|$BUILDLDPATH|" \ -e "s|MANDIRDIRECTORY|$MANDIR|" \ -e "s|DOCDIRDIRECTORY|$DOCDIR|" \ diff --git a/ide/coqide_main.ml4 b/ide/coqide_main.ml4 index 36257e8db..650cf9274 100644 --- a/ide/coqide_main.ml4 +++ b/ide/coqide_main.ml4 @@ -73,12 +73,14 @@ let () = Minilib.coqlib := Coq.check_coqlib args; Coqide.sup_args := args; Coqide.ignore_break (); - GtkMain.Rc.add_default_file (Ideutils.lib_ide_file "coqide-gtk2rc"); - (try - GtkMain.Rc.add_default_file (Filename.concat Minilib.xdg_config_home "coqide-gtk2rc"); - with Not_found -> ()); - ignore (GtkMain.Main.init ()); - initmac () ; + (try + let gtkrcdir = List.find + (fun x -> Sys.file_exists (Filename.concat x "coqide-gtk2rc")) + Minilib.xdg_config_dirs in + GtkMain.Rc.add_default_file (Filename.concat gtkrcdir "coqide-gtk2rc"); + with Not_found -> ()); + ignore (GtkMain.Main.init ()); + initmac () ; (* GtkData.AccelGroup.set_default_mod_mask (Some [`CONTROL;`SHIFT;`MOD1;`MOD3;`MOD4]);*) ignore ( diff --git a/ide/minilib.ml b/ide/minilib.ml index 65ff4378e..4896cbd4b 100644 --- a/ide/minilib.ml +++ b/ide/minilib.ml @@ -64,6 +64,10 @@ let string_map f s = let subst_command_placeholder s t = Str.global_replace (Str.regexp_string "%s") t s +let path_to_list p = + let sep = Str.regexp (if Sys.os_type = "Win32" then ";" else ":") in + Str.split sep p + (* On win32, the home directory is probably not in $HOME, but in some other environment variable *) @@ -78,6 +82,12 @@ let xdg_config_home = with Not_found -> Filename.concat home "/.config/coq" +let xdg_config_dirs = + xdg_config_home :: (try + List.map (fun dir -> Filename.concat dir "coq") (path_to_list (Sys.getenv "XDG_CONFIG_DIRS")) + with Not_found -> "/etc/xdg/coq"::(match Coq_config.configdir with |None -> [] |Some d -> [d])) + + let coqlib = ref "" let coqtop_path = ref "" diff --git a/ide/minilib.mli b/ide/minilib.mli index 749180756..60a5eed48 100644 --- a/ide/minilib.mli +++ b/ide/minilib.mli @@ -23,6 +23,7 @@ val subst_command_placeholder : string -> string -> string val home : string val xdg_config_home : string +val xdg_config_dirs : string list val coqlib : string ref val coqtop_path : string ref diff --git a/ide/preferences.ml b/ide/preferences.ml index 14608f984..103c24848 100644 --- a/ide/preferences.ml +++ b/ide/preferences.ml @@ -1,4 +1,3 @@ - (************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* Sys.file_exists (Filename.concat x "coqide.keys")) + Minilib.xdg_config_dirs in + GtkData.AccelMap.load (Filename.concat accel_dir "coqide.keys"); let p = !current in let m = Config_lexer.load_file pref_file in -- cgit v1.2.3