diff options
author | Glenn Morris <rgm@gnu.org> | 2013-09-14 17:10:45 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2013-09-14 17:10:45 -0700 |
commit | 1e53bb4bf2754c724bcb894e730fd77e25dae80c (patch) | |
tree | 446081c5b29310e9bf0a798c75b6505b867a5b81 /lisp/eshell | |
parent | 0d8863b3b1829f8e53da8dff9ffc2dab60390da6 (diff) | |
download | emacs-1e53bb4bf2754c724bcb894e730fd77e25dae80c.tar.gz |
* lisp/eshell/esh-cmd.el (eshell--local-vars): New variable.
(eshell-rewrite-for-command): Add for loop vars to eshell--local-vars.
* lisp/eshell/esh-var.el (eshell-get-variable): Respect eshell--local-vars.
* test/automated/eshell.el (eshell-test/for-name-shadow-loop):
New test.
(eshell-test/for-loop, eshell-test/for-name-loop): Doc fix.
Fixes: debbugs:15372
Diffstat (limited to 'lisp/eshell')
-rw-r--r-- | lisp/eshell/esh-cmd.el | 6 | ||||
-rw-r--r-- | lisp/eshell/esh-var.el | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el index cc4fdd15bda..75e0e1d27c8 100644 --- a/lisp/eshell/esh-cmd.el +++ b/lisp/eshell/esh-cmd.el @@ -473,6 +473,8 @@ the second is ignored." arg)) (defvar eshell-last-command-status) ;Define in esh-io.el. +(defvar eshell--local-vars nil + "List of locally bound vars that should take precedence over env-vars.") (defun eshell-rewrite-for-command (terms) "Rewrite a `for' command into its equivalent Eshell command form. @@ -495,7 +497,9 @@ implemented via rewriting, rather than as a function." (eshell-command-body '(nil)) (eshell-test-body '(nil))) (while (car for-items) - (let ((,(intern (cadr terms)) (car for-items))) + (let ((,(intern (cadr terms)) (car for-items)) + (eshell--local-vars (cons ',(intern (cadr terms)) + eshell--local-vars))) (eshell-protect ,(eshell-invokify-arg body t))) (setcar for-items (cadr for-items)) diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el index 8dd19618da2..3121dadace2 100644 --- a/lisp/eshell/esh-var.el +++ b/lisp/eshell/esh-var.el @@ -502,6 +502,7 @@ Possible options are: (let ((sym (intern-soft var))) (if (and sym (boundp sym) (or eshell-prefer-lisp-variables + (memq sym eshell--local-vars) ; bug#15372 (not (getenv var)))) (symbol-value sym) (getenv var)))) |