emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/env.el


From: Dave Love
Subject: [Emacs-diffs] Changes to emacs/lisp/env.el
Date: Mon, 24 Feb 2003 17:51:41 -0500

Index: emacs/lisp/env.el
diff -c emacs/lisp/env.el:1.27 emacs/lisp/env.el:1.28
*** emacs/lisp/env.el:1.27      Tue Feb  4 06:16:21 2003
--- emacs/lisp/env.el   Mon Feb 24 17:51:41 2003
***************
*** 1,6 ****
  ;;; env.el --- functions to manipulate environment variables
  
! ;; Copyright (C) 1991, 1994, 2000, 2001 Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
  ;; Keywords: processes, unix
--- 1,6 ----
  ;;; env.el --- functions to manipulate environment variables
  
! ;; Copyright (C) 1991, 1994, 2000, 2001, 2003 Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
  ;; Keywords: processes, unix
***************
*** 29,34 ****
--- 29,38 ----
  ;; program options.  This package permits you to set environment variables
  ;; to be passed to any sub-process run under Emacs.
  
+ ;; Note that the environment string `process-environment' is not
+ ;; decoded, but the args of `setenv' and `getenv' are normally
+ ;; multibyte text and get coding conversion.
+ 
  ;;; Code:
  
  ;; History list for environment variable names.
***************
*** 39,48 ****
  Optional second arg MUSTMATCH, if non-nil, means require existing envvar name.
  If it is also not t, RET does not exit if it does non-null completion."
    (completing-read prompt
!                  (mapcar (function
!                           (lambda (enventry)
!                             (list (substring enventry 0
!                                              (string-match "=" enventry)))))
                           process-environment)
                   nil mustmatch nil 'read-envvar-name-history))
  
--- 43,56 ----
  Optional second arg MUSTMATCH, if non-nil, means require existing envvar name.
  If it is also not t, RET does not exit if it does non-null completion."
    (completing-read prompt
!                  (mapcar (lambda (enventry)
!                            (list (if enable-multibyte-characters
!                                      (decode-coding-string
!                                       (substring enventry 0
!                                                  (string-match "=" enventry))
!                                       locale-coding-system t)
!                                    (substring enventry 0
!                                               (string-match "=" enventry)))))
                           process-environment)
                   nil mustmatch nil 'read-envvar-name-history))
  
***************
*** 59,67 ****
  dollar sign."
    (let ((start 0))
      (while (string-match
!           (rx (or (and "$" (submatch (1+ (in "a-zA-Z0-9_"))))
!                   (and "${" (submatch (minimal-match (0+ anything))) "}")
!                   "$$"))
            string start)
        (cond ((match-beginning 1)
             (let ((value (getenv (match-string 1 string))))
--- 67,76 ----
  dollar sign."
    (let ((start 0))
      (while (string-match
!           (eval-when-compile
!             (rx (or (and "$" (submatch (1+ (regexp "[:alnum:]_"))))
!                     (and "${" (submatch (minimal-match (0+ anything))) "}")
!                     "$$")))
            string start)
        (cond ((match-beginning 1)
             (let ((value (getenv (match-string 1 string))))
***************
*** 76,81 ****
--- 85,91 ----
                   start (+ (match-beginning 0) 1)))))
      string))
  
+ ;; Fixme: Should `process-environment' be recoded if LC_CTYPE &c is set?
  
  (defun setenv (variable &optional value unset substitute-env-vars)
    "Set the value of the environment variable named VARIABLE to VALUE.
***************
*** 92,98 ****
  appears at the front of the history list when you type in the new value.
  Interactively, always replace environment variables in the new value.
  
! This function works by modifying `process-environment'."
    (interactive
     (if current-prefix-arg
         (list (read-envvar-name "Clear environment variable: " 'exact) nil t)
--- 102,111 ----
  appears at the front of the history list when you type in the new value.
  Interactively, always replace environment variables in the new value.
  
! This function works by modifying `process-environment'.
! 
! As a special case, setting variable `TZ' calls `set-time-zone-rule' as
! a side-effect."
    (interactive
     (if current-prefix-arg
         (list (read-envvar-name "Clear environment variable: " 'exact) nil t)
***************
*** 107,116 ****
                                   value)
             nil
             t))))
!   (if unset
        (setq value nil)
      (if substitute-env-vars
        (setq value (substitute-env-vars value))))
    (if (string-match "=" variable)
        (error "Environment variable name `%s' contains `='" variable)
      (let ((pattern (concat "\\`" (regexp-quote (concat variable "="))))
--- 120,141 ----
                                   value)
             nil
             t))))
!   (if (and (multibyte-string-p variable) locale-coding-system)
!       (unless (memq (coding-system-base locale-coding-system)
!                   (find-coding-systems-string (concat variable value)))
!       (error "Can't encode `%s=%s' with `locale-coding-system'"
!              variable (or value "")))
!     (unless (memq 'undecided (find-coding-systems-string variable))
!       (error "Can't encode `%s=%s' with unspecified `locale-coding-system'"
!            variable (or value ""))))
!   (if unset 
        (setq value nil)
      (if substitute-env-vars
        (setq value (substitute-env-vars value))))
+   (if (multibyte-string-p variable)
+       (setq variable (encode-coding-string variable locale-coding-system)))
+   (if (and value (multibyte-string-p value))
+       (setq value (encode-coding-string value locale-coding-system)))
    (if (string-match "=" variable)
        (error "Environment variable name `%s' contains `='" variable)
      (let ((pattern (concat "\\`" (regexp-quote (concat variable "="))))
***************
*** 123,129 ****
        (cond ((string-match pattern (car scan))
               (setq found t)
               (if (eq nil value)
!                  (setq process-environment (delq (car scan) 
process-environment))
                 (setcar scan (concat variable "=" value)))
               (setq scan nil)))
        (setq scan (cdr scan)))
--- 148,155 ----
        (cond ((string-match pattern (car scan))
               (setq found t)
               (if (eq nil value)
!                  (setq process-environment (delq (car scan)
!                                                  process-environment))
                 (setcar scan (concat variable "=" value)))
               (setq scan nil)))
        (setq scan (cdr scan)))
***************
*** 142,148 ****
  This function consults the variable `process-environment'
  for its value."
    (interactive (list (read-envvar-name "Get environment variable: " t)))
!   (let ((value (getenv-internal variable)))
      (when (interactive-p)
        (message "%s" (if value value "Not set")))
      value))
--- 168,179 ----
  This function consults the variable `process-environment'
  for its value."
    (interactive (list (read-envvar-name "Get environment variable: " t)))
!   (let ((value (getenv-internal (if (multibyte-string-p variable)
!                                   (encode-coding-string
!                                    variable locale-coding-system)
!                                 variable))))
!     (if (and enable-multibyte-characters value)
!       (setq value (decode-coding-string value locale-coding-system)))
      (when (interactive-p)
        (message "%s" (if value value "Not set")))
      value))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]