:type 'symbol
:group 'elmo)
-(defcustom elmo-nmz-args '("--all" "--list" "--early")
+(defcustom elmo-nmz-args '("--all" "--list" "--late")
"*Argument list for namazu to list matched files."
:type '(repeat string)
:group 'elmo)
(luna-define-method elmo-folder-initialize ((folder
elmo-nmz-folder)
name)
- (with-temp-buffer
- (insert "[" name)
- (goto-char (point-min))
- (forward-sexp)
- (elmo-nmz-folder-set-pattern-internal folder
- (buffer-substring
- (+ 1 (point-min))
- (- (point) 1)))
- (let ((index (buffer-substring (point) (point-max))))
- (elmo-nmz-folder-set-index-path-internal
- folder
- (cond ((cdr (assoc index elmo-nmz-index-alias-alist)))
- ((eq (length index) 0)
- elmo-nmz-default-index-path)
- (t
- index))))
- folder))
+ (when (> (length name) 0)
+ (with-temp-buffer
+ (insert "[" name)
+ (goto-char (point-min))
+ (forward-sexp)
+ (elmo-nmz-folder-set-pattern-internal folder
+ (buffer-substring
+ (+ 1 (point-min))
+ (- (point) 1)))
+ (let ((index (buffer-substring (point) (point-max))))
+ (elmo-nmz-folder-set-index-path-internal
+ folder
+ (cond ((cdr (assoc index elmo-nmz-index-alias-alist)))
+ ((eq (length index) 0)
+ elmo-nmz-default-index-path)
+ (t
+ index))))))
+ folder)
(luna-define-method elmo-folder-expand-msgdb-path ((folder
elmo-nmz-folder))
(elmo-folder-name-internal folder))
(expand-file-name "nmz" elmo-msgdb-directory)))
-(defun elmo-nmz-msgdb-create-entity (folder number)
+(defun elmo-nmz-msgdb-create-entity (msgdb folder number)
"Create msgdb entity for the message in the FOLDER with NUMBER."
- (let ((location (elmo-map-message-location folder number))
+ (let ((location (expand-file-name (elmo-map-message-location folder number)))
entity uid)
- (setq entity (elmo-msgdb-create-overview-entity-from-file number location))
- (unless (or (> (length (elmo-msgdb-overview-entity-get-to entity)) 0)
- (> (length (elmo-msgdb-overview-entity-get-cc entity)) 0)
- (not (string= (elmo-msgdb-overview-entity-get-subject entity)
+ (setq entity (elmo-msgdb-create-message-entity-from-file
+ (elmo-msgdb-message-entity-handler msgdb) number location))
+ (unless (or (> (length (elmo-message-entity-field entity 'to)) 0)
+ (> (length (elmo-message-entity-field entity 'cc)) 0)
+ (not (string= (elmo-message-entity-field entity 'subject)
elmo-no-subject)))
- (elmo-msgdb-overview-entity-set-subject entity location)
+ (elmo-message-entity-set-field entity 'subject location)
(setq uid (nth 2 (file-attributes location)))
- (elmo-msgdb-overview-entity-set-from entity
- (concat
- (user-full-name uid)
- " <"(user-login-name uid) "@"
- (system-name) ">")))
+ (elmo-message-entity-set-field entity 'from
+ (concat
+ (user-full-name uid)
+ " <"(user-login-name uid) "@"
+ (system-name) ">")))
entity))
(luna-define-method elmo-folder-msgdb-create ((folder elmo-nmz-folder)
- numlist new-mark
- already-mark seen-mark
- important-mark
- seen-list)
- (let* (overview number-alist mark-alist entity
- i percent num pair)
+ numlist flag-table)
+ (let ((new-msgdb (elmo-make-msgdb))
+ entity mark i percent num)
(setq num (length numlist))
(setq i 0)
(message "Creating msgdb...")
(while numlist
(setq entity
(elmo-nmz-msgdb-create-entity
- folder (car numlist)))
+ new-msgdb folder (car numlist)))
(when entity
- (setq overview
- (elmo-msgdb-append-element
- overview entity))
- (setq number-alist
- (elmo-msgdb-number-add number-alist
- (elmo-msgdb-overview-entity-get-number
- entity)
- (elmo-msgdb-overview-entity-get-id
- entity)))
- (setq mark-alist
- (elmo-msgdb-mark-append
- mark-alist
- (elmo-msgdb-overview-entity-get-number
- entity)
- (or (elmo-msgdb-global-mark-get
- (elmo-msgdb-overview-entity-get-id
- entity))
- new-mark))))
+ (elmo-msgdb-append-entity new-msgdb entity '(new unread)))
(when (> num elmo-display-progress-threshold)
(setq i (1+ i))
(setq percent (/ (* i 100) num))
'elmo-folder-msgdb-create "Creating msgdb..."
percent))
(setq numlist (cdr numlist)))
- (message "Creating msgdb...done.")
- (list overview number-alist mark-alist)))
+ (message "Creating msgdb...done")
+ new-msgdb))
(luna-define-method elmo-folder-message-file-p ((folder elmo-nmz-folder))
t)
((folder elmo-nmz-folder))
t)
-(luna-define-method elmo-folder-diff ((folder elmo-nmz-folder)
- &optional numbers)
+(luna-define-method elmo-folder-diff ((folder elmo-nmz-folder))
(cons nil nil))
(luna-define-method elmo-folder-message-make-temp-files ((folder
&optional section unseen)
(when (file-exists-p location)
(prog1
- (insert-file-contents-as-binary location)
+ (insert-file-contents-as-binary (expand-file-name location))
(unless (or (std11-field-body "To")
(std11-field-body "Cc")
(std11-field-body "Subject"))
(let (charset guess uid)
(erase-buffer)
(set-buffer-multibyte t)
- (insert-file-contents location)
+ (insert-file-contents (expand-file-name location))
(setq charset (detect-mime-charset-region (point-min)
(point-max)))
(goto-char (point-min))
(end-of-line)
(setq locations (cons (buffer-substring bol (point)) locations))
(forward-line 1))
- locations)))
+ (nreverse locations))))
(luna-define-method elmo-folder-exists-p ((folder elmo-nmz-folder))
- t)
-
-(luna-define-method elmo-folder-search ((folder elmo-nmz-folder)
- condition &optional from-msgs)
- (let* ((msgs (or from-msgs (elmo-folder-list-messages folder)))
- (orig msgs)
- (i 0)
- case-fold-search matches
- percent num
- (num (length msgs)))
- (while msgs
- (if (elmo-file-field-condition-match
- (elmo-map-message-location folder (car msgs))
- condition
- (car msgs)
- orig)
- (setq matches (cons (car msgs) matches)))
- (setq i (1+ i))
- (setq percent (/ (* i 100) num))
- (elmo-display-progress
- 'elmo-nmz-search "Searching..."
- percent)
- (setq msgs (cdr msgs)))
- matches))
-
-;;; To override elmo-map-folder methods.
-(luna-define-method elmo-folder-list-unreads-internal
- ((folder elmo-nmz-folder) unread-marks &optional mark-alist)
- t)
-
-(luna-define-method elmo-folder-unmark-important ((folder elmo-nmz-folder)
- numbers)
- t)
-
-(luna-define-method elmo-folder-mark-as-important ((folder elmo-nmz-folder)
- numbers)
- t)
-
-(luna-define-method elmo-folder-unmark-read ((folder elmo-nmz-folder) numbers)
- t)
-
-(luna-define-method elmo-folder-mark-as-read ((folder elmo-nmz-folder) numbers)
- t)
+ (elmo-nmz-folder-pattern-internal folder))
+
+(luna-define-method elmo-folder-have-subfolder-p ((folder elmo-nmz-folder))
+ (null (elmo-nmz-folder-pattern-internal folder)))
+
+(luna-define-method elmo-folder-list-subfolders ((folder elmo-nmz-folder)
+ &optional one-level)
+ (mapcar (lambda (name) (elmo-recover-string-from-filename name))
+ (directory-files (expand-file-name "nmz" elmo-msgdb-directory)
+ nil
+ (concat
+ "^"
+ (regexp-quote
+ (elmo-folder-prefix-internal folder))))))
(require 'product)
(product-provide (provide 'elmo-nmz) (require 'elmo-version))