diff lisp/frame.el @ 83640:2aee92eacdab

* server.el (server-process-filter): Likewise. (server-process-filter): Likewise. Also set COLORFGBG and COLORTERM. * frame.el (frame-initialize, make-frame): Likewise. * faces.el (tty-set-up-initial-frame-faces): Likewise. * env.el (read-envvar-name): Don't consider the environment frame param. (setenv): Set display-environment-variable and term-environment-variable. * frame.c (Qterm_environment_variable, Qdisplay_environment_variable): New variables. (syms_of_frame): Intern and staticpro them. * frame.h: Declare them here. * callproc.c (child_setup): Use the display-environment-variable and term-environment-variable frame params. (getenv_internal): Likewise. (set_initial_environment): Initialise Vprocess_environment. * frames.texi (Basic Parameters): Add display-environment-variable and term-environment-variable.
author Dan Nicolaescu <dann@ics.uci.edu>
date Tue, 03 Jul 2007 04:53:21 +0000
parents b8d9a391daf3
children 65663fcd2caa
line wrap: on
line diff
--- a/lisp/frame.el	Mon Jul 02 02:39:53 2007 +0000
+++ b/lisp/frame.el	Tue Jul 03 04:53:21 2007 +0000
@@ -241,6 +241,10 @@
 	;; Copy the environment of the Emacs process into the new frame.
 	(set-frame-parameter frame-initial-frame 'environment
 			     (frame-parameter terminal-frame 'environment))
+	(set-frame-parameter frame-initial-frame 'term-environment-variable
+			     (getenv "TERM"))
+	(set-frame-parameter frame-initial-frame 'display-environment-variable
+			     (getenv "DISPLAY"))
 	;; At this point, we know that we have a frame open, so we
 	;; can delete the terminal frame.
 	(delete-frame terminal-frame)
@@ -700,11 +704,17 @@
     (normal-erase-is-backspace-setup-frame frame)
     ;; Inherit the 'environment and 'client parameters.
     (let ((env (frame-parameter oldframe 'environment))
-	  (client (frame-parameter oldframe 'client)))
+	  (client (frame-parameter oldframe 'client))
+	   (termenv (frame-parameter oldframe 'term-environment-variable))
+	   (displayenv (frame-parameter oldframe 'display-environment-variable)))
       (if (not (framep env))
 	  (setq env oldframe))
       (if (and env (not (assq 'environment parameters)))
 	  (set-frame-parameter frame 'environment env))
+      (if (and termenv (not (assq 'term-environment-variable parameters)))
+	  (set-frame-parameter frame 'term-environment-variable termenv))
+      (if (and displayenv (not (assq 'display-environment-variable parameters)))
+	  (set-frame-parameter frame 'display-environment-variable displayenv))
       (if (and client (not (assq 'client parameters)))
 	  (set-frame-parameter frame 'client client)))
     (run-hook-with-args 'after-make-frame-functions frame)