Index: etc/NEWS =================================================================== RCS file: /sources/emacs/emacs/etc/NEWS,v retrieving revision 1.1545 retrieving revision 1.1550 diff -u -r1.1545 -r1.1550 --- etc/NEWS 30 Aug 2007 05:09:07 -0000 1.1545 +++ etc/NEWS 31 Aug 2007 08:11:26 -0000 1.1550 @@ -191,6 +191,8 @@ and C-x C-q in wdired-mode exits it with asking a question about saving changes. +*** The new command `eshell/info' runs info in an eshell buffer. + * Changes in Emacs 23.1 on non-free operating systems @@ -212,6 +214,9 @@ ** Changes related to multiple tty support. +*** $TERM is now set to `dumb' for subprocesses. If you want to know the +$TERM inherited by Emacs you will have to look inside initial-environment. + *** The `window-system' variable has been made frame-local. The new `initial-window-system' variable contains the `window-system' value for the first frame. @@ -225,15 +230,23 @@ *** The function `make-frame-on-display' now works during a tty session, and `make-frame-on-tty' works during a graphical session. -*** New functions: frame-tty-name, frame-tty-type, delete-tty, -suspend-tty, resume-tty, terminal-id, terminal-parameters, -terminal-parameter, set-terminal-parameter, -modify-terminal-parameters, environment, let-environment +*** New functions: `delete-tty', `suspend-tty', `resume-tty'. + +*** New functions: `terminal-id', `terminal-parameters', +`terminal-parameter', `set-terminal-parameter', +`modify-terminal-parameters'. + +*** New functions: `environment', `let-environment'. + +*** New variables: `local-key-translation-map', `local-function-key-map'. +These are in addition to the global key-translation-map and +function-key-map variables that already existed. + +??? How do the new variables relate to the old ones? -*** New variables: local-key-translation-map, local-function-key-map +*** `initial-environment' holds the environment inherited from Emacs's parent. -*** New frame parameters display-environment-variable and -term-environment-variable. +*** New frame parameter `display-environment-variable'. *** The `keyboard-translate-table' variable and the terminal and keyboard coding systems have been made terminal-local. Index: lisp/ChangeLog =================================================================== RCS file: /sources/emacs/emacs/lisp/ChangeLog,v retrieving revision 1.11658 retrieving revision 1.11666 diff -u -r1.11658 -r1.11666 --- lisp/ChangeLog 30 Aug 2007 09:48:05 -0000 1.11658 +++ lisp/ChangeLog 31 Aug 2007 10:13:35 -0000 1.11666 @@ -1,3 +1,41 @@ +2007-08-31 Jan Djärv + + * term/x-win.el (x-gtk-stock-map): Add etc/images to keys. + (x-gtk-map-stock): Use two directory elements when matching + file name. + +2007-08-31 James Wright + + * eshell/em-unix.el (eshell/info): New function. + +2007-08-31 Stefan Monnier + + * frame.el (frame-initialize, make-frame): + * server.el (server-process-filter): + * faces.el (tty-set-up-initial-frame-faces): Don't set + term-environment-variable since it's not used any more. + + * env.el (setenv): Don't treat $TERM specially. + + * startup.el (normal-top-level): Set $TERM to `dumb' so that unless + stated otherwise, subprocesses do not send back escape sequences + corresponding to the terminal from which Emacs was started. + +2007-08-31 Thien-Thi Nguyen + + * calculator.el: Require cl for compilation. + +2007-08-30 Daniel Pfeiffer + + * outline.el (outline-font-lock-levels): Comment out unused var. + (outline-font-lock-face): Wrap around face list to handle any + nesting depth gracefully. + +2007-08-30 Michael Albinus + + * net/ange-ftp.el: Add ange-ftp property to 'set-file-modes and + 'set-file-times. + 2007-08-30 Carsten Dominik * textmodes/org.el (org-export-visible): Fix drawers before export. @@ -14,8 +52,8 @@ (org-cycle): Docstring updated. (org-todo-keyword-faces): New option. (org-get-todo-face): New function. - (org-set-font-lock-defaults, org-agenda-highlight-todo): Use - `org-get-todo-face'. + (org-set-font-lock-defaults, org-agenda-highlight-todo): + Use `org-get-todo-face'. (org-switch-to-buffer-other-window): New function. (org-table-edit-field, org-table-show-reference) (org-table-edit-formulas, org-add-log-note) @@ -24,10 +62,10 @@ `switch-to-buffer-other-window' to make sure that the temporary windows show up on the current frame. (org-mhe-get-message-real-folder, org-batch-store-agenda-views) - (org-get-entries-from-diary, org-replace-region-by-html): Don't - allow pop-up frames. - (org-agenda-get-deadlines, org-agenda-get-scheduled): Fixed - problems with time-of-day. + (org-get-entries-from-diary, org-replace-region-by-html): + Don't allow pop-up frames. + (org-agenda-get-deadlines, org-agenda-get-scheduled): + Fix problems with time-of-day. (org-export-get-title-from-subtree): New function. (org-agenda-get-scheduled, org-agenda-get-deadlines): Fix problems with listing items that are DONE. @@ -37,15 +75,17 @@ (org-mode): Hide drawers on startup. (org-get-todo-face): New function. (org-todo-keyword-faces): New option. + (org-set-regexps-and-options): Use `org-remove-keyword-keys'. + (org-remove-keyword-keys): New function. 2007-08-30 Jari Aalto (tiny change) - * progmodes/grep.el (grep-find-ignored-directories): Add - monotone _MTN bookkeeping directory in workspaces. Add - RCS control directory. List items in alphabetical order. + * progmodes/grep.el (grep-find-ignored-directories): + Add monotone _MTN bookkeeping directory in workspaces. + Add RCS control directory. List items in alphabetical order. * progmodes/grep.el (grep-files-aliases): Add cc alias. - Sort items in alphabetical order. Fix parens. + Sort items in alphabetical order. Fix parens. 2007-08-29 Dan Nicolaescu @@ -2900,7 +2940,7 @@ * net/tramp-util.el: * net/tramp-vc.el: Removed. - * net/ange-ftp.el: Add ange-ftp property to 'start-file-process + * net/ange-ftp.el: Add ange-ftp property to 'start-file-process. (ange-ftp-file-remote-p): Handle optional parameter CONNECTED. * net/rcompile.el (remote-compile): Handle Tramp 2.1 arguments. Index: lisp/calculator.el =================================================================== RCS file: /sources/emacs/emacs/lisp/calculator.el,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- lisp/calculator.el 26 Jul 2007 05:26:18 -0000 1.29 +++ lisp/calculator.el 31 Aug 2007 01:55:09 -0000 1.30 @@ -5,7 +5,7 @@ ;; Author: Eli Barzilay ;; Keywords: tools, convenience -;; Time-stamp: <2006-02-06 13:36:00 ttn> +;; Time-stamp: <2007-08-31 03:00:11 ttn> ;; This file is part of GNU Emacs. @@ -47,6 +47,7 @@ ;;; History: ;; I hate history. +(eval-when-compile (require 'cl)) (eval-and-compile (if (fboundp 'defgroup) nil (defmacro defgroup (&rest forms) nil) Index: lisp/env.el =================================================================== RCS file: /sources/emacs/emacs/lisp/env.el,v retrieving revision 1.40 retrieving revision 1.42 diff -u -r1.40 -r1.42 --- lisp/env.el 29 Aug 2007 05:28:04 -0000 1.40 +++ lisp/env.el 31 Aug 2007 07:35:59 -0000 1.42 @@ -192,12 +192,10 @@ (setq process-environment (setenv-internal process-environment variable value t)) (setq frame (frame-with-environment frame)) - (cond - ((string-equal "TERM" variable) - (set-frame-parameter frame 'term-environment-variable value)) + (cond ((string-equal "DISPLAY" variable) (set-frame-parameter frame 'display-environment-variable value)) - (t + (t (setq process-environment (setenv-internal process-environment variable value nil))))) value) @@ -316,5 +314,5 @@ (provide 'env) -;;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8 +;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8 ;;; env.el ends here Index: lisp/faces.el =================================================================== RCS file: /sources/emacs/emacs/lisp/faces.el,v retrieving revision 1.374 retrieving revision 1.375 diff -u -r1.374 -r1.375 --- lisp/faces.el 29 Aug 2007 05:28:06 -0000 1.374 +++ lisp/faces.el 31 Aug 2007 07:36:48 -0000 1.375 @@ -1933,8 +1933,6 @@ (let ((frame (selected-frame))) (frame-set-background-mode 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")))) Index: lisp/frame.el =================================================================== RCS file: /sources/emacs/emacs/lisp/frame.el,v retrieving revision 1.247 retrieving revision 1.248 diff -u -r1.247 -r1.248 --- lisp/frame.el 29 Aug 2007 05:28:04 -0000 1.247 +++ lisp/frame.el 31 Aug 2007 07:38:22 -0000 1.248 @@ -241,8 +241,6 @@ ;; 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 @@ -731,14 +729,11 @@ ;; Inherit the 'environment and 'client parameters. (let ((env (frame-parameter oldframe 'environment)) (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))) Index: lisp/outline.el =================================================================== RCS file: /sources/emacs/emacs/lisp/outline.el,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- lisp/outline.el 26 Jul 2007 05:26:29 -0000 1.31 +++ lisp/outline.el 30 Aug 2007 21:39:20 -0000 1.32 @@ -215,8 +215,8 @@ [outline-1 outline-2 outline-3 outline-4 outline-5 outline-6 outline-7 outline-8]) -(defvar outline-font-lock-levels nil) -(make-variable-buffer-local 'outline-font-lock-levels) +;; (defvar outline-font-lock-levels nil) +;; (make-variable-buffer-local 'outline-font-lock-levels) (defun outline-font-lock-face () ;; (save-excursion @@ -241,9 +241,7 @@ (save-excursion (goto-char (match-beginning 0)) (looking-at outline-regexp) - (condition-case nil - (aref outline-font-lock-faces (1- (funcall outline-level))) - (error font-lock-warning-face)))) + (aref outline-font-lock-faces (% (1- (funcall outline-level)) (length outline-font-lock-faces))))) (defvar outline-view-change-hook nil "Normal hook to be run after outline visibility changes.") Index: lisp/server.el =================================================================== RCS file: /sources/emacs/emacs/lisp/server.el,v retrieving revision 1.132 retrieving revision 1.133 diff -u -r1.132 -r1.133 --- lisp/server.el 29 Aug 2007 05:28:04 -0000 1.132 +++ lisp/server.el 31 Aug 2007 07:37:33 -0000 1.133 @@ -766,8 +766,6 @@ (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)) @@ -828,8 +826,6 @@ (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)) Index: lisp/startup.el =================================================================== RCS file: /sources/emacs/emacs/lisp/startup.el,v retrieving revision 1.451 retrieving revision 1.452 diff -u -r1.451 -r1.452 --- lisp/startup.el 29 Aug 2007 05:28:06 -0000 1.451 +++ lisp/startup.el 31 Aug 2007 06:57:24 -0000 1.452 @@ -486,7 +486,12 @@ (run-hooks 'window-setup-hook)) (or menubar-bindings-done (if (display-popup-menus-p) - (precompute-menubar-bindings))))))) + (precompute-menubar-bindings))))) + ;; Subprocesses of Emacs do not have direct access to the terminal, so + ;; unless told otherwise they should only assume a dumb terminal. + ;; We are careful to do it late (after term-setup-hook), although the + ;; new multi-tty code does not use $TERM any more there anyway. + (setenv "TERM" "dumb"))) ;; Precompute the keyboard equivalents in the menu bar items. (defun precompute-menubar-bindings () Index: lisp/eshell/em-unix.el =================================================================== RCS file: /sources/emacs/emacs/lisp/eshell/em-unix.el,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- lisp/eshell/em-unix.el 26 Jul 2007 05:26:54 -0000 1.30 +++ lisp/eshell/em-unix.el 31 Aug 2007 08:08:37 -0000 1.31 @@ -168,6 +168,35 @@ (put 'eshell/man 'eshell-no-numeric-conversions t) +(defun eshell/info (&rest args) + "Runs the info command in-frame with the same behaviour as command-line `info', ie: + 'info' => goes to top info window + 'info arg1' => IF arg1 is a file, then visits arg1 + 'info arg1' => OTHERWISE goes to top info window and then menu item arg1 + 'info arg1 arg2' => does action for arg1 (either visit-file or menu-item) and then menu item arg2 + etc." + (require 'info) + (let ((file (cond + ((not (stringp (car args))) + nil) + ((file-exists-p (expand-file-name (car args))) + (expand-file-name (car args))) + ((file-exists-p (concat (expand-file-name (car args)) ".info")) + (concat (expand-file-name (car args)) ".info"))))) + + ;; If the first arg is a file, then go to that file's Top node + ;; Otherwise, go to the global directory + (if file + (progn + (setq args (cdr args)) + (Info-find-node file "Top")) + (Info-directory)) + + ;; Treat all remaining args as menu references + (while args + (Info-menu (car args)) + (setq args (cdr args))))) + (defun eshell-remove-entries (path files &optional top-level) "From PATH, remove all of the given FILES, perhaps interactively." (while files Index: lisp/net/ange-ftp.el =================================================================== RCS file: /sources/emacs/emacs/lisp/net/ange-ftp.el,v retrieving revision 1.90 retrieving revision 1.91 diff -u -r1.90 -r1.91 --- lisp/net/ange-ftp.el 6 Aug 2007 07:22:20 -0000 1.90 +++ lisp/net/ange-ftp.el 30 Aug 2007 19:58:28 -0000 1.91 @@ -4372,12 +4372,18 @@ ;; Treat each name as its own truename. (put 'file-truename 'ange-ftp 'identity) +;; We must return non-nil in order to mask our inability to do the job. +;; Otherwise there are errors when applied to the target file during +;; copying from a (localhost) Tramp file. +(put 'set-file-modes 'ange-ftp 'ignore) +(put 'set-file-times 'ange-ftp 'ignore) + ;; Turn off RCS/SCCS processing to save time. ;; This returns nil for any file name as argument. (put 'vc-registered 'ange-ftp 'null) ;; We can handle process-file in a restricted way (just for chown). -;; Nothing possible for start-file-process. +;; Nothing possible for `start-file-process'. (put 'process-file 'ange-ftp 'ange-ftp-process-file) (put 'start-file-process 'ange-ftp 'ignore) (put 'shell-command 'ange-ftp 'ange-ftp-shell-command) Index: lisp/term/x-win.el =================================================================== RCS file: /sources/emacs/emacs/lisp/term/x-win.el,v retrieving revision 1.207 retrieving revision 1.208 diff -u -r1.207 -r1.208 --- lisp/term/x-win.el 29 Aug 2007 06:00:11 -0000 1.207 +++ lisp/term/x-win.el 31 Aug 2007 10:13:26 -0000 1.208 @@ -401,6 +401,7 @@ (defconst x-pointer-ur-angle 148) (defconst x-pointer-watch 150) (defconst x-pointer-xterm 152) +(defconst x-pointer-invisible 255) ;; ;; Available colors @@ -2578,27 +2579,27 @@ (defcustom x-gtk-stock-map '( - ("new" . "gtk-new") - ("open" . "gtk-open") - ("diropen" . "gtk-directory") - ("close" . "gtk-close") - ("save" . "gtk-save") - ("saveas" . "gtk-save-as") - ("undo" . "gtk-undo") - ("cut" . "gtk-cut") - ("copy" . "gtk-copy") - ("paste" . "gtk-paste") - ("search" . "gtk-find") - ("print" . "gtk-print") - ("preferences" . "gtk-preferences") - ("help" . "gtk-help") - ("left-arrow" . "gtk-go-back") - ("right-arrow" . "gtk-go-forward") - ("home" . "gtk-home") - ("jump-to" . "gtk-jump-to") - ("index" . "gtk-index") - ("search" . "gtk-find") - ("exit" . "gtk-quit")) + ("etc/images/new" . "gtk-new") + ("etc/images/open" . "gtk-open") + ("etc/images/diropen" . "gtk-directory") + ("etc/images/close" . "gtk-close") + ("etc/images/save" . "gtk-save") + ("etc/images/saveas" . "gtk-save-as") + ("etc/images/undo" . "gtk-undo") + ("etc/images/cut" . "gtk-cut") + ("etc/images/copy" . "gtk-copy") + ("etc/images/paste" . "gtk-paste") + ("etc/images/search" . "gtk-find") + ("etc/images/print" . "gtk-print") + ("etc/images/preferences" . "gtk-preferences") + ("etc/images/help" . "gtk-help") + ("etc/images/left-arrow" . "gtk-go-back") + ("etc/images/right-arrow" . "gtk-go-forward") + ("etc/images/home" . "gtk-home") + ("etc/images/jump-to" . "gtk-jump-to") + ("etc/images/index" . "gtk-index") + ("etc/images/search" . "gtk-find") + ("etc/images/exit" . "gtk-quit")) "How icons for tool bars are mapped to Gtk+ stock items. Emacs must be compiled with the Gtk+ toolkit for this to have any effect." :version "23.1" @@ -2607,10 +2608,10 @@ (defun x-gtk-map-stock (file) "Map icon with file name FILE to a Gtk+ stock name, using `x-gtk-stock-map'." - (let ((value (and file - (assoc-string (file-name-sans-extension - (file-name-nondirectory file)) - x-gtk-stock-map)))) + (let* ((file-sans (file-name-sans-extension file)) + (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans) + (match-string 1 file-sans))) + (value (assoc-string (or key file-sans) x-gtk-stock-map))) (and value (cdr value)))) ;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78 Index: lisp/textmodes/org.el =================================================================== RCS file: /sources/emacs/emacs/lisp/textmodes/org.el,v retrieving revision 1.150 retrieving revision 1.151 diff -u -r1.150 -r1.151 --- lisp/textmodes/org.el 30 Aug 2007 09:48:23 -0000 1.150 +++ lisp/textmodes/org.el 30 Aug 2007 13:56:28 -0000 1.151 @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 5.07 +;; Version: 5.08 ;; ;; This file is part of GNU Emacs. ;; @@ -3827,7 +3827,7 @@ kws0) kwsa (if kwsa (append '((:startgroup)) kwsa '((:endgroup)))) hw (car kws1) - dws (if sep (cdr sep) (last kws1)) + dws (if sep (org-remove-keyword-keys (cdr sep)) (last kws1)) tail (list inter hw (car dws) (org-last dws))) (add-to-list 'org-todo-heads hw 'append) (push kws1 org-todo-sets) @@ -3936,6 +3936,12 @@ (org-set-font-lock-defaults))) +(defun org-remove-keyword-keys (list) + (mapcar (lambda (x) + (if (string-match "(.)$" x) + (substring x 0 (match-beginning 0)) + x)) + list)) ;;; Some variables ujsed in various places Index: src/ChangeLog =================================================================== RCS file: /sources/emacs/emacs/src/ChangeLog,v retrieving revision 1.5813 retrieving revision 1.5816 diff -u -r1.5813 -r1.5816 --- src/ChangeLog 29 Aug 2007 22:19:43 -0000 1.5813 +++ src/ChangeLog 31 Aug 2007 10:17:15 -0000 1.5816 @@ -1,3 +1,23 @@ +2007-08-31 Jan Djärv + + * gtkutil.c (update_frame_tool_bar): Initialize wbutton to NULL. + +2007-08-31 Stefan Monnier + + * frame.h: + * frame.c (Qterm_environment_variable): Remove. + (syms_of_frame): Don't init and staticpro it. + + + * callproc.c (getenv_internal): Remove special case for $TERM. + + * callproc.c (Vinitial_environment): New variable. + (set_initial_environment): Initialize it. + (syms_of_callproc): Declare it. + (child_setup): Don't mess with TERM via Qterm_environment_variable; the + TERM under which a process runs is never related to the TERM in which + Emacs is running. + 2007-08-29 Dan Nicolaescu * config.in (HAVE_WINDOW_SYSTEM): Don't undef MULTI_KBOARD here... @@ -825,8 +845,7 @@ For consistency, run after_insert_file_functions iff something got inserted. Move signal_after_change and update_compositions after code running after_insert_file_functions. Make sure that - undo_list doesn't record intermediate steps of the decoding - process. + undo_list doesn't record intermediate steps of the decoding process. 2007-08-07 YAMAMOTO Mitsuharu @@ -1015,8 +1034,8 @@ 2007-07-17 Glenn Morris * abbrev.c (abbrev_check_chars): New function. - (Fdefine_global_abbrev, Fdefine_mode_abbrev): Call - abbrev_check_chars to check abbrev characters are word + (Fdefine_global_abbrev, Fdefine_mode_abbrev): + Call abbrev_check_chars to check abbrev characters are word constituents. Doc fix. 2007-07-17 Stefan Monnier Index: src/callproc.c =================================================================== RCS file: /sources/emacs/emacs/src/callproc.c,v retrieving revision 1.224 retrieving revision 1.227 diff -u -r1.224 -r1.227 --- src/callproc.c 29 Aug 2007 05:27:51 -0000 1.224 +++ src/callproc.c 31 Aug 2007 07:33:10 -0000 1.227 @@ -113,7 +113,7 @@ Lisp_Object Vshell_file_name; -Lisp_Object Vprocess_environment; +Lisp_Object Vprocess_environment, Vinitial_environment; #ifdef DOS_NT Lisp_Object Qbuffer_file_type; @@ -1245,8 +1245,6 @@ { char **env; char *pwd_var; - char *term_var; - char *display_var; #ifdef WINDOWSNT int cpid; HANDLE handles[3]; @@ -1330,7 +1328,6 @@ Lisp_Object local = selected_frame; /* get_frame_param (XFRAME (Fframe_with_environment (selected_frame)), */ /* Qenvironment); */ - Lisp_Object term; Lisp_Object display; new_length = 0; @@ -1347,33 +1344,19 @@ new_length++; #endif - /* Add TERM and DISPLAY from the frame local values. */ - term = get_frame_param (XFRAME (local), Qterm_environment_variable); - if (! NILP (term)) - new_length++; - + /* Add DISPLAY from the frame local values. */ display = get_frame_param (XFRAME (local), Qdisplay_environment_variable); if (! NILP (display)) new_length++; /* new_length + 2 to include PWD and terminating 0. */ env = new_env = (char **) alloca ((new_length + 2) * sizeof (char *)); - /* If we have a PWD envvar, pass one down, but with corrected value. */ if (egetenv ("PWD")) *new_env++ = pwd_var; - if (! NILP (term)) - { - int vlen = strlen ("TERM=") + strlen (SDATA (term)) + 1; - char *vdata = (char *) alloca (vlen); - strcpy (vdata, "TERM="); - strcat (vdata, SDATA (term)); - new_env = add_env (env, new_env, vdata); - } - - if (! NILP (display)) + if (STRINGP (display)) { int vlen = strlen ("DISPLAY=") + strlen (SDATA (display)) + 1; char *vdata = (char *) alloca (vlen); @@ -1387,8 +1370,7 @@ CONSP (tem) && STRINGP (XCAR (tem)); tem = XCDR (tem)) { - if ((strcmp (SDATA (XCAR (tem)), "TERM") != 0) - && (strcmp (SDATA (XCAR (tem)), "DISPLAY") != 0)) + if (strcmp (SDATA (XCAR (tem)), "DISPLAY") != 0) new_env = add_env (env, new_env, SDATA (XCAR (tem))); } @@ -1537,9 +1519,9 @@ Lisp_Object frame; { Lisp_Object scan; - Lisp_Object term; Lisp_Object display; - + + /* FIXME: Code duplication. */ if (NILP (frame)) { @@ -1574,15 +1556,7 @@ frame = selected_frame; } - /* For TERM and DISPLAY first try to get the values from the frame. */ - term = get_frame_param (XFRAME (frame), Qterm_environment_variable); - if (strcmp (var, "TERM") == 0) - if (! NILP (term)) - { - *value = (char *) SDATA (term); - *valuelen = SBYTES (term); - return 1; - } + /* For DISPLAY first try to get the values from the frame. */ display = get_frame_param (XFRAME (frame), Qdisplay_environment_variable); if (strcmp (var, "DISPLAY") == 0) if (! NILP (display)) @@ -1833,7 +1807,6 @@ set_initial_environment () { register char **envp; - Lisp_Object env = Vprocess_environment; #ifndef CANNOT_DUMP if (initialized) #endif @@ -1842,6 +1815,9 @@ Vprocess_environment = Fcons (build_string (*envp), Vprocess_environment); store_frame_param (SELECTED_FRAME(), Qenvironment, Vprocess_environment); + /* Ideally, the `copy' shouldn't be necessary, but it seems it's frequent + to use `delete' and friends on process-environment. */ + Vinitial_environment = Fcopy_sequence (Vprocess_environment); } } @@ -1901,6 +1877,12 @@ This is used by `call-process-region'. */); /* This variable is initialized in init_callproc. */ + DEFVAR_LISP ("initial-environment", &Vinitial_environment, + doc: /* List of environment variables inherited from the parent process. +Each element should be a string of the form ENVVARNAME=VALUE. +The elements must normally be decoded (using `locale-coding-system') for use. */); + Vinitial_environment = Qnil; + DEFVAR_LISP ("process-environment", &Vprocess_environment, doc: /* List of overridden environment variables for subprocesses to inherit. Each element should be a string of the form ENVVARNAME=VALUE. Index: src/frame.c =================================================================== RCS file: /sources/emacs/emacs/src/frame.c,v retrieving revision 1.345 retrieving revision 1.346 diff -u -r1.345 -r1.346 --- src/frame.c 29 Aug 2007 21:47:40 -0000 1.345 +++ src/frame.c 31 Aug 2007 07:34:50 -0000 1.346 @@ -111,7 +111,6 @@ Lisp_Object Qtty, Qtty_type; Lisp_Object Qwindow_system; Lisp_Object Qenvironment; -Lisp_Object Qterm_environment_variable; Lisp_Object Qdisplay_environment_variable; Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth; @@ -4357,8 +4356,6 @@ Qenvironment = intern ("environment"); staticpro (&Qenvironment); - Qterm_environment_variable = intern ("term-environment-variable"); - staticpro (&Qterm_environment_variable); Qdisplay_environment_variable = intern ("display-environment-variable"); staticpro (&Qdisplay_environment_variable); Index: src/frame.h =================================================================== RCS file: /sources/emacs/emacs/src/frame.h,v retrieving revision 1.121 retrieving revision 1.122 diff -u -r1.121 -r1.122 --- src/frame.h 29 Aug 2007 05:27:54 -0000 1.121 +++ src/frame.h 31 Aug 2007 07:33:44 -0000 1.122 @@ -780,7 +780,6 @@ extern Lisp_Object Qtty, Qtty_type; extern Lisp_Object Qterminal, Qterminal_live_p; extern Lisp_Object Qenvironment; -extern Lisp_Object Qterm_environment_variable; extern Lisp_Object Qdisplay_environment_variable; extern struct frame *last_nonminibuf_frame; Index: src/gtkutil.c =================================================================== RCS file: /sources/emacs/emacs/src/gtkutil.c,v retrieving revision 1.113 retrieving revision 1.114 diff -u -r1.113 -r1.114 --- src/gtkutil.c 29 Aug 2007 05:27:55 -0000 1.113 +++ src/gtkutil.c 31 Aug 2007 10:17:02 -0000 1.114 @@ -3810,7 +3810,7 @@ GtkStockItem stock_item; char *stock_name = NULL; Lisp_Object rtl; - GtkWidget *wbutton; + GtkWidget *wbutton = NULL; GtkWidget *weventbox; Lisp_Object func = intern ("x-gtk-map-stock");