summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog.multi-tty13
-rw-r--r--lisp/env.el18
-rw-r--r--lisp/faces.el6
-rw-r--r--lisp/frame.el12
-rw-r--r--lisp/server.el13
5 files changed, 53 insertions, 9 deletions
diff --git a/lisp/ChangeLog.multi-tty b/lisp/ChangeLog.multi-tty
index 6c04ee57077..cc115bb0278 100644
--- a/lisp/ChangeLog.multi-tty
+++ b/lisp/ChangeLog.multi-tty
@@ -1,5 +1,18 @@
2007-07-02 Dan Nicolaescu <dann@ics.uci.edu>
+ * 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.
+
* term/x-win.el (x-menu-bar-open): Use accelerate-menu.
2007-06-23 Dan Nicolaescu <dann@ics.uci.edu>
diff --git a/lisp/env.el b/lisp/env.el
index a6626dc08ff..f2609cc6784 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -55,7 +55,8 @@ If it is also not t, RET does not exit if it does non-null completion."
(substring enventry 0
(string-match "=" enventry)))))
(append process-environment
- (frame-parameter (frame-with-environment) 'environment)))
+ nil ;;(frame-parameter (frame-with-environment) 'environment)
+ ))
nil mustmatch nil 'read-envvar-name-history))
;; History list for VALUE argument to setenv.
@@ -191,9 +192,14 @@ a side-effect."
(setq process-environment (setenv-internal process-environment
variable value t))
(setq frame (frame-with-environment frame))
- (set-frame-parameter frame 'environment
- (setenv-internal (frame-parameter frame 'environment)
- variable value nil)))
+ (cond
+ ((string-equal "TERM" variable)
+ (set-frame-parameter frame 'term-environment-variable value))
+ ((string-equal "DISPLAY" variable)
+ (set-frame-parameter frame 'display-environment-variable value))
+ (t
+ (setq process-environment (setenv-internal process-environment
+ variable value nil)))))
value)
(defun getenv (variable &optional frame)
@@ -238,8 +244,8 @@ Non-ASCII characters are encoded according to the initial value of
`locale-coding-system', i.e. the elements must normally be decoded for use.
See `setenv' and `getenv'."
(let* ((env (append process-environment
- (frame-parameter (frame-with-environment frame)
- 'environment)
+;; (frame-parameter (frame-with-environment frame)
+;; 'environment)
nil))
(scan env)
prev seen)
diff --git a/lisp/faces.el b/lisp/faces.el
index 32d0c0af068..e5796272b0c 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1909,7 +1909,11 @@ terminal type to a different value."
(defun tty-set-up-initial-frame-faces ()
(let ((frame (selected-frame)))
(frame-set-background-mode frame)
- (face-set-after-frame-default frame)))
+ (face-set-after-frame-default frame)
+ (set-frame-parameter frame-initial-frame 'term-environment-variable
+ (getenv "TERM"))
+ (set-frame-parameter frame-initial-frame 'display-environment-variable
+ (getenv "DISPLAY"))))
diff --git a/lisp/frame.el b/lisp/frame.el
index 5f32654fdb1..925b61ce754 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -241,6 +241,10 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
;; 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 @@ setup is for focus to follow the pointer."
(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)
diff --git a/lisp/server.el b/lisp/server.el
index 838aed96cf8..60ba66c88fe 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -763,6 +763,10 @@ The following commands are accepted by the client:
;; initialization parameters for X frames at
;; the moment.
(modify-frame-parameters frame params)
+ (set-frame-parameter frame 'display-environment-variable
+ (server-getenv-from env "DISPLAY"))
+ (set-frame-parameter frame 'term-environment-variable
+ (server-getenv-from env "TERM"))
(select-frame frame)
(server-client-set client 'frame frame)
(server-client-set client 'terminal (frame-terminal frame))
@@ -812,12 +816,19 @@ The following commands are accepted by the client:
"BAUDRATE" "COLUMNS" "ESCDELAY" "HOME" "LINES"
"NCURSES_ASSUMED_COLORS" "NCURSES_NO_PADDING"
"NCURSES_NO_SETBUF" "TERM" "TERMCAP" "TERMINFO"
- "TERMINFO_DIRS" "TERMPATH")
+ "TERMINFO_DIRS" "TERMPATH"
+ ;; rxvt wants these
+ "COLORFGBG" "COLORTERM")
(setq frame (make-frame-on-tty tty type
;; Ignore nowait here; we always need to clean
;; up opened ttys when the client dies.
`((client . ,proc)
(environment . ,env)))))
+
+ (set-frame-parameter frame 'display-environment-variable
+ (server-getenv-from env "DISPLAY"))
+ (set-frame-parameter frame 'term-environment-variable
+ (server-getenv-from env "TERM"))
(select-frame frame)
(server-client-set client 'frame frame)
(server-client-set client 'tty (terminal-name frame))