annotate lisp/env.el @ 85366:e8f9d460bc3e

(compilation-next-error-function): Fix timestamp handling, so compilation-fake-loc works again.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 17 Oct 2007 16:24:33 +0000
parents 740ac1a0736b
children 107ccd98fa12 d38543a1c0f9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 28917
diff changeset
1 ;;; env.el --- functions to manipulate environment variables
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1991, 1994, 2000, 2001, 2002, 2003, 2004,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 70417
diff changeset
4 ;; 2005, 2006, 2007 Free Software Foundation, Inc.
1185
4ec50a934e54 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
5
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
6 ;; Maintainer: FSF
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1218
diff changeset
7 ;; Keywords: processes, unix
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
8
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
9 ;; This file is part of GNU Emacs.
489
3d2d0362a496 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
78236
9355f9b7bbff Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75347
diff changeset
13 ;; the Free Software Foundation; either version 3, or (at your option)
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
14 ;; any later version.
489
3d2d0362a496 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
19 ;; GNU General Public License for more details.
489
3d2d0362a496 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
21 ;; You should have received a copy of the GNU General Public License
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
24 ;; Boston, MA 02110-1301, USA.
489
3d2d0362a496 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1218
diff changeset
26 ;;; Commentary:
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1218
diff changeset
27
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
28 ;; UNIX processes inherit a list of name-to-string associations from their
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
29 ;; parents called their `environment'; these are commonly used to control
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
30 ;; program options. This package permits you to set environment variables
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13018
diff changeset
31 ;; to be passed to any sub-process run under Emacs.
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1218
diff changeset
32
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
33 ;; Note that the environment string `process-environment' is not
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
34 ;; decoded, but the args of `setenv' and `getenv' are normally
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
35 ;; multibyte text and get coding conversion.
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
36
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
37 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
38
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
39 (eval-when-compile (require 'cl))
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
40
9220
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
41 ;; History list for environment variable names.
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
42 (defvar read-envvar-name-history nil)
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
43
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
44 (defun read-envvar-name (prompt &optional mustmatch)
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
45 "Read environment variable name, prompting with PROMPT.
9345
832197fec54d (read-envvar-name): Special meaning for MUSTMATCH
Richard M. Stallman <rms@gnu.org>
parents: 9220
diff changeset
46 Optional second arg MUSTMATCH, if non-nil, means require existing envvar name.
832197fec54d (read-envvar-name): Special meaning for MUSTMATCH
Richard M. Stallman <rms@gnu.org>
parents: 9220
diff changeset
47 If it is also not t, RET does not exit if it does non-null completion."
9220
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
48 (completing-read prompt
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
49 (mapcar (lambda (enventry)
85142
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
50 (let ((str (substring enventry 0
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
51 (string-match "=" enventry))))
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
52 (if (multibyte-string-p str)
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
53 (decode-coding-string
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
54 str locale-coding-system t)
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
55 str)))
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
56 (append process-environment
85142
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
57 ;;(frame-environment)
83640
2aee92eacdab * server.el (server-process-filter): Likewise.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83594
diff changeset
58 ))
9220
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
59 nil mustmatch nil 'read-envvar-name-history))
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
60
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
61 ;; History list for VALUE argument to setenv.
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
62 (defvar setenv-history nil)
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
63
39554
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
64
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
65 (defun substitute-env-vars (string)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
66 "Substitute environment variables referred to in STRING.
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
67 `$FOO' where FOO is an environment variable name means to substitute
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
68 the value of that variable. The variable name should be terminated
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
69 with a character not a letter, digit or underscore; otherwise, enclose
51279
92f5fdc30889 (substitute-env-vars): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 50873
diff changeset
70 the entire variable name in braces. For instance, in `ab$cd-x',
92f5fdc30889 (substitute-env-vars): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 50873
diff changeset
71 `$cd' is treated as an environment variable.
92f5fdc30889 (substitute-env-vars): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 50873
diff changeset
72
92f5fdc30889 (substitute-env-vars): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 50873
diff changeset
73 Use `$$' to insert a single dollar sign."
39554
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
74 (let ((start 0))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40430
diff changeset
75 (while (string-match
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
76 (eval-when-compile
51279
92f5fdc30889 (substitute-env-vars): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 50873
diff changeset
77 (rx (or (and "$" (submatch (1+ (regexp "[[:alnum:]_]"))))
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
78 (and "${" (submatch (minimal-match (0+ anything))) "}")
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
79 "$$")))
39554
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
80 string start)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
81 (cond ((match-beginning 1)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
82 (let ((value (getenv (match-string 1 string))))
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
83 (setq string (replace-match (or value "") t t string)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
84 start (+ (match-beginning 0) (length value)))))
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
85 ((match-beginning 2)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
86 (let ((value (getenv (match-string 2 string))))
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
87 (setq string (replace-match (or value "") t t string)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
88 start (+ (match-beginning 0) (length value)))))
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
89 (t
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
90 (setq string (replace-match "$" t t string)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
91 start (+ (match-beginning 0) 1)))))
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
92 string))
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
93
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
94
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
95 (defun setenv-internal (env variable value keep-empty)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
96 "Set VARIABLE to VALUE in ENV, adding empty entries if KEEP-EMPTY.
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
97 Changes ENV by side-effect, and returns its new value."
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
98 (let ((pattern (concat "\\`" (regexp-quote variable) "\\(=\\|\\'\\)"))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
99 (case-fold-search nil)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
100 (scan env)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
101 prev found)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
102 ;; Handle deletions from the beginning of the list specially.
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
103 (if (and (null value)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
104 (not keep-empty)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
105 env
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
106 (stringp (car env))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
107 (string-match pattern (car env)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
108 (cdr env)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
109 ;; Try to find existing entry for VARIABLE in ENV.
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
110 (while (and scan (stringp (car scan)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
111 (when (string-match pattern (car scan))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
112 (if value
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
113 (setcar scan (concat variable "=" value))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
114 (if keep-empty
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
115 (setcar scan variable)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
116 (setcdr prev (cdr scan))))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
117 (setq found t
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
118 scan nil))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
119 (setq prev scan
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
120 scan (cdr scan)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
121 (if (and (not found) (or value keep-empty))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
122 (cons (if value
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
123 (concat variable "=" value)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
124 variable)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
125 env)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
126 env))))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
127
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
128 ;; Fixme: Should the environment be recoded if LC_CTYPE &c is set?
39554
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
129
85142
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
130 (defun setenv (variable &optional value substitute-env-vars)
489
3d2d0362a496 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 "Set the value of the environment variable named VARIABLE to VALUE.
50873
562c854aa190 (setenv): Don't quote nil and t in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 49977
diff changeset
132 VARIABLE should be a string. VALUE is optional; if not provided or
70094
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
133 nil, the environment variable VARIABLE will be removed.
8004
a86eceda6537 (setenv): Rewrite. Provide a way to unset interactively.
Richard M. Stallman <rms@gnu.org>
parents: 8002
diff changeset
134
83430
10f26433fe3f Update environment-related doc strings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83427
diff changeset
135 Interactively, a prefix argument means to unset the variable, and
10f26433fe3f Update environment-related doc strings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83427
diff changeset
136 otherwise the current value (if any) of the variable appears at
10f26433fe3f Update environment-related doc strings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83427
diff changeset
137 the front of the history list when you type in the new value.
10f26433fe3f Update environment-related doc strings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83427
diff changeset
138 This function always replaces environment variables in the new
10f26433fe3f Update environment-related doc strings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83427
diff changeset
139 value when called interactively.
9220
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
140
70094
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
141 SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
142 variables in VALUE with `substitute-env-vars', which see.
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
143 This is normally used only for interactive calls.
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
144
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
145 The return value is the new value of VARIABLE, or nil if
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
146 it was removed from the environment.
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
147
85142
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
148 This function works by modifying `process-environment'.
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
149
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
150 As a special case, setting variable `TZ' calls `set-time-zone-rule' as
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
151 a side-effect."
8004
a86eceda6537 (setenv): Rewrite. Provide a way to unset interactively.
Richard M. Stallman <rms@gnu.org>
parents: 8002
diff changeset
152 (interactive
a86eceda6537 (setenv): Rewrite. Provide a way to unset interactively.
Richard M. Stallman <rms@gnu.org>
parents: 8002
diff changeset
153 (if current-prefix-arg
70094
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
154 (list (read-envvar-name "Clear environment variable: " 'exact) nil)
39126
c0713ad66d33 (setenv): Interactively, if VARIABLE has a current value,
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
155 (let* ((var (read-envvar-name "Set environment variable: " nil))
c0713ad66d33 (setenv): Interactively, if VARIABLE has a current value,
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
156 (value (getenv var)))
c0713ad66d33 (setenv): Interactively, if VARIABLE has a current value,
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
157 (when value
70417
95f3ef491663 (setenv): Use add-to-history.
Kim F. Storm <storm@cua.dk>
parents: 70094
diff changeset
158 (add-to-history 'setenv-history value))
9220
8f05784959cc (setenv-history): New history list.
Richard M. Stallman <rms@gnu.org>
parents: 8005
diff changeset
159 ;; Here finally we specify the args to give call setenv with.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40430
diff changeset
160 (list var
39554
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
161 (read-from-minibuffer (format "Set %s to value: " var)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
162 nil nil nil 'setenv-history
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
163 value)
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
164 t))))
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
165 (if (and (multibyte-string-p variable) locale-coding-system)
49977
f491c5cee974 (setenv): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 49968
diff changeset
166 (let ((codings (find-coding-systems-string (concat variable value))))
f491c5cee974 (setenv): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 49968
diff changeset
167 (unless (or (eq 'undecided (car codings))
f491c5cee974 (setenv): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 49968
diff changeset
168 (memq (coding-system-base locale-coding-system) codings))
f491c5cee974 (setenv): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 49968
diff changeset
169 (error "Can't encode `%s=%s' with `locale-coding-system'"
f491c5cee974 (setenv): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 49968
diff changeset
170 variable (or value "")))))
70094
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
171 (and value
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
172 substitute-env-vars
d893c3bf4c3b (setenv): Get rid of arg UNSET. Interactive unsetting
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
173 (setq value (substitute-env-vars value)))
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
174 (if (multibyte-string-p variable)
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
175 (setq variable (encode-coding-string variable locale-coding-system)))
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
176 (if (and value (multibyte-string-p value))
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
177 (setq value (encode-coding-string value locale-coding-system)))
489
3d2d0362a496 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (if (string-match "=" variable)
83421
bb2edc915032 Implement automatic terminal-local environment variables via `local-environment-variables'.
Karoly Lorentey <lorentey@elte.hu>
parents: 64762
diff changeset
179 (error "Environment variable name `%s' contains `='" variable))
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
180 (if (string-equal "TZ" variable)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
181 (set-time-zone-rule value))
85142
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
182 (setq process-environment (setenv-internal process-environment
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
183 variable value t))
39554
c1fb5574fc7a (substitute-env-vars): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39126
diff changeset
184 value)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 489
diff changeset
185
83427
2afc49c9f0c0 Store local environment in frame (not terminal) parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 83425
diff changeset
186 (defun getenv (variable &optional frame)
28917
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
187 "Get the value of environment variable VARIABLE.
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
188 VARIABLE should be a string. Value is nil if VARIABLE is undefined in
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
189 the environment. Otherwise, value is a string.
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
190
83427
2afc49c9f0c0 Store local environment in frame (not terminal) parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 83425
diff changeset
191 If optional parameter FRAME is non-nil, then it should be a
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
192 frame. This function will look up VARIABLE in its 'environment
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
193 parameter.
83421
bb2edc915032 Implement automatic terminal-local environment variables via `local-environment-variables'.
Karoly Lorentey <lorentey@elte.hu>
parents: 64762
diff changeset
194
83427
2afc49c9f0c0 Store local environment in frame (not terminal) parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 83425
diff changeset
195 Otherwise, this function searches `process-environment' for
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
196 VARIABLE. If it is not found there, then it continues the search
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
197 in the environment list of the selected frame."
28917
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
198 (interactive (list (read-envvar-name "Get environment variable: " t)))
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
199 (let ((value (getenv-internal (if (multibyte-string-p variable)
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
200 (encode-coding-string
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
201 variable locale-coding-system)
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83568
diff changeset
202 variable)
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83568
diff changeset
203 frame)))
49968
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
204 (if (and enable-multibyte-characters value)
80ed3e75ba10 (read-envvar-name): Decode names.
Dave Love <fx@gnu.org>
parents: 49588
diff changeset
205 (setq value (decode-coding-string value locale-coding-system)))
28917
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
206 (when (interactive-p)
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
207 (message "%s" (if value value "Not set")))
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
208 value))
845292e36d62 (getenv): New function, interactively callable.
Gerd Moellmann <gerd@gnu.org>
parents: 21201
diff changeset
209
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83568
diff changeset
210 (defun environment (&optional frame)
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
211 "Return a list of environment variables with their values.
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
212 Each entry in the list is a string of the form NAME=VALUE.
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
213
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
214 The returned list can not be used to change environment
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
215 variables, only read them. See `setenv' to do that.
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
216
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83568
diff changeset
217 If optional parameter FRAME is non-nil, then it should be a
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83568
diff changeset
218 frame. The function returns the environment of that frame.
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83568
diff changeset
219
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
220 The list is constructed by concatenating the elements of
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
221 `process-environment' and the 'environment parameter of the
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
222 selected frame, and removing duplicated and empty values.
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
223
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
224 Non-ASCII characters are encoded according to the initial value of
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
225 `locale-coding-system', i.e. the elements must normally be decoded for use.
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
226 See `setenv' and `getenv'."
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
227 (let* ((env (append process-environment
85142
740ac1a0736b (let-environment): Remove. Unused.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84751
diff changeset
228 ;; (frame-environment frame)
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
229 nil))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
230 (scan env)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
231 prev seen)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
232 ;; Remove unset variables from the beginning of the list.
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
233 (while (and env
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
234 (or (not (stringp (car env)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
235 (not (string-match "=" (car env)))))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
236 (or (member (car env) seen)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
237 (setq seen (cons (car env) seen)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
238 (setq env (cdr env)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
239 scan env))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
240 (let (name)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
241 (while scan
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
242 (cond ((or (not (stringp (car scan)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
243 (not (string-match "=" (car scan))))
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
244 ;; Unset variable.
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
245 (or (member (car scan) seen)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
246 (setq seen (cons (car scan) seen)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
247 (setcdr prev (cdr scan)))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
248 ((member (setq name (substring (car scan) 0 (string-match "=" (car scan)))) seen)
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
249 ;; Duplicated variable.
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
250 (setcdr prev (cdr scan)))
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
251 (t
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
252 ;; New variable.
83529
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
253 (setq seen (cons name seen))))
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
254 (setq prev scan
0d9e16eab053 Rework environment variable support. (Reported by Kalle Olavi Niemitalo and Noah Friedman.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83516
diff changeset
255 scan (cdr scan))))
83425
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
256 env))
c82829d08b89 Fix semantics of let-binding `process-environment'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83421
diff changeset
257
2403
05d8916e4cde renamed to env.el; changed setenv to putenv.
Noah Friedman <friedman@splode.com>
parents: 2315
diff changeset
258 (provide 'env)
05d8916e4cde renamed to env.el; changed setenv to putenv.
Noah Friedman <friedman@splode.com>
parents: 2315
diff changeset
259
83797
f86e7a61b05e Trivial spacing and comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83648
diff changeset
260 ;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8
2403
05d8916e4cde renamed to env.el; changed setenv to putenv.
Noah Friedman <friedman@splode.com>
parents: 2315
diff changeset
261 ;;; env.el ends here