(with-current-buffer outbuf
(erase-buffer)
(insert-buffer-substring (elmo-network-session-buffer session)
- start (- end 3))))
+ start (- end 3))
+ (elmo-delete-cr-buffer)))
t))
(defun elmo-nntp-select-group (session group &optional force)
(defsubst elmo-nntp-catchup-msgdb (msgdb max-number)
(let ((numbers (elmo-msgdb-list-messages msgdb))
msgdb-max)
- (setq msgdb-max (if numbers
- (car (sort numbers '>))
- 0))
+ (setq msgdb-max (if numbers (apply #'max numbers) 0))
(when (and msgdb-max
max-number
(< msgdb-max max-number))
(not (string= (elmo-nntp-folder-group-internal
folder) "")))
(concat " active"
- (format " %s.*"
- (elmo-nntp-folder-group-internal folder)
- "")))))
+ (format
+ " %s.*"
+ (elmo-nntp-folder-group-internal folder))))))
(if (elmo-nntp-read-response session t)
(if (null (setq response (elmo-nntp-read-contents session)))
(error "NNTP List folders failed")
(progn
(setq regexp
(format "^\\(%s[^. ]+\\)\\([. ]\\).*\n"
- (if (and
- (elmo-nntp-folder-group-internal folder)
- (null (string=
- (elmo-nntp-folder-group-internal
- folder) "")))
+ (if (and (elmo-nntp-folder-group-internal folder)
+ (null (string=
+ (elmo-nntp-folder-group-internal
+ folder) "")))
(concat (elmo-nntp-folder-group-internal
folder)
- "\\.") "")))
+ "\\.")
+ "")))
(while (looking-at regexp)
(setq top-ng (elmo-match-buffer 1))
(if (string= (elmo-match-buffer 2) " ")
(setq max-number
(nth 1 (read (concat "(" (elmo-nntp-read-contents
session) ")"))))
- (setq msgdb-max (if numbers
- (car (sort numbers '>))
- 0))
+ (setq msgdb-max (if numbers (apply #'max numbers) 0))
(when (and msgdb-max
max-number
(< msgdb-max max-number))
(luna-define-method elmo-folder-exists-p-plugged ((folder elmo-nntp-folder))
(let ((session (elmo-nntp-get-session folder)))
- (elmo-nntp-send-command
- session
- (format "group %s"
- (elmo-nntp-folder-group-internal folder)))
+ (elmo-nntp-send-command
+ session
+ (format "group %s"
+ (elmo-nntp-folder-group-internal folder)))
(elmo-nntp-read-response session)))
(defun elmo-nntp-retrieve-field (spec field from-msgs)
folder
(delq elem (elmo-nntp-folder-temp-crosses-internal folder)))))))
-(luna-define-method elmo-folder-flag-as-read :before ((folder
- elmo-nntp-folder)
- numbers
- &optional is-local)
- (elmo-nntp-folder-update-crosspost-message-alist folder numbers))
+(luna-define-method elmo-folder-set-flag :before ((folder elmo-nntp-folder)
+ numbers
+ flag
+ &optional is-local)
+ (when (eq flag 'read)
+ (elmo-nntp-folder-update-crosspost-message-alist folder numbers)))
+
+(luna-define-method elmo-folder-unset-flag :before ((folder elmo-nntp-folder)
+ numbers
+ flag
+ &optional is-local)
+ (when (eq flag 'unread)
+ (elmo-nntp-folder-update-crosspost-message-alist folder numbers)))
(defsubst elmo-nntp-folder-process-crosspost (folder)
;; 2.1. At elmo-folder-process-crosspost, setup `reads' slot from
(luna-define-method elmo-folder-process-crosspost ((folder elmo-nntp-folder))
(elmo-nntp-folder-process-crosspost folder))
-(luna-define-method elmo-folder-list-unreads :around ((folder
- elmo-nntp-folder))
+(luna-define-method elmo-folder-list-flagged :around ((folder elmo-nntp-folder)
+ flag &optional in-msgdb)
;; 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 ((msgs (luna-call-next-method)))
+ (if in-msgdb
+ msgs
+ (case flag
+ (unread
+ (elmo-living-messages msgs (elmo-nntp-folder-reads-internal folder)))
+ ;; Should consider read, digest and any flag?
+ (otherwise
+ msgs)))))
(require 'product)
(product-provide (provide 'elmo-nntp) (require 'elmo-version))