On MS-Windows, PATH implicitly includes the current directory.
Do it right for Eshell by adding "./" instead of ".", to
avoid finding .FOO instead of ./FOO.
* lisp/eshell/esh-util.el (eshell-get-path): New function.
* lisp/eshell/em-cmpl.el (eshell-complete-commands-list):
* lisp/eshell/esh-ext.el (eshell-search-path): Use eshell-get-path.
(setq filename (substring filename 1)
pcomplete-stub filename
glob-name t))
- (let* ((paths (eshell-parse-colon-path eshell-path-env))
+ (let* ((paths (eshell-get-path))
(cwd (file-name-as-directory
(expand-file-name default-directory)))
(path "") (comps-in-path ())
(file "") (filepath "") (completions ()))
- (if (eshell-under-windows-p)
- (push "." paths))
;; Go thru each path in the search path, finding completions.
(while paths
(setq path (file-name-as-directory
"Search the environment path for NAME."
(if (file-name-absolute-p name)
name
- (let ((list (eshell-parse-colon-path eshell-path-env))
+ (let ((list (eshell-get-path))
suffixes n1 n2 file)
- (if (eshell-under-windows-p)
- (push "." list))
(while list
(setq n1 (concat (car list) name))
(setq suffixes eshell-binary-suffixes)
`default-directory' points to a remote host.")
(make-variable-buffer-local 'eshell-path-env)
+(defun eshell-get-path ()
+ "Return $PATH as list.
+Add the current directory on windows."
+ (eshell-parse-colon-path
+ (if (eshell-under-windows-p)
+ (concat "." path-separator eshell-path-env)
+ eshell-path-env)))
+
(defun eshell-parse-colon-path (path-env)
"Split string with `parse-colon-path'.
Prepend remote identification of `default-directory', if any."