]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix path for current directory in eshell on MS-Windows
authorBernhard Rotter <bernhard.rotter@gmail.com>
Thu, 30 May 2019 08:13:00 +0000 (10:13 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 8 Jun 2019 08:29:34 +0000 (11:29 +0300)
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.

lisp/eshell/em-cmpl.el
lisp/eshell/esh-ext.el
lisp/eshell/esh-util.el

index e3bfd8d9d489816c60a0fee72dce4748e8bf0aea..8f6c6781b9cf836c57fab28df7068473e0aadcc6 100644 (file)
@@ -409,13 +409,11 @@ to writing a completion function."
          (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
index 978fc55c4dea560b041714eec2253590a1f66397..1856d2bd19033ab2559f0d8acdf9329ef265439e 100644 (file)
@@ -74,10 +74,8 @@ but Eshell will be able to understand
   "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)
index 6f355c70a42e1fc8d163de11b938c605c9d16d54..633bd02d2d221dd8de1a1b5518b447d1d7f53f20 100644 (file)
@@ -232,6 +232,14 @@ It might be different from \(getenv \"PATH\"), when
 `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."