Function: gnus-search-prepare-query
gnus-search-prepare-query is a byte-compiled function defined in
gnus-search.el.gz.
Signature
(gnus-search-prepare-query QUERY-SPEC)
Documentation
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.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-search.el.gz
(defun gnus-search-prepare-query (query-spec)
"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."
(let ((query (alist-get 'query query-spec))
val)
(when (stringp query)
;; Look for these meta keys:
(while (string-match
"\\(thread\\|grep\\|limit\\|raw\\):\\([^ ]+\\)"
query)
(setq val (match-string 2 query))
(setf (alist-get (intern (match-string 1 query)) query-spec)
;; This is stupid.
(cond
((equal val "t"))
((null (zerop (string-to-number val)))
(string-to-number val))
(t val)))
(setq query
(string-trim (replace-match "" t t query 0)))
(setf (alist-get 'query query-spec) query)))
(when (and gnus-search-use-parsed-queries
(null (alist-get 'raw query-spec)))
(setf (alist-get 'parsed-query query-spec)
(gnus-search-parse-query query)))
query-spec))