The 1st element CONDITION is a sexp which consists of following.
-1. Functions which accept argument FIELD-NAME and VALUE.
+1. Functions which accept arguments FIELD-NAME and VALUE.
FIELD-NAME is a symbol of the field name.
`equal' ... True if the field value equals to VALUE.
VALUE can contain \\& and \\N which will substitute
from matching \\(\\) patterns in the previous VALUE.
-2. Functions which accept any number of arguments.
+2. Functions which accept an argument SIZE, SIZE is some number.
+
+`<' ... True if the size of the message is less than SIZE.
+`>' ... True if the size of the message is greater than SIZE.
+
+3. Functions which accept any number of arguments.
`or' ... True if one of the argument returns true.
`and' ... True if all of the arguments return true.
-3. A symbol.
+4. A symbol.
When a symbol is specified, it is evaluated.
:group 'elmo)
(defcustom elmo-split-default-action 'noop
- "Default action for messages which pass all rules."
+ "Default action for messages which pass all rules.
+It can be some ACTION as in `elmo-split-rule'."
:type '(choice (const :tag "do not touch" noop)
(const :tag "delete" delete)
(string :tag "folder name")
(throw 'done nil)))
t))
+(defun elmo-split-> (buffer size)
+ (> (buffer-size buffer) size))
+
+(defun elmo-split-< (buffer size)
+ (< (buffer-size buffer) size))
+
(defun elmo-split-address-equal (buffer field value)
(with-current-buffer buffer
(let ((addrs (mapcar
(elmo-message-fetch folder msg
(elmo-make-fetch-strategy 'entire)
nil (current-buffer) 'unread))
+ (run-hooks 'elmo-split-fetch-hook)
(setq elmo-split-message-entity (mime-parse-buffer))
(catch 'terminate
(dolist (rule (append elmo-split-rule default-rule))
action)))
(elmo-folder-create target-folder)))
(elmo-folder-open-internal target-folder)
- (elmo-folder-append-buffer target-folder 'unread)
+ (elmo-folder-append-buffer target-folder)
(elmo-folder-close-internal target-folder))
(error (setq failure t)
(incf fcount)))
" Test: do nothing\n")
((function action)
(format " Test: function:%s\n"
- (symbol-name action)))
+ (prin1-to-string action)))
(t
" ERROR: wrong action specified\n"))
(cond