(defvar elmo-nntp-max-number-precedes-list-active nil
"Non-nil means max number of msgdb is set as the max number of `list active'.
-(Needed for inn 2.3 or later?).")
+\(Needed for inn 2.3 or later?\).")
(defvar elmo-nntp-group-coding-system nil
"A coding system for newsgroup string.")
("xref" . 8)))
(defun elmo-nntp-create-msgdb-from-overview-string (str
+ new-mark
+ already-mark
+ seen-mark
+ important-mark
seen-list
&optional numlist)
(let (ov-list gmark message-id seen
(elmo-file-cache-get message-id))
(if seen
nil
- elmo-msgdb-unread-cached-mark)
+ already-mark)
(if seen
(if elmo-nntp-use-cache
- elmo-msgdb-read-uncached-mark)
- elmo-msgdb-new-mark))))
+ seen-mark)
+ new-mark))))
(setq mark-alist
(elmo-msgdb-mark-append mark-alist
num gmark))))
(list overview number-alist mark-alist)))
(luna-define-method elmo-folder-msgdb-create ((folder elmo-nntp-folder)
- numbers seen-list)
- (elmo-nntp-folder-msgdb-create folder numbers seen-list))
-
-(defun elmo-nntp-folder-msgdb-create (folder numbers seen-list)
+ numbers new-mark already-mark
+ seen-mark important-mark
+ seen-list)
+ (elmo-nntp-folder-msgdb-create folder numbers new-mark already-mark
+ seen-mark important-mark
+ seen-list))
+
+(defun elmo-nntp-folder-msgdb-create (folder numbers new-mark already-mark
+ seen-mark important-mark
+ seen-list)
(let ((filter numbers)
(session (elmo-nntp-get-session folder))
beg-num end-num cur length
ret-val
(elmo-nntp-create-msgdb-from-overview-string
ov-str
+ new-mark
+ already-mark
+ seen-mark
+ important-mark
seen-list
filter
)))))
'elmo-nntp-msgdb-create "Getting overview..." 100)))
(if (not use-xover)
(setq ret-val (elmo-nntp-msgdb-create-by-header
- session numbers seen-list))
+ session numbers
+ new-mark already-mark seen-mark seen-list))
(with-current-buffer (elmo-network-session-buffer session)
(if ov-str
(setq ret-val
ret-val
(elmo-nntp-create-msgdb-from-overview-string
ov-str
+ new-mark
+ already-mark
+ seen-mark
+ important-mark
seen-list
filter))))))
(elmo-folder-set-killed-list-internal
(nconc number-alist
(list (cons max-number nil))))))))))
-(defun elmo-nntp-msgdb-create-by-header (session numbers seen-list)
+(defun elmo-nntp-msgdb-create-by-header (session numbers
+ new-mark already-mark
+ seen-mark seen-list)
(with-temp-buffer
(elmo-nntp-retrieve-headers session (current-buffer) numbers)
(elmo-nntp-msgdb-create-message
- (length numbers) seen-list)))
+ (length numbers) new-mark already-mark seen-mark seen-list)))
(defun elmo-nntp-parse-xhdr-response (string)
(let (response)
(if from-msgs
(elmo-list-filter from-msgs result)
result)))
+ ((string= "body" search-key)
+ (error
+"Search by BODY is not supported (Toggle the plug off to search from caches)"))
(t
(let ((val (elmo-filter-value condition))
(negative (eq (elmo-filter-type condition) 'unmatch))
;; end of from Gnus
-(defun elmo-nntp-msgdb-create-message (len seen-list)
+(defun elmo-nntp-msgdb-create-message (len new-mark
+ already-mark seen-mark seen-list)
(save-excursion
(let (beg overview number-alist mark-alist
entity i num gmark seen message-id)
(elmo-file-cache-get message-id))
(if seen
nil
- elmo-msgdb-unread-cached-mark)
+ already-mark)
(if seen
(if elmo-nntp-use-cache
- elmo-msgdb-read-uncached-mark)
- elmo-msgdb-new-mark))))
+ seen-mark)
+ new-mark))))
(setq mark-alist
(elmo-msgdb-mark-append
mark-alist
folder
(delq elem (elmo-nntp-folder-temp-crosses-internal folder)))))))
-(luna-define-method elmo-folder-mark-as-read :before ((folder
- elmo-nntp-folder)
- numbers
- &optional ignore-flags)
- (elmo-nntp-folder-update-crosspost-message-alist folder numbers))
+(luna-define-method elmo-folder-mark-as-read ((folder elmo-nntp-folder)
+ numbers)
+ (elmo-nntp-folder-update-crosspost-message-alist folder numbers)
+ t)
(luna-define-method elmo-folder-process-crosspost ((folder elmo-nntp-folder)
&optional
elmo-crosspost-message-alist)))
(elmo-nntp-folder-set-reads-internal folder reads)))
-(luna-define-method elmo-folder-list-unreads :around ((folder
- elmo-nntp-folder))
+(luna-define-method elmo-folder-list-unreads-internal
+ ((folder elmo-nntp-folder) unread-marks mark-alist)
;; 2.3. elmo-folder-list-unreads return unread message list according to
;; `reads' slot.
- (elmo-living-messages (luna-call-next-method)
- (elmo-nntp-folder-reads-internal folder)))
+ (let ((mark-alist (or mark-alist (elmo-msgdb-get-mark-alist
+ (elmo-folder-msgdb folder)))))
+ (elmo-living-messages (delq nil
+ (mapcar
+ (lambda (x)
+ (if (member (nth 1 x) unread-marks)
+ (car x)))
+ mark-alist))
+ (elmo-nntp-folder-reads-internal folder))))
(require 'product)
(product-provide (provide 'elmo-nntp) (require 'elmo-version))