Package: emacs;
Reported by: Damien Merenne <dam <at> cosinux.org>
Date: Mon, 29 Nov 2021 12:34:01 UTC
Severity: normal
Found in version 29.0.50
To reply to this bug, email your comments to 52178 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Mon, 29 Nov 2021 12:34:01 GMT) Full text and rfc822 format available.Damien Merenne <dam <at> cosinux.org>
:bug-gnu-emacs <at> gnu.org
.
(Mon, 29 Nov 2021 12:34:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Damien Merenne <dam <at> cosinux.org> To: bug-gnu-emacs <at> gnu.org Subject: 29.0.50; process-environment not used in async-shell-command Date: Mon, 29 Nov 2021 13:33:40 +0100
When running an async process, the value of `process-environment' is lost, in 'emacs -Q' scratch buffer: (let ((process-environment "EDITOR=test")) (shell-command "env &")) and the output is my normal environment, not the limited one. When removing the &, it works okay. I managed to pinpoint the problem to the call to `with-current-buffer' in simple.el:4229. As process-environment is buffer local, it is not passed in the process buffer. This patch fixes it but I have no idea if this is the correct way to fix it: @@ -4194,7 +4194,8 @@ shell-command (or output-buffer shell-command-buffer-name-async))) (bname (buffer-name buffer)) (proc (get-buffer-process buffer)) - (directory default-directory)) + (directory default-directory) + (process-env process-environment)) ;; Remove the ampersand. (setq command (substring command 0 (match-beginning 0))) ;; Ask the user what to do with already running process. @@ -4237,7 +4238,7 @@ shell-command (format "COLUMNS=%d" async-shell-command-width))) (comint-term-environment) - process-environment))) + process-env))) (setq proc (start-process-shell-command "Shell" buffer command))) (setq mode-line-process '(":%s")) In GNU Emacs 29.0.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.24.25, cairo version 1.16.0) of 2021-11-29 built on workstation.lan Repository revision: f5498a608fe85b66a4068a5ccf88c9b3d3b88f98 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101001 System Description: Ubuntu 21.04 Configured using: 'configure --with-native-compilation --with-mailutils --with-gnutls --with-modules --with-json --without-gpm --with-file-notification=yes --with-xwidgets --without-selinux --with-libsystemd --with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-imagemagick' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK JPEG JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3 ZLIB Important settings: value of $LC_MONETARY: fr_BE.UTF-8 value of $LC_NUMERIC: fr_BE.UTF-8 value of $LC_TIME: fr_BE.UTF-8 value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: C/*lw Minor modes in effect: bloom-global-minor-mode: t flyspell-mode: t bug-reference-prog-mode: t magit-wip-after-apply-mode: t global-git-commit-mode: t magit-auto-revert-mode: t tree-sitter-hl-mode: t global-tree-sitter-mode: t tree-sitter-mode: t dtrt-indent-global-mode: t dtrt-indent-mode: t pdf-occur-global-minor-mode: t yas-global-mode: t yas-minor-mode: t subword-mode: t smartparens-global-mode: t smartparens-mode: t auto-revert-mode: t marginalia-mode: t selectrum-mode: t corfu-global-mode: t corfu-mode: t global-ligature-mode: t ligature-mode: t shell-dirtrack-mode: t envrc-global-mode: t envrc-mode: t bepo-global-mode: t which-key-mode: t savehist-mode: t global-so-long-mode: t override-global-mode: t straight-use-package-mode: t straight-package-neutering-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t auto-fill-function: yas--auto-fill indent-tabs-mode: t transient-mark-mode: t abbrev-mode: t Load-path shadows: /home/dam/.emacs.d/straight/build/transient/transient hides /usr/local/share/emacs/29.0.50/lisp/transient /home/dam/.emacs.d/straight/build/jsonrpc/jsonrpc hides /usr/local/share/emacs/29.0.50/lisp/jsonrpc /home/dam/.emacs.d/straight/build/xref/xref hides /usr/local/share/emacs/29.0.50/lisp/progmodes/xref /home/dam/.emacs.d/straight/build/flymake/flymake hides /usr/local/share/emacs/29.0.50/lisp/progmodes/flymake /home/dam/.emacs.d/straight/build/project/project hides /usr/local/share/emacs/29.0.50/lisp/progmodes/project /home/dam/.emacs.d/straight/build/let-alist/let-alist hides /usr/local/share/emacs/29.0.50/lisp/emacs-lisp/let-alist /home/dam/.emacs.d/straight/build/eldoc/eldoc hides /usr/local/share/emacs/29.0.50/lisp/emacs-lisp/eldoc Features: (shadow sort mail-extr emacsbug misearch multi-isearch pulse vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-cvs vc-rcs vc cl-print helpful trace edebug info-look help-fns elisp-refs mule-util form-feed epa-file slack slack-company slack-unread slack-websocket slack-thread-event slack-room-event slack-star-event slack-reaction-event slack-reply-event slack-typing slack-slash-commands slack-message-event slack-event slack-dialog-edit-element-buffer slack-dialog-buffer slack-dialog slack-stars-buffer slack-search-result-buffer slack-thread-message-compose-buffer slack-file-list-buffer slack-file-info-buffer slack-all-threads-buffer slack-message-buffer slack-user-profile-buffer slack-pinned-items-buffer slack-pinned-item slack-thread-message-buffer slack-room-info-buffer slack-room-buffer slack-message-share-buffer slack-message-edit-buffer slack-room-message-compose-buffer slack-message-compose-buffer slack-message-attachment-preview-buffer slack-action slack-star slack-reminder slack-search slack-message-reaction slack-message-editor slack-message-sender slack-message-notification alert log4e notifications dbus gntp slack-buffer slack-message-formatter slack-thread slack-im slack-channel slack-group slack-conversations slack-create-message slack-attachment slack-selectable slack-bot-message slack-user-message slack-file slack-message slack-message-faces slack-unescape slack-block slack-mrkdwn slack-usergroup slack-reaction slack-modeline slack-room slack-counts slack-user slack-bot slack-dnd-status slack-emoji slack-image slack-request slack-log lui tracking shorten slack-team slack-team-ws slack-util websocket bindat diary-lib diary-loaddefs cal-menu calendar cal-loaddefs slack-autoloads emojify-autoloads ht-autoloads alert-autoloads log4e-autoloads gntp-autoloads circe-autoloads oauth2-autoloads websocket-autoloads bloomlife bloom-mode eglot array jsonrpc ert ewoc debug backtrace bloom-sensor gdb-mi bloom-tools bloom-magit bloom-magit-bitbucket atlassian-bitbucket bloom-magit-build bloom-project bloom-test-runner bloom-build bloom-cmake bloom-conan bloom-bbw bloom-target bloom-common bloom-pkg bloomlife-autoloads sonar sonar-autoloads circleci circleci-autoloads atlassian atlassian-jira atlassian-common request atlassian-autoloads request-autoloads magit-async-section magit-async-section-autoloads terraform-mode-autoloads hcl-mode-autoloads cargo-autoloads racer smartparens-rust rust-utils rust-mode rust-rustfmt rust-playpen rust-compile rust-cargo racer-autoloads pos-tip-autoloads rust-mode-autoloads rubocop rubocop-autoloads robe etags fileloop generator inf-ruby robe-autoloads inf-ruby-autoloads rbenv rbenv-autoloads ruby-mode smie smartparens-python python tramp-sh smartparens-scala scala-mode scala-mode-prettify-symbols scala-mode-imenu scala-mode-map scala-mode-fontlock scala-mode-indent scala-mode-paragraph scala-mode-syntax scala-mode-lib scala-mode-autoloads java-imports pcache eieio-base java-imports-autoloads form-feed-autoloads elisp-format flymake-proc flymake flyspell elisp-format-autoloads test-runner-ert elfmt elfmt-autoloads cask-mode cask-mode-autoloads docker docker-volume docker-network docker-image docker-container docker-faces docker-compose docker-utils json-mode json-snatcher smartparens-javascript js docker-core docker-autoloads json-mode-autoloads json-snatcher-autoloads docker-tramp-autoloads docker-tramp tramp-cache dockerfile-mode-autoloads djinni-mode djinni-mode-autoloads cov-autoloads elquery-autoloads gud-lldb cmake-api cmake-api-autoloads test-runner-catch2 test-runner-catch2-autoloads eglot-clangd-autoloads eldoc-cmake eldoc-cmake-autoloads cmake-font-lock-autoloads cmake-mode smartparens-rst rst cmake-mode-autoloads android android-autoloads pbuf pbuf-autoloads gud xref forge-list forge-commands forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github forge-notify forge-revnote forge-pullreq forge-issue forge-topic yaml bug-reference forge-post forge-repo forge forge-core forge-db forge-autoloads yaml-autoloads closql emacsql-sqlite emacsql emacsql-compiler closql-autoloads emacsql-sqlite-autoloads emacsql-autoloads ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth ghub-autoloads treepy-autoloads git-timemachine vc-git vc-dispatcher git-timemachine-autoloads magit-extras magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff smerge-mode diff-mode git-commit log-edit message yank-media rmc rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process magit-mode transient magit-git magit-section magit-utils magit-autoloads magit-section-autoloads git-commit-autoloads transient-autoloads tree-sitter-langs tree-sitter-langs-build tar-mode arc-mode archive-mode tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn tsc-dyn-get tsc-obsolete tree-sitter-langs-autoloads tree-sitter-autoloads tsc-autoloads eglot-autoloads flymake-autoloads project-autoloads xref-autoloads eldoc-autoloads jsonrpc-autoloads dtrt-indent dtrt-indent-autoloads diff ispell reformatter reformatter-autoloads test-runner project test-runner-autoloads vterm-autoloads ag vc-svn find-dired ag-autoloads dired-collapse dired-collapse-autoloads dired-rainbow dired-rainbow-autoloads dired-narrow delsel dired-narrow-autoloads dired-ranger-autoloads dired-subtree-autoloads dired-filter f s dired-hacks-utils dired-x dired-filter-autoloads dired-hacks-utils-autoloads dired-aux yaml-mode-autoloads plantuml-mode plantuml-mode-autoloads pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local find-func cedet pdf-isearch let-alist pdf-misc imenu pdf-tools package pdf-view jka-compr pdf-cache pdf-info tq pdf-util pdf-macs pdf-tools-autoloads let-alist-autoloads tablist-autoloads xwwp eww xdg url-queue shr kinsoku svg dom mm-url gnus nnheader gnus-util rmail rmail-loaddefs xwwp-autoloads xwidget url-handlers image-mode exif browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap osx-browse-autoloads browse-url-dwim-autoloads string-utils-autoloads smartparens-markdown markdown-mode noutline outline markdown-mode-autoloads nov-autoloads esxml-autoloads kv-autoloads yasnippet yasnippet-autoloads wgrep grep compile wgrep-autoloads cap-words superword subword string-inflection string-inflection-autoloads smartparens-config smartparens-text smartparens-c smartparens-ruby smartparens dash smartparens-autoloads cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs mmm-mode mmm-univ mmm-class mmm-region mmm-auto mmm-vars mmm-utils mmm-compat mmm-mode-autoloads iedit iedit-lib iedit-autoloads autorevert filenotify marginalia marginalia-autoloads embark-consult-autoloads consult-dash consult-selectrum consult bookmark text-property-search consult-dash-autoloads consult-autoloads embark-autoloads selectrum minibuf-eldef crm selectrum-autoloads orderless orderless-autoloads corfu corfu-autoloads ns-auto-titlebar-autoloads all-the-icons-dired-autoloads all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons all-the-icons-autoloads ligature ligature-autoloads solarized-dark-high-contrast-theme solarized-palettes solarized-theme solarized solarized-faces color solarized-theme-autoloads use-theme use-theme-autoloads password-store with-editor server password-store-autoloads with-editor-autoloads auth-source-pass url-parse url-vars unicode-fonts unicode-fonts-autoloads ucs-utils-autoloads font-utils-autoloads persistent-soft-autoloads list-utils-autoloads cl pcache-autoloads daemons daemons-autoloads smtpmail sendmail mail-utils tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat shell pcomplete comint ring parse-time iso8601 time-date ls-lisp auth-source eieio eieio-core eieio-loaddefs password-cache envrc inheritenv ansi-color envrc-autoloads inheritenv-autoloads eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util bepo which-key advice which-key-autoloads time savehist recentf tree-widget edmacro kmacro helpful-autoloads elisp-refs-autoloads f-autoloads s-autoloads dash-autoloads exec-path-from-shell exec-path-from-shell-autoloads so-long diminish diminish-autoloads dash-docs use-package-dash-docs gnutls puny format-spec xml json map dash-docs-autoloads async async-autoloads no-littering no-littering-autoloads finder-inf use-package-ensure-system-package system-packages use-package-ensure-system-package-autoloads system-packages-autoloads use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key use-package-core use-package-autoloads bind-key-autoloads cus-edit pp cus-load wid-edit straight-autoloads straight info autoload radix-tree easy-mmode pcase checkdoc lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr dired dired-loaddefs thingatpt comp comp-cstr warnings rx cl-seq cl-macs cl-extra help-mode seq gv subr-x byte-opt cl-loaddefs cl-lib bytecomp byte-compile cconv iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads xwidget-internal dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 951887 739595) (symbols 48 65848 4) (strings 32 298876 339972) (string-bytes 1 10134341) (vectors 16 127606) (vector-slots 8 3430125 852341) (floats 8 1324 1784) (intervals 56 13228 1365) (buffers 992 35))
bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Mon, 29 Nov 2021 14:39:02 GMT) Full text and rfc822 format available.Message #8 received at 52178 <at> debbugs.gnu.org (full text, mbox):
From: Lars Ingebrigtsen <larsi <at> gnus.org> To: Damien Merenne <dam <at> cosinux.org> Cc: 52178 <at> debbugs.gnu.org Subject: Re: bug#52178: 29.0.50; process-environment not used in async-shell-command Date: Mon, 29 Nov 2021 15:38:12 +0100
Damien Merenne <dam <at> cosinux.org> writes: > When running an async process, the value of `process-environment' is > lost, in 'emacs -Q' scratch buffer: > > (let ((process-environment "EDITOR=test")) > (shell-command "env &")) I think you mean (let ((process-environment '("EDITOR=test"))) (shell-command "env &")) > and the output is my normal environment, not the limited one. When > removing the &, it works okay. I managed to pinpoint the problem to the > call to `with-current-buffer' in simple.el:4229. As process-environment > is buffer local, it is not passed in the process buffer. process-environment is not buffer-local by default, though, so the test case works fine normally. Do you have a complete case to reproduce the problem, starting from "emacs -Q"? > This patch fixes it but I have no idea if this is the correct way to > fix it: The patch wasn't complete, so I've recreated it and included below for reference. It makes sense to me, but I'd like to know where this fixes anything before applying. diff --git a/lisp/simple.el b/lisp/simple.el index 84928caa31..e38988f916 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4194,7 +4194,8 @@ shell-command (or output-buffer shell-command-buffer-name-async))) (bname (buffer-name buffer)) (proc (get-buffer-process buffer)) - (directory default-directory)) + (directory default-directory) + (process-env process-environment)) ;; Remove the ampersand. (setq command (substring command 0 (match-beginning 0))) ;; Ask the user what to do with already running process. @@ -4237,7 +4238,7 @@ shell-command (format "COLUMNS=%d" async-shell-command-width))) (comint-term-environment) - process-environment))) + process-env))) (setq proc (start-process-shell-command "Shell" buffer command))) (setq mode-line-process '(":%s")) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
Lars Ingebrigtsen <larsi <at> gnus.org>
to control <at> debbugs.gnu.org
.
(Mon, 29 Nov 2021 14:39:02 GMT) Full text and rfc822 format available.bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Mon, 29 Nov 2021 20:35:02 GMT) Full text and rfc822 format available.Message #13 received at 52178 <at> debbugs.gnu.org (full text, mbox):
From: Damien Merenne <dam <at> cosinux.org> To: Lars Ingebrigtsen <larsi <at> gnus.org> Cc: 52178 <at> debbugs.gnu.org Subject: Re: bug#52178: 29.0.50; process-environment not used in async-shell-command Date: Mon, 29 Nov 2021 20:34:10 +0000
Le lun. 29 nov. 2021 à 14:38, Lars Ingebrigtsen <larsi <at> gnus.org> a écrit : > Do you have a complete case to reproduce the > problem, starting from "emacs -Q"? So indeed I thought I was able to reprodce it in `emacs -Q` but it was due to the bug in my snippet. Now I can't reproduce it anyore with `emacs -Q`. The `process-environment` seems to be switch to a buffer-local variable due to some autoload because right after initialization, its still a normal variable. At some point I do something and whoops, it is converted to a buffer local... I'll try to find what's triggering it but its not obvious. -- Damien Merenne <dam <at> cosinux.org>
bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Sat, 15 Jan 2022 13:09:02 GMT) Full text and rfc822 format available.Message #16 received at 52178 <at> debbugs.gnu.org (full text, mbox):
From: Lars Ingebrigtsen <larsi <at> gnus.org> To: Damien Merenne <dam <at> cosinux.org> Cc: 52178 <at> debbugs.gnu.org Subject: Re: bug#52178: 29.0.50; process-environment not used in async-shell-command Date: Sat, 15 Jan 2022 14:07:51 +0100
Damien Merenne <dam <at> cosinux.org> writes: > I'll try to find what's triggering it but its not obvious. Did you make any progress here? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Sat, 15 Jan 2022 21:41:01 GMT) Full text and rfc822 format available.Message #19 received at 52178 <at> debbugs.gnu.org (full text, mbox):
From: Michael Heerdegen <michael_heerdegen <at> web.de> To: Lars Ingebrigtsen <larsi <at> gnus.org> Cc: 52178 <at> debbugs.gnu.org, Damien Merenne <dam <at> cosinux.org> Subject: Re: bug#52178: 29.0.50; process-environment not used in async-shell-command Date: Sat, 15 Jan 2022 22:39:58 +0100
Lars Ingebrigtsen <larsi <at> gnus.org> writes: > Damien Merenne <dam <at> cosinux.org> writes: > > > I'll try to find what's triggering it but its not obvious. > > Did you make any progress here? Damien, maybe using a variable watcher: (info "(elisp) Watching Variables") could help to understand what's going on? They are able to notice changes in buffer-localness. Michael.
bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Sun, 16 Jan 2022 10:50:02 GMT) Full text and rfc822 format available.Message #22 received at 52178 <at> debbugs.gnu.org (full text, mbox):
From: Damien Merenne <dam <at> cosinux.org> To: Michael Heerdegen <michael_heerdegen <at> web.de> Cc: 52178 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi <at> gnus.org> Subject: Re: bug#52178: 29.0.50; process-environment not used in async-shell-command Date: Sun, 16 Jan 2022 10:49:18 +0000
Thanks for the reminder and the pointer to the watcher! I finally found that it happens due to the `envrc` package. That package is meant to set `process-environment` buffer local for some buffers. Somehow it sets process-environment globally local but only when emacs is started as a daemon from the systemd unit. Running it normally or with --fg-daemon from a terminal does not set the variable globally local. I'll check with the envrc maintainer why that would be but there is still something strange going on, I would not expect Emacs behaviour to change when started in systemd. For people stumbling upon this, here is the code I used to pinpoint the problem: ``` (defvar pltraces (list (cons "early-init.el" (local-variable-p 'process-environment)))) (add-hook 'after-load-functions (lambda (fn) (setq pltraces (cons (cons fn (local-variable-p 'process-environment)) pltraces)))) (add-variable-watcher 'process-environment (lambda (symbol newval operation where) (when where (setq pltraces (cons (cons (buffer-name where) (local-variable-p 'process-environment)) pltraces))))) ``` It records the place where the variable is set and its local status in the `pltraces` variable. -- Damien MERENNE <dam <at> cosinux.org> Le sam. 15 janv. 2022 à 21:39, Michael Heerdegen <michael_heerdegen <at> web.de> a écrit : > > Lars Ingebrigtsen <larsi <at> gnus.org> writes: > > > Damien Merenne <dam <at> cosinux.org> writes: > > > > > I'll try to find what's triggering it but its not obvious. > > > > Did you make any progress here? > > Damien, maybe using a variable watcher: > > (info "(elisp) Watching Variables") > > could help to understand what's going on? They are able to notice > changes in buffer-localness. > > Michael.
bug-gnu-emacs <at> gnu.org
:bug#52178
; Package emacs
.
(Sun, 16 Jan 2022 10:53:02 GMT) Full text and rfc822 format available.Message #25 received at 52178 <at> debbugs.gnu.org (full text, mbox):
From: Damien Merenne <dam <at> cosinux.org> To: Michael Heerdegen <michael_heerdegen <at> web.de> Cc: 52178 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi <at> gnus.org> Subject: Re: bug#52178: 29.0.50; process-environment not used in async-shell-command Date: Sun, 16 Jan 2022 10:51:58 +0000
But still, the envrc use case for making process-environment buffer local for some buffer is still valid and I think the original problem should be fixed. -- Damien MERENNE <dam <at> cosinux.org> Le dim. 16 janv. 2022 à 10:49, Damien Merenne <dam <at> cosinux.org> a écrit : > > Thanks for the reminder and the pointer to the watcher! I finally > found that it happens due to the `envrc` package. > That package is meant to set `process-environment` buffer local for > some buffers. Somehow it sets > process-environment globally local but only when emacs is started as a > daemon from the systemd unit. Running > it normally or with --fg-daemon from a terminal does not set the > variable globally local. I'll check with the envrc > maintainer why that would be but there is still something strange > going on, I would not expect Emacs behaviour to > change when started in systemd. > > For people stumbling upon this, here is the code I used to pinpoint the problem: > ``` > (defvar pltraces (list (cons "early-init.el" (local-variable-p > 'process-environment)))) > (add-hook 'after-load-functions > (lambda (fn) > (setq pltraces (cons (cons fn (local-variable-p > 'process-environment)) pltraces)))) > (add-variable-watcher 'process-environment > (lambda (symbol newval operation where) > (when where > (setq pltraces (cons (cons (buffer-name > where) (local-variable-p 'process-environment)) pltraces))))) > ``` > It records the place where the variable is set and its local status in > the `pltraces` variable. > > -- > Damien MERENNE <dam <at> cosinux.org> > > Le sam. 15 janv. 2022 à 21:39, Michael Heerdegen > <michael_heerdegen <at> web.de> a écrit : > > > > Lars Ingebrigtsen <larsi <at> gnus.org> writes: > > > > > Damien Merenne <dam <at> cosinux.org> writes: > > > > > > > I'll try to find what's triggering it but its not obvious. > > > > > > Did you make any progress here? > > > > Damien, maybe using a variable watcher: > > > > (info "(elisp) Watching Variables") > > > > could help to understand what's going on? They are able to notice > > changes in buffer-localness. > > > > Michael.
Lars Ingebrigtsen <larsi <at> gnus.org>
to control <at> debbugs.gnu.org
.
(Thu, 20 Jan 2022 09:34:02 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.