59 lines
1.4 KiB
Plaintext
59 lines
1.4 KiB
Plaintext
|
#!/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 "${@}"
|