aboutsummaryrefslogtreecommitdiffhomepage
path: root/generic
diff options
context:
space:
mode:
authorGravatar David Aspinall <da@inf.ed.ac.uk>2002-07-19 11:58:48 +0000
committerGravatar David Aspinall <da@inf.ed.ac.uk>2002-07-19 11:58:48 +0000
commitfde5614f9c9922a8589e7c4eb9d6543bedf46f47 (patch)
tree5fd74dc6553477a0330fa2e793887f6b73ae02cb /generic
parent49fda3fd12b9985da15a52756e4a18fd2bc5ba2b (diff)
Set version tag for new release.
Diffstat (limited to 'generic')
-rw-r--r--generic/proof-site.el393
1 files changed, 0 insertions, 393 deletions
diff --git a/generic/proof-site.el b/generic/proof-site.el
index d4e83b25..e69de29b 100644
--- a/generic/proof-site.el
+++ b/generic/proof-site.el
@@ -1,393 +0,0 @@
-;; proof-site.el -- Loading stubs for Proof General.
-;; Configuration for site and choice of provers.
-;;
-;; Copyright (C) 1998-2002 LFCS Edinburgh.
-;; Author: David Aspinall <da@dcs.ed.ac.uk>
-;; License: GPL (GNU GENERAL PUBLIC LICENSE)
-;;
-;; $Id$
-;;
-;; NB: Normally you will not need to edit this file.
-;;
-
-(if (featurep 'proof-site)
- nil ; don't load twice
-
-(if (or (not (boundp 'emacs-major-version))
- (< emacs-major-version 20))
- (error "Proof General is not compatible with Emacs %s" emacs-version))
-
-(defgroup proof-general nil
- "Customization of Proof General."
- :group 'external
- :group 'processes
- :prefix "proof-")
-
-
-;; This customization group gathers together
-;; the internals of Proof General which control
-;; configuration to different proof assistants.
-;; This is for development purposes rather than
-;; user-level customization, so this group does
-;; not belong to 'proof-general (or any other group).
-(defgroup proof-general-internals nil
- "Customization of Proof General internals."
- :prefix "proof-")
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Directories
-;;
-(defun proof-home-directory-fn ()
- "Used to set proof-home-directory"
- (let ((s (getenv "PROOFGENERAL_HOME")))
- (if s
- (if (string-match "/$" s) s (concat s "/"))
- (let ((curdir
- (or
- (and load-in-progress (file-name-directory load-file-name))
- (file-name-directory (buffer-file-name)))))
- (file-name-directory (substring curdir 0 -1))))))
-
-(defcustom proof-home-directory
- (proof-home-directory-fn)
- "Directory where Proof General is installed. Ends with slash.
-Default value taken from environment variable `PROOFGENERAL_HOME' if set,
-otherwise based on where the file `proof-site.el' was loaded from.
-You can use customize to set this variable."
- :type 'directory
- :group 'proof-general-internals)
-
-(defcustom proof-images-directory
- (concat proof-home-directory "images/")
- "Where Proof General image files are installed. Ends with slash."
- :type 'directory
- :group 'proof-general-internals)
-
-(defcustom proof-info-directory
- (concat proof-home-directory "doc/")
- "Where Proof General Info files are installed. Ends with slash."
- :type 'directory
- :group 'proof-general-internals)
-
-;; Add the info directory to the end of Emacs Info path if need be.
-;; It's easier to do this after Info has loaded because of the
-;; complicated way the Info-directory-list is set.
-
-(eval-after-load
- "info"
- '(or (member proof-info-directory Info-directory-list)
- (progn
- (setq Info-directory-list
- (cons proof-info-directory
- Info-directory-list))
- ;; Clear cache of info dir
- (setq Info-dir-contents nil))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Master table of supported proof assistants.
-;;
-(defcustom proof-assistant-table
- (apply
- 'append
- (mapcar
- ;; Discard entries whose directories have been removed.
- (lambda (dne)
- (let ((atts (file-attributes (concat proof-home-directory
- (symbol-name (car dne))))))
- (if (and atts (eq 't (car atts)))
- (list dne)
- nil)))
- '(;; For demonstration instance of Proof General,
- ;; export PROOFGENERAL_ASSISTANTS=demoisa.
- ;;
- ;; To use Isabelle/Isar instead of classic Isabelle,
- ;; export PROOFGENERAL_ASSISTANTS=isar
- ;;
- (demoisa "Isabelle Demo" "\\.ML$")
- (isa "Isabelle" "\\.ML$\\|\\.thy$")
- (isar "Isabelle/Isar" "\\.thy$")
- (lego "LEGO" "\\.l$")
- (coq "Coq" "\\.v$")
- (phox "PhoX" "\\.phx$")
- ;; The following provers are not fully supported,
- ;; and have only preliminary support written
- ;; (please volunteer to improve them!)
- (hol98 "HOL" "\\.sml$")
- (acl2 "ACL2" "\\.acl2$")
- (twelf "Twelf" "\\.elf$")
- ;; The following provers have experimental support
- (plastic "Plastic" "\\.lf$")
- ;; Next line for testing only
- ;; (pgip "PGIP/Isa" "\\.ML$\\|\\.thy$")
- )))
- "*Proof General's table of supported proof assistants.
-Extend this table to add a new proof assistant.
-Each entry is a list of the form
-
- (SYMBOL NAME AUTOMODE-REGEXP)
-
-The NAME is a string, naming the proof assistant.
-The SYMBOL is used to form the name of the mode for the
-assistant, `SYMBOL-mode', run when files with AUTOMODE-REGEXP
-are visited. SYMBOL is also used to form the name of the
-directory and elisp file for the mode, which will be
-
- PROOF-HOME-DIRECTORY/SYMBOL/SYMBOL.el
-
-where `PROOF-HOME-DIRECTORY' is the value of the
-variable proof-home-directory."
- :type '(repeat (list symbol string string))
- :group 'proof-general-internals)
-
-
-
-
-
-;; A utility function. Is there an alternative?
-(defun proof-string-to-list (s separator)
- "Return the list of words in S separated by SEPARATOR.
-If S is nil, return empty list."
- (if s
- (let ((end-of-word-occurence (string-match (concat separator "+") s)))
- (if (not end-of-word-occurence)
- (if (string= s "")
- nil
- (list s))
- (cons (substring s 0 end-of-word-occurence)
- (proof-string-to-list
- (substring s
- (string-match (concat "[^" separator "]")
- s end-of-word-occurence))
- separator))))))
-
-(defcustom proof-assistants nil
- (concat
- "*Choice of proof assistants to use with Proof General.
-A list of symbols chosen from:"
- (apply 'concat (mapcar (lambda (astnt)
- (concat " '" (symbol-name (car astnt))))
- proof-assistant-table))
-".\nEach proof assistant defines its own instance of Proof General,
-providing session control, script management, etc. Proof General
-will be started automatically for the assistants chosen here.
-To avoid accidently invoking a proof assistant you don't have,
-only select the proof assistants you (or your site) may need.
-
-You can select which proof assistants you want by setting this
-variable before `proof-site.el' is loaded, or by setting
-the environment variable `PROOFGENERAL_ASSISTANTS' to the
-symbols you want, for example \"lego isa\". Or you can
-edit the file `proof-site.el' itself.
-
-Note: to change proof assistant, you must start a new Emacs session.")
- :type (cons 'set
- (mapcar (lambda (astnt)
- (list 'const ':tag (car (cdr astnt)) (car astnt)))
- proof-assistant-table))
- :group 'proof-general)
-
-
-;; Extend load path for the generic files.
-(let ((proof-lisp-path
- (concat proof-home-directory "generic/")))
- (or (member proof-lisp-path load-path)
- (setq load-path
- (cons proof-lisp-path load-path))))
-
-;; During compilation from the Makefile, generic is on the load path.
-;; Add all of the prover directories.
-;; FIXME: this doesn't work quite right. We want to test
-;; whether we are running during a compilation. How?
-; (eval-when-compile
-; (dolist (assistant proof-assistant-table)
-; (let ((path (concat proof-home-directory
-; (concat (symbol-name (car assistant)) "/"))))
-; (or (member path load-path)
-; (setq load-path
-; (cons path load-path))))))
-
-(defun proof-ready-for-assistant (assistant-name assistantsym)
- "Configure PG for ASSISTANT-NAME, symbol ASSISTANTSYM."
- (let*
- ((sname (symbol-name assistantsym))
- (cusgrp-rt
- ;; Normalized a bit to remove spaces and funny characters
- ;; FIXME UGLY compatibility hack
- ;; (can use cl macro `substitute' but want to avoid cl here)
- (if (fboundp 'replace-in-string)
- ;; XEmacs
- (replace-in-string (downcase assistant-name) "/\\|[ \t]+" "-")
- ;; FSF
- (subst-char-in-string
- ?/ ?\-
- (subst-char-in-string ?\ ?\- (downcase assistant-name)))))
- ;; END compatibility hack
- (cusgrp (intern cusgrp-rt))
- (cus-internals (intern (concat cusgrp-rt "-config")))
- ;; NB: Dir name for each prover is the same as its symbol name!
- (elisp-dir sname)
- (loadpath-elt (concat proof-home-directory elisp-dir "/")))
- (eval `(progn
- ;; Make a customization group for this assistant
- (defgroup ,cusgrp nil
- ,(concat "Customization of user options for " assistant-name
- " Proof General.")
- :group 'proof-general)
- ;; And another one for internals
- (defgroup ,cus-internals nil
- ,(concat "Customization of internal settings for "
- assistant-name " configuration.")
- :group 'proof-general-internals
- :prefix ,(concat sname "-"))
-
- ;; Set the proof-assistant configuration variables
- ;; NB: tempting to use customize-set-variable: wrong!
- ;; Here we treat customize as extended docs for these
- ;; variables.
- (setq proof-assistant-cusgrp (quote ,cusgrp))
- (setq proof-assistant-internals-cusgrp (quote ,cus-internals))
- (setq proof-assistant ,assistant-name)
- (setq proof-assistant-symbol (quote ,assistantsym))
- ;; Extend the load path if necessary
- (if (not (member ,loadpath-elt load-path))
- (setq load-path (cons ,loadpath-elt load-path)))))))
-
-;; Now add auto-loads and load-path elements to support the
-;; proof assistants selected, and define a stub
-(let ((assistants
- (or (mapcar 'intern
- (proof-string-to-list
- (getenv "PROOFGENERAL_ASSISTANTS") " "))
- proof-assistants
- (mapcar (lambda (astnt) (car astnt)) proof-assistant-table))))
- (while assistants
- (let*
- ((assistant (car assistants)) ; compiler bogus warning here
- (nameregexp
- (or
- (cdr-safe
- (assoc assistant
- proof-assistant-table))
- (error "proof-site: symbol " (symbol-name assistant)
- "is not in proof-assistant-table")))
- (assistant-name (car nameregexp))
- (regexp (car (cdr nameregexp)))
- (sname (symbol-name assistant))
- ;; NB: File name for each prover is the same as its symbol name!
- (elisp-file sname)
- ;; NB: Mode name for each prover is <symbol name>-mode!
- (proofgen-mode (intern (concat sname "-mode")))
- ;; NB: Customization group for each prover is its l.c.'d name!
-
- ;; Stub to do some automatic initialization and load
- ;; the specific code.
- (mode-stub
- `(lambda ()
- ,(concat
- "Major mode for editing scripts for proof assistant "
- assistant-name
- ".\nThis is a stub which loads the real function.")
- (interactive)
- ;; Give a message and stop loading if proof-assistant is
- ;; already set: things go wrong if proof general is
- ;; loaded for more than one prover.
- (cond
- ((and (boundp 'proof-assistant)
- (not (string-equal proof-assistant "")))
- (or (string-equal proof-assistant ,assistant-name)
- ;; If Proof General was partially loaded last time
- ;; and mode function wasn't redefined, be silent.
- (message
- (concat
- ,assistant-name
- " Proof General error: Proof General already in use for "
- proof-assistant))))
- (t
- ;; prepare variables and load path
- (proof-ready-for-assistant ,assistant-name
- (quote ,assistant))
- ;; load the real mode and invoke it.
- (load-library ,elisp-file)
- (,proofgen-mode))))))
-
- (setq auto-mode-alist
- (cons (cons regexp proofgen-mode) auto-mode-alist))
-
- (fset proofgen-mode mode-stub)
-
- (setq assistants (cdr assistants))
- )))
-
-;; WARNING: do not edit below here
-;; (the next constant is set automatically, also its form is
-;; relied upon in proof-config.el, for proof-splash-contents)
-(defconst proof-general-version "Proof General Version 3.4pre020718. Released by da."
- "Version string identifying Proof General release.")
-
-;; Now define a few autoloads and basic variables.
-
-;; 1.8.01: add a dummy package-provide command so proof-autoloads
-;; is compatible with FSF Emacs. Needed for next provide
-;; (otherwise would be in proof-compat.el).
-(or (fboundp 'package-provide)
- (defun package-provide (name &rest attributes)
- "Dummy version of XEmacs function for FSF compatibility."))
-
-
-(require 'proof-autoloads) ; autoloaded functions
-
-(defcustom proof-assistant-cusgrp nil
- "Symbol for the customization group of the user options for the proof assistant.
-Do not change this variable! It is set automatically by the mode
-stub defined in proof-site, from the name given in
-proof-assistant-table."
- :type 'sexp
- :group 'prover-config)
-
-(defcustom proof-assistant-internals-cusgrp nil
- "Symbol for the customization group of the PG internal settings proof assistant.
-Do not change this variable! It is set automatically by the mode
-stub defined in proof-site, from the name given in
-proof-assistant-table."
- :type 'sexp
- :group 'prover-config)
-
-(defcustom proof-assistant ""
- "Name of the proof assistant Proof General is using.
-Do not change this variable! It is set automatically by the mode
-stub defined in proof-site, from the name given in
-proof-assistant-table."
- :type 'string
- :group 'prover-config)
-
-(defcustom proof-assistant-symbol nil
- "Symbol for the proof assistant Proof General is using.
-Used for automatic configuration based on standard variable names.
-Settings will be found by looking for names beginning with this
-symbol as a prefix.
-Do not change this variable! It is set automatically by the mode
-stub defined in proof-site, from the symbols given in
-proof-assistant-table."
- :type 'sexp
- :group 'prover-config)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;
-;;; Architecture flags
-;;;
-
-(eval-and-compile
-(defvar proof-running-on-XEmacs (string-match "XEmacs" emacs-version)
- "Non-nil if Proof General is running on XEmacs.")
-(defvar proof-running-on-Emacs21 (and (not proof-running-on-XEmacs)
- (>= emacs-major-version 21))
- "Non-nil if Proof General is running on GNU Emacs 21 or later.")
-;; rough test for XEmacs on win32, anyone know about GNU Emacs on win32?
-(defvar proof-running-on-win32 (fboundp 'win32-long-file-name)
- "Non-nil if Proof General is running on a win32 system."))
-
-(provide 'proof-site))
-;; proof-site.el ends here