all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* 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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.