diff --git a/bin/emacs-gui-client b/bin/emacs-gui-client new file mode 100755 index 0000000..8ce8dd5 --- /dev/null +++ b/bin/emacs-gui-client @@ -0,0 +1,15 @@ +#! /bin/bash + +# Defaults +SOCKET_DIR="$TMPDIR/emacs-gui-server$(id -u)" +SOCKET_FILE="$SOCKET_DIR/server" +EMACSCLIENT="emacsclient" +ALTERNATE_EDITOR="nano" + +# Set to binary bundled in Emacs.app if it exists +if [ -f "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient" ]; then + EMACSCLIENT="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient" +fi + +# Execute emacsclient +exec $EMACSCLIENT -s "$SOCKET_FILE" --alternate-editor=$ALTERNATE_EDITOR "$@" diff --git a/bin/emacs-gui-server b/bin/emacs-gui-server new file mode 100755 index 0000000..867c83e --- /dev/null +++ b/bin/emacs-gui-server @@ -0,0 +1,58 @@ +#! /bin/bash + +# Config +SOCKET_DIR="$TMPDIR/emacs-gui-server$(id -u)" +SOCKET_FILE="$SOCKET_DIR/server" + +EMACS="emacs -nw" +EMACSCLIENT="emacsclient" + +# Set to binaries bundled in Emacs.app if they exists +if [ -f "/Applications/Emacs.app/Contents/MacOS/Emacs" ]; then + EMACS="/Applications/Emacs.app/Contents/MacOS/Emacs -nw" +fi +if [ -f "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient" ]; then + EMACSCLIENT="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient" +fi + + +# Functions +start () { + EMACS_GUI_SERVER=1 env $EMACS \ + --eval "(setq server-socket-dir \"$SOCKET_DIR\")" --daemon +} + +stop () { + env $EMACSCLIENT -s "$SOCKET_FILE" --eval "(kill-emacs)" +} + +status () { + echo -n 'Emacs GUI Server... ' + ! result=`eval $EMACSCLIENT -s "$SOCKET_FILE" --eval \"\(print \'OK\)\" 2>/dev/null` + if [[ $result == "OK" ]]; then + echo 'RUNNING' + else + echo 'STOPPED' + fi +} + +# Command Parsing +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status + ;; + *) + echo 'usage: emacs-gui-server [command]' + echo '' + echo 'Available commands:' + echo ' start: Start Emacs GUI Server.' + echo ' stop: Stop Emacs GUI Server.' + echo ' status: Show status of Emacs GUI Server.' + ;; +esac