help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Detecting active server from the shell


From: address@hidden
Subject: Detecting active server from the shell
Date: Tue, 14 Aug 2007 14:59:45 -0700
User-agent: G2/1.0

I upgraded to emacs 22.1.1.  I have been using a script that I derived
from the emacs.bash script which comes with emacs.   My old script's
test for the presence of an emacs server fails.  The script packaged
with my new emacs installation doesn't work either.  The file /tmp/
emacs${UID}/server ALWAYS exists, even after I shut down emacs.  So
the script always runs the client even when no server is present.

How can I tell if there is an active server?


## This defines a bash command named `edit' which contacts/resumes an
## existing emacs or starts a new one if none exists.

## One way or another, any arguments are passed to emacs to specify
files
## (provided you have loaded `resume.el').

## This function assumes the emacs program is named `emacs' and is
somewhere
## in your load path.  If either of these is not true, the most
portable
## (and convenient) thing to do is to make an alias called emacs which
## refers to the real program, e.g.
##
##        alias emacs=/usr/local/bin/gemacs

function edit ()
{
 local windowsys="${WINDOW_PARENT+sun}"

 windowsys="${windowsys:-${DISPLAY+x}}"

 if [ -n "${windowsys:+set}" ]; then
    # Do not just test if these files are sockets.  On some systems
    # ordinary files or fifos are used instead.  Just see if they
exist.
    if [ -e "${HOME}/.emacs_server" -o -e "/tmp/emacs${UID}/server" ];
then
       emacsclient "$@"
       return $?
    else
       echo "edit: starting emacs in background..." 1>&2
    fi

    case "${windowsys}" in
      x ) (emacs "$@" &) ;;
      sun ) (emacstool "$@" &) ;;
    esac
 else
    if jobs %emacs 2> /dev/null ; then
       echo "$(pwd)" "$@" >| ${HOME}/.emacs_args && fg %emacs
    else
       emacs "$@"
    fi
 fi
}


# arch-tag: 1e1b74b9-bf2c-4b23-870f-9eebff7515cb
### emacs.bash ends here
~
~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]