1#!/usr/bin/env bash 2# 3# Author: Makarius 4# 5# DESCRIPTION: Isabelle/jEdit client for already running application 6 7## settings 8 9SERVER_NAME="${ISABELLE_IDENTIFIER:-Isabelle}" 10 11eval "declare -a JAVA_ARGS=($JEDIT_JAVA_SYSTEM_OPTIONS $JEDIT_JAVA_OPTIONS)" 12 13 14## diagnostics 15 16PRG="$(basename "$0")" 17 18function usage() 19{ 20 echo 21 echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]" 22 echo 23 echo " Options are:" 24 echo " -c only check presence of server" 25 echo " -n only report server name" 26 echo " -s NAME server name (default $SERVER_NAME)" 27 echo 28 echo " Connect to already running Isabelle/jEdit instance and open FILES" 29 echo 30 exit 1 31} 32 33function fail() 34{ 35 echo "$1" >&2 36 exit 2 37} 38 39function failed() 40{ 41 fail "Failed!" 42} 43 44 45## process command line 46 47# options 48 49CHECK_ONLY="false" 50NAME_ONLY="false" 51 52while getopts "cns:" OPT 53do 54 case "$OPT" in 55 c) 56 CHECK_ONLY="true" 57 ;; 58 n) 59 NAME_ONLY="true" 60 ;; 61 s) 62 SERVER_NAME="$OPTARG" 63 ;; 64 \?) 65 usage 66 ;; 67 esac 68done 69 70shift $(($OPTIND - 1)) 71 72 73# args 74 75declare -a ARGS=() 76 77while [ "$#" -gt 0 ] 78do 79 ARGS["${#ARGS[@]}"]="$(platform_path "$1")" 80 shift 81done 82 83 84## main 85 86if [ "$CHECK_ONLY" = true ] 87then 88 [ -f "$JEDIT_SETTINGS/$SERVER_NAME" ] 89 exit $? 90fi 91 92if [ "$NAME_ONLY" = true ] 93then 94 echo "$SERVER_NAME" 95 exit 96fi 97 98isabelle jedit -b || exit $? 99 100if [ -f "$JEDIT_SETTINGS/$SERVER_NAME" ] 101then 102 exec isabelle java "${JAVA_ARGS[@]}" \ 103 -jar $(platform_path "$JEDIT_HOME/dist/jedit.jar") \ 104 "-settings=$(platform_path "$JEDIT_SETTINGS")" \ 105 -server="$SERVER_NAME" -reuseview "${ARGS[@]}" 106else 107 fail "Isabelle/jEdit server \"$SERVER_NAME\" not active" 108fi 109