#!/bin/bash # Usage: preload-emacs [] # # Preloads the Emacs instance called NAME in a detached screen # session. Does nothing if the instance is already running. If WAITP # is non-empty, the function waits until the server starts up and # creates its socket; otherwise it returns immediately. # Visit http://www.enigmacurry.com # based on http://emacslife.blogspot.com/2007/05/multi-tty-emacs.html name="$1" waitp="$2" screendir="/var/run/screen/S-$USER" serverdir="/tmp/emacs$UID" emacs=/usr/bin/emacs if [ -z "$name" ]; then echo "Usage: preload_emacs []" exit 1 fi if [ ! -e "$screendir"/*."$name" ]; then if [ -e "$serverdir/$name" ]; then # Delete leftover socket (for the wait option) rm "$serverdir/$name" fi screen -dmS "emacs-$name" "$emacs" -nw --eval "(setq server-name \"$name\")" fi if [ ! -z "$waitp" ]; then while [ ! -e "$serverdir/$name" ]; do sleep 0.1; done fi