Add support in emacsclient for EMACS_SOCKET_NAME

If the '--socket-name' argument is unspecified, the environment
variable 'EMACS_SOCKET_NAME' is now consulted with the same
semantics.  This mirrors the behavior of the '--server-file' argument,
and allows for easier configuration of emacsclient when the socket is
in a location other than 'TMPDIR' or '/tmp'.

* emacsclient.c (set_socket): Add support for the
EMACS_SOCKET_NAME environment variable.  (Bug#33095)

* misc.texi (emacsclient Options):
* emacsclient.1: Document the EMACS_SOCKET_NAME environment
variable.

* etc/NEWS: Announce the new feature.

Copyright-paperwork-exempt: yes
This commit is contained in:
Daniel Pittman 2018-09-05 09:44:58 -04:00 committed by Eli Zaretskii
parent 8fffac14b1
commit 3e81e9a0e7
4 changed files with 14 additions and 0 deletions

View file

@ -1966,6 +1966,10 @@ is given by the variable @code{server-name} on the Emacs server. If
this option is omitted, @command{emacsclient} connects to the first
server it finds. (This option is not supported on MS-Windows.)
Alternatively, you can set the @env{EMACS_SOCKET_NAME} environment
variable to point to the server socket. (The command-line option
overrides the environment variable.)
@item -t
@itemx --tty
@itemx -nw

View file

@ -94,6 +94,7 @@ open a new Emacs frame on the current terminal
.TP
.B \-s, \-\-socket-name=FILENAME
use socket named FILENAME for communication.
This can also be specified via the EMACS_SOCKET_NAME environment variable.
.TP
.B \-V, \-\-version
print version information and exit

View file

@ -119,6 +119,12 @@ the new version of the file again.)
* Changes in Emacs 27.1
+++
** emacsclient uses EMACS_SOCKET_NAME if --socket-name is not set.
The behavior is identical to the EMACS_SERVER_FILE, in that the
command line value will override the environment, and the natural
default to TMPDIR, then /tmp, continues to apply.
+++
** The function 'read-passwd' uses '*' as default character to hide passwords.

View file

@ -1409,6 +1409,9 @@ set_socket (int no_exit_if_error)
#ifndef NO_SOCKETS_IN_FILE_SYSTEM
/* Explicit --socket-name argument. */
if (!socket_name)
socket_name = egetenv ("EMACS_SOCKET_NAME");
if (socket_name)
{
s = set_local_socket (socket_name);