efaq: Using an already running Emacs process

 
 5.18 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 ‘.emacs’:
 
           (if (SOME CONDITIONS ARE MET) (server-start))
 
      When this is done, Emacs creates a Unix domain socket named
      ‘server’ in ‘/tmp/emacsUSERID’.  See ‘server-socket-dir’.
 
      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
 
           # using full pathname
           setenv EDITOR /usr/local/emacs/etc/emacsclient
 
           # sh command:
           EDITOR=emacsclient ; export EDITOR
 
    • Normal use:
 
      When ‘emacsclient’ is run, it connects to the socket and passes its
      command line options to Emacs, 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.
 
      There is an alternative version of ‘emacsclient’ called ‘gnuserv’,
      written by Andy Norman (SeePackages that do not come with
      Emacs).  ‘gnuserv’ uses Internet domain sockets, so it can work
      across most network connections.
 
      The most recent ‘gnuserv’ package is available at
 
      <http://meltin.net/hacks/emacs/>