[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Buffer-local process environments
From: |
Stefan Monnier |
Subject: |
Re: Buffer-local process environments |
Date: |
Thu, 29 Apr 2021 10:02:50 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
> So why not make buffer-local process environments an official thing?
Sounds fine to me.
To fix cases like `compile` or `run-python`, I think patches would be
welcome regardless of what is decided in this discussion: those
behaviors look like plain bugs to me.
> # Local Variables:
> # path: "~/path/to/some/virtualenv/bin"
> # env: "VIRTUAL_ENV=$HOME/path/to/some/virtualenv"
> # env: "LANG=C"
> # End:
A few comments:
- I don't much like "special local vars" (like `eval` and `mode`), so if
we can find a more general solution (i.e. one that can be useful for
other settings), that would be better. Maybe
# push exec-path: "~/path/to/some/virtualenv/bin"
- both `exec-path` and `process-environment` are "dangerous" variables,
so encouraging such uses sounds rather risky.
- I'd write `path` above as `exec-path` or `PATH`, or even `$PATH`,
otherwise it's unclear which "path" is meant.
> --- a/lisp/progmodes/compile.el
> +++ b/lisp/progmodes/compile.el
> @@ -1779,6 +1779,8 @@ compilation-start
> (replace-regexp-in-string "-mode\\'" "" (symbol-name mode))))
> (thisdir default-directory)
> (thisenv compilation-environment)
> + (this-process-environment process-environment)
> + (env-buffer (when (local-variable-p 'process-environment)
> (buffer-name)))
> outwin outbuf)
> (with-current-buffer
> (setq outbuf
> @@ -1856,6 +1858,9 @@ compilation-start
> "; default-directory: "
> (prin1-to-string (abbreviate-file-name default-directory))
> " -*-\n"
> + (if env-buffer
> + (format "Process environment is local to buffer `%s'\n"
> env-buffer)
> + "")
> (format "%s started at %s\n\n"
> mode-name
> (substring (current-time-string) 0 19))
> @@ -1875,7 +1880,7 @@ compilation-start
> (and (derived-mode-p 'comint-mode)
> (comint-term-environment))
> (list (format "INSIDE_EMACS=%s,compile" emacs-version))
> - (copy-sequence process-environment))))
> + (copy-sequence this-process-environment))))
> (setq-local compilation-arguments
> (list command mode name-function highlight-regexp))
> (setq-local revert-buffer-function 'compilation-revert-buffer)
Does this work correctly when you `M-x recompile`?
Stefan
- Buffer-local process environments, Augusto Stoffel, 2021/04/29
- Re: Buffer-local process environments,
Stefan Monnier <=
- Re: Buffer-local process environments, Augusto Stoffel, 2021/04/29
- Re: Buffer-local process environments, Michael Albinus, 2021/04/29
- Re: Buffer-local process environments, Augusto Stoffel, 2021/04/30
- Re: Buffer-local process environments, Michael Albinus, 2021/04/30
- Re: Buffer-local process environments, Augusto Stoffel, 2021/04/30
- Re: Buffer-local process environments, Michael Albinus, 2021/04/30
- Re: Buffer-local process environments, Augusto Stoffel, 2021/04/30
- Re: Buffer-local process environments, Michael Albinus, 2021/04/30
Re: Buffer-local process environments, Michael Albinus, 2021/04/29