+ (if (file-exists-p (gnus-namazu/lock-file-name directory))
+ (when force
+ (error "Found lock file: %s" (gnus-namazu/lock-file-name directory)))
+ (with-current-buffer
+ (get-buffer-create (concat " *mknmz*" directory))
+ (erase-buffer)
+ (unless (file-directory-p directory)
+ (make-directory directory t))
+ (setq default-directory directory)
+ (let ((args (append gnus-namazu-make-index-arguments
+ target-directories)))
+ (insert "% " gnus-namazu-make-index-command " "
+ (mapconcat 'identity args " ") "\n")
+ (goto-char (point-max))
+ (when force
+ (pop-to-buffer (current-buffer)))
+ (message "Make index at %s..." directory)
+ (apply 'call-process gnus-namazu-make-index-command nil t t args)
+ (gnus-namazu/mknmz-cleanup directory)
+ (message "Make index at %s...done" directory)
+ (unless force
+ (kill-buffer (current-buffer)))))))
+
+(defvar gnus-namazu/update-directories nil)
+(defvar gnus-namazu/update-process nil)
+
+;;;###autoload
+(defun gnus-namazu-update-all-indices (directories &optional force)
+ "Update all indices under DIRECTORIES."
+ (interactive (list gnus-namazu-index-directories t))
+ (while (and directories
+ (not (gnus-namazu-update-index (car directories) force)))
+ (setq directories (cdr directories)))
+ (setq gnus-namazu/update-directories (cdr directories)))
+
+;;;###autoload
+(defun gnus-namazu-update-index (directory &optional force)
+ "Update index under DIRECTORY."
+ (interactive
+ (list
+ (if (and current-prefix-arg (> (length gnus-namazu-index-directories) 1))
+ (completing-read "Directory: "
+ (mapcar 'list gnus-namazu-index-directories) nil t)
+ (gnus-namazu/default-index-directory))
+ t))
+ (setq directory (file-name-as-directory (expand-file-name directory)))
+ (if gnus-namazu/update-process