1 ;;; elmo-filter.el -- Filtered Folder Interface for ELMO.
3 ;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
5 ;; Author: Yuuichi Teranishi <teranisi@gohome.org>
6 ;; Keywords: mail, net news
8 ;; This file is part of ELMO (Elisp Library for Message Orchestration).
10 ;; This program is free software; you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation; either version 2, or (at your option)
15 ;; This program is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;; GNU General Public License for more details.
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
33 (defun elmo-filter-msgdb-create (spec numlist new-mark already-mark
34 seen-mark important-mark seen-list)
35 (if (eq (nth 2 spec) 'partial)
36 (elmo-msgdb-create (nth 2 spec)
40 seen-mark important-mark seen-list)
41 (elmo-msgdb-create-as-numlist (nth 2 spec)
45 seen-mark important-mark seen-list)))
47 (defun elmo-filter-msgdb-create-as-numlist (spec numlist new-mark already-mark
48 seen-mark important-mark
50 (elmo-msgdb-create-as-numlist (nth 2 spec)
54 seen-mark important-mark seen-list))
56 (defun elmo-filter-list-folders (spec &optional hierarchy)
59 (defun elmo-filter-append-msg (spec string &optional msg no-see)
60 (elmo-call-func (nth 2 spec) "append" string))
62 (defun elmo-filter-read-msg (spec number outbuf)
63 (elmo-call-func (nth 2 spec) "read-msg" number outbuf))
65 (defun elmo-filter-delete-msgs (spec msgs)
66 (elmo-call-func (nth 2 spec) "delete-msgs" msgs))
68 (defun elmo-filter-list-folder (spec)
69 (let ((filter (nth 1 spec))
74 (cond ((string= (elmo-filter-key filter)
76 (setq numbers (elmo-list-folder folder))
77 (nthcdr (max (- (length numbers)
78 (string-to-int (elmo-filter-value filter)))
81 ((string= (elmo-filter-key filter)
83 (setq numbers (elmo-list-folder folder))
84 (let ((rest (nthcdr (string-to-int (elmo-filter-value filter) )
87 (delete x numbers)) rest))
90 (elmo-search folder filter)))))
92 (defun elmo-filter-list-folder-unread (spec mark-alist unread-marks)
93 (let ((filter (nth 1 spec))
98 (cond ((string= (elmo-filter-key filter)
100 (setq msgs (elmo-list-folder-unread folder mark-alist
102 (nthcdr (max (- (length msgs)
103 (string-to-int (elmo-filter-value filter)))
106 ((string= (elmo-filter-key filter)
108 (setq msgs (elmo-list-folder-unread folder
111 (let ((rest (nthcdr (string-to-int (elmo-filter-value filter) )
114 (delete x msgs)) rest))
118 (elmo-search folder filter)
119 (elmo-list-folder-unread folder mark-alist unread-marks))))))
121 (defun elmo-filter-list-folder-important (spec overview)
122 (let ((filter (nth 1 spec))
123 (folder (nth 2 spec))
127 (cond ((string= (elmo-filter-key filter)
129 (setq msgs (elmo-list-folder-important folder overview))
130 (nthcdr (max (- (length msgs)
131 (string-to-int (elmo-filter-value filter)))
134 ((string= (elmo-filter-key filter)
136 (setq msgs (elmo-list-folder-important folder overview))
137 (let ((rest (nthcdr (string-to-int (elmo-filter-value filter) )
140 (delete x msgs)) rest))
145 '(lambda (x) (elmo-msgdb-overview-entity-get-number x))
147 (elmo-list-folder-important folder overview))))))
149 (defun elmo-filter-max-of-folder (spec)
150 (elmo-max-of-folder (nth 2 spec)))
152 (defun elmo-filter-folder-exists-p (spec)
153 (elmo-folder-exists-p (nth 2 spec)))
155 (defun elmo-filter-folder-creatable-p (spec)
156 (elmo-call-func (nth 2 spec) "folder-creatable-p"))
158 (defun elmo-filter-create-folder (spec)
159 (elmo-create-folder (nth 2 spec)))
161 (defun elmo-filter-search (spec condition &optional numlist)
162 ;; search from messages in this folder
165 (elmo-call-func (nth 2 spec) "search" condition
166 (elmo-filter-list-folder spec))))
168 (defun elmo-filter-use-cache-p (spec number)
169 (elmo-call-func (nth 2 spec) "use-cache-p" number))
171 (defun elmo-filter-local-file-p (spec number)
172 (elmo-call-func (nth 2 spec) "local-file-p" number))
174 (defun elmo-filter-commit (spec)
175 (elmo-commit (nth 2 spec)))
177 (defun elmo-filter-plugged-p (spec)
178 (elmo-folder-plugged-p (nth 2 spec)))
180 (defun elmo-filter-set-plugged (spec plugged add)
181 (elmo-folder-set-plugged (nth 2 spec) plugged add))
183 (defun elmo-filter-get-msg-filename (spec number &optional loc-alist)
184 ;; This function may be called when elmo-filter-local-file-p()
186 (elmo-call-func (nth 2 spec) "get-msg-filename" number loc-alist))
188 (defun elmo-filter-sync-number-alist (spec number-alist)
189 (elmo-call-func (nth 2 spec) "sync-number-alist" number-alist))
191 (defun elmo-filter-server-diff (spec)
192 (elmo-call-func (nth 2 spec) "server-diff"))
194 (provide 'elmo-filter)
196 ;;; elmo-filter.el ends here