]> code.delx.au - gnu-emacs/blobdiff - lisp/server.el
merging Emacs.app (NeXTstep port)
[gnu-emacs] / lisp / server.el
index ad4608f2fd2492894f108f344f1cfe7a28c1a2e2..ff2cb1241f2cd38de82b9ea276d94ebdc9c1bdca 100644 (file)
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -23,9 +23,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -204,9 +202,8 @@ are done with it in the server.")
 
 (defvar server-name "server")
 
-(defvar server-socket-dir nil
-  "The directory in which to place the server socket.
-Initialized by `server-start'.")
+(defvar server-socket-dir (format "/tmp/emacs%d" (user-uid))
+  "The directory in which to place the server socket.")
 
 (defun server-clients-with (property value)
   "Return a list of clients with PROPERTY set to VALUE."
@@ -292,13 +289,13 @@ If NOFRAME is non-nil, let the frames live.  (To be used from
       (server-log "Deleted" proc))))
 
 (defvar server-log-time-function 'current-time-string
-  "Function to generate timestamps for the *server* buffer.")
+  "Function to generate timestamps for `server-buffer'.")
 
 (defconst server-buffer " *server*"
   "Buffer used internally by Emacs's server.
 One use is to log the I/O for debugging purposes (see `server-log'),
 the other is to provide a current buffer in which the process filter can
-safely let-bind buffer-local variables like default-directory.")
+safely let-bind buffer-local variables like `default-directory'.")
 
 (defvar server-log nil
   "If non-nil, log the server's inputs and outputs in the `server-buffer'.")
@@ -463,9 +460,6 @@ kill any existing server communications subprocess."
         (not server-clients)
         (yes-or-no-p
          "The current server still has clients; delete them? "))
-    ;; It is safe to get the user id now.
-    (setq server-socket-dir (or server-socket-dir
-                               (format "/tmp/emacs%d" (user-uid))))
     (when server-process
       ;; kill it dead!
       (ignore-errors (delete-process server-process)))
@@ -504,8 +498,9 @@ kill any existing server communications subprocess."
                       :filter 'server-process-filter
                       ;; We must receive file names without being decoded.
                       ;; Those are decoded by server-process-filter according
-                      ;; to file-name-coding-system.
-                      :coding 'raw-text
+                      ;; to file-name-coding-system.  Also don't get
+                      ;; confused by CRs since we don't quote them.
+                      :coding 'raw-text-unix
                       ;; The other args depend on the kind of socket used.
                       (if server-use-tcp
                           (list :family nil
@@ -952,8 +947,8 @@ The following commands are accepted by the client:
                    ;; Use the same cwd as the emacsclient, if possible, so
                    ;; relative file names work correctly, even in `eval'.
                    (let ((default-directory
-                           (if (and dir (file-directory-p dir))
-                              dir default-directory)))
+                         (if (and dir (file-directory-p dir))
+                             dir default-directory)))
                      (server-execute proc files nowait commands
                                      dontkill frame tty-name))))))
 
@@ -1224,8 +1219,10 @@ done that."
        (let ((rest server-clients))
          (while (and rest (not next-buffer))
            (let ((proc (car rest)))
-             ;; Only look at frameless clients.
-             (when (not (process-get proc 'frame))
+             ;; Only look at frameless clients, or those in the selected
+             ;; frame.
+             (when (or (not (process-get proc 'frame))
+                       (eq (process-get proc 'frame) (selected-frame)))
                (setq next-buffer (car (process-get proc 'buffers))))
              (setq rest (cdr rest)))))
        (and next-buffer (server-switch-buffer next-buffer killed-one))