* setenv's broken case when value is nil
@ 2010-02-18 1:56 Noah Friedman
2010-02-18 2:02 ` Noah Friedman
2010-02-18 4:12 ` Giorgos Keramidas
0 siblings, 2 replies; 4+ messages in thread
From: Noah Friedman @ 2010-02-18 1:56 UTC (permalink / raw)
To: emacs-devel
lorentey@elte.hu changed env.el on 2007-08-29 to define setenv-internal and
for setenv always to keep the variable name in process-environment, even if
value is nil. In other words, he removed the distinction between the empty
string and nil, and therefore you can't remove variables from the
environment using setenv anymore.
Since all kinds of environment variables have meaning when they are
defined, even if they are just set to the empty string, this is a screw.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: setenv's broken case when value is nil
2010-02-18 1:56 setenv's broken case when value is nil Noah Friedman
@ 2010-02-18 2:02 ` Noah Friedman
2010-02-18 15:38 ` Stefan Monnier
2010-02-18 4:12 ` Giorgos Keramidas
1 sibling, 1 reply; 4+ messages in thread
From: Noah Friedman @ 2010-02-18 2:02 UTC (permalink / raw)
To: emacs-devel
>lorentey@elte.hu changed env.el on 2007-08-29 to define setenv-internal and
>for setenv always to keep the variable name in process-environment, even if
>value is nil. In other words, he removed the distinction between the empty
>string and nil, and therefore you can't remove variables from the
>environment using setenv anymore.
>
>Since all kinds of environment variables have meaning when they are
>defined, even if they are just set to the empty string, this is a screw.
My proposed change is this simple:
--- /export/src/emacs/build/2010-02-03--06-16-34--99438/lisp/env.el.~1~ 2010-02-17 18:00:41.968005373 -0800
+++ /export/src/emacs/build/2010-02-03--06-16-34--99438/lisp/env.el 2010-02-17 18:00:41.968005373 -0800
@@ -178,7 +178,7 @@
(if (string-equal "TZ" variable)
(set-time-zone-rule value))
(setq process-environment (setenv-internal process-environment
- variable value t))
+ variable value))
value)
(defun getenv (variable &optional frame)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: setenv's broken case when value is nil
2010-02-18 1:56 setenv's broken case when value is nil Noah Friedman
2010-02-18 2:02 ` Noah Friedman
@ 2010-02-18 4:12 ` Giorgos Keramidas
1 sibling, 0 replies; 4+ messages in thread
From: Giorgos Keramidas @ 2010-02-18 4:12 UTC (permalink / raw)
To: Noah Friedman; +Cc: emacs-devel
On Wed, 17 Feb 2010 17:56:16 -0800 (PST), Noah Friedman <noah@splode.com> wrote:
> lorentey@elte.hu changed env.el on 2007-08-29 to define setenv-internal and
> for setenv always to keep the variable name in process-environment, even if
> value is nil. In other words, he removed the distinction between the empty
> string and nil, and therefore you can't remove variables from the
> environment using setenv anymore.
>
> Since all kinds of environment variables have meaning when they are
> defined, even if they are just set to the empty string, this is a screw.
It's not a very common usage pattern of environment variables, but you
are right. There are all sorts of environment variables that work (for
some value of 'work') even if they are set to empty strings.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: setenv's broken case when value is nil
2010-02-18 2:02 ` Noah Friedman
@ 2010-02-18 15:38 ` Stefan Monnier
0 siblings, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2010-02-18 15:38 UTC (permalink / raw)
To: Noah Friedman; +Cc: emacs-devel
>> lorentey@elte.hu changed env.el on 2007-08-29 to define setenv-internal and
>> for setenv always to keep the variable name in process-environment, even if
>> value is nil. In other words, he removed the distinction between the empty
>> string and nil, and therefore you can't remove variables from the
>> environment using setenv anymore.
That would be a bug, so bug-gnu-emacs would have been a better place to
send it.
This said, I don't see this bug: after (setenv "COLORTERM" nil),
a M-! printenv RET indeed doesn't show COLORTERM any more.
`process-environment' still has an entry for COLORTERM but this entry
has the form "COLORTERM" rather than "COLORTERM=" which distinguishes
the empty-string-envvars from the the absent-envvars.
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-02-18 15:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-18 1:56 setenv's broken case when value is nil Noah Friedman
2010-02-18 2:02 ` Noah Friedman
2010-02-18 15:38 ` Stefan Monnier
2010-02-18 4:12 ` Giorgos Keramidas
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).