aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar pboutill <pboutill@85f007b7-540e-0410-9357-904b9bb8a0f7>2011-11-21 16:58:35 +0000
committerGravatar pboutill <pboutill@85f007b7-540e-0410-9357-904b9bb8a0f7>2011-11-21 16:58:35 +0000
commit5e62a6a476c925e58e169e43468ed0cee422bb1a (patch)
treec1df85d0afa81d1f06d0a142cf4210ccc928d65b
parent885bddb65bd236d2e1e9e8c5a44cec688036213b (diff)
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
-rw-r--r--Makefile.build10
-rw-r--r--config/Makefile.template1
-rw-r--r--config/coq_config.mli1
-rwxr-xr-xconfigure28
-rw-r--r--ide/coqide_main.ml414
-rw-r--r--ide/minilib.ml10
-rw-r--r--ide/minilib.mli1
-rw-r--r--ide/preferences.ml7
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 *)
(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2010 *)
@@ -224,8 +223,10 @@ let save_pref () =
Config_lexer.print_file pref_file
let load_pref () =
- GtkData.AccelMap.load (Filename.concat !Minilib.coqlib "ide/default_accel_map");
- GtkData.AccelMap.load accel_file;
+ let accel_dir = List.find
+ (fun x -> 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