author | wenzelm |
Wed, 09 Jan 2013 18:35:51 +0100 | |
changeset 51807 | b7e38c13d87b |
parent 49710 | b5d7a35bdd6a |
child 51820 | 69439c9defec |
permissions | -rw-r--r-- |
wenzelm@29136 | 1 |
#!/bin/bash |
wenzelm@29136 | 2 |
# |
wenzelm@29136 | 3 |
# Author: Makarius |
wenzelm@29136 | 4 |
# |
wenzelm@29136 | 5 |
# Isabelle application wrapper |
wenzelm@29136 | 6 |
|
wenzelm@29136 | 7 |
THIS="$(cd "$(dirname "$0")"; pwd)" |
wenzelm@29149 | 8 |
THIS_APP="$(cd "$THIS/../.."; pwd)" |
wenzelm@29149 | 9 |
SUPER_APP="$(cd "$THIS/../../.."; pwd)" |
wenzelm@29136 | 10 |
|
wenzelm@29173 | 11 |
|
wenzelm@51807 | 12 |
# global defaults |
wenzelm@51807 | 13 |
|
wenzelm@51807 | 14 |
ISABELLE_TOOL="$THIS/Isabelle/bin/isabelle" |
wenzelm@51807 | 15 |
PROOFGENERAL_EMACS="$THIS/Aquamacs.app/Contents/MacOS/Aquamacs" |
wenzelm@51807 | 16 |
|
wenzelm@51807 | 17 |
|
wenzelm@51807 | 18 |
# environment |
wenzelm@41891 | 19 |
|
wenzelm@29136 | 20 |
cd "$HOME" |
wenzelm@45866 | 21 |
if [ -x /usr/libexec/path_helper ]; then |
wenzelm@45866 | 22 |
eval $(/usr/libexec/path_helper -s) |
wenzelm@45866 | 23 |
fi |
wenzelm@29136 | 24 |
|
wenzelm@41891 | 25 |
[ -z "$LANG" ] && export LANG=en_US.UTF-8 |
wenzelm@41891 | 26 |
|
wenzelm@29136 | 27 |
|
wenzelm@29149 | 28 |
# run interface with error feedback |
wenzelm@29136 | 29 |
|
wenzelm@45755 | 30 |
ISABELLE_INTERFACE_CHOICE="$("$ISABELLE_TOOL" getenv -b ISABELLE_INTERFACE_CHOICE)" |
wenzelm@45755 | 31 |
if [ "$ISABELLE_INTERFACE_CHOICE" != emacs -a "$ISABELLE_INTERFACE_CHOICE" != jedit ] |
wenzelm@45755 | 32 |
then |
wenzelm@45755 | 33 |
declare -a CHOICE |
wenzelm@45755 | 34 |
CHOICE=($("$THIS/CocoaDialog.app/Contents/MacOS/CocoaDialog" dropdown \ |
wenzelm@45755 | 35 |
--title Isabelle \ |
wenzelm@45755 | 36 |
--text "Which Isabelle interface?" \ |
wenzelm@51807 | 37 |
--items "Isabelle/jEdit PIDE" "Emacs / Proof General" \ |
wenzelm@45755 | 38 |
--button2 "OK, do not ask again" --button1 "OK")) |
wenzelm@45755 | 39 |
if [ "${CHOICE[1]}" = 0 ]; then |
wenzelm@51807 | 40 |
ISABELLE_INTERFACE_CHOICE=jedit |
wenzelm@51807 | 41 |
else |
wenzelm@45755 | 42 |
ISABELLE_INTERFACE_CHOICE=emacs |
wenzelm@45755 | 43 |
fi |
wenzelm@45755 | 44 |
if [ "${CHOICE[0]}" = 2 ]; then |
wenzelm@45755 | 45 |
ISABELLE_HOME_USER="$("$ISABELLE_TOOL" getenv -b ISABELLE_HOME_USER)" |
wenzelm@45755 | 46 |
mkdir -p "$ISABELLE_HOME_USER/etc" |
wenzelm@45755 | 47 |
( echo; echo "ISABELLE_INTERFACE_CHOICE=$ISABELLE_INTERFACE_CHOICE"; ) \ |
wenzelm@45755 | 48 |
>> "$ISABELLE_HOME_USER/etc/settings" |
wenzelm@45755 | 49 |
"$THIS/CocoaDialog.app/Contents/MacOS/CocoaDialog" ok-msgbox \ |
wenzelm@45755 | 50 |
--title Isabelle \ |
wenzelm@45755 | 51 |
--text Note \ |
wenzelm@45755 | 52 |
--informative-text "ISABELLE_INTERFACE_CHOICE stored in $ISABELLE_HOME_USER/etc/settings" \ |
wenzelm@45755 | 53 |
--no-cancel |
wenzelm@45755 | 54 |
fi |
wenzelm@45755 | 55 |
fi |
wenzelm@45755 | 56 |
|
wenzelm@29136 | 57 |
OUTPUT="/tmp/isabelle$$.out" |
wenzelm@29136 | 58 |
|
wenzelm@45755 | 59 |
if [ "$ISABELLE_INTERFACE_CHOICE" = emacs ]; then |
wenzelm@51807 | 60 |
( "$ISABELLE_TOOL" emacs -p "$PROOFGENERAL_EMACS" "$@" ) > "$OUTPUT" 2>&1 |
wenzelm@45754 | 61 |
RC=$? |
wenzelm@45754 | 62 |
else |
wenzelm@45980 | 63 |
( "$ISABELLE_TOOL" jedit "$@" ) > "$OUTPUT" 2>&1 |
wenzelm@45754 | 64 |
RC=$? |
wenzelm@45754 | 65 |
fi |
wenzelm@29136 | 66 |
|
wenzelm@29136 | 67 |
if [ "$RC" != 0 ]; then |
wenzelm@29136 | 68 |
echo >> "$OUTPUT" |
wenzelm@29136 | 69 |
echo "Return code: $RC" >> "$OUTPUT" |
wenzelm@29136 | 70 |
fi |
wenzelm@29136 | 71 |
|
wenzelm@29149 | 72 |
if [ $(stat -f "%z" "$OUTPUT") != 0 ]; then |
wenzelm@29136 | 73 |
"$THIS/CocoaDialog.app/Contents/MacOS/CocoaDialog" textbox \ |
wenzelm@29136 | 74 |
--title "Isabelle" \ |
wenzelm@29136 | 75 |
--informative-text "Isabelle output" \ |
wenzelm@29136 | 76 |
--text-from-file "$OUTPUT" \ |
wenzelm@29136 | 77 |
--button1 "OK" |
wenzelm@29136 | 78 |
fi |
wenzelm@29136 | 79 |
|
wenzelm@29136 | 80 |
rm -f "$OUTPUT" |
wenzelm@29136 | 81 |
|
wenzelm@29136 | 82 |
exit "$RC" |