GNU bug report logs - #32129
26.1; Bug in add-dir-local-variable when used with eval, progn and setenv

Previous Next

Package: emacs;

Reported by: Luis Gerhorst <privat <at> luisgerhorst.de>

Date: Wed, 11 Jul 2018 23:08:01 UTC

Severity: normal

Tags: notabug

Found in version 26.1

Done: Noam Postavsky <npostavs <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Noam Postavsky <npostavs <at> gmail.com>
To: Luis Gerhorst <privat <at> luisgerhorst.de>
Cc: 32129 <at> debbugs.gnu.org
Subject: bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv
Date: Wed, 11 Jul 2018 19:20:27 -0400
Luis Gerhorst <privat <at> luisgerhorst.de> writes:

> (1) Open Emacs with emacs -Q
> (2) Type the following code into *scratch*
>
>     (add-dir-local-variable
>      'c-mode
>      'eval
>      '(progn (make-local-variable 'process-environment)
>              (setq process-environment (copy-sequence process-environment))
>              (setenv "TEST" "hello")))
>
> (3) M-x eval-buffer
>
> Expected .dir-locals.el contents:
> ((c-mode (eval . (progn (make-local-variable 'process-environment)
>                         (setq process-environment (copy-sequence process-environment))
>                         (setenv "TEST" "hello")))))
>
> Actual contents:
> ((c-mode (eval progn (make-local-variable 'process-environment)
>                      (setq process-environment (copy-sequence process-environment))
>                      (setenv "TEST" "hello"))))
>
> When I open a C file and inspect process-environment, TEST is not set.
>
> When I manually create a .dir-locals.el with the expected contents, it
> works.

When I manually create a .dir-locals.el with the actual contents it
works too.

> Please correct me if I'm using add-dir-local-variable wrong, I was not
> able to find a version that works as expected with the above
> progn. Strangely, if I use (progn (message "hello")), instead of the
> progn with setenv, "hello" gets printed every time I open a C file.

I think add-dir-local-variable is fine, both the expected and actual
values you posted are the same (the expected one just happens to use
dotted pair notation).

Maybe the problem is that you need to use

    (setq-local process-environment ...)

Otherwise your eval clause sets the global value (which is possibly
being clobbered by other things in your config?).





This bug report was last modified 6 years and 314 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.