File: server.el.html
This library allows Emacs to operate as a server for other processes.
Load this library and do M-x server-start to enable Emacs as a server.
Emacs opens up a socket for communication with clients. If there are no
client buffers to edit, server-edit acts like (switch-to-buffer
(other-buffer))
When some other program runs "the editor" to edit a file,
"the editor" can be the Emacs client program ../lib-src/emacsclient.
This program transmits the file names to Emacs through
the server subprocess, and Emacs visits them and lets you edit them.
Note that any number of clients may dispatch files to Emacs to be edited.
When you finish editing a Server buffer, again call server-edit
to mark that buffer as done for the client and switch to the next
Server buffer. When all the buffers for a client have been edited
and exited with server-edit, the client "editor" will return
to the program that invoked it.
Your editing commands and Emacs's display output go to and from the terminal in the usual way. Thus, server operation is possible only when Emacs can talk to the terminal at the time you invoke the client. This is possible in four cases:
1. On a window system, where Emacs runs in one window and the
program that wants to use "the editor" runs in another.
2. On a multi-terminal system, where Emacs runs on one terminal and
the program that wants to use "the editor" runs on another.
3. When the program that wants to use "the editor" is running as a
subprocess of Emacs.
4. On a system with job control, when Emacs is suspended, the
program that wants to use "the editor" will stop and display
"Waiting for Emacs...". It can then be suspended, and Emacs can
be brought into the foreground for editing. When done editing,
Emacs is suspended again, and the client program is brought into
the foreground.
The buffer local variable server-buffer-clients lists
the clients who are waiting for this buffer to be edited.
The global variable server-clients lists all the waiting clients,
and which files are yet to be edited for each.
Defined variables (33)
server--external-socket-initialized | When an external socket is passed into Emacs, we need to call |
server--process-filter-active | Non-nil if we’re currently running our process filter. |
server--process-filter-pending | List of process filter calls still to be processed. |
server-after-make-frame-hook | Hook run when the Emacs server starts using a client frame. |
server-auth-dir | Directory for server authentication files. |
server-auth-key | Server authentication key. |
server-buffer | Buffer used internally by Emacs’s server. |
server-buffer-clients | List of client processes requesting editing of current buffer. |
server-client-instructions | If non-nil, display instructions on how to exit the client on connection. |
server-clients | List of current server clients. |
server-done-hook | Hook run when done editing a buffer for the Emacs server. |
server-eval-args-left | List of eval args not yet processed. |
server-existing-buffer | Non-nil means the buffer existed before the server was asked to visit it. |
server-host | The name or IP address to use as host address of the server process. |
server-kill-buffer-running | Non-nil while ‘server-kill-buffer’ or ‘server-buffer-done’ is running. |
server-kill-new-buffers | Whether to kill buffers when done with them. |
server-log | If non-nil, log the server’s inputs and outputs in the ‘server-buffer’. |
server-log-time-function | Function to generate timestamps for ‘server-buffer’. |
server-mode | Non-nil if Server mode is enabled. |
server-mode-hook | Hook run after entering or leaving ‘server-mode’. |
server-msg-size | Maximum size of a message sent to a client. |
server-name | The name of the Emacs server, if this Emacs process creates one. |
server-port | The port number that the server process should listen on. |
server-process | The current server process. |
server-raise-frame | If non-nil, raise frame when switching to a buffer. |
server-socket-dir | The directory in which to place the server socket. |
server-stop-automatically | If non-nil, stop the server under the requested conditions. |
server-stop-automatically--timer | The timer object for ‘server-stop-automatically--maybe-kill-emacs’. |
server-switch-hook | Hook run when switching to a buffer for the Emacs server. |
server-temp-file-regexp | Regexp matching names of temporary files. |
server-use-tcp | If non-nil, use TCP sockets instead of local sockets. |
server-visit-hook | Hook run when visiting a file for the Emacs server. |
server-window | Specification of the window to use for selecting Emacs server buffers. |