]> git.eshelyaron.com Git - emacs.git/commitdiff
(dired-noselect): Avoid calling file-directory-p
authorRichard M. Stallman <rms@gnu.org>
Sun, 13 Apr 1997 04:26:38 +0000 (04:26 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 13 Apr 1997 04:26:38 +0000 (04:26 +0000)
when the initial argument was syntactically a directory name.

lisp/dired.el

index 470a970dd28f91daea0c8f00346183a96e9d1b0a..3792af9727adc4a267c7bca9d43b39ca647fc793 100644 (file)
@@ -410,16 +410,24 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh."
   (or dir-or-list (setq dir-or-list default-directory))
   ;; This loses the distinction between "/foo/*/" and "/foo/*" that
   ;; some shells make:
-  (let (dirname)
+  (let (dirname initially-was-dirname)
     (if (consp dir-or-list)
        (setq dirname (car dir-or-list))
       (setq dirname dir-or-list))
+    (setq initially-was-dirname
+         (string= (file-name-as-directory dirname) dirname))
     (setq dirname (abbreviate-file-name
                   (expand-file-name (directory-file-name dirname))))
     (if find-file-visit-truename
        (setq dirname (file-truename dirname)))
-    (if (file-directory-p dirname)
-       (setq dirname (file-name-as-directory dirname)))
+    ;; If the argument was syntactically  a directory name not a file name,
+    ;; or if it happens to name a file that is a directory,
+    ;; convert it syntactically to a directory name.
+    ;; The reason for checking initially-was-dirname
+    ;; and not just file-directory-p
+    ;; is that file-directory-p is slow over ftp.
+    (if (or initially-was-dirname (file-directory-p dirname))
+       (setq dirname  (file-name-as-directory dirname)))
     (if (consp dir-or-list)
        (setq dir-or-list (cons dirname (cdr dir-or-list)))
       (setq dir-or-list dirname))