diff options
| author | Karoly Lorentey | 2004-05-27 17:57:59 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-05-27 17:57:59 +0000 |
| commit | 3a2584741dfc78f6b9dde2a9290d26b542dc75c0 (patch) | |
| tree | 8ab66262409ae61904cf7fc62173e560501072d7 | |
| parent | 4e1bb54039da0e3d5c84e231104703d62ace938d (diff) | |
| download | emacs-3a2584741dfc78f6b9dde2a9290d26b542dc75c0.tar.gz emacs-3a2584741dfc78f6b9dde2a9290d26b542dc75c0.zip | |
Fix background mode initialization on client tty frames (rep. by Dan Nicolaescu).
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
| -rw-r--r-- | lisp/server.el | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lisp/server.el b/lisp/server.el index 620d4a7e5fa..818639889c2 100644 --- a/lisp/server.el +++ b/lisp/server.el | |||
| @@ -480,7 +480,11 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"." | |||
| 480 | (or display | 480 | (or display |
| 481 | (frame-parameter nil 'display) | 481 | (frame-parameter nil 'display) |
| 482 | (getenv "DISPLAY") | 482 | (getenv "DISPLAY") |
| 483 | (error "Please specify display")))) | 483 | (error "Please specify display")) |
| 484 | (list (cons 'client proc)))) | ||
| 485 | ;; XXX We need to ensure the client parameter is | ||
| 486 | ;; really set because Emacs forgets initialization | ||
| 487 | ;; parameters for X frames at the moment. | ||
| 484 | (modify-frame-parameters frame (list (cons 'client proc))) | 488 | (modify-frame-parameters frame (list (cons 'client proc))) |
| 485 | (select-frame frame) | 489 | (select-frame frame) |
| 486 | (server-client-set client 'frame frame) | 490 | (server-client-set client 'frame frame) |
| @@ -513,8 +517,7 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"." | |||
| 513 | (setq request (substring request (match-end 0))) | 517 | (setq request (substring request (match-end 0))) |
| 514 | (unless (server-client-get client 'version) | 518 | (unless (server-client-get client 'version) |
| 515 | (error "Protocol error; make sure you use the correct version of emacsclient")) | 519 | (error "Protocol error; make sure you use the correct version of emacsclient")) |
| 516 | (setq frame (make-frame-on-tty tty type)) | 520 | (setq frame (make-frame-on-tty tty type (list (cons 'client proc)))) |
| 517 | (modify-frame-parameters frame (list (cons 'client proc))) | ||
| 518 | (select-frame frame) | 521 | (select-frame frame) |
| 519 | (server-client-set client 'frame frame) | 522 | (server-client-set client 'frame frame) |
| 520 | (server-client-set client 'tty (frame-tty-name frame)) | 523 | (server-client-set client 'tty (frame-tty-name frame)) |
| @@ -891,10 +894,10 @@ function consults the environment of the Emacs process. | |||
| 891 | 894 | ||
| 892 | If FRAME is nil or missing, then the selected frame is used." | 895 | If FRAME is nil or missing, then the selected frame is used." |
| 893 | (when (not frame) (setq frame (selected-frame))) | 896 | (when (not frame) (setq frame (selected-frame))) |
| 894 | (let ((clients (server-clients-with 'frame frame)) env) | 897 | (let ((client (frame-parameter frame 'client)) env) |
| 895 | (if (null clients) | 898 | (if (null client) |
| 896 | (getenv variable) | 899 | (getenv variable) |
| 897 | (setq env (server-client-get (car clients) 'environment)) | 900 | (setq env (server-client-get client 'environment)) |
| 898 | (if (null env) | 901 | (if (null env) |
| 899 | (getenv variable) | 902 | (getenv variable) |
| 900 | (cdr (assoc variable env)))))) | 903 | (cdr (assoc variable env)))))) |