X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/08861c5cb87e91e83e5b0bf53cb53c1377434c8f..5dfac85d208a010f3261772ccdaa42803dd78bf8:/lisp/env.el diff --git a/lisp/env.el b/lisp/env.el index 4538e2dd71..9e3aed95f8 100644 --- a/lisp/env.el +++ b/lisp/env.el @@ -1,17 +1,17 @@ ;;; env.el --- functions to manipulate environment variables -;; Copyright (C) 1991, 1994, 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1994, 2000-2013 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: processes, unix +;; Package: emacs ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,9 +19,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -36,8 +34,6 @@ ;;; Code: -(eval-when-compile (require 'cl)) - ;; History list for environment variable names. (defvar read-envvar-name-history nil) @@ -200,62 +196,15 @@ in the environment list of the selected frame." (encode-coding-string variable locale-coding-system) variable) - frame))) + (and frame + (assq 'environment + (frame-parameters frame)))))) (if (and enable-multibyte-characters value) (setq value (decode-coding-string value locale-coding-system))) - (when (interactive-p) + (when (called-interactively-p 'interactive) (message "%s" (if value value "Not set"))) value)) -(defun environment (&optional frame) - "Return a list of environment variables with their values. -Each entry in the list is a string of the form NAME=VALUE. - -The returned list can not be used to change environment -variables, only read them. See `setenv' to do that. - -If optional parameter FRAME is non-nil, then it should be a -frame. The function returns the environment of that frame. - -The list is constructed by concatenating the elements of -`process-environment' and the 'environment parameter of the -selected frame, and removing duplicated and empty values. - -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-environment frame) - nil)) - (scan env) - prev seen) - ;; Remove unset variables from the beginning of the list. - (while (and env - (or (not (stringp (car env))) - (not (string-match "=" (car env))))) - (or (member (car env) seen) - (setq seen (cons (car env) seen))) - (setq env (cdr env) - scan env)) - (let (name) - (while scan - (cond ((or (not (stringp (car scan))) - (not (string-match "=" (car scan)))) - ;; Unset variable. - (or (member (car scan) seen) - (setq seen (cons (car scan) seen))) - (setcdr prev (cdr scan))) - ((member (setq name (substring (car scan) 0 (string-match "=" (car scan)))) seen) - ;; Duplicated variable. - (setcdr prev (cdr scan))) - (t - ;; New variable. - (setq seen (cons name seen)))) - (setq prev scan - scan (cdr scan)))) - env)) - (provide 'env) -;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8 ;;; env.el ends here