Fix background mode initialization on client tty frames (rep. by Dan Nicolaescu).
authorKaroly Lorentey <lorentey@elte.hu>
Thu, 27 May 2004 17:57:59 +0000 (17:57 +0000)
committerKaroly Lorentey <lorentey@elte.hu>
Thu, 27 May 2004 17:57:59 +0000 (17:57 +0000)
lisp/server.el (server-process-filter): Add the client parameter to
the initialization parameters of new frames.
(server-getenv): Use the 'client frame parameter and not
server-clients-with to get the client; server-getenv is called during
frame initialization. (Dan Nicolaescu)

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-179

lisp/server.el

index 620d4a7..8186398 100644 (file)
@@ -480,7 +480,11 @@ PROC is the server process.  Format of STRING is \"PATH PATH PATH... \\n\"."
                               (or display
                                   (frame-parameter nil 'display)
                                   (getenv "DISPLAY")
-                                  (error "Please specify display"))))
+                                  (error "Please specify display"))
+                              (list (cons 'client proc))))
+                 ;; XXX We need to ensure the client parameter is
+                 ;; really set because Emacs forgets initialization
+                 ;; parameters for X frames at the moment.
                  (modify-frame-parameters frame (list (cons 'client proc)))
                  (select-frame frame)
                  (server-client-set client 'frame frame)
@@ -513,8 +517,7 @@ PROC is the server process.  Format of STRING is \"PATH PATH PATH... \\n\"."
                    (setq request (substring request (match-end 0)))
                    (unless (server-client-get client 'version)
                      (error "Protocol error; make sure you use the correct version of emacsclient"))
-                   (setq frame (make-frame-on-tty tty type))
-                   (modify-frame-parameters frame (list (cons 'client proc)))
+                   (setq frame (make-frame-on-tty tty type (list (cons 'client proc))))
                    (select-frame frame)
                    (server-client-set client 'frame frame)
                    (server-client-set client 'tty (frame-tty-name frame))
@@ -891,10 +894,10 @@ function consults the environment of the Emacs process.
 
 If FRAME is nil or missing, then the selected frame is used."
   (when (not frame) (setq frame (selected-frame)))
-  (let ((clients (server-clients-with 'frame frame)) env)
-    (if (null clients)
+  (let ((client (frame-parameter frame 'client)) env)
+    (if (null client)
        (getenv variable)
-      (setq env (server-client-get (car clients) 'environment))
+      (setq env (server-client-get client 'environment))
       (if (null env)
          (getenv variable)
        (cdr (assoc variable env))))))