For example: \"nnimap:mailbox\""
:group 'gnus-sieve)
-(defcustom gnus-sieve-crosspost nil
+(defcustom gnus-sieve-crosspost t
"Whether the generated Sieve script should do crossposting."
:type 'bool
:group 'gnus-sieve)
(insert sieve-template))
(insert gnus-sieve-region-start
(gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost)
- gnus-sieve-region-end)
- (sieve-mode))
+ gnus-sieve-region-end))
(defun gnus-sieve-guess-rule-for-article ()
"Guess a sieve rule based on RFC822 article in buffer.
-Return NIL if no rule could be guessed."
+Return nil if no rule could be guessed."
(when (message-fetch-field "sender")
- `(sieve address "sender" ,(regexp-quote (message-fetch-field "sender")))))
+ `(sieve address "sender" ,(message-fetch-field "sender"))))
+;;;###autoload
(defun gnus-sieve-article-add-rule ()
(interactive)
(gnus-summary-select-article nil 'force)
such group, a Sieve IF control structure is generated, having the
test as the condition and { fileinto \"group.name\"; } as the body.
-If CROSSPOST is non-nil, concatenate these conditionals
-sequencially, otherwsie with `elsif', causing a match on one group the
-other tests to be skipped.
+If CROSSPOST is nil, each conditional body contains a \"stop\" command
+which stops execution after a match is found.
For example: If the INBOX.list.sieve group has the
(let* ((newsrc (cdr gnus-newsrc-alist))
script)
(dolist (info newsrc)
- (when (or (not method)
+ (when (or (not method)
(gnus-server-equal method (gnus-info-method info)))
(let* ((group (gnus-info-group info))
(spec (gnus-group-find-parameter group 'sieve t)))
(when spec
- (push (concat "if " (gnus-sieve-test spec) " {\n\t"
- "fileinto \"" (gnus-group-real-name group)
- "\";\n}")
+ (push (concat "if " (gnus-sieve-test spec) " {\n"
+ "\tfileinto \"" (gnus-group-real-name group) "\";\n"
+ (if gnus-sieve-crosspost
+ ""
+ "\tstop;\n")
+ "}")
script)))))
- (mapconcat 'identity script (if crosspost "\n" "\nels"))))
+ (mapconcat 'identity script "\n")))
(provide 'gnus-sieve)