It's all in the subject line: Emacs has no way to determine if the current instance has a running server. There's the `server-mode' variable along with the `daemonp' and `server-running-p' functions, but none of them are actually usable for the most elementary use case of determining whether *this* instance has a server started. - `server-mode' is nil if the server was started with `M-x server-start', and t only if was started with `server-mode' - `(daemonp)' returns non-nil if and only if emacs was started as a daemon. That is, the following sexp: (progn (require 'server) (server-start) (or server-mode (daemonp))) will always evaluate to nil, except from emacsclient. - (server-running-p) tries to determine if /some/ server is running, somewhere, that is configured like the current server would be, but it doesn't guarantee that the server runs from the current instance. If you start two instances, `(server-running-p)' will eval to `t' *in both* after the server was started in any one of them. Thanks, Thibault