Function: python-util-list-directories

python-util-list-directories is a byte-compiled function defined in python.el.gz.

Signature

(python-util-list-directories DIRECTORY &optional PREDICATE MAX-DEPTH)

Documentation

List DIRECTORY subdirs, filtered by PREDICATE and limited by MAX-DEPTH.

Argument PREDICATE defaults to identity and must be a function that takes one argument (a full path) and returns non-nil for allowed files. When optional argument MAX-DEPTH is non-nil, stop searching when depth is reached, else don't limit.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/python.el.gz
(defun python-util-list-directories (directory &optional predicate max-depth)
  "List DIRECTORY subdirs, filtered by PREDICATE and limited by MAX-DEPTH.
Argument PREDICATE defaults to `identity' and must be a function
that takes one argument (a full path) and returns non-nil for
allowed files.  When optional argument MAX-DEPTH is non-nil, stop
searching when depth is reached, else don't limit."
  (let* ((dir (expand-file-name directory))
         (dir-length (length dir))
         (predicate (or predicate #'identity))
         (to-scan (list dir))
         (tally nil))
    (while to-scan
      (let ((current-dir (car to-scan)))
        (when (funcall predicate current-dir)
          (setq tally (cons current-dir tally)))
        (setq to-scan (append (cdr to-scan)
                              (python-util-list-files
                               current-dir #'file-directory-p)
                              nil))
        (when (and max-depth
                   (<= max-depth
                       (length (split-string
                                (substring current-dir dir-length)
                                "/\\|\\\\" t))))
          (setq to-scan nil))))
    (nreverse tally)))