Using daemon mode

Posted on Sun 09 August 2009 in misc

Now the Fedora 11 has pushed Emacs 23 into it's testing repository I can now have 23.1 goodness on all the machines I regularly interact with (although having checked my Gentoo box is still, must fix that). I've previously implemented rather painful hacks to make a --server mode work well but now the mainline supported --daemon mode is the new shizzle. I had a quick play with my .bashrc shell scripts and came up with:

# Alex's .bashrc_emacs
# Emacs Specific setup
# There is only one editor (although I can get to it in different ways).
# For most stuff I want to use emacsclient to spawn a quick shell and
# for emacs 23 I want to ensure the daemon is always running for the user.
# Luckily this is covered by specifying -a '' which will spawn a daemon if
# one is not running

if [[ "$DISPLAY" == "" ]]; then
    # Can we use muti-tty?
    emacsclient --help | grep "\-\-tty" > /dev/null
    if [[ "$?" == "0" ]]; then
        # Thats a yes
        EMACS_CMD="emacsclient -a '' -t"
        # Hmmm, opening in another pane would be a pain?
        EMACS_CMD="emacs -nw "
    # otherwise don't wait and open a new frame
    EMACS_CMD="emacsclient -n -a '' -c"

# Set the environment variables for the editors

# shortcut
alias ec="${EMACS_CMD}"

# And finally lets get the status of the emacs server
DT=`emacsclient -a '' -e "(server-running-p)" 2> /dev/null`
echo "loading .bashrc_emacs (server-running-p)=${DT}"

The "emacs -nw" fallback is a little redundant but I suppose it's worth keeping for the day someone gives me shell access without the latest goodies :-)