src/Tools/jEdit/dist-template/lib/Tools/jedit
author wenzelm
Tue, 01 Sep 2009 15:37:05 +0200
changeset 34691 f28c014bcbe3
parent 34664 8f5fbe4a80ff
child 34780 d0ff1c3a91ea
permissions -rwxr-xr-x
option -d: enable debugger;

#!/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 "(default ~/Scratch.thy)."
  echo
  exit 1
}

fail()
{
  echo "$1" >&2
  exit 2
}


## process command line

# options

JEDIT_LOGIC="$ISABELLE_LOGIC"
JEDIT_PRINT_MODE=""

declare -a JAVA_OPTIONS; eval "JAVA_OPTIONS=($JEDIT_JAVA_OPTIONS)"
declare -a OPTIONS; eval "OPTIONS=($JEDIT_OPTIONS)"

while getopts "J:dj:l:m:" OPT
do
  case "$OPT" in
    J)
      JAVA_OPTIONS["${#JAVA_OPTIONS[@]}"]="$OPTARG"
      ;;
    d)
      JAVA_OPTIONS["${#JAVA_OPTIONS[@]}"]="-Xdebug"
      JAVA_OPTIONS["${#JAVA_OPTIONS[@]}"]="-Xrunjdwp:transport=dt_socket,server=y,suspend=n"
      ;;
    j)
      OPTIONS["${#OPTIONS[@]}"]="$OPTARG"
      ;;
    l)
      JEDIT_LOGIC="$OPTARG"
      ;;
    m)
      if [ -z "$PRINT_MODE" ]; then
        PRINT_MODE="$OPTARG"
      else
        PRINT_MODE="$PRINT_MODE,$OPTARG"
      fi
      ;;
    \?)
      usage
      ;;
  esac
done

shift $(($OPTIND - 1))


# args

declare -a FILES=()

if [ "$#" -eq 0 ]; then
  FILES["${#FILES[@]}"]="Scratch.thy"
else
  while [ "$#" -gt 0 ]; do
    FILES["${#FILES[@]}"]="$(jvmpath "$1")"
    shift
  done
fi


## main

case "$JEDIT_LOGIC" in
  /*)
    ;;
  */*)
    JEDIT_LOGIC="$(pwd -P)/$JEDIT_LOGIC"
    ;;
esac

export JEDIT_LOGIC JEDIT_PRINT_MODE

exec "$ISABELLE_TOOL" java "${JAVA_OPTIONS[@]}" \
  -jar "$(jvmpath "$JEDIT_HOME/jedit.jar")" \
  "-settings=$(jvmpath "$ISABELLE_HOME_USER/jedit")" "${OPTIONS[@]}" "${FILES[@]}"