39: How do I use an already running Emacs from another window? Emacsclient, which comes with Emacs, is for editing a file using an already running Emacs rather than starting up a new Emacs. It does this by sending a request to the already running Emacs, which must be expecting the request. * Setup Emacs must have executed the "server-start" function for emacsclient to work. This can be done either by a command line option: emacs -f server-start or by invoking server-start from the .emacs file: (if (some conditions are met) (server-start)) When this is done, Emacs starts a subprocess running a program called "server". "server" creates a Unix domain socket in the user's home directory named .emacs_server. To get your news reader, mail reader, etc., to invoke emacsclient, try setting the environment variable EDITOR (or sometimes VISUAL) to the value "emacsclient". You may have to specify the full pathname of the emacsclient program instead. Examples: # csh commands: setenv EDITOR emacsclient setenv EDITOR /usr/local/emacs/etc/emacsclient # using full pathname # sh command: EDITOR=emacsclient ; export EDITOR * Normal use When emacsclient is run, it connects to the ".emacs_server" socket and passes its command line options to "server". When "server" receives these requests, it sends this information on the the Emacs process, which at the next opportunity will visit the files specified. (Line numbers can be specified just like with Emacs.) The user will have to switch to the Emacs window by hand. When the user is done editing a file, the user can type "C-x #" (or M-x server-edit) to indicate this. If there is another buffer requested by emacsclient, Emacs will switch to it; otherwise emacsclient will exit, signaling the calling program to continue. NOTE: "emacsclient" and "server" must be running on machines which share the same filesystem for this to work. The pathnames that emacsclient specifies should be correct for the filesystem that the Emacs process sees. The Emacs process should not be suspended at the time emacsclient is invoked. emacsclient should either be invoked from another X window or from a shell window inside Emacs itself. There is an enhanced version of emacsclient/server called "gnuserv" by Andy Norman <ange@hplb.hpl.hp.com> which is available in the Emacs Lisp Archive (see question 87). Gnuserv uses Internet domain sockets, so it can work across most network connections. It also supports the execution of arbitrary Emacs Lisp forms and does not require the client program to wait for completion.