Subject: bug#31859: 26.1; Emacs has no way to determine if the current instance has a running server

From: Thibault <[email-masked]>
Date: Sat, 16 Jun 2018 18:04:19 +0200

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