summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2004-04-17 19:58:19 +0000
committerRichard M. Stallman <rms@gnu.org>2004-04-17 19:58:19 +0000
commitf2440e42fab3b236134b43a399bd47e21e88e5f6 (patch)
tree495bf719f209df7649d52b411215a469d43bb99d /lisp
parent95c12694a48992059683295be28c5c6e0d22542a (diff)
downloademacs-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.el23
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