#!/bin/bash ### ### edit-with-spacemacs, ensures a daemon named spacemacs is working ### if it's already running, the editor will open a new frame attached to it ### if it's not, it will first launch the daemon ### MY_EMACS_PROFILE=${CHEMACS_PROFILE:-spacemacs} MY_SILENT="/dev/null" MY_EMACS_CREATEFRAME="--create-frame" MY_EMACS_NO_WAIT="--no-wait" # MY_SILENT="/dev/tty" # MY_EMACS_NO_WAIT="" if [ "$DISPLAY" = "" ]; then MY_EMACS_NO_WAIT="" fi # set | grep '^MY_EMACS' 1>&2 function q_() { printf "'%s'\n" "${@}"; } function myemacs_full() { _cli="$(q_ "${@}")" _cli="${_cli// /\\ }" _cli=$(printf "$_cli") # echo $_cli _cli=$(printf "/usr/bin/emacsclient \ --socket-name=\"$MY_EMACS_PROFILE\" \ $MY_EMACS_CREATEFRAME \ $MY_EMACS_NO_WAIT \ --alternate-editor='sh -c \"( \ /usr/bin/emacs --with-profile '$MY_EMACS_PROFILE' --daemon \ ); echo ''Daemon started'' > $MY_SILENT; ( \ /usr/bin/emacsclient \ --socket-name='$MY_EMACS_PROFILE' \ $MY_EMACS_NO_WAIT \ --create-frame \ ${_cli//\'/\'\'} \ )\"' \ $_cli" \ ) # set -x #echo $_cli 2>$MY_SILENT eval $_cli } # FRAMES was supposed to find existing frames, but it doesn't seem to work right now # Requires more research # # FRAMES=$( 2>/dev/null /usr/bin/emacsclient -n -e "(if (> (length (frame-list)) 1) 't)" | grep t ) # echo "FRAMES: {$FRAMES}" 1>&2 myemacs_full "${@}"