Subject: Re: bug#23779: 25.0.95; consing "SHELLVAR" onto process-environment doesn't remove it from subprocess env

From: Eli Zaretskii <[email-masked]>
Date: Fri, 17 Jun 2016 20:06:28 +0300

> Cc: [email-masked], [email-masked]
> From: Dmitry Gutov <[email-masked]>
> Date: Fri, 17 Jun 2016 17:47:49 +0300
> 
> On 06/17/2016 05:19 PM, Eli Zaretskii wrote:
> 
> >> I wonder if we should make setenv work non-destructively now.
> >
> > Why should we do that?  We have initial-environment if we need the
> > original value.
> 
> Normally, we only want to change the environment for the duration of a 
> command.

Now that 'push' works, why do we need setenv for that?

> So, what are the downsides?

That there's no way of changing the environment permanently?

> - We won't have to cons manually anymore. The code will become a bit 
> nicer, like:
> 
> diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
> index f35c84d..5315e0a 100644
> --- a/lisp/vc/vc-git.el
> +++ b/lisp/vc/vc-git.el
> @@ -1450,7 +1450,8 @@ vc-git--call
>            (or coding-system-for-read vc-git-log-output-coding-system))
>   	(coding-system-for-write
>            (or coding-system-for-write vc-git-commits-coding-system))
> -	(process-environment (cons "PAGER=" process-environment)))
> +	(process-environment process-environment))
> +    (setenv "PAGER")

I'm not sure I see why that is nicer.