diff options
author | Eli Zaretskii <eliz@gnu.org> | 2015-04-29 20:52:02 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2015-04-29 20:52:02 +0300 |
commit | 3c3eb1d5f2f56bc8e49ae40881a543fbddf8f312 (patch) | |
tree | 36d10723b0d144bfe61946733465a72090d59ae9 /lisp/eshell/em-cmpl.el | |
parent | 5e7ed98f7c6497b67376977fafdf2dd860537f14 (diff) | |
download | emacs-3c3eb1d5f2f56bc8e49ae40881a543fbddf8f312.tar.gz |
PATH- and completion-related fixes in Eshell on MS-Windows
* lisp/eshell/esh-ext.el (eshell-search-path): When running on
MS-Windows, prepend "." to list of directories produced from PATH,
as Windows always implicitly searches the current directory first.
(eshell-force-execution): Make it have a non-nil default value on
MS-Windows and MS-DOS.
* lisp/eshell/em-cmpl.el (eshell-complete-commands-list): If
eshell-force-execution is non-nil, complete on readable files and
directories, not only executables. When running on MS-Windows,
prepend "." to list of directories produced from PATH, as Windows
always implicitly searches the current directory first.
Diffstat (limited to 'lisp/eshell/em-cmpl.el')
-rw-r--r-- | lisp/eshell/em-cmpl.el | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index dbea9e5ceec..93b275e2ffb 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -405,7 +405,9 @@ to writing a completion function." "Generate list of applicable, visible commands." (let ((filename (pcomplete-arg)) glob-name) (if (file-name-directory filename) - (pcomplete-executables) + (if eshell-force-execution + (pcomplete-dirs-or-entries nil 'file-readable-p) + (pcomplete-executables)) (if (and (> (length filename) 0) (eq (aref filename 0) eshell-explicit-command-char)) (setq filename (substring filename 1) @@ -416,6 +418,8 @@ to writing a completion function." (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 @@ -431,7 +435,9 @@ to writing a completion function." (if (and (not (member file completions)) ; (or (string-equal path cwd) (not (file-directory-p filepath))) - (file-executable-p filepath)) + (if eshell-force-execution + (file-readable-p filepath) + (file-executable-p filepath))) (setq completions (cons file completions))) (setq comps-in-path (cdr comps-in-path))) (setq paths (cdr paths))) |