;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\304\305\306\"\210\307\310\311\312\313\301%\210\314\315\316\317\320\321\313\310&\210\314\322\323\324\320\325\313\310&\210\314\326\327\330\320\325\313\310&\210\314\331\311\332\320\333\313\310&\210\314\334\335\336\320\337\313\310&\210\314\340\341\342\320\325\313\310&\207" [require gnus gnus-sum format-spec autoload sieve-mode "sieve-mode" custom-declare-group gnus-sieve nil "Manage sieve scripts in Gnus." :group custom-declare-variable gnus-sieve-file "~/.sieve" "Path to your Sieve script." :type file gnus-sieve-region-start "\n## Begin Gnus Sieve Script\n" "Line indicating the start of the autogenerated region in your Sieve script." string gnus-sieve-region-end "\n## End Gnus Sieve Script\n" "Line indicating the end of the autogenerated region in your Sieve script." gnus-sieve-select-method "Which select method we generate the Sieve script for.\nFor example: \"nnimap:mailbox\"" (choice (const nil) string) gnus-sieve-crosspost t "Whether the generated Sieve script should do crossposting." boolean gnus-sieve-update-shell-command "echo put %f | sieveshell %s" "Shell command to execute after updating your Sieve script. The following\nformatting characters are recognized:\n\n%f Script's file name (gnus-sieve-file)\n%s Server name (from gnus-sieve-select-method)"] 8) #@314 Update the Sieve script in gnus-sieve-file, by replacing the region between gnus-sieve-region-start and gnus-sieve-region-end with (gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost), then execute gnus-sieve-update-shell-command. See the documentation for these variables and functions for details. (defalias 'gnus-sieve-update #[nil "\306 \210\307 \210\310\311\312\313 \314\315\n\211;\203\\\211\211\203\"\211<\203\"\211\206W\316 \"A\206W\211\317\232\2034\f\206C\316 \"A\206C\316)\"A\206C*\211\203d\320\321@@@@@A@#\232\204d\211A\266\202\202G\211@@\262\206C+\211\203\211\320\321@@@A@#\232\204\211\211A\266\202\202n\211@\262\206C,A\315\211\203A\211A\262\242\3228\262\262;\204\225\315\323C\32420\211\242\206\274\f\240\210\204\323\325\326\327\330\331\332!\333\"\322\334% \"\210 )D\211\203\365\211@\325\326\327\335\331\332!\336\"\322\334%\"\210A\266\202\202\327\210\211\242A@\337\235\203\320\340\242@\"\202\320\321\242@\242A@#\211\242B\211 \235\204,\204,\316@ \"\204,\211 B\266\2020\262\266\203\232\203\225\262\315\262\202\225\266\202\211\203T\316 \"\204TB B\211\262\266\203\202\310\211\f\232\203h\f\266\202\202\310\211@;\203{\203{\341\"\266\202\202\310\211\203\220\204\220\211A@\342\232\203\220\262\202\310\211\343@!\344\316-\">\203\303\345\346P!\236\204\303\347@-\236>\203\303\350\345\346P!A@DC\"\202\304\262\266\203A@\206\316\342$\"!\207" [gnus-sieve-update-shell-command gnus-sieve-file gnus-sieve-select-method gnus-server-method-cache gnus-select-method gnus-server-alist gnus-sieve-generate save-buffer shell-command format-spec format-spec-make 102 115 nil assoc "native" format "%s:%s" 4 t server-name mapc make-byte-code 257 "\211A\300\242\232\205 \301\302@\"\207" vconcat vector [throw server-name] "\n\n(fn NAME-METHOD)" "\302A\300\242\"\205\211 \235\204\211 B\303\304@\"\207" [gnus-server-method-cache gnus-methods-equal-p throw server-name] (nil #1="") "%s" gnus-server-extend-method #1# symbol-name address intern "-address" physical-address append gnus-predefined-server-alist gnus-opened-servers gnus-secondary-select-methods gnus-newsrc-alist gnus-valid-select-methods] 27 (#$ . 1754) nil]) #@270 Generate the Sieve script in gnus-sieve-file, by replacing the region between gnus-sieve-region-start and gnus-sieve-region-end with (gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost). See the documentation for these variables and functions for details. (defalias 'gnus-sieve-generate #[nil "\306\307!\210\310!\210eb\210\311\312 !\313\314#\203'\315\224\311\312\n!\313\314#\206\"`|\210\202* c\210 \316\f \"\n\261\207" [gnus-sieve-file gnus-sieve-region-start gnus-sieve-region-end sieve-template gnus-sieve-select-method gnus-sieve-crosspost require sieve find-file re-search-forward regexp-quote nil t 0 gnus-sieve-script] 5 (#$ . 4009) nil]) #@95 Guess a sieve rule based on RFC822 article in buffer. Return nil if no rule could be guessed. (defalias 'gnus-sieve-guess-rule-for-article #[nil "\300\301!\205 \302\303\301\300\301!F\207" [message-fetch-field "sender" sieve address] 5 (#$ . 4678)]) (defalias 'gnus-sieve-article-add-rule #[nil "\306\307\310\"\210rq\210\311 \312\n\"A@\262\211\204 \313\314!\2021\315 \233\211\f @B\240\210)\316\317 \f#+\207" [gnus-original-article-buffer gnus-newsgroup-name gnus-newsrc-hashtb info rule #1=#:c gnus-summary-select-article nil force gnus-sieve-guess-rule-for-article gethash error "Could not guess rule for article" 5 message "Added rule in group %s for article: %s"] 6 nil nil]) #@133 Convert an elisp string list to a Sieve string list. For example: (gnus-sieve-string-list \='("to" "cc")) => "[\"to\", \"cc\"]"  (defalias 'gnus-sieve-string-list #[(list) "\301\302\303\304#\305Q\207" [list "[\"" mapconcat identity "\", \"" "\"]"] 5 (#$ . 5373)]) #@210 Convert an elisp test list to a Sieve test list. For example: (gnus-sieve-test-list \='((address "sender" "boss@company.com") (size :over 4K))) => "(address \"sender\" \"boss@company.com\", size :over 4K)" (defalias 'gnus-sieve-test-list #[(list) "\301\302\303\304#\305Q\207" [list "(" mapconcat gnus-sieve-test ", " ")"] 5 (#$ . 5648)]) #@232 Convert an elisp test token to a Sieve test token. For example: (gnus-sieve-test-token \='address) => "address" (gnus-sieve-test-token "sender") => "\"sender\"" (gnus-sieve-test-token \='("to" "cc")) => "[\"to\", \"cc\"]" (defalias 'gnus-sieve-test-token #[(token) "9\203 \301!\207;\203\302\302Q\207<\203\"@;\203\"\303!\207<\2050@<\2050\304!\207" [token symbol-name "\"" gnus-sieve-string-list gnus-sieve-test-list] 3 (#$ . 5997)]) #@368 Convert an elisp test to a Sieve test. For example: (gnus-sieve-test \='(address "sender" "sieve-admin@extundo.com")) => "address \"sender\" \"sieve-admin@extundo.com\"" (gnus-sieve-test \='(anyof ((header :contains ("to" "cc") "my@address.com") (size :over 100K)))) => "anyof (header :contains [\"to\", \"cc\"] \"my@address.com\", size :over 100K)" (defalias 'gnus-sieve-test #[(test) "\301\302\303#\207" [test mapconcat gnus-sieve-test-token " "] 4 (#$ . 6462)]) #@787 Generate a Sieve script based on groups with select method METHOD (or all groups if nil). Only groups having a `sieve' parameter are considered. This parameter should contain an elisp test (see the documentation of gnus-sieve-test for details). For each 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 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 (sieve address "sender" "sieve-admin@extundo.com") group parameter, (gnus-sieve-script) results in: if address "sender" "sieve-admin@extundo.com" { fileinto "INBOX.list.sieve"; } This is returned as a string. (defalias 'gnus-sieve-script #[(&optional method crosspost) "A\306 \306\211\203d\f@ \203\307 \310 8\"\203] @\311\312\313#\211\203\\\314\315!\316\317\320\"\203H\321\322\225\"\202J)\323\203U\324\202V\325\326\260\nB*\fA\211\204 *\327\330\n\331#*\207" [gnus-newsrc-alist newsrc script info --dolist-tail-- method nil gnus-server-equal 4 gnus-group-find-parameter sieve t "if " gnus-sieve-test " {\n fileinto \"" string-match "^[^:]+:" substring 0 "\";\n" "" " stop;\n" "}" mapconcat identity "\n" group spec gname crosspost] 8 (#$ . 6952)]) (provide 'gnus-sieve)