Jim Porter writes: Hi Jim, Thanks your the example file, it is a pleasure to work on something like this! > 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. Well, your example code has some problems: - connection-local-criteria-for-default-directory returns nil for a local default directory. In order to handle this case, I have added eshell-connection-local-criteria-for-default-directory. - You cannot use the same profile for different criteria, unless you intend the same settings. Therefore, I have added eshell-connection-local-profile. - If you change settings in eshell-get-path or eshell-set-path, you must tell this to the connection-local variables machinery. I've extended both functions accordingly. Now your ert test passes for me. Changed connection-local.el added. Best regards, Michael.