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))