aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/server.el
diff options
context:
space:
mode:
authorKaroly Lorentey2005-12-29 04:31:04 +0000
committerKaroly Lorentey2005-12-29 04:31:04 +0000
commitda8e8fc14f3166ec596e34f43fbfea866d1176df (patch)
tree9c31affcb4b837cac4793f10acbafc562bfd08e4 /lisp/server.el
parent86f5ca04d94ad551d3aa726e15281e75ef0189ed (diff)
downloademacs-da8e8fc14f3166ec596e34f43fbfea866d1176df.tar.gz
emacs-da8e8fc14f3166ec596e34f43fbfea866d1176df.zip
Store local environment in frame (not terminal) parameters.
* src/callproc.c (child_setup, getenv_internal, Fgetenv_internal): Store the local environment in a frame (not terminal) parameter. Update doc strings. (syms_of_callproc): Update doc strings. (Qenvironment): Moved to frame.c. * lisp/env.el (read-envvar-name, setenv, getenv, environment): Use frame parameters to store the local environment, not terminal parameters. * server.el (server-process-filter): Store the local environment in a frame (not terminal) parameter. Do not try to decode environment strings. * lisp/frame.el (make-frame): Set up the 'environment frame parameter, when needed. * src/frame.c (Qenvironment): Move here from callproc.c. (Fdelete_frame): Don't allow other frames to refer to a deleted frame in their 'environment parameter. (Fframe_with_environment): New function. (syms_of_frame): Defsubr it. Initialize and staticpro Qenvironment. * frame.h (Qenvironment): Declare. * lisp.h (Fframe_with_environment): EXFUN it. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-467
Diffstat (limited to 'lisp/server.el')
-rw-r--r--lisp/server.el12
1 files changed, 5 insertions, 7 deletions
diff --git a/lisp/server.el b/lisp/server.el
index fb587b640a3..f98be109c92 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -620,8 +620,8 @@ The following commands are accepted by the client:
620 ;; emacsclient quits while also preventing 620 ;; emacsclient quits while also preventing
621 ;; `server-save-buffers-kill-display' from unexpectedly 621 ;; `server-save-buffers-kill-display' from unexpectedly
622 ;; killing emacs on that frame. 622 ;; killing emacs on that frame.
623 (list (cons 'client 'nowait)) 623 (list (cons 'client 'nowait) (cons 'environment env))
624 (list (cons 'client proc))))) 624 (list (cons 'client proc) (cons 'environment env)))))
625 (setq frame (make-frame-on-display 625 (setq frame (make-frame-on-display
626 (or display 626 (or display
627 (frame-parameter nil 'display) 627 (frame-parameter nil 'display)
@@ -637,7 +637,6 @@ The following commands are accepted by the client:
637 (select-frame frame) 637 (select-frame frame)
638 (server-client-set client 'frame frame) 638 (server-client-set client 'frame frame)
639 (server-client-set client 'device (frame-display frame)) 639 (server-client-set client 'device (frame-display frame))
640 (set-terminal-parameter frame 'environment env)
641 (setq dontkill t)) 640 (setq dontkill t))
642 ;; This emacs does not support X. 641 ;; This emacs does not support X.
643 (server-log "Window system unsupported" proc) 642 (server-log "Window system unsupported" proc)
@@ -684,12 +683,12 @@ The following commands are accepted by the client:
684 (setq frame (make-frame-on-tty tty type 683 (setq frame (make-frame-on-tty tty type
685 ;; Ignore nowait here; we always need to clean 684 ;; Ignore nowait here; we always need to clean
686 ;; up opened ttys when the client dies. 685 ;; up opened ttys when the client dies.
687 `((client . ,proc))))) 686 `((client . ,proc)
687 (environment . ,env)))))
688 (select-frame frame) 688 (select-frame frame)
689 (server-client-set client 'frame frame) 689 (server-client-set client 'frame frame)
690 (server-client-set client 'tty (display-name frame)) 690 (server-client-set client 'tty (display-name frame))
691 (server-client-set client 'device (frame-display frame)) 691 (server-client-set client 'device (frame-display frame))
692 (set-terminal-parameter frame 'environment env)
693 692
694 ;; Reply with our pid. 693 ;; Reply with our pid.
695 (server-send-string proc (concat "-emacs-pid " (number-to-string (emacs-pid)) "\n")) 694 (server-send-string proc (concat "-emacs-pid " (number-to-string (emacs-pid)) "\n"))
@@ -740,8 +739,7 @@ The following commands are accepted by the client:
740 ;; -env NAME=VALUE: An environment variable. 739 ;; -env NAME=VALUE: An environment variable.
741 ((and (equal "-env" arg) (string-match "\\([^ ]+\\) " request)) 740 ((and (equal "-env" arg) (string-match "\\([^ ]+\\) " request))
742 (let ((var (server-unquote-arg (match-string 1 request)))) 741 (let ((var (server-unquote-arg (match-string 1 request))))
743 (when coding-system 742 ;; XXX Variables should be encoded as in getenv/setenv.
744 (setq var (decode-coding-string var coding-system)))
745 (setq request (substring request (match-end 0))) 743 (setq request (substring request (match-end 0)))
746 (setq env (cons var env)))) 744 (setq env (cons var env))))
747 745