#!/bin/bash # # $Id$ # # Proof General interface wrapper for Isabelle. ## self references KIND=$(basename $(dirname "$0")) export PROOFGENERAL_HOME=$(cd $(dirname "$0"); cd ..; echo "$PWD") if [ "$KIND" = isar ]; then ISAR=true else ISAR=false fi ## diagnostics function usage() { echo echo "Usage: Isabelle [OPTIONS] [FILES ...]" echo echo " Options are:" echo " -I BOOL use Isabelle/Isar instead of classic Isabelle (default $ISAR)" echo " -l NAME logic image name (default \$ISABELLE_LOGIC=$ISABELLE_LOGIC)" echo " -p NAME Emacs program name (default xemacs)" echo " -u BOOL use personal .emacs file (default true)" echo " -w BOOL use window system (default true)" echo " -x BOOL enable x-symbol package" echo echo "Starts Proof General for Isabelle with theory and proof FILES" echo "(default Scratch.thy)." echo echo " PROOFGENERAL_OPTIONS=$PROOFGENERAL_OPTIONS" echo exit 1 } function fail() { echo "$1" >&2 exit 2 } ## process command line # options LOGIC="$ISABELLE_LOGIC" PROGNAME="xemacs" INITFILE="true" WINDOWSYSTEM="true" XSYMBOL="" function getoptions() { OPTIND=1 while getopts "I:l:p:u:w:x:" OPT do case "$OPT" in I) ISAR="$OPTARG" ;; l) LOGIC="$OPTARG" ;; p) PROGNAME="$OPTARG" ;; u) INITFILE="$OPTARG" ;; w) WINDOWSYSTEM="$OPTARG" ;; x) XSYMBOL="$OPTARG" ;; \?) usage ;; esac done } getoptions $PROOFGENERAL_OPTIONS getoptions "$@" shift $(($OPTIND - 1)) if [ "$ISAR" = true ]; then KIND=isar DEFAULT_FILES="Scratch.thy" else KIND=isa DEFAULT_FILES="Scratch.thy Scratch.ML" fi # args FILES="$@" shift "$#" [ -z "$FILES" ] && FILES="$DEFAULT_FILES" ## main ARGS="" [ "$INITFILE" = false ] && ARGS="$ARGS -q" if [ "$WINDOWSYSTEM" = true -a -n "$DISPLAY" ]; then ARGS="$ARGS -T Isabelle" [ -n "$XSYMBOL_INSTALLFONTS" ] && "$ISATOOL" installfonts -x else ARGS="$ARGS -nw" XSYMBOL=false fi ARGS="$ARGS -l $PROOFGENERAL_HOME/isa/interface-setup.el" for FILE in "$ISABELLE_HOME/etc/proofgeneral-settings.el" \ "$ISABELLE_HOME_USER/etc/proofgeneral-settings.el" do [ -f "$FILE" ] && ARGS="$ARGS -l $FILE" done export PROOFGENERAL_ASSISTANTS="$KIND" export PROOFGENERAL_LOGIC="$LOGIC" export PROOFGENERAL_XSYMBOL="$XSYMBOL" exec $PROGNAME $ARGS $FILES