include scala.xml as of scala-2.9.1.final/misc/scala-tool-support/jedit/modes/scala.xml -- seems to be missing in more recent distributions;
5 # DESCRIPTION: Isabelle/jEdit interface wrapper
12 "src/document_model.scala"
13 "src/document_view.scala"
14 "src/html_panel.scala"
15 "src/isabelle_encoding.scala"
16 "src/isabelle_hyperlinks.scala"
17 "src/isabelle_options.scala"
18 "src/isabelle_rendering.scala"
19 "src/isabelle_sidekick.scala"
20 "src/jedit_thy_load.scala"
21 "src/output_dockable.scala"
23 "src/protocol_dockable.scala"
24 "src/raw_output_dockable.scala"
25 "src/scala_console.scala"
26 "src/session_dockable.scala"
27 "src/text_area_painter.scala"
28 "src/text_overview.scala"
29 "src/token_markup.scala"
32 declare -a RESOURCES=(
42 PRG="$(basename "$0")"
47 echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]"
50 echo " -J OPTION add JVM runtime option"
51 echo " (default JEDIT_JAVA_OPTIONS=$JEDIT_JAVA_OPTIONS)"
53 echo " -d enable debugger"
54 echo " -f fresh build"
55 echo " -j OPTION add jEdit runtime option"
56 echo " (default JEDIT_OPTIONS=$JEDIT_OPTIONS)"
57 echo " -l NAME logic image name (default ISABELLE_LOGIC=$ISABELLE_LOGIC)"
58 echo " -m MODE add print mode for output"
60 echo "Start jEdit with Isabelle plugin setup and opens theory FILES"
61 echo "(default Scratch.thy)."
78 ## process command line
84 JEDIT_LOGIC="$ISABELLE_LOGIC"
90 while getopts "J:bdfj:l:m:" OPT
94 JAVA_ARGS["${#JAVA_ARGS[@]}"]="$OPTARG"
100 JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Xdebug"
101 JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Xrunjdwp:transport=dt_socket,server=y,suspend=n"
104 BUILD_JARS="jars_fresh"
107 ARGS["${#ARGS[@]}"]="$OPTARG"
110 JEDIT_LOGIC="$OPTARG"
113 if [ -z "$JEDIT_PRINT_MODE" ]; then
114 JEDIT_PRINT_MODE="$OPTARG"
116 JEDIT_PRINT_MODE="$JEDIT_PRINT_MODE,$OPTARG"
126 declare -a JAVA_ARGS; eval "JAVA_ARGS=($JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS)"
127 [ -n "$SCALA_HOME" ] && JAVA_ARGS["${#JAVA_ARGS[@]}"]="-Dscala.home=$SCALA_HOME"
129 declare -a ARGS; eval "ARGS=($JEDIT_OPTIONS)"
131 declare -a OPTIONS; eval "OPTIONS=($ISABELLE_JEDIT_OPTIONS)"
132 getoptions "${OPTIONS[@]}"
135 shift $(($OPTIND - 1))
140 if [ "$#" -eq 0 ]; then
141 ARGS["${#ARGS[@]}"]="Scratch.thy"
143 while [ "$#" -gt 0 ]; do
144 ARGS["${#ARGS[@]}"]="$(jvmpath "$1")"
152 [ -e "$ISABELLE_HOME/Admin/build" ] && \
153 { "$ISABELLE_HOME/Admin/build" "$BUILD_JARS" || exit $?; }
155 PURE_JAR="$ISABELLE_HOME/lib/classes/ext/Pure.jar"
157 pushd "$JEDIT_HOME" >/dev/null || failed
159 JEDIT_JAR="$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/jedit.jar"
162 "$ISABELLE_JEDIT_BUILD_HOME/contrib/Console.jar"
163 "$ISABELLE_JEDIT_BUILD_HOME/contrib/ErrorList.jar"
164 "$ISABELLE_JEDIT_BUILD_HOME/contrib/Hyperlinks.jar"
165 "$ISABELLE_JEDIT_BUILD_HOME/contrib/SideKick.jar"
166 "$ISABELLE_JEDIT_BUILD_HOME/contrib/cobra.jar"
167 "$ISABELLE_JEDIT_BUILD_HOME/contrib/js.jar"
171 "$SCALA_HOME/lib/scala-compiler.jar"
172 "$SCALA_HOME/lib/scala-library.jar"
173 "$SCALA_HOME/lib/scala-swing.jar"
179 TARGET="dist/jars/Isabelle-jEdit.jar"
181 declare -a UPDATED=()
183 if [ "$BUILD_JARS" = jars_fresh ]; then
187 if [ ! -e "$TARGET" ]; then
190 if [ -n "$ISABELLE_JEDIT_BUILD_HOME" ]; then
191 declare -a DEPS=("$JEDIT_JAR" "${JEDIT_JARS[@]}" "$PURE_JAR" "${SOURCES[@]}" "${RESOURCES[@]}")
193 declare -a DEPS=("$PURE_JAR" "${SOURCES[@]}" "${RESOURCES[@]}")
195 for DEP in "${DEPS[@]}"
197 [ ! -e "$DEP" ] && fail "Missing file: $DEP"
198 [ "$DEP" -nt "$TARGET" ] && {
200 UPDATED["${#UPDATED[@]}"]="$DEP"
209 if [ "$OUTDATED" = true ]
211 echo "### Building Isabelle/jEdit ..."
213 [ "${#UPDATED[@]}" -gt 0 ] && {
214 echo "Changed files:"
215 for FILE in "${UPDATED[@]}"
221 [ -z "$ISABELLE_JEDIT_BUILD_HOME" ] && \
222 fail "Unknown ISABELLE_JEDIT_BUILD_HOME -- missing auxiliary component"
224 rm -rf dist || failed
225 mkdir -p dist dist/classes || failed
227 cp -p -R -f "$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/." dist/.
228 cp -p -R -f "${RESOURCES[@]}" dist/classes/.
229 cp src/jEdit.props dist/properties/.
230 cp -p -R -f src/modes/. dist/modes/.
232 perl -i -e 'while (<>) {
233 if (m/NAME="javacc"/) {
234 print qq,<MODE NAME="isabelle" FILE="isabelle.xml" FILE_NAME_GLOB="*.thy"/>\n\n,;
235 print qq,<MODE NAME="isabelle-session" FILE="isabelle-session.xml" FILE_NAME_GLOB="session.root"/>\n\n,; }
236 elsif (m/NAME="scheme"/) {
237 print qq,<MODE NAME="scala" FILE="scala.xml" FILE_NAME_GLOB="*.scala" />\n\n,; }
238 print; }' dist/modes/catalog
240 cp -p -R -f "${JEDIT_JARS[@]}" "$SCALA_HOME/lib/scala-compiler.jar" dist/jars/. || failed
242 for JAR in "$JEDIT_JAR" "${JEDIT_JARS[@]}" "$PURE_JAR" "$SCALA_HOME/lib/scala-compiler.jar"
244 CLASSPATH="$CLASSPATH:$JAR"
246 CLASSPATH="$(jvmpath "$CLASSPATH")"
247 exec "$SCALA_HOME/bin/scalac" -unchecked -deprecation \
248 -d dist/classes -target:jvm-1.5 "${SOURCES[@]}"
249 ) || fail "Failed to compile sources"
252 jar cf "../jars/Isabelle-jEdit.jar" * || failed
264 mkdir -p "$JEDIT_SETTINGS/DockableWindowManager"
266 if [ ! -e "$JEDIT_SETTINGS/perspective.xml" ]; then
267 cat > "$JEDIT_SETTINGS/DockableWindowManager/perspective-view0.xml" <<EOF
268 <DOCKING LEFT="" TOP="" RIGHT="" BOTTOM="isabelle-session" LEFT_POS="0" TOP_POS="0" RIGHT_POS="250" BOTTOM_POS="250" />
270 cat > "$JEDIT_SETTINGS/perspective.xml" <<EOF
271 <?xml version="1.0" encoding="UTF-8" ?>
272 <!DOCTYPE PERSPECTIVE SYSTEM "perspective.dtd">
275 <GEOMETRY X="0" Y="35" WIDTH="1072" HEIGHT="787" EXT_STATE="0" />
284 [ "$BUILD_ONLY" = true ] || {
285 case "$JEDIT_LOGIC" in
289 JEDIT_LOGIC="$(pwd -P)/$JEDIT_LOGIC"
293 export JEDIT_LOGIC JEDIT_PRINT_MODE
295 exec "$ISABELLE_TOOL" java "${JAVA_ARGS[@]}" \
296 -jar "$(jvmpath "$JEDIT_HOME/dist/jedit.jar")" \
297 "-settings=$(jvmpath "$JEDIT_SETTINGS")" "${ARGS[@]}"