diff options
author | Richard M. Stallman <rms@gnu.org> | 2004-04-17 19:58:19 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2004-04-17 19:58:19 +0000 |
commit | f2440e42fab3b236134b43a399bd47e21e88e5f6 (patch) | |
tree | 495bf719f209df7649d52b411215a469d43bb99d /lisp | |
parent | 95c12694a48992059683295be28c5c6e0d22542a (diff) | |
download | emacs-f2440e42fab3b236134b43a399bd47e21e88e5f6.tar.gz |
(locate-file-completion): Handle nil in path-and-suffixes.
(file-truename): Expand all ~ constructs directly.
(insert-directory): Delete any error msg output by the
`insert-directory-program'.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/files.el | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lisp/files.el b/lisp/files.el index 1a1b2d827be..6a406b6fbf0 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -616,6 +616,8 @@ PATH-AND-SUFFIXES is a pair of lists (DIRECTORIES . SUFFIXES)." (suffix (concat (regexp-opt (cdr path-and-suffixes) t) "\\'")) (string-dir (file-name-directory string))) (dolist (dir (car path-and-suffixes)) + (unless dir + (setq dir default-directory)) (if string-dir (setq dir (expand-file-name string-dir dir))) (when (file-directory-p dir) (dolist (file (file-name-all-completions @@ -668,14 +670,17 @@ Do not specify them in other calls." ;; PREV-DIRS can be a cons cell whose car is an alist ;; of truenames we've just recently computed. - ;; The last test looks dubious, maybe `+' is meant here? --simon. - (if (or (string= filename "") (string= filename "~") - (and (string= (substring filename 0 1) "~") - (string-match "~[^/]*" filename))) - (progn - (setq filename (expand-file-name filename)) - (if (string= filename "") - (setq filename "/")))) + (cond ((or (string= filename "") (string= filename "~")) + (setq filename (expand-file-name filename)) + (if (string= filename "") + (setq filename "/"))) + ((and (string= (substring filename 0 1) "~") + (string-match "~[^/]*/?" filename)) + (let ((first-part + (substring filename 0 (match-end 0))) + (rest (substring filename (match-end 0)))) + (setq filename (concat (expand-file-name first-part) rest))))) + (or counter (setq counter (list 100))) (let (done ;; For speed, remove the ange-ftp completion handler from the list. @@ -4307,6 +4312,8 @@ normally equivalent short `-D' option is just passed on to ;; If `insert-directory-program' failed, signal an error. (unless (eq 0 result) + ;; Delete the error message it may have output. + (delete-region beg (point)) ;; On non-Posix systems, we cannot open a directory, so ;; don't even try, because that will always result in ;; the ubiquitous "Access denied". Instead, show the |