;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\306\307\310\"\210\306\311\312\"\207" [require gnus-group gnus-sum message gnus-util eieio autoload eieio-build-class-alist "eieio-opt" nnmaildir-base-name-to-article-number "nnmaildir"] 3)
#@58 Mapping between servers and instantiated search engines.
(defvar gnus-search-engine-instance-alist nil (#$ . 351))
#@36 Internal history of Gnus searches.
(defvar gnus-search-history nil (#$ . 472))
(defalias 'gnus-search-shutdown #[0 "\301\211\207" [gnus-search-engine-instance-alist nil] 2])
(byte-code "\300\301\302\"\210\303\304\305\"\210\303\306\307\"\210\310\311\312\313\314\302%\210\315\316\317\320\321DD\322\323\324\325\326&\210\327\330\331\312#\210\332\211\203N \211@\330N\203G \331N\204G \333\331\330N#\210A\266\202\202- \210\334\330\331\324#\210\315\331\317\320\335DD\336\323\337\325\340&\210\334\341\342\324#\210\315\343\317\320\344DD\345\325\346%\210\315\347\317\320\350DD\351\325\352%\210\315\353\317\320\354DD\355\325\356%\210\315\357\317\320\360DD\361\325\340%\210\315\362\317\320\363DD\364\325\326\323\324&\210\315\365\317\320\366DD\367\325\346\323\324&\210\315\370\317\320\371DD\372\325\352\323\324&\210\315\373\317\320\374DD\375\325\376\323\324&\210\315\377\317\320\201@ DD\201A \325\340\323\324&\210\315\201B \317\320\201C DD\201D \325\201E \323\324&\210\315\201F \317\320\201G DD\201H \325\326\323\324&\210\315\201I \317\320\201J DD\201K \325\352\323\324&\210\315\201L \317\320\201M DD\201N \325\201O \323\324&\210\315\201P \317\320\201Q DD\201R \325\201S \323\324&\210\315\201T \317\320\201U DD\201V \325\201O \323\324&\210\315\201W \317\320\201X DD\201Y \325\326\323\324&\210\315\201Z \317\320\201[ DD\201\\ \325\201] \323\324&\210\315\201^ \317\320\201_ DD\201` \325\346\323\324&\210\315\201a \317\320\201b DD\201c \325\201d \323\324&\210\315\201e \317\320\201f DD\201g \325\340\323\324&\210\315\201h \317\320\201i DD\201j \325\326\323\324&\210\315\201k \317\320\201l DD\201m \323\324\325\326&\210\315\201n \317\320\201o DD\201p \323\324\325\352&\210\315\201q \317\320\201r DD\201s \323\324\325\346&\210\315\201t \317\320\201u DD\201v \323\324\325\201w &\210\315\201x \317\320\201y DD\201z \323\324\325\340&\210\315\201{ \317\320\201| DD\201} \323\324\325\326&\210\315\201~ \317\320\201 DD\201\200 \323\324\325\201\201 &\210\315\201\202 \317\320\201\203 DD\201\204 \323\201\205 \325\201\206 &\210\315\201\207 \317\320\201\210 DD\201\211 \323\324\325\201\212 &\207" [gnus-add-shutdown gnus-search-shutdown gnus define-error gnus-search-parse-error "Gnus search parsing error" gnus-search-config-error "Gnus search configuration error" custom-declare-group gnus-search nil "Search groups in Gnus with assorted search engines." :group custom-declare-variable gnus-search-use-parsed-queries funcall function #[0 "\300\207" [nil] 1 #1=""] "When t, use Gnus' generalized search language.\nThe generalized search language is a search language that can be\nused across all search engines that Gnus supports.  See the Gnus\nmanual for details.\n\nIf this option is set to nil, search queries will be passed\ndirectly to the search engines without being parsed or\ntransformed." :version "28.1" :type boolean defvaralias nnir-ignored-newsgroups gnus-search-ignored-newsgroups (saved-value saved-variable-comment) put make-obsolete-variable #[0 "\300\207" [#1#] 1 #1#] "A regexp to match newsgroups in the active file that should\nbe skipped when searching." "24.1" regexp nnir-imap-default-search-key "specify imap search keys, or use parsed queries." gnus-search-swish++-config-file #[0 "\300\301!\207" [expand-file-name "~/Mail/swish++.conf"] 2 #1#] "Location of Swish++ configuration file.\nThis variable can also be set per-server." file gnus-search-swish++-program #[0 "\300\207" ["search"] 1 #1#] "Name of swish++ search executable.\nThis variable can also be set per-server." string gnus-search-swish++-switches #[0 "\300\207" [nil] 1 #1#] "A list of strings, to be given as additional arguments to swish++.\nNote that this should be a list.  I.e., do NOT use the following:\n    (setq gnus-search-swish++-switches \"-i -w\") ; wrong\nInstead, use this:\n    (setq gnus-search-swish++-switches \\='(\"-i\" \"-w\"))\n\nThis variable can also be set per-server." (repeat string) gnus-search-swish++-remove-prefix #[0 "\300\301!\302P\207" [getenv "HOME" "/Mail/"] 2 #1#] "The prefix to remove from each file name returned by swish++\nin order to get a group name (albeit with / instead of .).  This is a\nregular expression.\n\nThis variable can also be set per-server." gnus-search-swish++-raw-queries-p #[0 "\300\207" [nil] 1 #1#] "If t, all Swish++ engines will only accept raw search query strings." gnus-search-swish-e-config-file #[0 "\300\301!\207" [expand-file-name "~/Mail/swish-e.conf"] 2 #1#] "Configuration file for swish-e.\nThis variable can also be set per-server." gnus-search-swish-e-program #[0 "\300\207" ["search"] 1 #1#] "Name of swish-e search executable.\nThis variable can also be set per-server." gnus-search-swish-e-switches #[0 "\300\207" [nil] 1 #1#] "A list of strings, to be given as additional arguments to swish-e.\nNote that this should be a list.  I.e., do NOT use the following:\n    (setq gnus-search-swish-e-switches \"-i -w\") ; wrong\nInstead, use this:\n    (setq gnus-search-swish-e-switches \\='(\"-i\" \"-w\"))\n\nThis variable can also be set per-server." (repeat string) gnus-search-swish-e-remove-prefix #[0 "\300\301!\302P\207" [getenv "HOME" "/Mail/"] 2 #1#] "The prefix to remove from each file name returned by swish-e\nin order to get a group name (albeit with / instead of .).  This is a\nregular expression.\n\nThis variable can also be set per-server." gnus-search-swish-e-index-files #[0 "\300\207" [nil] 1 #1#] "A list of index files to use with this Swish-e instance.\nThis variable can also be set per-server." (repeat file) gnus-search-swish-e-raw-queries-p #[0 "\300\207" [nil] 1 #1#] "If t, all Swish-e engines will only accept raw search query strings." gnus-search-namazu-program #[0 "\300\207" ["namazu"] 1 #1#] "Name of Namazu search executable.\nThis variable can also be set per-server." gnus-search-namazu-index-directory #[0 "\300\301!\207" [expand-file-name "~/Mail/namazu/"] 2 #1#] "Index directory for Namazu.\nThis variable can also be set per-server." directory gnus-search-namazu-switches #[0 "\300\207" [nil] 1 #1#] "A list of strings, to be given as additional arguments to namazu.\nThe switches `-q', `-a', and `-s' are always used, very few other switches\nmake any sense in this context.\n\nNote that this should be a list.  I.e., do NOT use the following:\n    (setq gnus-search-namazu-switches \"-i -w\") ; wrong\nInstead, use this:\n    (setq gnus-search-namazu-switches \\='(\"-i\" \"-w\"))\n\nThis variable can also be set per-server." (repeat string) gnus-search-namazu-remove-prefix #[0 "\300\301!\302P\207" [getenv "HOME" "/Mail/"] 2 #1#] "The prefix to remove from each file name returned by Namazu\nin order to get a group name (albeit with / instead of .).\n\nFor example, suppose that Namazu returns file names such as\n\"/home/john/Mail/mail/misc/42\".  For this example, use the following\nsetting:  (setq gnus-search-namazu-remove-prefix \"/home/john/Mail/\")\nNote the trailing slash.  Removing this prefix gives \"mail/misc/42\".\nGnus knows to remove the \"/42\" and to replace \"/\" with \".\" to\narrive at the correct group name, \"mail.misc\".\n\nThis variable can also be set per-server." gnus-search-namazu-raw-queries-p #[0 "\300\207" [nil] 1 #1#] "If t, all Namazu engines will only accept raw search query strings." gnus-search-notmuch-program #[0 "\300\207" ["notmuch"] 1 #1#] "Name of notmuch search executable.\nThis variable can also be set per-server." (string) gnus-search-notmuch-config-file #[0 "\300\301!\207" [expand-file-name "~/.notmuch-config"] 2 #1#] "Configuration file for notmuch.\nThis variable can also be set per-server." gnus-search-notmuch-switches #[0 "\300\207" [nil] 1 #1#] "A list of strings, to be given as additional arguments to notmuch.\nNote that this should be a list.  I.e., do NOT use the following:\n    (setq gnus-search-notmuch-switches \"-i -w\") ; wrong\nInstead, use this:\n    (setq gnus-search-notmuch-switches \\='(\"-i\" \"-w\"))\n\nThis variable can also be set per-server." (repeat string) gnus-search-notmuch-remove-prefix #[0 "\300\301!\302P\207" [getenv "HOME" "/Mail/"] 2 #1#] "The prefix to remove from each file name returned by notmuch\nin order to get a group name (albeit with / instead of .).  This is a\nregular expression.\n\nThis variable can also be set per-server." gnus-search-notmuch-raw-queries-p #[0 "\300\207" [nil] 1 #1#] "If t, all Notmuch engines will only accept raw search query strings." gnus-search-imap-raw-queries-p #[0 "\300\207" [nil] 1 #1#] "If t, all IMAP engines will only accept raw search query strings." gnus-search-mairix-program #[0 "\300\207" ["mairix"] 1 #1#] "Name of mairix search executable.\nThis variable can also be set per-server." gnus-search-mairix-config-file #[0 "\300\301!\207" [expand-file-name "~/.mairixrc"] 2 #1#] "Configuration file for mairix.\nThis variable can also be set per-server." gnus-search-mairix-switches #[0 "\300\207" [nil] 1 #1#] "A list of strings, to be given as additional arguments to mairix.\nNote that this should be a list.  I.e., do NOT use the following:\n    (setq gnus-search-mairix-switches \"-i -w\") ; wrong\nInstead, use this:\n    (setq gnu-search-mairix-switches \\='(\"-i\" \"-w\"))\n\nThis variable can also be set per-server." (repeat string) gnus-search-mairix-remove-prefix #[0 "\300\301!\302P\207" [getenv "HOME" "/Mail/"] 2 #1#] "The prefix to remove from each file name returned by mairix\nin order to get a group name (albeit with / instead of .).  This is a\nregular expression.\n\nThis variable can also be set per-server." gnus-search-mairix-raw-queries-p #[0 "\300\207" [nil] 1 #1#] "If t, all Mairix engines will only accept raw search query strings." gnus-search-expandable-keys #[0 "\300\207" [("from" "subject" "to" "cc" "bcc" "body" "recipient" "date" "mark" "before" "after" "larger" "smaller" "attachment" "text" "since" "thread" "sender" "address" "tag" "size" "grep" "limit" "raw" "message-id" "id")] 1 #1#] "A list of strings representing expandable search keys.\n\"Expandable\" simply means the key can be abbreviated while\ntyping in search queries, ie \"subject\" could be entered as\n\"subj\" or even \"su\", though \"s\" is ambiguous between\n\"subject\" and \"since\".\n\nAmbiguous abbreviations will raise an error." (repeat string) gnus-search-date-keys #[0 "\300\207" [("date" "before" "after" "on" "senton" "sentbefore" "sentsince" "since")] 1 #1#] "A list of keywords whose value should be parsed as a date.\nSee the docstring of `gnus-search-parse-query' for information on\ndate parsing." "26.1" (repeat string) gnus-search-contact-tables #[0 "\300\207" [nil] 1 #1#] "A list of completion tables used to search for messages from contacts.\nEach list element should be a table or collection suitable to be\nreturned by `completion-at-point-functions'.  That usually means\na list of strings, a hash table, or an alist." (repeat sexp)] 8)
#@2678 Turn STRING into an s-expression based query.
The resulting query structure is passed to the various search
backends, each of which adapts it as needed.

The search "language" is essentially a series of key:value
expressions.  Key is most often a mail header, but there are
other keys.  Value is a string, quoted if it contains spaces.
Key and value are separated by a colon, no space.  Expressions
are implicitly ANDed; the "or" keyword can be used to
OR.  "not" will negate the following expression, or keys can be
prefixed with a "-".  The "near" operator will work for
engines that understand it; other engines will convert it to
"or".  Parenthetical groups work as expected.

A key that matches the name of a mail header will search that
header.

Search keys can be expanded with TAB during entry, or left
abbreviated so long as they remain unambiguous, ie "f" will
search the "from" header.  "s" will raise an error.

Other keys:

"address" will search all sender and recipient headers.

"recipient" will search "To", "Cc", and "Bcc".

"before" will search messages sent before the specified
date (date specifications to come later).  Date is exclusive.

"after" (or its synonym "since") will search messages sent
after the specified date.  Date is inclusive.

"mark" will search messages that have some sort of mark.
Likely values include "flag", "seen", "read", "replied".
It's also possible to use Gnus' internal marks, ie "mark:R"
will be interpreted as mark:read.

"tag" will search tags -- right now that's translated to
"keyword" in IMAP, and left as "tag" for notmuch.  At some
point this should also be used to search marks in the Gnus
registry.

Other keys can be specified, provided that the search backends
know how to interpret them.

External contact-management packages can push completion tables
onto the list variable `gnus-search-contact-tables', to provide
auto-completion of contact names and addresses for keys like
"from" and "to".

Date values (any key in `gnus-search-date-keys') can be provided
in any format that `parse-time-string' can parse (note that this
can produce weird results).  Dates with missing bits will be
interpreted as the most recent occurrence thereof (i.e. "march
03" is the most recent March 3rd).  Lastly, relative
specifications such as 1d (one day ago) are understood.  This
also accepts w, m, and y.  m is assumed to be 30 days.

This function will accept pretty much anything as input.  Its
only job is to parse the query into a sexp, and pass that on --
it is the job of the search backends to make sense of the
structured query.  Malformed, unusable or invalid queries will
typically be silently ignored.

(fn STRING)
(defalias 'gnus-search-parse-query #[257 "\300\301\302\"r\211q\210\303\304\"\216c\210eb\210\305\306 \204\" \307 B\262\202 \310!\262*\207" [generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] nil gnus-search-query-end-of-input gnus-search-query-next-expr reverse] 5 (#$ . 11329)])
#@80 Return the next expression from the current buffer.

(fn &optional COUNT HALT)
(defalias 'gnus-search-query-next-expr #[512 "\300!\301 \211\302=\203 \204 \302\303\304!E\207\211\305=\2034 \303\304!;\203. \211;\203. \305E\207\306\307\310C\"\207\207" [gnus-search-query-next-term gnus-search-query-peek-symbol or gnus-search-query-next-expr 2 near signal gnus-search-parse-error "\"Near\" keyword must appear between two plain strings."] 8 (#$ . 14359)])
#@69 Return the next TERM from the current buffer.

(fn &optional COUNT)
(defalias 'gnus-search-query-next-term #[256 "\300!\211\301=\203 \301\302\303\304\"D\207\207" [gnus-search-query-next-symbol not gnus-search-query-next-expr nil halt] 6 (#$ . 14826)])
#@71 Return the next symbol from the current buffer, but don't consume it.
(defalias 'gnus-search-query-peek-symbol #[0 "\212\300 )\207" [gnus-search-query-next-symbol] 1 (#$ . 15086)])
#@203 Return the next symbol from the current buffer, or nil if we are
at the end of the buffer.  If supplied COUNT skips some symbols before
returning the one at the supplied position.

(fn &optional COUNT)
(defalias 'gnus-search-query-next-symbol #[256 "\211\247\203 \211\302V\203 \303S!\210\304\305 ?\205\242 \306\307!\203% \302u\210\310\202\242 \306\311!\2034 \312\313\314\304\"!\202\242 \306\315!\203A \316u\210\317\202\242 \306\320!\203N \321u\210\322\202\242 \306\323!\203[ \316u\210\310\202\242 \306\324!\203h \325u\210\326\202\242 \306\327!\203\200 \313\330\304\306!)\262\205| \304!\202\242 \331`\332\333\334 \304#\210`S{!\313\330\304\306!)\262\205\233 \304!\335\"\266\202)\207" [case-fold-search inhibit-changing-match-data 1 gnus-search-query-next-symbol t gnus-search-query-end-of-input looking-at "-" not "(" gnus-search-parse-query gnus-search-query-return-string ")" "\\band\\b" 3 and "\\bor\\b" 2 or "\\bnot\\b" "\\bnear\\b" 4 near "[\"/]?\\b[^:]+\\([[:blank:]]\\|\\'\\)" "[\"/]" gnus-search-query-expand-key re-search-forward ":" point-at-eol gnus-search-query-parse-kv] 7 (#$ . 15274)])
#@244 Handle KEY and VALUE, parsing and expanding as necessary.
This may result in (key value) being turned into a larger query
structure.

In the simplest case, they are simply consed together.  String
KEY is converted to a symbol.

(fn KEY VALUE)
(defalias 'gnus-search-query-parse-kv #[514 "\235\203 \301\230\203 \302\262\303!\262\202. \304\232\203% \305!\262\202. \306\230\203. \307\262\310!B\207" [gnus-search-date-keys "after" "since" gnus-search-query-parse-date "mark" gnus-search-query-parse-mark "message-id" "id" intern] 4 (#$ . 16392)])
#@310 Interpret VALUE as a date specification.
See the docstring of `gnus-search-parse-query' for details.

The result is a list of (dd mm yyyy); individual elements can be
nil.

If VALUE is a relative time, interpret it as relative to
REL-DATE, or (current-time) if REL-DATE is nil.

(fn VALUE &optional REL-DATE)
(defalias 'gnus-search-query-parse-date #[513 "\300\301\302#\303\304\305\306\206 \307 !\310\"\"\311\312\"\203: \305\306\313\314\315\"\316\317\320\321	\"!\322\320\323\n\"\324\"A_!\"!\310\325#\207\326!\327\330\305\310\331#\"\203\211 \305\332\325\"\203\204 \332\310\"\204\204 \306\313\314\315\"\316\332\325\"\332\325\"V\203q \331\202r \333\332\325\"\332\325\"Z\\!\"!\202\205 \310\325#\207\207" [string-replace "/" "-" append (0 0 0) seq-subseq decode-time current-time 3 string-match "\\([[:digit:]]+\\)\\([dwmy]\\)" time-subtract apply encode-time days-to-time string-to-number match-string 1 assoc 2 (("d" . 1) ("w" . 7) ("m" . 30) ("y" . 365)) 6 parse-time-string seq-some integerp 7 seq-elt 0] 15 (#$ . 16957)])
#@145 Possibly transform MARK.
If MARK is a single character, assume it is one of the
gnus-*-mark marks, and return an appropriate string.

(fn MARK)
(defalias 'gnus-search-query-parse-mark #[257 "\211G\304U\2030 \211\305H\306\"\203 \307\207\306	\"\203 \310\207\306\n\"\203% \311\207\306\"\203. \312\207\207\207" [gnus-ticked-mark gnus-read-mark gnus-replied-mark gnus-recent-mark 1 0 eql "flag" "read" "replied" "recent"] 5 (#$ . 18009)])
#@357 Attempt to expand KEY to a full keyword.
Use `gnus-search-expandable-keys' as a completion table; return
KEY directly if it can't be completed.  Raise an error if KEY is
ambiguous, meaning that it is a prefix of multiple known
keywords.  This means that it's not possible to enter a custom
keyword that happens to be a prefix of a known keyword.

(fn KEY)
(defalias 'gnus-search-query-expand-key #[257 "\301\"\211\302=\204 \211\204 \207\211\235\204 \303\304\305\306\"C\"\207\207" [gnus-search-expandable-keys try-completion t signal gnus-search-parse-error format "Ambiguous keyword: %s"] 7 (#$ . 18459)])
#@344 Return a string from the current buffer.
If DELIMITED is non-nil, assume the next character is a delimiter
character, and return everything between point and the next
occurrence of the delimiter, including the delimiters themselves.
If TRIM is non-nil, do not return the delimiters.  Otherwise,
return one word.

(fn &optional DELIMITED TRIM)
(defalias 'gnus-search-query-return-string #[512 "`;\203\n \202 \205 \300\301f!\301\203b \203 \302u\210\211\204l \303\301\304?\205- \305$\204: \306\307\310\311\"C\"\210`\211\305ZS{\312\232\204^ \203O `S\202P `\262\203[ T\202\\ \262\210\202 \313\314d\304#\210\315\224\262\316\"\207" [char-to-string nil 1 search-forward t 2 signal gnus-search-parse-error format "Unmatched delimited input with %s in query" "\\" re-search-forward "\\([[:blank:]]+\\|$\\)" 0 buffer-substring-no-properties] 10 (#$ . 19080)])
#@29 Are we at the end of input?
(defalias 'gnus-search-query-end-of-input #[0 "\300\301w\210\302\303!\207" ["[:blank:]" nil looking-at "$"] 2 (#$ . 19958)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-engine-p eieio-make-class-predicate gnus-search-engine gnus-search-engine--eieio-childp eieio-make-child-predicate gnus-search-engine-child-p make-obsolete "use (cl-typep ... \\='gnus-search-engine) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((raw-queries-p :initarg :raw-queries-p :initform nil :type boolean :custom boolean :documentation "When t, searches through this engine will never be parsed or\n    transformed, and must be entered \"raw\".")) (:abstract t :documentation "Abstract base class for Gnus search engines.")] 6)
#@76 You cannot create a new object of type `gnus-search-engine'.

(fn &rest _)
(defalias 'gnus-search-engine #[128 "\300\301!\207" [error "Class gnus-search-engine is abstract"] 3 (#$ . 20854)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-grep-p eieio-make-class-predicate gnus-search-grep gnus-search-grep--eieio-childp eieio-make-child-predicate gnus-search-grep-child-p make-obsolete "use (cl-typep ... \\='gnus-search-grep) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((grep-program :initarg :grep-program :initform "grep" :type string :documentation "Grep executable to use for second-pass grep\n    searches.") (grep-options :initarg :grep-options :initform nil :type list :documentation "Additional options, in the form of a list,\n    passed to the second-pass grep search, when present.")) (:abstract t :documentation "An abstract mixin class that can be added to\n  local-filesystem search engines, providing an additional grep:\n  search key.  After the base engine returns a list of search\n  results (as local filenames), an external grep process is used\n  to further filter the results.")] 6)
#@74 You cannot create a new object of type `gnus-search-grep'.

(fn &rest _)
(defalias 'gnus-search-grep #[128 "\300\301!\207" [error "Class gnus-search-grep is abstract"] 3 (#$ . 22123)])
(byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\300\311\312\313!\"\210\300\314\315\313!\"\210\300\316\314\"\210\317\316\320\321#\210\322\313\323\314#\324\313\304\325\326$\207" [defalias gnus-search-grep-search cl-generic-define (engine artlist criteria) nil "Run a secondary grep search over a list of preliminary results.\n\nARTLIST is a list of (filename score) pairs, produced by one of\nthe other search engines.  CRITERIA is a grep-specific search\nkey.  This method uses an external grep program to further filter\nthe files in ARTLIST by that search key.\n\n(fn ENGINE ARTLIST CRITERIA)" cl-generic-define-method ((engine gnus-search-grep) artlist criteria) #[771 "\300\301\302\"!\203, \303\304\301\302\"\305\306\301\307\"\310\311!D\312\313\n\"#B#\314\315\316\"\"\207\317\320\321\301\302\"#\207" [executable-find slot-value grep-program apply process-lines "-l" append grep-options "-e" shell-quote-argument mapcar car seq-filter make-closure #[257 "\211@\300\235\207" [V0] 3 "\n\n(fn A)"] nnheader-report search "invalid grep program: %s"] 13 "\n\n(fn ENGINE ARTLIST CRITERIA)"] gnus-search-process-p eieio-make-class-predicate gnus-search-process gnus-search-process--eieio-childp eieio-make-child-predicate gnus-search-process-child-p make-obsolete "use (cl-typep ... \\='gnus-search-process) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal ((proc-buffer :initarg :proc-buffer :type buffer :documentation "A temporary buffer this engine uses for its\n    search process, and for munging its search results.")) (:abstract t :documentation "A mixin class for engines that do their searching in a single\n  process launched for this purpose, which returns at the end of\n  the search.  Subclass instances are safe to be run in\n  threads.")] 6)
#@77 You cannot create a new object of type `gnus-search-process'.

(fn &rest _)
(defalias 'gnus-search-process #[128 "\300\301!\207" [error "Class gnus-search-process is abstract"] 3 (#$ . 24137)])
(byte-code "\300\301\302\303\304\305%\210\306\307\310\311!\"\210\306\312\313\311!\"\210\306\314\312\"\210\315\314\316\317#\210\320\311\321\312#\322\311\323\324\325$\207" [cl-generic-define-method shared-initialize nil ((engine gnus-search-process) slots) t #[771 "\300\301\302\303!#\262\"\207" [plist-put :proc-buffer generate-new-buffer " *gnus-search-"] 8 "\n\n(fn CL--CNM ENGINE SLOTS)"] defalias gnus-search-imap-p eieio-make-class-predicate gnus-search-imap gnus-search-imap--eieio-childp eieio-make-child-predicate gnus-search-imap-child-p make-obsolete "use (cl-typep ... \\='gnus-search-imap) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-engine) ((literal-plus :initarg :literal-plus :initform nil :type boolean :documentation "Can this search engine handle literal+ searches?  This slot\n    is set automatically by the imap server, and cannot be\n    set manually.  Only the LITERAL+ capability is handled.") (multisearch :initarg :multisearch :initform nil :type boolean :documentation "Can this search engine handle the MULTISEARCH capability?\n    This slot is set automatically by the imap server, and cannot\n    be set manually.  Currently unimplemented.") (fuzzy :initarg :fuzzy :initform nil :type boolean :documentation "Can this search engine handle the FUZZY search capability?\n    This slot is set automatically by the imap server, and cannot\n    be set manually.  Currently only partially implemented.") (raw-queries-p :initform (symbol-value 'gnus-search-imap-raw-queries-p))) (:documentation "The base IMAP search engine, using an IMAP server's search capabilities.\nThis backend may be subclassed to handle particular IMAP servers'\nquirks.")] 6)
#@73 Create a new object of class type `gnus-search-imap'.

(fn &rest SLOTS)
(defalias 'gnus-search-imap #[128 "\300\301\302#\207" [apply make-instance gnus-search-imap] 5 (#$ . 26065)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-imap compiler-macro gnus-search-imap--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-imap--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 26373)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\211$\207" [defalias gnus-search-find-grep-p eieio-make-class-predicate gnus-search-find-grep gnus-search-find-grep--eieio-childp eieio-make-child-predicate gnus-search-find-grep-child-p make-obsolete "use (cl-typep ... \\='gnus-search-find-grep) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-engine gnus-search-process gnus-search-grep) nil] 6)
#@78 Create a new object of class type `gnus-search-find-grep'.

(fn &rest SLOTS)
(defalias 'gnus-search-find-grep #[128 "\300\301\302#\207" [apply make-instance gnus-search-find-grep] 5 (#$ . 27131)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-find-grep compiler-macro gnus-search-find-grep--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-find-grep--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 27464)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-indexed-p eieio-make-class-predicate gnus-search-indexed gnus-search-indexed--eieio-childp eieio-make-child-predicate gnus-search-indexed-child-p make-obsolete "use (cl-typep ... \\='gnus-search-indexed) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-engine gnus-search-process gnus-search-grep) ((program :initarg :program :type string :documentation "The executable used for indexing and searching.") (config-file :init-arg :config-file :type string :custom file :documentation "Location of the config file, if any.") (remove-prefix :initarg :remove-prefix :initform (concat (getenv "HOME") "/Mail/") :type string :documentation "The path to the directory where the indexed mails are\n    kept.  This path is removed from the search results.") (switches :initarg :switches :type list :documentation "Additional switches passed to the search engine command-line\n    program.")) (:abstract t :allow-nil-initform t :documentation "A base search engine class that assumes a local search index\n  accessed by a command line program.")] 6)
#@77 You cannot create a new object of type `gnus-search-indexed'.

(fn &rest _)
(defalias 'gnus-search-indexed #[128 "\300\301!\207" [error "Class gnus-search-indexed is abstract"] 3 (#$ . 28950)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-swish-e-p eieio-make-class-predicate gnus-search-swish-e gnus-search-swish-e--eieio-childp eieio-make-child-predicate gnus-search-swish-e-child-p make-obsolete "use (cl-typep ... \\='gnus-search-swish-e) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-indexed) ((index-files :init-arg :index-files :initform (symbol-value 'gnus-search-swish-e-index-files) :type list) (program :initform (symbol-value 'gnus-search-swish-e-program)) (remove-prefix :initform (symbol-value 'gnus-search-swish-e-remove-prefix)) (switches :initform (symbol-value 'gnus-search-swish-e-switches)) (raw-queries-p :initform (symbol-value 'gnus-search-swish-e-raw-queries-p))) nil] 6)
#@76 Create a new object of class type `gnus-search-swish-e'.

(fn &rest SLOTS)
(defalias 'gnus-search-swish-e #[128 "\300\301\302#\207" [apply make-instance gnus-search-swish-e] 5 (#$ . 30017)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-swish-e compiler-macro gnus-search-swish-e--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-swish-e--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 30340)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-swish++-p eieio-make-class-predicate gnus-search-swish++ gnus-search-swish++--eieio-childp eieio-make-child-predicate gnus-search-swish++-child-p make-obsolete "use (cl-typep ... \\='gnus-search-swish++) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-indexed) ((program :initform (symbol-value 'gnus-search-swish++-program)) (remove-prefix :initform (symbol-value 'gnus-search-swish++-remove-prefix)) (switches :initform (symbol-value 'gnus-search-swish++-switches)) (config-file :initform (symbol-value 'gnus-search-swish++-config-file)) (raw-queries-p :initform (symbol-value 'gnus-search-swish++-raw-queries-p))) nil] 6)
#@76 Create a new object of class type `gnus-search-swish++'.

(fn &rest SLOTS)
(defalias 'gnus-search-swish++ #[128 "\300\301\302#\207" [apply make-instance gnus-search-swish++] 5 (#$ . 31411)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-swish++ compiler-macro gnus-search-swish++--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-swish++--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 31734)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-mairix-p eieio-make-class-predicate gnus-search-mairix gnus-search-mairix--eieio-childp eieio-make-child-predicate gnus-search-mairix-child-p make-obsolete "use (cl-typep ... \\='gnus-search-mairix) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-indexed) ((program :initform (symbol-value 'gnus-search-mairix-program)) (remove-prefix :initform (symbol-value 'gnus-search-mairix-remove-prefix)) (switches :initform (symbol-value 'gnus-search-mairix-switches)) (config-file :initform (symbol-value 'gnus-search-mairix-config-file)) (raw-queries-p :initform (symbol-value 'gnus-search-mairix-raw-queries-p))) nil] 6)
#@75 Create a new object of class type `gnus-search-mairix'.

(fn &rest SLOTS)
(defalias 'gnus-search-mairix #[128 "\300\301\302#\207" [apply make-instance gnus-search-mairix] 5 (#$ . 32795)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-mairix compiler-macro gnus-search-mairix--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-mairix--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 33113)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-namazu-p eieio-make-class-predicate gnus-search-namazu gnus-search-namazu--eieio-childp eieio-make-child-predicate gnus-search-namazu-child-p make-obsolete "use (cl-typep ... \\='gnus-search-namazu) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-indexed) ((index-directory :initarg :index-directory :initform (symbol-value 'gnus-search-namazu-index-directory) :type string :custom directory) (program :initform (symbol-value 'gnus-search-namazu-program)) (remove-prefix :initform (symbol-value 'gnus-search-namazu-remove-prefix)) (switches :initform (symbol-value 'gnus-search-namazu-switches)) (raw-queries-p :initform (symbol-value 'gnus-search-namazu-raw-queries-p))) nil] 6)
#@75 Create a new object of class type `gnus-search-namazu'.

(fn &rest SLOTS)
(defalias 'gnus-search-namazu #[128 "\300\301\302#\207" [apply make-instance gnus-search-namazu] 5 (#$ . 34238)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-namazu compiler-macro gnus-search-namazu--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-namazu--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 34556)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias gnus-search-notmuch-p eieio-make-class-predicate gnus-search-notmuch gnus-search-notmuch--eieio-childp eieio-make-child-predicate gnus-search-notmuch-child-p make-obsolete "use (cl-typep ... \\='gnus-search-notmuch) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (gnus-search-indexed) ((program :initform (symbol-value 'gnus-search-notmuch-program)) (remove-prefix :initform (symbol-value 'gnus-search-notmuch-remove-prefix)) (switches :initform (symbol-value 'gnus-search-notmuch-switches)) (config-file :initform (symbol-value 'gnus-search-notmuch-config-file)) (raw-queries-p :initform (symbol-value 'gnus-search-notmuch-raw-queries-p))) nil] 6)
#@76 Create a new object of class type `gnus-search-notmuch'.

(fn &rest SLOTS)
(defalias 'gnus-search-notmuch #[128 "\300\301\302#\207" [apply make-instance gnus-search-notmuch] 5 (#$ . 35626)])
(byte-code "\300\301\302\303#\300\207" [function-put gnus-search-notmuch compiler-macro gnus-search-notmuch--anon-cmacro] 4)
#@26 

(fn WHOLE &rest SLOTS)
(defalias 'gnus-search-notmuch--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\"\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 35949)])
(byte-code "\300\301\302\303#\210\304\211\203( \211@\301N\203! \302N\204! \305\302\301N#\210A\266\202\202 \210\306\301\302\307#\210\310\302\311\312\313DD\314\315\316\317\320\321\322\323\324\325\326\327\330\"\"BED&\210\331\332\333\332\334\303#\335#\210\331\336\333\336\337\303#\340#\210\331\341\333\341\342\303#\343#\210\331\344\333\344\345\303#\346#\210\347\344\303\350\303\351%\207" [defvaralias nnir-method-default-engines gnus-search-default-engines nil (saved-value saved-variable-comment) put make-obsolete-variable "28.1" custom-declare-variable funcall function #[0 "\300\207" [((nnimap . gnus-search-imap))] 1 ""] "Alist of default search engines keyed by server method." :version "26.1" :type repeat cons (choice (const nnimap) (const nntp) (const nnspool) (const nneething) (const nndir) (const nnmbox) (const nnml) (const nnmh) (const nndraft) (const nnfolder) (const nnmaildir)) choice mapcar #[257 "\300\301@!D\207" [const intern] 4 "\n\n(fn EL)"] eieio-build-class-alist gnus-search-engine t defalias gnus-search-run-search cl-generic-define (engine server query groups) "Run QUERY in GROUPS against SERVER, using search ENGINE.\nShould return results as a vector of vectors.\n\n(fn ENGINE SERVER QUERY GROUPS)" gnus-search-transform (engine expression) "Transform sexp EXPRESSION into a string search query usable by ENGINE.\nResponsible for handling and, or, and parenthetical expressions.\n\n(fn ENGINE EXPRESSION)" gnus-search-transform-expression (engine expression) "Transform a basic EXPRESSION into a string usable by ENGINE.\n\n(fn ENGINE EXPRESSION)" gnus-search-make-query-string (engine query-spec) "Extract the actual query string to use from QUERY-SPEC.\n\n(fn ENGINE QUERY-SPEC)" cl-generic-define-method ((engine gnus-search-engine) query-spec) #[514 "\301\302\"\301\303\"\203# \301\304\"\204# \305\306\"\204# \203# \307\"\207\211<\203+ \211@\207\207" [gnus-search-use-parsed-queries alist-get parsed-query query raw slot-value raw-queries-p gnus-search-transform] 7 "\n\n(fn ENGINE QUERY-SPEC)"]] 16)
#@65 Return t if QUERY is a search for a single message.

(fn QUERY)
(defalias 'gnus-search-single-p #[257 "\300\301\"\211G\302U\205 \211\242:\205 \211@@\303=\207" [alist-get parsed-query 1 id] 4 (#$ . 38235)])
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310\311\312\311\313%\210\307\314\311\315\311\316%\210\307\314\311\317\311\320%\210\307\314\311\321\311\322%\210\307\314\311\323\311\324%\210\325\326\327\"\207" [function-put gnus-search-single-p speed -1 put byte-optimizer byte-compile-inline-expand cl-generic-define-method gnus-search-transform nil ((engine gnus-search-engine) (query list)) #[514 "\300C\301\302\303#\"\210\304\305\306\242!\307#\207" [nil mapc make-closure #[257 "\302\300\"\211\205 \301\301\242B\240\207" [V0 V1 gnus-search-transform-expression] 5 "\n\n(fn ITEM)"] mapconcat identity reverse " "] 8 "\n\n(fn ENGINE QUERY)"] gnus-search-transform-expression ((_ gnus-search-engine) (expr string)) #[514 "\207" [] 3 "\n\n(fn _ EXPR)"] ((_ gnus-search-engine) (_expr (eql 'and))) #[514 "\300\207" [nil] 3 "\n\n(fn _ EXPR)"] ((engine gnus-search-engine) (expr (head or))) #[514 "\300A@\"\300\3018\"\203 \211\203 \302\303#\207\206 \211\207" [gnus-search-transform-expression 2 format "%s or %s"] 8 "\n\n(fn ENGINE EXPR)"] ((engine gnus-search-engine) (expr (head not))) #[514 "\300A@\"\211\205 \301\302\"\207" [gnus-search-transform-expression format "not %s"] 6 "\n\n(fn ENGINE EXPR)"] autoload nnimap-change-group "nnimap"] 7)
#@25 Known IMAP search keys.
(defvar gnus-search-imap-search-keys '(body cc bcc from header keyword larger smaller subject text to uid x-gm-raw answered before deleted draft flagged on since recent seen sentbefore senton sentsince unanswered undeleted undraft unflagged unkeyword unseen all old new or not) (#$ . 39721))
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\210\300\313\302\314\302\315%\210\300\313\302\316\302\317%\210\300\313\302\320\302\321%\210\300\313\302\322\302\323%\210\300\313\302\324\302\325%\210\300\313\302\326\302\327%\210\300\330\302\331\302\332%\210\300\333\302\334\302\335%\207" [cl-generic-define-method gnus-search-run-search nil ((engine gnus-search-imap) srv query groups) #[1028 "\212\211\203 \211<\203 \211\206*\306\"A\206*\211\307\232\203! 	\206\306\n\"A\206\306\"A\206\f\211\203N \310\311@@@@@A@#\232\204N \211A\262\2022 \211@@\262\206\211\203q \310\311@@@A@#\232\204q \211A\262\202W \211@\262\206;A\312\211\203\211A\262\242\3138\262\262;\204} \312\314C\3152\211\242\206\244 	\240\210\204\262 \316\317\320\"\"\210\nD\211\203\312 \211@\316\317\321\"\"\210A\266\202\202\265 \210\211\242A@\322\235\203\335 \310\323\242@\"\202\347 \310\311\242@\242A@#\211\242B\204\211\235\204\306@\"\204\211B\266\2020\266\204\232\203} \262\312\262\202} \266\202\211\203'\306\"\204'BB\211\262\262A@\314\324\325\"\211G\326U\205F\211\242:\205F\211@@\327=\266\202\206P\330!\312\211\211C<\331\332\"\210\333\n!\210r\334 q\210\335\336\337\340!\205r\314#\210\335\341\337\342!\205\314#\210\335\343\337\344!\205\214\314#\210)\345\n\"\262\346H\347=\204\272\350\351\"\203\265\352\353\354\346\"\227!=\"\204\272\355P\262\324\356\n\"\203\311\357\360\361#\262\211\211A\262\242\240\203\203\334\204\362\363\242!\"\203\311r\334 q\210\331\364\242\"\210\365\"\211@\203\366\367\317\370\"\306\371A\"A\"\"\262\210\331\372\242\"\210)\202\311\237)\266\207)\207" [gnus-server-method-cache gnus-select-method gnus-server-alist gnus-predefined-server-alist gnus-opened-servers gnus-secondary-select-methods assoc "native" format "%s:%s" nil 4 t server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil #1="") "%s" alist-get parsed-query 1 id gnus-search-get-active message "Opening server %s" gnus-open-server nnimap-buffer eieio-oset literal-plus nnimap-capability "LITERAL+" multisearch "MULTISEARCH" fuzzy "SEARCH=FUZZY" gnus-search-make-query-string 0 40 string-match "\\`[^[:blank:]]+" memql intern-soft match-string "TEXT " thread replace-regexp-in-string "HEADER Message-Id \\([^ )]+\\)" "(OR HEADER Message-Id \\1 HEADER References \\1)" nnimap-change-group gnus-group-short-name "Searching %s..." gnus-search-imap-search-command vconcat mapcar #[257 "\301!\211\302V\205 \303\300\242\304#\207" [V0 string-to-number 0 vector 100] 6 "\n\n(fn ARTNUM)"] "SEARCH" "Searching %s...done" gnus-newsrc-alist gnus-inhibit-demon gnus-search-imap-search-keys] 19 "\n\n(fn ENGINE SRV QUERY GROUPS)"] gnus-search-imap-search-command ((engine gnus-search-imap) (query string)) #[514 "\303\304\"\203 \305\306\"\262\211:\203X \307\310\311\211A\262\242\"\211\203R \211@\312\313p!\"\210\312\313p!\314	!\n>\204> \315\316\317	D\"\210	\320H\203H \306\202I \321\"\210A\266\202\202 \210\322!)\207\323\324\"\207" [nnimap-streaming nnimap-object cl-struct-nnimap-tags slot-value literal-plus split-string "\n" t nnimap-send-command "UID SEARCH CHARSET UTF-8 %s" process-send-string get-buffer-process type-of signal wrong-type-argument nnimap 6 "\n" nnimap-get-response nnimap-command "UID SEARCH %s"] 11 "Create the IMAP search command for QUERY.\nCurrently takes into account support for the LITERAL+ capability.\nOther capabilities could be tested here.\n\n(fn ENGINE QUERY)"] gnus-search-transform ((_ gnus-search-imap) (_query null)) #[514 "\300\207" ["ALL"] 3 "\n\n(fn _ QUERY)"] gnus-search-transform-expression ((engine gnus-search-imap) (expr string)) #[514 "\301\302\303\304#)\266\203?\205 \305\306\307\"\"\207" [inhibit-changing-match-data "\\`/.+/\\'" nil t string-match format "TEXT %s" gnus-search-imap-handle-string] 9 "\n\n(fn ENGINE EXPR)"] ((engine gnus-search-imap) (expr (head or))) #[514 "\300A@\"\300\3018\"\203+ \211\203+ \302\303\302\3018\242\304=\203& \305\202' \306\"#\207\2060 \211\207" [gnus-search-transform-expression 2 format "(OR %s %s)" or "(%s)" "%s"] 10 "\n\n(fn ENGINE EXPR)"] ((engine gnus-search-imap) (expr (head near))) #[514 "\211\300\240\210\301\"\207" [or gnus-search-transform-expression] 5 "Imap searches interpret \"near\" as \"or\".\n\n(fn ENGINE EXPR)"] ((engine gnus-search-imap) (expr (head not))) #[514 "\211A@@\300=\203 \211A@A\301\230\203 \302\207\303\304\305A@A!\"\207\303\306\307A@\"\"\207" [mark "new" "OLD" format "UN%s" gnus-search-imap-handle-flag "NOT %s" gnus-search-transform-expression] 7 "Transform IMAP NOT.\nIf the term to be negated is a flag, then use the appropriate UN*\nboolean instead.\n\n(fn ENGINE EXPR)"] ((_ gnus-search-imap) (expr (head mark))) #[514 "\300A!\207" [gnus-search-imap-handle-flag] 4 "\n\n(fn _ EXPR)"] ((engine gnus-search-imap) (expr list)) #[514 "\303\304\"\305@\211\306\267\210\202/ \307\240\266\202/ \310\240\266\202/ \311\240\266\202/ \312\240\266\202/ \210\313\314@\315>\203f \316\317A\"\203f \320\321A\"\262\322\323\324\305\nA#!\325\326\"\203a \327\202b \330_!\241\210)\266@:\203y \331\332\333\"\"\207@\334=\203\222 \333\335\331\336AA	A$!\"\207@\337=\203\256 \333\335\331\340AA	A\nA%!\"\207@\341>\203\313 A<\205/\331\342\343@!\226\344A\"#\207A;\205/\316\345A\"\203\352 \346\345\305A#\241\210\203\352 \347\262\350A\314\313\316#)\266\203?\205/@\n>\203\331\351\343@!\226\352A\"$\207@\353=\203\"\331\354A\"\207\331\355@\352A\"$\207" [case-fold-search inhibit-changing-match-data gnus-search-imap-search-keys slot-value fuzzy #1# #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (date 14 tag 22 sender 30 attachment 38)) on keyword from body t nil (larger smaller) string-match "\\(kb?\\|mb?\\)\\'" match-string 1 number-to-string string-to-number string-replace string-prefix-p "k" 1024 1048576 format "(%s)" gnus-search-transform recipient gnus-search-parse-query "to:%s or cc:%s or bcc:%s" address "from:%s or to:%s or cc:%s or bcc:%s" (before since on sentbefore senton sentsince) "%s %s" symbol-name gnus-search-imap-handle-date "\\`\\*\\|\\*\\'" replace-regexp-in-string "FUZZY " "\\`/.+/\\'" "%s%s %s" gnus-search-imap-handle-string id "HEADER Message-ID \"%s\"" "%sHEADER %s %s"] 13 "Handle a search keyword for IMAP.\nAll IMAP search keywords that take a value are supported\ndirectly.  Keywords that are boolean are supported through other\nmeans (usually the \"mark\" keyword).\n\n(fn ENGINE EXPR)"] gnus-search-imap-handle-date ((_engine gnus-search-imap) (date list)) #[514 "\300\301\302 !\303\304#\242\243\211\242\243\211\242\243	\242\n\243\211\242\243\211\242\243\2034 \f\2034 \n\204u \204< \305\262	\n\203L \f\206G \305\262\202u \203r V\204g U\203l V\203l S\202m \262\202u \305\262\306\307\310\311\312\313E\"\"\"\207" [seq-subseq decode-time current-time 3 6 1 format-time-string "%e-%b-%Y" apply encode-time append (0 0 0)] 27 "Turn DATE into a date string recognizable by IMAP.\nWhile other search engines can interpret partially-qualified\ndates such as a plain \"January\", IMAP requires an absolute\ndate.\n\nDATE is a list of (dd mm yyyy), any element of which could be\nnil (except that (dd nil yyyy) is not allowed).  Massage those\nnumbers into the most recent past occurrence of whichever date\nelements are present.\n\n(fn ENGINE DATE)"] gnus-search-imap-handle-string ((engine gnus-search-imap) (str string)) #[514 "\300!\203% \301\302\"\203 \303\304\305!\306\307\"#\207\310\311\"\203  \207\303\312\"\207\207" [multibyte-string-p slot-value literal-plus format "{%d+}\n%s" string-bytes encode-coding-string utf-8 string-prefix-p "\"" "\"%s\""] 8 "\n\n(fn ENGINE STR)"]] 6)
#@208 Adjust string FLAG to help IMAP recognize it.
If it's one of the RFC3501 flags, make sure it's upcased.
Otherwise, if FLAG starts with a "$", treat as a KEYWORD
search.  Otherwise, drop the flag.

(fn FLAG)
(defalias 'gnus-search-imap-handle-flag #[257 "\211\300\267\202 \301\202 \302\202 \303\202 \211\262\211\304\235\203 \211\226\207\305\306\"\203* \307\310\"\207\311\207" [#s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("flag" 6 "read" 10 "replied" 14)) "flagged" "seen" "answered" ("seen" "answered" "deleted" "draft" "flagged" "recent") string-prefix-p "$" format "KEYWORD %s" ""] 4 (#$ . 48135)])
(byte-code "\300\301\302\301\303\304#\305#\210\300\306\302\306\307\304#\310#\210\311\312\304\313\304\314%\210\311\301\304\315\304\316%\210\311\306\304\317\304\320%\210\311\321\304\322\304\323%\210\311\321\304\324\304\325%\210\311\326\304\327\304\330%\210\311\306\304\331\304\332%\210\311\326\304\333\304\334%\210\311\306\304\335\304\336%\210\311\321\304\337\340\341%\210\311\312\342\343\340\344%\210\311\326\304\345\304\346%\210\311\306\304\347\304\350%\210\311\351\304\352\304\353%\210\311\321\304\354\304\355%\210\311\321\304\356\340\357%\210\311\312\360\361\340\362%\210\311\326\304\363\304\364%\210\311\351\304\365\304\366%\210\311\321\304\367\304\370%\210\311\321\304\371\304\372%\210\311\321\304\373\304\374%\210\311\321\304\375\304\376%\207" [defalias gnus-search-indexed-parse-output cl-generic-define (engine server query &optional groups) nil "Parse the results of ENGINE's QUERY against SERVER in GROUPS.\nLocally-indexed search engines return results as a list of\nfilenames, sometimes with additional information.  Returns a list\nof viable results, in the form of a list of [group article score]\nvectors.\n\n(fn ENGINE SERVER QUERY &optional GROUPS)" gnus-search-indexed-extract (engine) "Extract a single article result from the current buffer.\nReturns a list of two values: a file name, and a relevancy score.\nAdvances point to the beginning of the next result.\n\n(fn ENGINE)" cl-generic-define-method gnus-search-run-search ((engine gnus-search-indexed) server query groups) #[1028 "\212\301\"\302\303\"\302\304\"\305$\306\211q\210\307 \210\203/ \310\311	#\210\2025 \310\312\"\210\313\314\315\316\f\"%\262\317!\203R \320!\210\202E \321!\262\211\322U\203l \323\n\n\n\n$\266\206\202\201 \324\325\326$\210\327V\203~ \330!\210\266\306)\207" [gnus-verbose gnus-search-make-query-string slot-value program proc-buffer gnus-search-indexed-search-command nil erase-buffer message "Doing %s query on %s..." "Doing %s query..." apply start-process format "search-%s" process-live-p accept-process-output process-exit-status 0 gnus-search-indexed-parse-output nnheader-report search "%s error: %s" 6 display-buffer] 16 "Run QUERY against SERVER using ENGINE.\nThis method is common to all indexed search engines.\n\nReturns a list of [group article score] vectors.\n\n(fn ENGINE SERVER QUERY GROUPS)"] ((engine gnus-search-indexed) server query &optional groups) #[1027 "\301\302\"\206 \303\304\305\"\306\211\211eb\210;\203  \307\310\311\"!\262m\204\336 \312\313\314!)\262\204\336 \315	!\211\242\243\211\242\243\203\331 \316!\203\331 \317!\204\331 \320\321\322\320\323\303\320\324\303\325!\326\"\203l \211G\306O\266\202\202n \262\306\313%\306\313%\306\313%\262\327!\262\330\306\313\331#)\266\203\203\226 \332!\202\271 \333\334\335\336\"O\337\326\"\203\266 \211G\306O\266\202\202\270 \262#\262\247\203\331 \203\315 	\235\203\331 FB\262\266\202  \340\341\"\211\203\357 \342\n#\262\210\304\343\344\n\"\"\207" [inhibit-changing-match-data slot-value remove-prefix #1="" mapcar gnus-group-short-name nil file-name-as-directory expand-file-name "/" "\\(?:[[:space:]\n]+\\)?Process .+ finished" t looking-at gnus-search-indexed-extract file-readable-p file-directory-p replace-regexp-in-string "[/\\]" "." "/?\\(cur\\|new\\|tmp\\)?/\\'" "\\`\\." file-name-directory string-prefix-p file-name-nondirectory "\\`[[:digit:]]+\\'" string-match string-to-number nnmaildir-base-name-to-article-number 0 string-search ":" "nnmaildir:" alist-get grep gnus-search-grep-search make-closure #[257 "\211\243\211\242\243\211\242\243\211\242\243\301\302\300\"\247\203 \202! \303!#\207" [V0 vector gnus-group-full-name string-to-number] 13 "\n\n(fn ARG0)"]] 28 "\n\n(fn ENGINE SERVER QUERY &optional GROUPS)"] ((_engine gnus-search-indexed)) #[257 "\300\301 \302 \"\303D\304y\210\207" [buffer-substring-no-properties line-beginning-position line-end-position 100 1] 4 "Base implementation treats the whole line as a filename, and\nfudges a relevancy score of 100.\n\n(fn ENGINE)"] gnus-search-transform-expression ((engine gnus-search-swish++) (expr (head near))) #[514 "\300\301\302A@\"\302\3038\"#\207" [format "%s near %s" gnus-search-transform-expression 2] 9 "\n\n(fn ENGINE EXPR)"] ((engine gnus-search-swish++) (expr list)) #[514 "\211@<\203 \300\301\302\"\"\207\211A;\203* \303\304A\"\203* \300\305@\302\306A!\"#\207\300\305@A#\207" [format "(%s)" gnus-search-transform string-prefix-p "(" "%s = %s" gnus-search-parse-query] 9 "\n\n(fn ENGINE EXPR)"] gnus-search-indexed-search-command ((engine gnus-search-swish++) (qstring string) _query &optional _groups) #[1027 "\300\301\302\"\303\301\304\"C\"BB\207" ["--config-file" slot-value config-file append switches] 10 "\n\n(fn ENGINE QSTRING QUERY &optional GROUPS)"] ((_engine gnus-search-swish++)) #[257 "\300\301\302\303#\205 \304\305!\304\306!D\207" [re-search-forward "\\(^[0-9]+\\) \\([^ ]+\\) [0-9]+ \\(.*\\)$" nil t match-string 2 1] 5 "\n\n(fn ENGINE)"] ((engine gnus-search-swish-e) (qstring string) _query &optional _groups) #[1027 "\300\301\302\303\"\302\304\"\305D#B\207" ["-f" append slot-value index-files switches "-w"] 10 "\n\n(fn ENGINE QSTRING QUERY &optional GROUPS)"] ((_engine gnus-search-swish-e)) #[257 "\300\301\302\303#\205 \304\305!\304\306!D\207" [re-search-forward "\\(^[0-9]+\\) \\([^ ]+\\) \"\\([^\"]+\\)\" [0-9]+$" nil t match-string 3 1] 5 "\n\n(fn ENGINE)"] ((engine gnus-search-namazu) (expr list)) t #[771 "\211@<\203 \300\301\302\"\"\207\211@\303=\203 \211A@\207\211@\304>\203( \300\305@A#\207\211@\306=\203> \302\307\310AB\311ABEC\"\207\211@\312=\203K \300\313A\"\207\3141S  0\207\210\315\207" [format "(%s)" gnus-search-transform body (subject from to) "+%s:%s" address or from to id "+message-id:%s" (error) nil] 9 "\n\n(fn CL--CNM ENGINE EXPR)"] (:around) ((_e gnus-search-namazu) _server _query _groups) #[1285 "\301!\302\303\304\"\210 )\207" [process-environment copy-sequence setenv "LC_MESSAGES" "C"] 8 "\n\n(fn CL--CNM E SERVER QUERY GROUPS)"] ((engine gnus-search-namazu) (qstring string) query &optional _groups) #[1027 "\300\301\"\302\303\304\305E\205 \306\307\"C\310\311\"\310\n\312\"D$\207" [alist-get limit append "-q" "-a" "-s" format "--max=%d" slot-value switches index-directory] 13 "\n\n(fn ENGINE QSTRING QUERY &optional GROUPS)"] ((_engine gnus-search-namazu)) #[257 "\300\301\302\303#\205 \304y\210\305\306!\305\307!D\207" [re-search-forward "^\\([0-9,]+\\.\\).*\\((score: \\([0-9]+\\)\\))\n\\([^ ]+\\)" nil t 1 match-string 4 3] 5 "Extract a single message result for Namazu.\nNamazu provides a little more information, for instance a score.\n\n(fn ENGINE)"] gnus-search-transform ((_engine gnus-search-notmuch) (_query null)) #[514 "\300\207" ["*"] 3 "\n\n(fn ENGINE QUERY)"] ((engine gnus-search-notmuch) (expr (head near))) #[514 "\300\301\302A@\"\302\3038\"#\207" [format "%s near %s" gnus-search-transform-expression 2] 9 "\n\n(fn ENGINE EXPR)"] ((engine gnus-search-notmuch) (expr list)) #[771 "\211@\211\300\267\210\202\" \301\240\266\202\" \302\240\266\202\" \303\240\266\202\" \210\304@:\2031 \305\306\307\"\"\207@\310=\203H \307\311\301AB\302ABEC\"\207@\312=\203R A\207@\313>\203\205 @\314=\203i \315\316\317A#\241\210\305\320@\321\322A\"\203\201 \323\317\324\211A$\202\203 A#\207@\325=\203\224 \305\326A!\"\207@\327=\203\243 \305\330A!\"\207@\331=\203\262 \305\332A!\"\207\3331\272  0\207\210\324\207" [#s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (sender 9 recipient 17 mark 25)) from to tag #[257 "\211;\203 \207\211:\205\242 \211\242\211\204a \243\211:\205\\ \211\242\243\211:\205Z \211\242\211\2047 \243\211?\2052 S8\262\202X \204J \243\211?\205E \301!\262\202X \243\211?\205V \302\303#\262\262\266\202\262\202\240 \243\211:\205\236 \211\242\243\211:\205\234 \211\242\211\204\212 \243\211?\205\205 \302\304#\262\202\232 \243\211?\205\230 \302\305$\262\262\266\202\262\262\207" [gnus-english-month-names number-to-string format "%02d-%d" "%02d-%02d" "%d/%d/%d"] 12 "\n\n(fn DATE)"] format "(%s)" gnus-search-transform address or body (from to subject attachment mimetype tag id thread folder path lastmod query property) id replace-regexp-in-string "\\`<\\|>\\'" #1# "%s:%s" string-match "\\`\\*" replace-match nil date "date:%s" before "date:..%s" since "date:%s.." (error)] 12 "\n\n(fn CL--CNM ENGINE EXPR)"] (:around) ((engine gnus-search-notmuch) server query groups) #[1285 "\300\301\"\203a \302\"\303$\304\211\305\306\"q\210\307 \210\310\311\312\313\n\"\305\306\"\305\f\314\"%\262\315!\203@ \316!\210\2023 \317\320d\321#\203R \322\323!B\262\202@ \324\325\326#\304$\207$\207" [alist-get thread gnus-search-make-query-string gnus-search-indexed-search-command nil slot-value proc-buffer erase-buffer apply start-process format "search-%s" program process-live-p accept-process-output re-search-forward "^thread:\\([^ ]+\\)" t match-string 1 mapconcat #[257 "\300P\207" ["thread:"] 3 "\n\n(fn THRD)"] " or "] 16 "Handle notmuch's thread-search routine.\n\n(fn CL--CNM ENGINE SERVER QUERY GROUPS)"] ((engine gnus-search-notmuch) (qstring string) query &optional _groups) #[1027 "\300\301\"\300\302\"\303\304\305\306\"\"\307\203 \310\202 \311\312\313\305\314\"\203. \303\315	\"\202/ \316D\"BBBB\207" [alist-get limit thread format "--config=%s" slot-value config-file "search" "--output=threads" "--output=files" "--duplicate=1" append switches "--limit=%d" #1#] 15 "\n\n(fn ENGINE QSTRING QUERY &optional GROUPS)"] ((engine gnus-search-mairix) (query list)) #[514 "\300C\301\302\303#\"\210\304\305\306\242!\307#\207" [nil mapc make-closure #[257 "\211\242:\203 \302\300\"\202 \303\300\"\211\205 \301\301\242B\240\207" [V0 V1 gnus-search-transform gnus-search-transform-expression] 5 "\n\n(fn ITEM)"] mapconcat identity reverse " "] 8 "Transform QUERY for a Mairix engine.\nBecause Mairix doesn't accept parenthesized expressions, nor\n\"or\" statements between different keys, results may differ from\nother engines.  We unpeel parenthesized expressions, and just\ncross our fingers for the rest of it.\n\n(fn ENGINE QUERY)"] ((engine gnus-search-mairix) (expr (head not))) #[514 "\300A@\"\301\302A@@\303=\203 \304\202 \305#\207" [gnus-search-transform-expression string-replace ":" mark ":-" ":~"] 7 "Transform Mairix \"not\".\nMairix negation requires a \"~\" preceding string search terms,\nand \"-\" before marks.\n\n(fn ENGINE EXPR)"] ((engine gnus-search-mairix) (expr (head or))) #[514 "\211A@@AA@@\301A@\"\301\3028\"<\204  <\203% \303Q\207\304!\235\203: \304!\235\203: \206] \207\305\"\203Y \203T \211\203T \306\307\310\311\"A@#\207\206] \207\303Q\207" [gnus-search-date-keys gnus-search-transform-expression 2 " " symbol-name eql format "%s/%s" split-string ":"] 12 "Handle Mairix \"or\" statement.\nMairix only accepts \"or\" expressions on homogeneous keys.  We\ncast \"or\" expressions on heterogeneous keys as \"and\", which\nisn't quite right, but it's the best we can do.  For date keys,\nonly keep one of the terms.\n\n(fn ENGINE EXPR)"] ((_ gnus-search-mairix) (expr (head mark))) #[514 "\300A!\207" [gnus-search-mairix-handle-mark] 4 "\n\n(fn _ EXPR)"] ((engine gnus-search-mairix) (expr list)) #[514 "\211@\211\302\267\2024 \303\2025 \303\2025 \304\2025 \305\2025 \306\2025 \307\2025 \310\2025 \311\2025 \312\2025 \313\2025 \314\2025 \315\262@:\203B \316\"\207\317@!\235\203O \320!\207@\321>\203Z \322!\207\323A\315\324\325#)\266\203\203m \315\207\211\203\220 \326A\315\324\325#)\266\203\203\220 \327\330\331\"\332\333A!!\334#\207\211\203\235 \335\336\333A!#\207\315\207" [gnus-search-date-keys inhibit-changing-match-data #s(hash-table size 11 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (sender 8 from 12 to 16 cc 20 subject 24 id 28 body 32 address 36 recipient 40 text 44 attachment 48)) "f" "t" "c" "s" "m" "b" "a" "tc" "bs" "n" nil gnus-search-transform symbol-name gnus-search-mairix-handle-date (size smaller larger) gnus-search-mairix-handle-size "\\`/" t string-match "[[:blank:]]" mapconcat make-closure #[257 "\301\302\300#\207" [V0 format "%s:%s"] 5 "\n\n(fn S)"] split-string gnus-search-mairix-treat-string " " format "%s:%s"] 10 "\n\n(fn ENGINE EXPR)"]] 6)
#@119 Treat string for wildcards.
Mairix accepts trailing wildcards, but not leading.  Also remove
double quotes.

(fn STR)
(defalias 'gnus-search-mairix-treat-string #[257 "\300\301\302\300\303\304##\207" [replace-regexp-in-string "\\`\\*\\|\"" "" "\\*\\'" "="] 8 (#$ . 61230)])
#@81 Format a mairix size search.
Assume "size" key is equal to "larger".

(fn EXPR)
(defalias 'gnus-search-mairix-handle-size #[257 "\300@\301=\203\f \302\202 \303A\"\207" [format smaller "z:-%s" "z:%s-"] 4 (#$ . 61512)])
#@41 Format a mairix mark search.

(fn EXPR)
(defalias 'gnus-search-mairix-handle-mark #[257 "\211A\211\300\267\202 \301\202 \302\202 \302\202 \303\202 \304\262\211\205# \305\306\"\207" [#s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("flag" 8 "read" 12 "seen" 16 "replied" 20)) "f" "s" "r" nil format "F:%s"] 5 (#$ . 61739)])
#@13 

(fn EXPR)
(defalias 'gnus-search-mairix-handle-date #[257 "\211A\211:\205\256 \211\242\211\204g \243\211:\205b \211\242\243\211:\205` \211\242\211\2046 \243\211?\2051 S8\301\302O\262\202^ \204I \243\211?\205D \303!\262\202^ \243\211?\205\\ \304\305S8\301\302O#\262\262\266\202\262\202\254 \243\211:\205\252 \211\242\243\211:\205\250 \211\242\211\204\225 \243\211?\205\220 \304\306S8\301\302O#\262\202\246 \243\211?\205\244 \304\307	$\262\262\266\202\262\262\262\304@\211\310\267\202\311 \311\202\312 \312\202\312 \312\202\312 \313\202\312 \314\262\"\207" [gnus-english-month-names 0 3 number-to-string format "%d%s" "%s%02d" "%d%02d%02d" #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (date 185 since 189 after 193 before 197)) "d:%s" "d:%s-" "d:-%s" nil] 14 (#$ . 62115)])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\207" [cl-generic-define-method gnus-search-indexed-search-command nil ((engine gnus-search-mairix) (qstring string) query &optional _groups) #[1027 "\300\301\302\303\"\304BB\302\305\"\306\307\"\205 \310CC$\207" [append "--rcfile" slot-value config-file ("-r") switches alist-get thread "-t"] 10 "\n\n(fn ENGINE QSTRING QUERY &optional GROUPS)"] gnus-search-transform-expression ((_engine gnus-search-find-grep) (_ list)) #[514 "\300\207" [nil] 3 "\n\n(fn ENGINE _)"] gnus-search-run-search ((engine gnus-search-find-grep) server query &optional groups) #[1027 "\211\203 \211<\203 \211\206)\306\"A\206)\211\307\232\203  	\206\306\n\"A\206\306\"A\206\f\211\203M \310\311@@@@@A@#\232\204M \211A\262\2021 \211@@\262\206\211\203p \310\311@@@A@#\232\204p \211A\262\202V \211@\262\206%A\312\211\203\211A\262\242\3138\262\262;\204| \312\314C\3152\211\242\206\243 	\240\210\204\261 \316\317\320\"\"\210\nD\211\203\311 \211@\316\317\321\"\"\210A\266\202\202\264 \210\211\242A@\322\235\203\334 \310\323\242@\"\202\346 \310\311\242@\242A@#\211\242B\204 \211\235\204 \306@\"\204 \211B\266\2020\266\204\232\203| \262\312\262\202| \266\202\211\203&\306\"\204&BB\211\262\262\324\325@!\326P!\306AA\"A@\327\330\"\331\332\"\206M\333!\331\n\334\"\204`\335\336\337\340\"C\"\210\341\342\343\317\344\n&\"\"\207" [gnus-server-method-cache gnus-select-method gnus-server-alist gnus-predefined-server-alist gnus-opened-servers gnus-secondary-select-methods assoc "native" format "%s:%s" nil 4 t server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil "") "%s" intern symbol-name "-directory" alist-get grep slot-value grep-options gnus-search-get-active proc-buffer signal gnus-search-config-error format-message "No directory found in definition of server %s" apply vconcat mapcar #[257 "\306\307\310\206 \301\"\210\311 \312\313\"\216\305q\2107\314V\203 \315p!\210\316\302!\210\204+ \317\202U \320\321\"\203: \322\225\306O\202; \323!\203E \211\202S \323\324\317\325#\211\262!\205S \211\262\211\204_ \326\327\330C\"\210\212\331\332\333\306\334\333\335\336\337\340\341\342\343\344\300\345\"\346\347\304\205~ \350\304\351\334#\352\303\353BB\"B&\210)\210m\204\307 \350`\354 {\325\334#\355\356!@!@\317\230\203\252 A\262\202\234 \357\360\361\322\362#\317#\363\364\301\"\322#B\262\210\365y\266\202\212 \307\366\206\316 \301\"\210)\207" [V0 V1 V2 V3 V4 V5 nil message "Searching %s using find-grep..." current-window-configuration make-closure #[0 "\301\300!\207" [V0 set-window-configuration] 2] 6 pop-to-buffer cd "." string-match "^[^:]+:" 0 file-directory-p string-replace "/" signal gnus-search-config-error "Cannot locate directory for group" apply call-process "find" t "-maxdepth" "1" "-type" "f" "-name" "[0-9]*" "-exec" slot-value grep-program "-l" append split-string "\\s-" "-e" ("{}" "+") line-end-position string-to-number last mapconcat identity cl-subseq -1 vector gnus-group-full-name 1 "Searching %s using find-grep...done" gnus-verbose] 25 "\n\n(fn X)"] gnus-newsrc-alist] 22 "Run find and grep to obtain matching articles.\n\n(fn ENGINE SERVER QUERY &optional GROUPS)"]] 6)
#@56 Invoke appropriate search engine function.

(fn SPECS)
(defalias 'gnus-search-run-query #[257 "\300C\301\302\303\"!\302\304\"\305\306\307$\302\310\"\"\210\211\203- \311\242\312\242G^#\207\242\207" [[] gnus-search-prepare-query alist-get search-query-spec limit mapc make-closure #[257 "\211\242\243\3031 \304!\301\305\306\302$\301\242\"\240\2620\207\307\310\311\300\"GW\2031 \312\313\314\315A%\207\316\317\"\207" [V0 V1 V2 (gnus-search-config-error) gnus-search-server-to-engine vconcat gnus-search-run-search 1 alist-get search-group-spec apply nnheader-message 4 "Search engine for %s improperly configured: %s" signal gnus-search-config-error] 11 "\n\n(fn ARG0)"] search-group-spec seq-subseq 0] 10 (#$ . 66518)])
#@369 Accept a search query in raw format, and prepare it.
QUERY-SPEC is an alist produced by functions such as
`gnus-group-make-search-group', and contains at least a 'query
key, and possibly some meta keys.  This function extracts any
additional meta keys from the 'query string, and parses the
remaining string, then adds all that to the top-level spec.

(fn QUERY-SPEC)
(defalias 'gnus-search-prepare-query #[257 "\301\302\"\303;\203w \304\305\"\203w \306\307\"\262\310\306\311\"!\211\236\312\232\2065 \313!\314U\2044 \313!\2025 \203A \241\266\202N B\211\262B\262\266\315\316\317\320\211\314%!\262\302\236\211\203i \211\241\266\202\n \302B\211\262B\262\210\202\n \203\240 \301\321\"\204\240 \322\236\323!\203\224 \241\266\202\240 \322B\211\262B\262\266\207" [gnus-search-use-parsed-queries alist-get query nil string-match "\\(thread\\|grep\\|limit\\|raw\\):\\([^ ]+\\)" match-string 2 intern 1 "t" string-to-number 0 string-trim replace-match "" t raw parsed-query gnus-search-parse-query] 10 (#$ . 67270)])
#@12 

(fn SRV)
(defalias 'gnus-search-server-to-engine #[257 "\211\211\203 \211<\203 \211\206)\306\"A\206)\211\307\232\203  	\206\306\n\"A\206\306\"A\206\f\211\203M \310\311@@@@@A@#\232\204M \211A\262\2021 \211@@\262\206\211\203p \310\311@@@A@#\232\204p \211A\262\202V \211@\262\206+A\312\211\203\211A\262\242\3138\262\262;\204| \312\314C\3152\211\242\206\243 	\240\210\204\261 \316\317\320\"\"\210\nD\211\203\311 \211@\316\317\321\"\"\210A\266\202\202\264 \210\211\242A@\322\235\203\334 \310\323\242@\"\202\346 \310\311\242@\242A@#\211\242B\204 \211\235\204 \306@\"\204 \211B\266\2020\266\204\232\203| \262\312\262\202| \266\202\211\203&\306\"\204&BB\211\262\262\324AA\236\325,\314#\243\206]\211A@\206]\306@-\"\243\206]\326AA\236\211\205[\327\330\331\"\210\211A@\262\312\332\267\202t\333\202u\334\202u\335\202u\336\202u\262\204\312\202\226\337!\203\211\202\226\340!\203\225\341!\202\226\312\262\211\203\347\325,\314#\204\361AA\203\336AA\211\203\335\211@\211\242\243\211\242\243\3421\314\343#0\266\202\326\210\344\345\346$\266A\266\202\202\256\210B,B,\207\347\350\351\352\"C\"\210\207" [gnus-server-method-cache gnus-select-method gnus-server-alist gnus-predefined-server-alist gnus-opened-servers gnus-secondary-select-methods assoc "native" format "%s:%s" nil 4 t server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil "") "%s" gnus-search-engine assoc-string nnir-search-engine nnheader-message 8 "\"nnir-search-engine\" is no longer a valid parameter" #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (notmuch 356 namazu 360 find-grep 364 imap 368)) gnus-search-notmuch gnus-search-namazu gnus-search-find-grep gnus-search-imap eieio-object-p class-p make-instance (invalid-slot-name invalid-slot-type) eieio-oset nnheader-report search "Invalid search engine parameter: (%s %s)" signal gnus-search-config-error format-message "No search engine configured for %s" gnus-newsrc-alist gnus-search-engine-instance-alist gnus-search-default-engines] 16 (#$ . 68329)])
#@240 Make an nnselect group based on the thread containing the article
header. The current server will be searched. If the registry is
installed, the server that the registry reports the current
article came from is also searched.

(fn HEADER)
(defalias 'gnus-search-thread #[257 "\211\306H\307\310H\206 \311!B\312\313\314\315#B\316\317BD\320!\321\211C\3222\213 \211\242\206* 	\240\210\2048 \323\324\325\"\n\"\210\fD\211\203P \211@\323\324\326\"\"\210A\266\202\202; \210\211\242A@\327\235\203c \330\331\242@\"\202m \330\332\242@\242A@#\211\242B\204\207 \211\n\235\204\207 \333@\n\"\204\207 \211\nB\266\2020\266\204CC\334\305!\205\240 \205\240 \335\306H\336\"@\211\205\320!\321\211C\3222\211\242\206\266 	\240\210\204\304 \323\324\325\"\n\"\210\fD\211\203\334 \211@\323\324\326\"\"\210A\266\202\202\307 \210\211\242A@\327\235\203\357 \330\331\242@\"\202\371 \330\332\242@\242A@#\211\242B\204\211\n\235\204\333@\n\"\204\211\nB\266\2020\266\204\211\2030\211C\211\235\203)\202,\211B\262\262\337\321\340B\341BD\"\210\342\343\306H!!\207" [gnus-newsgroup-name gnus-select-method gnus-server-method-cache gnus-server-alist gnus-predefined-server-alist gnus-registry-enabled 4 split-string 5 #1="" query mapconcat #[257 "\300\301\"\207" [format "id:%s"] 4 "\n\n(fn I)"] " or " thread t gnus-find-method-for-group nil server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil #1#) format "%s" "%s:%s" assoc boundp gnus-registry-get-id-key group gnus-group-make-search-group search-query-spec search-group-spec gnus-summary-goto-subject gnus-id-to-article] 15 (#$ . 70717)])
#@12 

(fn SRV)
(defalias 'gnus-search-get-active #[257 "\211\211\203 \211<\203 \211\206)\306\"A\206)\211\307\232\203  	\206\306\n\"A\206\306\"A\206\f\211\203M \310\311@@@@@A@#\232\204M \211A\262\2021 \211@@\262\206\211\203p \310\311@@@A@#\232\204p \211A\262\202V \211@\262\206\"A\312\211\203\211A\262\242\3138\262\262;\204| \312\314C\3152\211\242\206\243 	\240\210\204\261 \316\317\320\"\"\210\nD\211\203\311 \211@\316\317\321\"\"\210A\266\202\202\264 \210\211\242A@\322\235\203\334 \310\323\242@\"\202\346 \310\311\242@\242A@#\211\242B\204 \211\235\204 \306@\"\204 \211B\266\2020\266\204\232\203| \262\312\262\202| \266\202\211\203&\306\"\204&BB\211\262\262\312\324!\210r#q\210peb\210$\203J$\325\230\204J\326$!\210@\327=\203vm\204\317\3301o\331\332`\333\312w\210`{\"!B\211\2620\210\202p\210\312y\210\202Qm\204\317\3341\310\331\312f\335=\203\217\332\336!\"\202\275`\325\337\312w\210`{\262\312f\340=\203\266`T\262\341u\210\337\312w\210\211`{P\262\202\232\332\"\266\202!B\211\2620\210\202\311\210\312y\210\202v\210)\207" [gnus-server-method-cache gnus-select-method gnus-server-alist gnus-predefined-server-alist gnus-opened-servers gnus-secondary-select-methods assoc "native" format "%s:%s" nil 4 t server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil #1="") "%s" gnus-request-list #1# delete-matching-lines nntp (error) gnus-group-decoded-name gnus-group-full-name "^ 	" (error) 34 read "^ 	\\\\" 92 2 gnus-newsrc-alist nntp-server-buffer gnus-search-ignored-newsgroups] 16 (#$ . 72584)])
(defvar gnus-search-minibuffer-map (byte-code "\301 \302\"\210\303\304\305#\210\207" [minibuffer-local-map make-sparse-keymap set-keymap-parent define-key "	" completion-at-point] 5))
#@63 Potentially return completion data for a search key or value.
(defalias 'gnus-search--complete-key-data #[0 "\212\302\303\304 \305#\204 \304 b\210\306\307w\210`)\212\302\310\305#\205 `T)\307C\203\\ \205c \212\302\311\305#\210\312\313!\314\235)\205c \211\315\316 8\240\210\211\242\203K T\202L `\317\320\"\321\322\323#\257\207`	\321\324\257\207" [gnus-search-contact-tables gnus-search-expandable-keys re-search-backward " " minibuffer-prompt-end t " -" nil ":" "\\<-?\\(\\w+\\):" match-string 1 ("from" "to" "cc" "bcc" "recipient" "address") 3 syntax-ppss apply completion-table-merge :exit-function make-closure #[514 "\211\303>\205. \304\305\"\204 \301\242\205. \306\307\310!)\262\204! \311c\210\301\242?\205. \212\300b\210\311c)\207" [V0 V1 inhibit-changing-match-data (exact finished) string-search " " "\\s\"" t looking-at "\""] 5 "\n\n(fn STR STATUS)"] #[514 "\211\300>\205 \301c\207" [(exact finished) ":"] 4 "\n\n(fn S STATUS)"]] 11 (#$ . 74622)])
#@12 

(fn ARG)
(defalias 'gnus-search-make-spec #[257 "\301\302\303\304!\211\305\306#M\210\305\307\"\216\310\311\"\210\312\313\314\314\315%)\266\202B\316BD\207" [gnus-search-minibuffer-map query #[0 "\300\301\302\303\304$\207" [add-hook completion-at-point-functions gnus-search--complete-key-data nil t] 5] make-symbol "minibuffer-setup" make-closure #[0 "\302\303\301\"\210\300 \207" [V0 V1 remove-hook minibuffer-setup-hook] 3] #[0 "\301\302\300\"\207" [V0 remove-hook minibuffer-setup-hook] 3] add-hook minibuffer-setup-hook read-from-minibuffer "Query: " nil gnus-search-history raw] 10 (#$ . 75605)])
(provide 'gnus-search)
