On 10/2/2022 1:48 AM, Michael Albinus wrote: > Yes. with-connection-local-variables is designed to provide those > variables inside the BODY only. And you have used nil as CRITERIA in > connection-local-set-profiles, which means you get the same variables > for every kind of default-directory, which means you don't use > connection-local variables at all :-) > > What you need is a permanent setting of variables. Something like > > (connection-local-set-profiles > (connection-local-criteria-for-default-directory 'eshell) > 'eshell-connection-local-profile) > > (let ((enable-connection-local-variables t) > connection-local-variables-alist) ;; I'm not sure this is needed. > (hack-connection-local-variables-apply > (connection-local-criteria-for-default-directory 'eshell)) > ;; The body. > ...) Hmm, I've tried this a few different ways, and I haven't been able to get it to work the way it should. Maybe I'm just missing something? Attached is a minimal test case I've extracted to show the issue I'm having. It seems the problem is that, while I can update the path in 'eshell-set-path' with no problem, when I call 'eshell-get-path' again, 'hack-connection-local-variables-apply' resets 'eshell-path-env-list' to nil, so the modified path is lost. Do you have any ideas about what I'm doing wrong? Or maybe connection-local variables aren't supposed to be used this way. All the documentation I see on them involves setting variables to constant values, not updating them in-place over the life of a program.