comparison lisp/gnus/nnmh.el @ 110189:821c596efa5f

Rewrite the Gnus group activation method to be more efficient; nnmh.el (nnmh-request-list-1): Fix up the recursion behavior; Add more changes related to the new methodology for requesting backend data.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sun, 05 Sep 2010 00:34:16 +0000
parents a05bc4ad2d3f
children 896692b6eb7b
comparison
equal deleted inserted replaced
110188:92e4fa270c92 110189:821c596efa5f
207 (defun nnmh-request-list-1 (dir) 207 (defun nnmh-request-list-1 (dir)
208 (setq dir (expand-file-name dir)) 208 (setq dir (expand-file-name dir))
209 ;; Recurse down all directories. 209 ;; Recurse down all directories.
210 (let ((files (nnheader-directory-files dir t nil t)) 210 (let ((files (nnheader-directory-files dir t nil t))
211 (max 0) 211 (max 0)
212 min rdir attributes num) 212 min rdir num subdirectoriesp)
213 ;; Recurse down directories. 213 ;; Recurse down directories.
214 (setq subdirectoriesp (> (nth 1 (file-attributes dir)) 2))
214 (dolist (rdir files) 215 (dolist (rdir files)
215 (setq attributes (file-attributes rdir)) 216 (if (or (not subdirectoriesp)
216 (when (null (nth 0 attributes)) 217 (file-regular-p rdir))
217 (setq file (file-name-nondirectory rdir)) 218 (progn
218 (when (string-match "^[0-9]+$" file) 219 (setq file (file-name-nondirectory rdir))
219 (setq num (string-to-number file)) 220 (when (string-match "^[0-9]+$" file)
220 (setq max (max max num)) 221 (setq num (string-to-number file))
221 (when (or (null min) 222 (setq max (max max num))
222 (< num min)) 223 (when (or (null min)
223 (setq min num)))) 224 (< num min))
224 (when (and (eq (nth 0 attributes) t) ; Is a directory 225 (setq min num))))
225 (> (nth 1 attributes) 2) ; Has sub-directories 226 ;; This is a directory.
226 (file-readable-p rdir) 227 (when (and (file-readable-p rdir)
227 (not (equal (file-truename rdir) 228 (not (equal (file-truename rdir)
228 (file-truename dir)))) 229 (file-truename dir))))
229 (nnmh-request-list-1 rdir))) 230 (nnmh-request-list-1 rdir))))
230 ;; For each directory, generate an active file line. 231 ;; For each directory, generate an active file line.
231 (unless (string= (expand-file-name nnmh-toplev) dir) 232 (unless (string= (expand-file-name nnmh-toplev) dir)
232 (when min 233 (when min
233 (with-current-buffer nntp-server-buffer 234 (with-current-buffer nntp-server-buffer
234 (goto-char (point-max)) 235 (goto-char (point-max))