2022-06-04 18:56:36 +00:00
|
|
|
#!/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 \
|
2022-06-07 04:41:52 +00:00
|
|
|
--socket-name=$MY_EMACS_PROFILE \
|
2022-06-04 18:56:36 +00:00
|
|
|
$MY_EMACS_CREATEFRAME \
|
|
|
|
$MY_EMACS_NO_WAIT \
|
|
|
|
--alternate-editor='sh -c \"( \
|
2022-06-07 04:41:52 +00:00
|
|
|
/usr/bin/emacs --with-profile $MY_EMACS_PROFILE --daemon \
|
2022-06-04 18:56:36 +00:00
|
|
|
); echo ''Daemon started'' > $MY_SILENT; ( \
|
|
|
|
/usr/bin/emacsclient \
|
2022-06-07 04:41:52 +00:00
|
|
|
--socket-name=$MY_EMACS_PROFILE \
|
2022-06-04 18:56:36 +00:00
|
|
|
$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 "${@}"
|