* bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv
@ 2018-07-11 23:07 Luis Gerhorst
2018-07-11 23:18 ` Luis Gerhorst
2018-07-11 23:20 ` Noam Postavsky
0 siblings, 2 replies; 4+ messages in thread
From: Luis Gerhorst @ 2018-07-11 23:07 UTC (permalink / raw)
To: 32129
(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.
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.
Configured using:
'configure --prefix=/home/cip/2016/un65esoq/local'
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LCMS2
Important settings:
value of $LC_ALL: en_US.UTF-8
value of $LC_CTYPE: C.UTF-8
value of $LC_MESSAGES: C.UTF-8
value of $LC_MONETARY: de_DE.UTF-8
value of $LC_NUMERIC: de_DE.UTF-8
value of $LC_TIME: de_DE.UTF-8
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv
2018-07-11 23:07 bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv Luis Gerhorst
@ 2018-07-11 23:18 ` Luis Gerhorst
2018-07-13 9:26 ` Noam Postavsky
2018-07-11 23:20 ` Noam Postavsky
1 sibling, 1 reply; 4+ messages in thread
From: Luis Gerhorst @ 2018-07-11 23:18 UTC (permalink / raw)
To: 32129
I'm sorry for the noise, I just retried it and it worked, TEST was set. So the generated .dir-locals.el does the right thing.
Anyway: Shouldn't the .dir-locals.el look different? This is of course just a question of preference, if it makes the code more elegant or something I would accept that it's better to leave it as it is.
Best regards,
Luis
> On 12. Jul 2018, at 01:07, Luis Gerhorst <privat@luisgerhorst.de> wrote:
>
>
> (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.
>
> 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.
>
> Configured using:
> 'configure --prefix=/home/cip/2016/un65esoq/local'
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
> ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
> TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LCMS2
>
> Important settings:
> value of $LC_ALL: en_US.UTF-8
> value of $LC_CTYPE: C.UTF-8
> value of $LC_MESSAGES: C.UTF-8
> value of $LC_MONETARY: de_DE.UTF-8
> value of $LC_NUMERIC: de_DE.UTF-8
> value of $LC_TIME: de_DE.UTF-8
> value of $LANG: en_US.UTF-8
> locale-coding-system: utf-8-unix
>
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv
2018-07-11 23:18 ` Luis Gerhorst
@ 2018-07-13 9:26 ` Noam Postavsky
0 siblings, 0 replies; 4+ messages in thread
From: Noam Postavsky @ 2018-07-13 9:26 UTC (permalink / raw)
To: Luis Gerhorst; +Cc: 32129
tags 32129 notabug
close 32129
quit
Luis Gerhorst <privat@luisgerhorst.de> writes:
> I'm sorry for the noise, I just retried it and it worked, TEST was
> set. So the generated .dir-locals.el does the right thing.
Right, I'm pretty sure you really do want setq-local though.
> Anyway: Shouldn't the .dir-locals.el look different? This is of course
> just a question of preference, if it makes the code more elegant or
> something I would accept that it's better to leave it as it is.
Yeah, it currently just does `pp' for the whole structure. We would
need to special case the top level printing of values I think. It might
be interesting to have a pretty printer that's able to take a sort of
"descriptor" of printing structure, to handle this sort of thing more
generally. But I'm going to go ahead and close this report as notabug,
since special casing the dir-local printing is not worth the trouble.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv
2018-07-11 23:07 bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv Luis Gerhorst
2018-07-11 23:18 ` Luis Gerhorst
@ 2018-07-11 23:20 ` Noam Postavsky
1 sibling, 0 replies; 4+ messages in thread
From: Noam Postavsky @ 2018-07-11 23:20 UTC (permalink / raw)
To: Luis Gerhorst; +Cc: 32129
Luis Gerhorst <privat@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?).
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-07-13 9:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-11 23:07 bug#32129: 26.1; Bug in add-dir-local-variable when used with eval, progn and setenv Luis Gerhorst
2018-07-11 23:18 ` Luis Gerhorst
2018-07-13 9:26 ` Noam Postavsky
2018-07-11 23:20 ` Noam Postavsky
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).