Skip to content

Commit dce0619

Browse files
committed
check for existence of directory before trying to get files from it
this should fix #18
1 parent e55344d commit dce0619

File tree

1 file changed

+37
-36
lines changed

1 file changed

+37
-36
lines changed

ecb-file-browser.el

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,42 +1940,43 @@ and IGNORE-CASE return a function which can be used as argument for `sort'."
19401940
"Return a cons cell where car is a list of all files to display in DIR and
19411941
cdr is a list of all subdirs to display in DIR. Both lists are sorted
19421942
according to `ecb-sources-sort-method'."
1943-
(or (ecb-files-and-subdirs-cache-get dir)
1944-
;; dir is not cached
1945-
(let ((files (ecb-directory-files dir nil nil t))
1946-
(source-regexps (or (ecb-check-directory-for-source-regexps
1947-
(ecb-fix-filename dir))
1948-
'(("") (""))))
1949-
(cvsignore-files (if (ecb-check-directory-for-cvsignore-exclude dir)
1950-
(ecb-files-from-cvsignore dir)))
1951-
sorted-files source-files subdirs cached-value)
1952-
;; if necessary sort FILES
1953-
(setq sorted-files
1954-
(if ecb-sources-sort-method
1955-
(sort files (ecb-get-sources-sort-function
1956-
ecb-sources-sort-method))
1957-
files))
1958-
;; divide real files and subdirs. For really large directories (~ >=
1959-
;; 2000 entries) this is the performance-bottleneck in the
1960-
;; file-browser of ECB.
1961-
(dolist (file sorted-files)
1962-
(if (ecb-file-directory-p (ecb-fix-filename dir file))
1963-
(when (not (ecb-check-dir-exclude file))
1964-
;; (when (not (ecb-file-accessible-directory-p file))
1965-
;; (ecb-merge-face-into-text file
1966-
;; ecb-directory-not-accessible-face))
1967-
(setq subdirs (append subdirs (list file))))
1968-
(when (and (not (member file cvsignore-files))
1969-
(or (ecb-match-regexp-list file (cadr source-regexps))
1970-
(not (ecb-match-regexp-list file (car source-regexps)))))
1971-
(setq source-files (append source-files (list file))))))
1972-
1973-
(setq cached-value (cons source-files subdirs))
1974-
;; check if this directory must be cached
1975-
(if (ecb-check-directory-for-caching dir (length sorted-files))
1976-
(ecb-files-and-subdirs-cache-add dir cached-value))
1977-
;; return the result
1978-
cached-value)))
1943+
(when (file-directory-p dir)
1944+
(or (ecb-files-and-subdirs-cache-get dir)
1945+
;; dir is not cached
1946+
(let ((files (ecb-directory-files dir nil nil t))
1947+
(source-regexps (or (ecb-check-directory-for-source-regexps
1948+
(ecb-fix-filename dir))
1949+
'(("") (""))))
1950+
(cvsignore-files (if (ecb-check-directory-for-cvsignore-exclude dir)
1951+
(ecb-files-from-cvsignore dir)))
1952+
sorted-files source-files subdirs cached-value)
1953+
;; if necessary sort FILES
1954+
(setq sorted-files
1955+
(if ecb-sources-sort-method
1956+
(sort files (ecb-get-sources-sort-function
1957+
ecb-sources-sort-method))
1958+
files))
1959+
;; divide real files and subdirs. For really large directories (~ >=
1960+
;; 2000 entries) this is the performance-bottleneck in the
1961+
;; file-browser of ECB.
1962+
(dolist (file sorted-files)
1963+
(if (ecb-file-directory-p (ecb-fix-filename dir file))
1964+
(when (not (ecb-check-dir-exclude file))
1965+
;; (when (not (ecb-file-accessible-directory-p file))
1966+
;; (ecb-merge-face-into-text file
1967+
;; ecb-directory-not-accessible-face))
1968+
(setq subdirs (append subdirs (list file))))
1969+
(when (and (not (member file cvsignore-files))
1970+
(or (ecb-match-regexp-list file (cadr source-regexps))
1971+
(not (ecb-match-regexp-list file (car source-regexps)))))
1972+
(setq source-files (append source-files (list file))))))
1973+
1974+
(setq cached-value (cons source-files subdirs))
1975+
;; check if this directory must be cached
1976+
(if (ecb-check-directory-for-caching dir (length sorted-files))
1977+
(ecb-files-and-subdirs-cache-add dir cached-value))
1978+
;; return the result
1979+
cached-value))))
19791980

19801981

19811982
(defun ecb-update-sources-buffer (dir-before-update)

0 commit comments

Comments
 (0)