build jedit as part of regular startup script (in that case depending on jedit_build component);
misc tuning and simplification;
--- a/etc/components Wed Jun 08 17:49:01 2011 +0200
+++ b/etc/components Wed Jun 08 20:58:51 2011 +0200
@@ -11,6 +11,7 @@
src/Sequents
#misc components
src/Tools/Code
+src/Tools/jEdit
src/Tools/WWW_Find
src/HOL/Tools/ATP
src/HOL/Mirabelle
--- a/src/Tools/jEdit/dist-template/etc/isabelle-jedit.css Wed Jun 08 17:49:01 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-/* additional style file for Isabelle/jEdit output */
-
-.message { margin-top: 0.3ex; background-color: #F0F0F0; }
-
-.writeln { }
-.tracing { background-color: #F0F8FF; }
-.warning { background-color: #EEE8AA; }
-.error { background-color: #FFC1C1; }
-
-.report { display: none; }
-
-.hilite { background-color: #FFCC66; }
-
-.keyword { font-weight: bold; color: #009966; }
-.operator { font-weight: bold; }
-.command { font-weight: bold; color: #006699; }
-
-.sendback { text-decoration: underline; }
-.sendback:hover { background-color: #FFCC66; }
--- a/src/Tools/jEdit/dist-template/etc/settings Wed Jun 08 17:49:01 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-# -*- shell-script -*- :mode=shellscript:
-
-JEDIT_HOME="$COMPONENT"
-JEDIT_SETTINGS="$ISABELLE_HOME_USER/jedit"
-
-JEDIT_OPTIONS="-reuseview -noserver -nobackground"
-JEDIT_JAVA_OPTIONS="-Xms128m -Xmx1024m -Xss4m -Dactors.corePoolSize=4 -Dactors.enableForkJoin=false"
-#JEDIT_JAVA_OPTIONS="-Xms128m -Xmx512m -Xss2m -Dactors.corePoolSize=4 -Dactors.enableForkJoin=false"
-JEDIT_SYSTEM_OPTIONS="-Dapple.laf.useScreenMenuBar=true -Dcom.apple.mrj.application.apple.menu.about.name=Isabelle/jEdit"
-
-JEDIT_STYLE_SHEETS="$ISABELLE_HOME/lib/html/isabelle.css:$JEDIT_HOME/etc/isabelle-jedit.css:$ISABELLE_HOME_USER/etc/isabelle.css:$ISABELLE_HOME_USER/etc/isabelle-jedit.css"
-
-ISABELLE_JEDIT_OPTIONS="-m xsymbols -m no_brackets -m no_type_brackets"
-
-ISABELLE_TOOLS="$ISABELLE_TOOLS:$JEDIT_HOME/lib/Tools"
-
--- a/src/Tools/jEdit/dist-template/lib/Tools/jedit Wed Jun 08 17:49:01 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-#!/usr/bin/env bash
-#
-# Author: Makarius
-#
-# DESCRIPTION: Isabelle/jEdit interface wrapper
-
-
-## diagnostics
-
-PRG="$(basename "$0")"
-
-usage()
-{
- echo
- echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]"
- echo
- echo " Options are:"
- echo " -J OPTION add JVM runtime option"
- echo " (default JEDIT_JAVA_OPTIONS=$JEDIT_JAVA_OPTIONS)"
- echo " -d enable debugger"
- echo " -j OPTION add jEdit runtime option"
- echo " (default JEDIT_OPTIONS=$JEDIT_OPTIONS)"
- echo " -l NAME logic image name (default ISABELLE_LOGIC=$ISABELLE_LOGIC)"
- echo " -m MODE add print mode for output"
- echo
- echo "Start jEdit with Isabelle plugin setup and opens theory FILES"
- echo
- exit 1
-}
-
-fail()
-{
- echo "$1" >&2
- exit 2
-}
-
-
-## process command line
-
-# options
-
-JEDIT_LOGIC="$ISABELLE_LOGIC"
-JEDIT_PRINT_MODE=""
-
-getoptions()
-{
- OPTIND=1
- while getopts "J:dj:l:m:" OPT
- do
- case "$OPT" in
- J)
- JAVA_ARGS["${#JAVA_ARGS[@]}"]="$OPTARG"
- ;;
- d)
- JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Xdebug"
- JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Xrunjdwp:transport=dt_socket,server=y,suspend=n"
- ;;
- j)
- ARGS["${#ARGS[@]}"]="$OPTARG"
- ;;
- l)
- JEDIT_LOGIC="$OPTARG"
- ;;
- m)
- if [ -z "$JEDIT_PRINT_MODE" ]; then
- JEDIT_PRINT_MODE="$OPTARG"
- else
- JEDIT_PRINT_MODE="$JEDIT_PRINT_MODE,$OPTARG"
- fi
- ;;
- \?)
- usage
- ;;
- esac
- done
-}
-
-declare -a JAVA_ARGS; eval "JAVA_ARGS=($JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS)"
-[ -n "$SCALA_HOME" ] && JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Dscala.home=$SCALA_HOME"
-
-declare -a ARGS; eval "ARGS=($JEDIT_OPTIONS)"
-
-declare -a OPTIONS; eval "OPTIONS=($ISABELLE_JEDIT_OPTIONS)"
-getoptions "${OPTIONS[@]}"
-
-getoptions "$@"
-shift $(($OPTIND - 1))
-
-
-# args
-
-while [ "$#" -gt 0 ]; do
- ARGS["${#ARGS[@]}"]="$(jvmpath "$1")"
- shift
-done
-
-
-## default perspective
-
-mkdir -p "$JEDIT_SETTINGS/DockableWindowManager"
-
-if [ ! -e "$JEDIT_SETTINGS/perspective.xml" ]; then
- cat > "$JEDIT_SETTINGS/DockableWindowManager/perspective-view0.xml" <<EOF
-<DOCKING LEFT="" TOP="" RIGHT="" BOTTOM="isabelle-session" LEFT_POS="0" TOP_POS="0" RIGHT_POS="250" BOTTOM_POS="250" />
-EOF
- cat > "$JEDIT_SETTINGS/perspective.xml" <<EOF
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE PERSPECTIVE SYSTEM "perspective.dtd">
-<PERSPECTIVE>
-<VIEW PLAIN="FALSE">
-<GEOMETRY X="0" Y="35" WIDTH="1072" HEIGHT="787" EXT_STATE="0" />
-</VIEW>
-</PERSPECTIVE>
-EOF
-fi
-
-
-## main
-
-case "$JEDIT_LOGIC" in
- /*)
- ;;
- */*)
- JEDIT_LOGIC="$(pwd -P)/$JEDIT_LOGIC"
- ;;
-esac
-
-export JEDIT_LOGIC JEDIT_PRINT_MODE
-
-exec "$ISABELLE_TOOL" java "${JAVA_ARGS[@]}" \
- -jar "$(jvmpath "$JEDIT_HOME/jedit.jar")" \
- "-settings=$(jvmpath "$JEDIT_SETTINGS")" "${ARGS[@]}"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Tools/jEdit/etc/isabelle-jedit.css Wed Jun 08 20:58:51 2011 +0200
@@ -0,0 +1,19 @@
+/* additional style file for Isabelle/jEdit output */
+
+.message { margin-top: 0.3ex; background-color: #F0F0F0; }
+
+.writeln { }
+.tracing { background-color: #F0F8FF; }
+.warning { background-color: #EEE8AA; }
+.error { background-color: #FFC1C1; }
+
+.report { display: none; }
+
+.hilite { background-color: #FFCC66; }
+
+.keyword { font-weight: bold; color: #009966; }
+.operator { font-weight: bold; }
+.command { font-weight: bold; color: #006699; }
+
+.sendback { text-decoration: underline; }
+.sendback:hover { background-color: #FFCC66; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Tools/jEdit/etc/settings Wed Jun 08 20:58:51 2011 +0200
@@ -0,0 +1,16 @@
+# -*- shell-script -*- :mode=shellscript:
+
+JEDIT_HOME="$COMPONENT"
+JEDIT_SETTINGS="$ISABELLE_HOME_USER/jedit"
+
+JEDIT_OPTIONS="-reuseview -noserver -nobackground"
+JEDIT_JAVA_OPTIONS="-Xms128m -Xmx1024m -Xss4m -Dactors.corePoolSize=4 -Dactors.enableForkJoin=false"
+#JEDIT_JAVA_OPTIONS="-Xms128m -Xmx512m -Xss2m -Dactors.corePoolSize=4 -Dactors.enableForkJoin=false"
+JEDIT_SYSTEM_OPTIONS="-Dapple.laf.useScreenMenuBar=true -Dcom.apple.mrj.application.apple.menu.about.name=Isabelle/jEdit"
+
+JEDIT_STYLE_SHEETS="$ISABELLE_HOME/lib/html/isabelle.css:$JEDIT_HOME/etc/isabelle-jedit.css:$ISABELLE_HOME_USER/etc/isabelle.css:$ISABELLE_HOME_USER/etc/isabelle-jedit.css"
+
+ISABELLE_JEDIT_OPTIONS="-m xsymbols -m no_brackets -m no_type_brackets"
+
+ISABELLE_TOOLS="$ISABELLE_TOOLS:$JEDIT_HOME/lib/Tools"
+
--- a/src/Tools/jEdit/jedit_build/Tools/jedit Wed Jun 08 17:49:01 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-#!/usr/bin/env bash
-#
-# Author: Makarius
-#
-# DESCRIPTION: build and run Isabelle/jEdit on the spot
-
-## diagnostics
-
-function fail()
-{
- echo "$1" >&2
- exit 2
-}
-
-function failed()
-{
- fail "Failed!"
-}
-
-
-## dependencies
-
-[ -z "$ISABELLE_HOME" ] && fail "Missing Isabelle settings environment"
-[ -z "$SCALA_HOME" ] && fail "Unknown SCALA_HOME -- Scala unavailable"
-
-[ -z "$ISABELLE_JEDIT_BUILD_HOME" ] && \
- fail "Unknown ISABELLE_JEDIT_BUILD_HOME -- missing auxiliary component"
-
-[ -e "$ISABELLE_HOME/Admin/build" ] && \
- { "$ISABELLE_HOME/Admin/build" jars || exit $?; }
-
-
-# sources
-
-SRC_DIR="$ISABELLE_HOME/src/Tools/jEdit"
-
-declare -a SOURCES=(
- "$SRC_DIR/src/dockable.scala"
- "$SRC_DIR/src/document_model.scala"
- "$SRC_DIR/src/document_view.scala"
- "$SRC_DIR/src/html_panel.scala"
- "$SRC_DIR/src/isabelle_encoding.scala"
- "$SRC_DIR/src/isabelle_hyperlinks.scala"
- "$SRC_DIR/src/isabelle_markup.scala"
- "$SRC_DIR/src/isabelle_options.scala"
- "$SRC_DIR/src/isabelle_sidekick.scala"
- "$SRC_DIR/src/output_dockable.scala"
- "$SRC_DIR/src/plugin.scala"
- "$SRC_DIR/src/protocol_dockable.scala"
- "$SRC_DIR/src/raw_output_dockable.scala"
- "$SRC_DIR/src/scala_console.scala"
- "$SRC_DIR/src/session_dockable.scala"
-)
-
-declare -a PLUGIN_FILES=(
- "$SRC_DIR/plugin/actions.xml"
- "$SRC_DIR/plugin/dockables.xml"
- "$SRC_DIR/plugin/Isabelle.props"
- "$SRC_DIR/plugin/services.xml"
-)
-
-JEDIT_JAR="$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/jedit.jar"
-
-JEDIT_JARS=(
- "$ISABELLE_JEDIT_BUILD_HOME/contrib/Console.jar"
- "$ISABELLE_JEDIT_BUILD_HOME/contrib/ErrorList.jar"
- "$ISABELLE_JEDIT_BUILD_HOME/contrib/Hyperlinks.jar"
- "$ISABELLE_JEDIT_BUILD_HOME/contrib/SideKick.jar"
- "$ISABELLE_JEDIT_BUILD_HOME/contrib/cobra.jar"
- "$ISABELLE_JEDIT_BUILD_HOME/contrib/js.jar"
-)
-
-SCALA_JARS=(
- "$SCALA_HOME/lib/scala-compiler.jar"
- "$SCALA_HOME/lib/scala-library.jar"
- "$SCALA_HOME/lib/scala-swing.jar"
-)
-
-
-# target
-
-TARGET_DIR="$ISABELLE_JEDIT_BUILD_HOME/${ISABELLE_JEDIT_BUILD_VERSION}_Isabelle-$("$ISABELLE_TOOL" version -i)"
-TARGET="$TARGET_DIR/jars/Isabelle-jEdit.jar"
-
-OUTDATED=false
-for SOURCE in "${SOURCES[@]}" "${PLUGIN_FILES[@]}" "$JEDIT_JAR" "${JEDIT_JARS[@]}"
-do
- [ ! -e "$SOURCE" ] && fail "Missing file: $SOURCE"
- [ ! -e "$TARGET" -o "$SOURCE" -nt "$TARGET" ] && OUTDATED=true
-done
-
-
-## main
-
-if [ "$OUTDATED" = true ]
-then
- echo "###"
- echo "### Building Isabelle/jEdit ..."
- echo "###"
-
- rm -rf "$TARGET_DIR" || failed
- mkdir -p "$TARGET_DIR" "$TARGET_DIR/classes" || failed
- cp -a "$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/." "$TARGET_DIR/."
-
- cp -a "${PLUGIN_FILES[@]}" "$TARGET_DIR/classes/."
- cp -a "$SRC_DIR/dist-template/." "$TARGET_DIR/."
- cp -a "$SRC_DIR/README" "$TARGET_DIR/."
-
- perl -i -e 'while (<>) { if (m/NAME="javacc"/) {
- print qq,<MODE NAME="isabelle" FILE="isabelle.xml" FILE_NAME_GLOB="*.thy"/>\n\n,;
- print qq,<MODE NAME="isabelle-session" FILE="isabelle-session.xml" FILE_NAME_GLOB="session.root"/>\n\n,; }
- print; }' "$TARGET_DIR/modes/catalog"
-
- (
- for JAR in "$JEDIT_JAR" "${JEDIT_JARS[@]}" "$SCALA_HOME/lib/scala-compiler.jar"
- do
- CLASSPATH="$CLASSPATH:$JAR"
- done
-
- cp -a "${JEDIT_JARS[@]}" "${SCALA_JARS[@]}" "$ISABELLE_HOME/lib/classes/Pure.jar" \
- "$TARGET_DIR/jars/." || failed
-
- declare -a JVM_SOURCES=()
- for SOURCE in "${SOURCES[@]}"
- do
- JVM_SOURCES["${#JVM_SOURCES[@]}"]="$(jvmpath "$SOURCE")"
- done
-
- CLASSPATH="$(jvmpath "$CLASSPATH")"
-
- "$SCALA_HOME/bin/scalac" -unchecked -deprecation \
- -d "$(jvmpath "$TARGET_DIR/classes")" -target:jvm-1.5 "${JVM_SOURCES[@]}" || \
- fail "Failed to compile sources"
-
- cd "$TARGET_DIR/classes"
- jar cf "../jars/Isabelle-jEdit.jar" * || failed
- cd ..
- rm -rf classes
- )
-fi
-
-set -o allexport
-init_component "$TARGET_DIR"
-[ -f "$ISABELLE_JEDIT_BUILD_HOME/etc/user-settings" ] && \
- source "$ISABELLE_JEDIT_BUILD_HOME/etc/user-settings"
-set +o allexport
-
-exec "$TARGET_DIR/lib/Tools/jedit" "$@"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Tools/jEdit/lib/Tools/jedit Wed Jun 08 20:58:51 2011 +0200
@@ -0,0 +1,255 @@
+#!/usr/bin/env bash
+#
+# Author: Makarius
+#
+# DESCRIPTION: Isabelle/jEdit interface wrapper
+
+
+## diagnostics
+
+PRG="$(basename "$0")"
+
+function usage()
+{
+ echo
+ echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]"
+ echo
+ echo " Options are:"
+ echo " -J OPTION add JVM runtime option"
+ echo " (default JEDIT_JAVA_OPTIONS=$JEDIT_JAVA_OPTIONS)"
+ echo " -d enable debugger"
+ echo " -j OPTION add jEdit runtime option"
+ echo " (default JEDIT_OPTIONS=$JEDIT_OPTIONS)"
+ echo " -l NAME logic image name (default ISABELLE_LOGIC=$ISABELLE_LOGIC)"
+ echo " -m MODE add print mode for output"
+ echo
+ echo "Start jEdit with Isabelle plugin setup and opens theory FILES"
+ echo
+ exit 1
+}
+
+function fail()
+{
+ echo "$1" >&2
+ exit 2
+}
+
+function failed()
+{
+ fail "Failed!"
+}
+
+
+## process command line
+
+# options
+
+JEDIT_LOGIC="$ISABELLE_LOGIC"
+JEDIT_PRINT_MODE=""
+
+function getoptions()
+{
+ OPTIND=1
+ while getopts "J:dj:l:m:" OPT
+ do
+ case "$OPT" in
+ J)
+ JAVA_ARGS["${#JAVA_ARGS[@]}"]="$OPTARG"
+ ;;
+ d)
+ JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Xdebug"
+ JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Xrunjdwp:transport=dt_socket,server=y,suspend=n"
+ ;;
+ j)
+ ARGS["${#ARGS[@]}"]="$OPTARG"
+ ;;
+ l)
+ JEDIT_LOGIC="$OPTARG"
+ ;;
+ m)
+ if [ -z "$JEDIT_PRINT_MODE" ]; then
+ JEDIT_PRINT_MODE="$OPTARG"
+ else
+ JEDIT_PRINT_MODE="$JEDIT_PRINT_MODE,$OPTARG"
+ fi
+ ;;
+ \?)
+ usage
+ ;;
+ esac
+ done
+}
+
+declare -a JAVA_ARGS; eval "JAVA_ARGS=($JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS)"
+[ -n "$SCALA_HOME" ] && JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Dscala.home=$SCALA_HOME"
+
+declare -a ARGS; eval "ARGS=($JEDIT_OPTIONS)"
+
+declare -a OPTIONS; eval "OPTIONS=($ISABELLE_JEDIT_OPTIONS)"
+getoptions "${OPTIONS[@]}"
+
+getoptions "$@"
+shift $(($OPTIND - 1))
+
+
+# args
+
+while [ "$#" -gt 0 ]
+do
+ ARGS["${#ARGS[@]}"]="$(jvmpath "$1")"
+ shift
+done
+
+
+## dependencies
+
+pushd "$JEDIT_HOME" || failed
+
+
+# sources
+
+declare -a SOURCES=(
+ "src/dockable.scala"
+ "src/document_model.scala"
+ "src/document_view.scala"
+ "src/html_panel.scala"
+ "src/isabelle_encoding.scala"
+ "src/isabelle_hyperlinks.scala"
+ "src/isabelle_markup.scala"
+ "src/isabelle_options.scala"
+ "src/isabelle_sidekick.scala"
+ "src/output_dockable.scala"
+ "src/plugin.scala"
+ "src/protocol_dockable.scala"
+ "src/raw_output_dockable.scala"
+ "src/scala_console.scala"
+ "src/session_dockable.scala"
+)
+
+declare -a PLUGIN_FILES=(
+ "plugin/actions.xml"
+ "plugin/dockables.xml"
+ "plugin/Isabelle.props"
+ "plugin/services.xml"
+)
+
+JEDIT_JAR="$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/jedit.jar"
+
+JEDIT_JARS=(
+ "$ISABELLE_JEDIT_BUILD_HOME/contrib/Console.jar"
+ "$ISABELLE_JEDIT_BUILD_HOME/contrib/ErrorList.jar"
+ "$ISABELLE_JEDIT_BUILD_HOME/contrib/Hyperlinks.jar"
+ "$ISABELLE_JEDIT_BUILD_HOME/contrib/SideKick.jar"
+ "$ISABELLE_JEDIT_BUILD_HOME/contrib/cobra.jar"
+ "$ISABELLE_JEDIT_BUILD_HOME/contrib/js.jar"
+)
+
+SCALA_JARS=(
+ "$SCALA_HOME/lib/scala-compiler.jar"
+ "$SCALA_HOME/lib/scala-library.jar"
+ "$SCALA_HOME/lib/scala-swing.jar"
+)
+
+
+# target
+
+TARGET="dist/jars/Isabelle-jEdit.jar"
+
+OUTDATED=false
+for SOURCE in "${SOURCES[@]}" "${PLUGIN_FILES[@]}" "$JEDIT_JAR" "${JEDIT_JARS[@]}"
+do
+ [ ! -e "$SOURCE" ] && fail "Missing file: $SOURCE"
+ [ ! -e "$TARGET" -o "$SOURCE" -nt "$TARGET" ] && OUTDATED=true
+done
+
+
+# build
+
+if [ "$OUTDATED" = true ]
+then
+ echo "###"
+ echo "### Building Isabelle/jEdit ..."
+ echo "###"
+
+ [ -z "$SCALA_HOME" ] && fail "Unknown SCALA_HOME -- Scala unavailable"
+
+ [ -z "$ISABELLE_JEDIT_BUILD_HOME" ] && \
+ fail "Unknown ISABELLE_JEDIT_BUILD_HOME -- missing auxiliary component"
+
+ [ -e "$ISABELLE_HOME/Admin/build" ] && \
+ { "$ISABELLE_HOME/Admin/build" jars || exit $?; }
+
+
+ rm -rf dist || failed
+ mkdir -p dist dist/classes || failed
+ cp -a "$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/." dist/.
+
+ cp -a "${PLUGIN_FILES[@]}" dist/classes/.
+ cp -a dist-template/. dist/.
+ cp -a README dist/.
+
+ perl -i -e 'while (<>) { if (m/NAME="javacc"/) {
+ print qq,<MODE NAME="isabelle" FILE="isabelle.xml" FILE_NAME_GLOB="*.thy"/>\n\n,;
+ print qq,<MODE NAME="isabelle-session" FILE="isabelle-session.xml" FILE_NAME_GLOB="session.root"/>\n\n,; }
+ print; }' dist/modes/catalog
+
+ cp -a "${JEDIT_JARS[@]}" "${SCALA_JARS[@]}" "$ISABELLE_HOME/lib/classes/Pure.jar" \
+ dist/jars/. || failed
+
+ (
+ for JAR in "$JEDIT_JAR" "${JEDIT_JARS[@]}" "$SCALA_HOME/lib/scala-compiler.jar"
+ do
+ CLASSPATH="$CLASSPATH:$JAR"
+ done
+ CLASSPATH="$(jvmpath "$CLASSPATH")"
+
+ exec "$SCALA_HOME/bin/scalac" -unchecked -deprecation \
+ -d dist/classes -target:jvm-1.5 "${SOURCES[@]}"
+ ) || fail "Failed to compile sources"
+
+ cd dist/classes
+ jar cf "../jars/Isabelle-jEdit.jar" * || failed
+ cd ../..
+ rm -rf dist/classes
+fi
+
+popd >/dev/null
+
+
+## main
+
+# perspective
+
+mkdir -p "$JEDIT_SETTINGS/DockableWindowManager"
+
+if [ ! -e "$JEDIT_SETTINGS/perspective.xml" ]; then
+ cat > "$JEDIT_SETTINGS/DockableWindowManager/perspective-view0.xml" <<EOF
+<DOCKING LEFT="" TOP="" RIGHT="" BOTTOM="isabelle-session" LEFT_POS="0" TOP_POS="0" RIGHT_POS="250" BOTTOM_POS="250" />
+EOF
+ cat > "$JEDIT_SETTINGS/perspective.xml" <<EOF
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE PERSPECTIVE SYSTEM "perspective.dtd">
+<PERSPECTIVE>
+<VIEW PLAIN="FALSE">
+<GEOMETRY X="0" Y="35" WIDTH="1072" HEIGHT="787" EXT_STATE="0" />
+</VIEW>
+</PERSPECTIVE>
+EOF
+fi
+
+
+# run
+
+case "$JEDIT_LOGIC" in
+ /*)
+ ;;
+ */*)
+ JEDIT_LOGIC="$(pwd -P)/$JEDIT_LOGIC"
+ ;;
+esac
+
+export JEDIT_LOGIC JEDIT_PRINT_MODE
+
+exec "$ISABELLE_TOOL" java "${JAVA_ARGS[@]}" \
+ -jar "$(jvmpath "$JEDIT_HOME/dist/jedit.jar")" \
+ "-settings=$(jvmpath "$JEDIT_SETTINGS")" "${ARGS[@]}"