5 # DESCRIPTION: Isabelle/jEdit interface wrapper
12 "src/completion_popup.scala"
14 "src/document_model.scala"
15 "src/document_view.scala"
16 "src/documentation_dockable.scala"
17 "src/find_dockable.scala"
18 "src/fold_handling.scala"
19 "src/graphview_dockable.scala"
20 "src/info_dockable.scala"
22 "src/isabelle_encoding.scala"
23 "src/isabelle_logic.scala"
24 "src/isabelle_options.scala"
25 "src/isabelle_sidekick.scala"
26 "src/jedit_editor.scala"
28 "src/jedit_options.scala"
29 "src/jedit_thy_load.scala"
30 "src/monitor_dockable.scala"
31 "src/output_dockable.scala"
33 "src/pretty_text_area.scala"
34 "src/pretty_tooltip.scala"
35 "src/process_indicator.scala"
36 "src/protocol_dockable.scala"
37 "src/raw_output_dockable.scala"
39 "src/rich_text_area.scala"
40 "src/scala_console.scala"
41 "src/sledgehammer_dockable.scala"
42 "src/symbols_dockable.scala"
43 "src/syslog_dockable.scala"
44 "src/text_overview.scala"
45 "src/theories_dockable.scala"
46 "src/timing_dockable.scala"
47 "src/token_markup.scala"
50 declare -a RESOURCES=(
56 "src/modes/isabelle-news.xml"
57 "src/modes/isabelle-options.xml"
58 "src/modes/isabelle-root.xml"
59 "src/modes/isabelle.xml"
65 PRG="$(basename "$0")"
70 echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]"
73 echo " -J OPTION add JVM runtime option"
74 echo " (default JEDIT_JAVA_OPTIONS=$JEDIT_JAVA_OPTIONS)"
76 echo " -d DIR include session directory"
77 echo " -f fresh build"
78 echo " -j OPTION add jEdit runtime option"
79 echo " (default JEDIT_OPTIONS=$JEDIT_OPTIONS)"
80 echo " -l NAME logic session name"
81 echo " -m MODE add print mode for output"
82 echo " -n no build dialog for session image on startup"
83 echo " -s system build mode for session image"
85 echo "Start jEdit with Isabelle plugin setup and open theory FILES"
86 echo "(default \"$USER_HOME/Scratch.thy\")."
103 ## process command line
109 JEDIT_SESSION_DIRS=""
112 JEDIT_BUILD_MODE="normal"
114 function getoptions()
117 while getopts "J:bd:fj:l:m:ns" OPT
121 JAVA_ARGS["${#JAVA_ARGS[@]}"]="$OPTARG"
127 if [ -z "$JEDIT_SESSION_DIRS" ]; then
128 JEDIT_SESSION_DIRS="$OPTARG"
130 JEDIT_SESSION_DIRS="$JEDIT_SESSION_DIRS:$OPTARG"
134 BUILD_JARS="jars_fresh"
137 ARGS["${#ARGS[@]}"]="$OPTARG"
140 JEDIT_LOGIC="$OPTARG"
143 if [ -z "$JEDIT_PRINT_MODE" ]; then
144 JEDIT_PRINT_MODE="$OPTARG"
146 JEDIT_PRINT_MODE="$JEDIT_PRINT_MODE,$OPTARG"
150 JEDIT_BUILD_MODE="none"
153 JEDIT_BUILD_MODE="system"
162 declare -a JAVA_ARGS; eval "JAVA_ARGS=($JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS)"
166 declare -a OPTIONS; eval "OPTIONS=($ISABELLE_JEDIT_OPTIONS)"
167 getoptions "${OPTIONS[@]}"
170 shift $(($OPTIND - 1))
175 if [ "$#" -eq 0 ]; then
176 ARGS["${#ARGS[@]}"]="$(jvmpath "$USER_HOME/Scratch.thy")"
178 while [ "$#" -gt 0 ]; do
179 ARGS["${#ARGS[@]}"]="$(jvmpath "$1")"
187 if [ -e "$ISABELLE_HOME/Admin/build" ]; then
188 "$ISABELLE_TOOL" browser -b || exit $?
189 if [ "$BUILD_JARS" = jars_fresh ]; then
190 "$ISABELLE_TOOL" graphview -b -f || exit $?
192 "$ISABELLE_HOME/Admin/build" "$BUILD_JARS" || exit $?
193 "$ISABELLE_TOOL" graphview -b || exit $?
197 PURE_JAR="$ISABELLE_HOME/lib/classes/Pure.jar"
198 GRAPHVIEW_JAR="$ISABELLE_HOME/lib/classes/Graphview.jar"
200 pushd "$JEDIT_HOME" >/dev/null || failed
202 JEDIT_JAR="$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/jedit.jar"
205 "$ISABELLE_JEDIT_BUILD_HOME/contrib/Console.jar"
206 "$ISABELLE_JEDIT_BUILD_HOME/contrib/ErrorList.jar"
207 "$ISABELLE_JEDIT_BUILD_HOME/contrib/Highlight.jar"
208 "$ISABELLE_JEDIT_BUILD_HOME/contrib/MacOSX.jar"
209 "$ISABELLE_JEDIT_BUILD_HOME/contrib/SideKick.jar"
210 "$ISABELLE_JEDIT_BUILD_HOME/contrib/idea-icons.jar"
211 "$ISABELLE_JEDIT_BUILD_HOME/contrib/jsr305-2.0.0.jar"
217 TARGET="dist/jars/Isabelle-jEdit.jar"
219 declare -a UPDATED=()
221 if [ "$BUILD_JARS" = jars_fresh ]; then
225 if [ ! -e "$TARGET" ]; then
228 if [ -n "$ISABELLE_JEDIT_BUILD_HOME" ]; then
230 "$JEDIT_JAR" "${JEDIT_JARS[@]}" "$PURE_JAR" "$GRAPHVIEW_JAR"
231 "${SOURCES[@]}" "${RESOURCES[@]}"
233 elif [ -e "$ISABELLE_HOME/Admin/build" ]; then
234 declare -a DEPS=("$PURE_JAR" "$GRAPHVIEW_JAR" "${SOURCES[@]}" "${RESOURCES[@]}")
238 for DEP in "${DEPS[@]}"
240 [ ! -e "$DEP" ] && fail "Missing file: $DEP"
241 [ "$DEP" -nt "$TARGET" ] && {
243 UPDATED["${#UPDATED[@]}"]="$DEP"
252 if [ "$OUTDATED" = true ]
254 echo "### Building Isabelle/jEdit ..."
256 [ "${#UPDATED[@]}" -gt 0 ] && {
257 echo "Changed files:"
258 for FILE in "${UPDATED[@]}"
264 [ -z "$ISABELLE_JEDIT_BUILD_HOME" ] && \
265 fail "Unknown ISABELLE_JEDIT_BUILD_HOME -- missing auxiliary component"
267 rm -rf dist || failed
268 mkdir -p dist dist/classes || failed
270 cp -p -R -f "$ISABELLE_JEDIT_BUILD_HOME/contrib/$ISABELLE_JEDIT_BUILD_VERSION/." dist/.
271 cp -p -R -f "${RESOURCES[@]}" dist/classes/.
272 cp src/jEdit.props dist/properties/.
273 cp -p -R -f src/modes/. dist/modes/.
275 perl -i -e 'while (<>) {
276 if (m/NAME="javacc"/) {
277 print qq,<MODE NAME="isabelle" FILE="isabelle.xml" FILE_NAME_GLOB="*.thy"/>\n\n,;
278 print qq,<MODE NAME="isabelle-news" FILE="isabelle-news.xml"/>\n\n,;
279 print qq,<MODE NAME="isabelle-options" FILE="isabelle-options.xml"/>\n\n,;
280 print qq,<MODE NAME="isabelle-root" FILE="isabelle-root.xml" FILE_NAME_GLOB="ROOT"/>\n\n,; }
281 print; }' dist/modes/catalog
284 isabelle_jdk jar xf jedit.jar
285 cp "$ISABELLE_HOME/lib/logo/isabelle-32.gif" \
286 "org/gjt/sp/jedit/icons/themes/classic/32x32/apps/isabelle.gif" || failed
287 cp "$ISABELLE_HOME/lib/logo/isabelle-32.gif" \
288 "org/gjt/sp/jedit/icons/themes/tango/32x32/apps/isabelle.gif" || failed
289 isabelle_jdk jar cfe jedit.jar org.gjt.sp.jedit.jEdit org || failed
293 cp -p -R -f "${JEDIT_JARS[@]}" dist/jars/. || failed
295 #workaround for scalac 2.10.2
296 function stty() { :; }
299 for JAR in "$JEDIT_JAR" "${JEDIT_JARS[@]}" "$PURE_JAR" "$GRAPHVIEW_JAR"
303 export CLASSPATH="$(jvmpath "$ISABELLE_CLASSPATH")"
304 exec "$SCALA_HOME/bin/scalac" $ISABELLE_SCALA_BUILD_OPTIONS -d dist/classes "${SOURCES[@]}"
305 ) || fail "Failed to compile sources"
308 isabelle_jdk jar cf "../jars/Isabelle-jEdit.jar" * || failed
318 if [ "$BUILD_ONLY" = false ]
320 export JEDIT_SESSION_DIRS JEDIT_LOGIC JEDIT_PRINT_MODE JEDIT_BUILD_MODE
321 classpath "$JEDIT_HOME/dist/jedit.jar"
322 exec "$ISABELLE_TOOL" java "${JAVA_ARGS[@]}" isabelle.Main "${ARGS[@]}"