Mercurial > emacs
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)) |