diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog.multi-tty | 13 | ||||
-rw-r--r-- | lisp/env.el | 18 | ||||
-rw-r--r-- | lisp/faces.el | 6 | ||||
-rw-r--r-- | lisp/frame.el | 12 | ||||
-rw-r--r-- | lisp/server.el | 13 |
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)) |