1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-04 08:47:11 +00:00

lisp/gnus/nnir.el: Revert "Enable non-ASCII IMAP searches"

This commit is contained in:
Eric Abrahamsen 2015-02-04 05:45:02 +00:00 committed by Katsumi Yamaoka
parent ac27180cca
commit 25224ab284
2 changed files with 50 additions and 77 deletions

View File

@ -1,3 +1,7 @@
2015-02-04 Eric Abrahamsen <eric@ericabrahamsen.net>
* nnir.el: Revert "Enable non-ASCII IMAP searches".
2015-01-30 Glenn Morris <rgm@gnu.org>
* gnus-registry.el (gnus-registry-max-pruned-entries)

View File

@ -284,8 +284,6 @@ is `(valuefunc member)'."
(eval-when-compile
(autoload 'nnimap-buffer "nnimap")
(autoload 'nnimap-command "nnimap")
(autoload 'nnimap-capability "nnimap")
(autoload 'nnimap-wait-for-line "nnimap")
(autoload 'nnimap-change-group "nnimap")
(autoload 'nnimap-make-thread-query "nnimap")
(autoload 'gnus-registry-action "gnus-registry")
@ -970,52 +968,33 @@ details on the language and supported extensions."
(catch 'found
(mapcar
#'(lambda (group)
(let (artlist)
(condition-case ()
(when (nnimap-change-group
(gnus-group-short-name group) server)
(with-current-buffer (nnimap-buffer)
(message "Searching %s..." group)
(let* ((arts 0)
(literal+ (nnimap-capability "LITERAL+"))
(search (split-string
(if (string= criteria "")
qstring
(nnir-imap-make-query
criteria qstring))
"\n"))
(coding (upcase
(replace-regexp-in-string
"-\\(unix\\|dos\\|mac\\)" ""
(symbol-name
(cdr default-process-coding-system)))))
call result)
(setq call (nnimap-send-command
"UID SEARCH CHARSET %s %s" coding (pop search)))
(while search ; Non-ascii search terms
(unless literal+
(nnimap-wait-for-line "^\\+\\(.*\\)\n"))
(process-send-string (get-buffer-process (current-buffer)) (pop search))
(process-send-string (get-buffer-process (current-buffer))
(if (nnimap-newlinep nnimap-object)
"\n"
"\r\n")))
(setq result (nnimap-get-response call))
(mapc
(lambda (artnum)
(let ((artn (string-to-number artnum)))
(when (> artn 0)
(push (vector group artn 100)
artlist)
(when (assq 'shortcut query)
(throw 'found (list artlist)))
(setq arts (1+ arts)))))
(and (car result)
(cdr (assoc "SEARCH" (cdr result)))))
(message "Searching %s... %d matches" group arts)))
(message "Searching %s...done" group))
(quit nil))
(nreverse artlist)))
(let (artlist)
(condition-case ()
(when (nnimap-change-group
(gnus-group-short-name group) server)
(with-current-buffer (nnimap-buffer)
(message "Searching %s..." group)
(let ((arts 0)
(result (nnimap-command "UID SEARCH %s"
(if (string= criteria "")
qstring
(nnir-imap-make-query
criteria qstring)))))
(mapc
(lambda (artnum)
(let ((artn (string-to-number artnum)))
(when (> artn 0)
(push (vector group artn 100)
artlist)
(when (assq 'shortcut query)
(throw 'found (list artlist)))
(setq arts (1+ arts)))))
(and (car result)
(cdr (assoc "SEARCH" (cdr result)))))
(message "Searching %s... %d matches" group arts)))
(message "Searching %s...done" group))
(quit nil))
(nreverse artlist)))
groups))))))
(defun nnir-imap-make-query (criteria qstring)
@ -1069,30 +1048,25 @@ In future the following will be added to the language:
(defun nnir-imap-expr-to-imap (criteria expr)
"Convert EXPR into an IMAP search expression on CRITERIA"
;; What sort of expression is this, eh?
(let ((literal+ (nnimap-capability "LITERAL+")))
(cond
;; Simple string term
((stringp expr)
(format "%s %S" criteria expr))
;; Trivial term: and
((eq expr 'and) nil)
;; Composite term: or expression
((eq (car-safe expr) 'or)
(format "OR %s %s"
(nnir-imap-expr-to-imap criteria (second expr))
(nnir-imap-expr-to-imap criteria (third expr))))
;; Composite term: just the fax, mam
((eq (car-safe expr) 'not)
(format "NOT (%s)" (nnir-imap-query-to-imap criteria (rest expr))))
;; Composite term: non-ascii search term
((numberp (car-safe expr))
(format "%s {%d%s}\n%s" criteria (car expr)
(if literal+ "+" "") (second expr)))
;; Composite term: just expand it all.
((and (not (null expr)) (listp expr))
(format "(%s)" (nnir-imap-query-to-imap criteria expr)))
;; Complex value, give up for now.
(t (error "Unhandled input: %S" expr)))))
(cond
;; Simple string term
((stringp expr)
(format "%s %S" criteria expr))
;; Trivial term: and
((eq expr 'and) nil)
;; Composite term: or expression
((eq (car-safe expr) 'or)
(format "OR %s %s"
(nnir-imap-expr-to-imap criteria (second expr))
(nnir-imap-expr-to-imap criteria (third expr))))
;; Composite term: just the fax, mam
((eq (car-safe expr) 'not)
(format "NOT (%s)" (nnir-imap-query-to-imap criteria (rest expr))))
;; Composite term: just expand it all.
((and (not (null expr)) (listp expr))
(format "(%s)" (nnir-imap-query-to-imap criteria expr)))
;; Complex value, give up for now.
(t (error "Unhandled input: %S" expr))))
(defun nnir-imap-parse-query (string)
@ -1134,11 +1108,6 @@ that the search language can then understand and use."
((eq term 'and) 'and)
;; negated term
((eq term 'not) (list 'not (nnir-imap-next-expr)))
;; non-ascii search string
((and (stringp term)
(not (= (string-bytes term)
(length term))))
(list (string-bytes term) term))
;; generic term
(t term))))