Gnus development mailing list
 help / color / mirror / Atom feed
From: Andrew Cohen <cohen@andy.bu.edu>
To: ding@gnus.org
Subject: Re: Any juicy outstanding Gnus bugs?
Date: Sun, 10 Oct 2010 09:23:49 -0400	[thread overview]
Message-ID: <877hhq18re.fsf@andy.bu.edu> (raw)
In-Reply-To: <m31v81r5ph.fsf@quimbies.gnus.org>

[-- Attachment #1: Type: text/plain, Size: 635 bytes --]

>>>>> "Lars" == Lars Magne Ingebrigtsen <larsi@gnus.org> writes:

    Lars> Looks good.  Can you provide a ChangeLog entry, too, and I'll
    Lars> apply it?

I've cleaned things up a bit to work better with the
gnus-completing-read changes that Julien has implemented.  Below is a
new patch and a Changelog.

    >> + (format "%s \"%s\"" criteria (nnir-imap-quote-specials expr)))

    Lars> The "%S" format spec does this:

    Lars> (insert (format "%S" "foo\\ bar\" zot")) -> "foo\\ bar\" zot"

I have no idea why the original code didn't use %S, so I've changed it
and eliminated the need for imap-quote-specials.

Regards,
Andy


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: nnir.el --]
[-- Type: text/x-diff, Size: 5828 bytes --]

diff --git a/lisp/nnir.el b/lisp/nnir.el
index 86acad1..2a264d1 100644
--- a/lisp/nnir.el
+++ b/lisp/nnir.el
@@ -339,23 +339,34 @@
 (eval-when-compile
   (require 'cl))
 
+
+(eval-when-compile
+  (autoload 'nnimap-buffer "nnimap")
+  (autoload 'nnimap-command "nnimap")
+  (autoload 'nnimap-possibly-change-group "nnimap"))
+
 (nnoo-declare nnir)
 (nnoo-define-basics nnir)
 
 (gnus-declare-backend "nnir" 'mail)
 
-(defvar nnir-imap-search-field "TEXT"
-  "The IMAP search item when doing an nnir search. To use raw
-  imap queries by default set this to \"\"")
+(defvar nnir-imap-default-search-key "Whole message"
+  "The default IMAP search key for an nnir search. Must be one of
+  the keys in nnir-imap-search-arguments. To use raw imap queries
+  by default set this to \"Imap\"")
 
 (defvar nnir-imap-search-arguments
   '(("Whole message" . "TEXT")
     ("Subject" . "SUBJECT")
     ("To" . "TO")
     ("From" . "FROM")
-    ("Head" . "HEADER \"%s\"")
-    (nil . ""))
-  "Mapping from user readable strings to IMAP search items for use in nnir")
+    ("Imap" . ""))
+  "Mapping from user readable keys to IMAP search items for use in nnir")
+
+(defvar nnir-imap-search-other "HEADER %S"
+  "The IMAP search item to use for anything other than
+  nnir-imap-search-arguments. By default this is the name of an
+  email header field")
 
 (defvar nnir-imap-search-argument-history ()
   "The history for querying search options in nnir")
@@ -375,12 +386,12 @@ result, `gnus-retrieve-headers' will be called instead.")
              ())
     (imap    nnir-run-imap
              ((criteria
-	       "Search in: "                      ; Prompt
+	       "Search in"                        ; Prompt
 	       ,(mapcar 'car nnir-imap-search-arguments) ; alist for completing
 	       nil                                ; allow any user input
 	       nil                                ; initial value
 	       nnir-imap-search-argument-history  ; the history to use
-	       ,nnir-imap-search-field            ; default
+	       ,nnir-imap-default-search-key      ; default
 	       )))
     (swish++ nnir-run-swish++
              ((group . "Group spec: ")))
@@ -702,19 +713,30 @@ and show thread that contains this article."
   (let* ((cur (gnus-summary-article-number))
          (group (nnir-artlist-artitem-group nnir-artlist cur))
          (backend-number (nnir-artlist-artitem-number nnir-artlist cur))
-	 server backend-group)
-    (setq server (nnir-group-server group))
-    (setq backend-group (gnus-group-real-name group))
-    (gnus-group-read-ephemeral-group
-     backend-group
-     (gnus-server-to-method server)
-     t                                  ; activate
-     (cons (current-buffer)
-           'summary)                    ; window config
-     nil
-     (list backend-number))
-    (gnus-summary-limit (list backend-number))
-    (gnus-summary-refer-thread)))
+	 (id (mail-header-id (gnus-summary-article-header)))
+	 (refs (split-string
+		(mail-header-references (gnus-summary-article-header)))))
+    (if (string= (car (gnus-group-method group)) "nnimap")
+	(with-current-buffer (nnimap-buffer)
+	  (let* ((cmd (let ((value
+			     (format
+			      "(OR HEADER REFERENCES %s HEADER Message-Id %s)"
+			      id id)))
+			(dolist (refid refs value)
+			  (setq value (format
+				       "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)"
+				       refid refid value)))))
+		 (result (nnimap-command
+			  "UID SEARCH %s" cmd)))
+	    (gnus-summary-read-group-1 group t t gnus-summary-buffer nil
+				       (and (car result)
+					    (delete 0 (mapcar #'string-to-number
+							      (cdr (assoc "SEARCH" (cdr result)))))))))
+      (gnus-summary-read-group-1 group t t gnus-summary-buffer
+				 nil (list backend-number))
+      (gnus-summary-limit (list backend-number))
+      (gnus-summary-refer-thread))))
+
 
 (if (fboundp 'eval-after-load)
     (eval-after-load "gnus-sum"
@@ -936,22 +958,9 @@ pairs (also vectors, actually)."
 
 ;; IMAP interface.
 ;; todo:
-;; nnir invokes this two (2) times???!
-;; we should not use nnimap at all but open our own server connection
-;; we should not LIST * but use nnimap-list-pattern from defs
 ;; send queries as literals
 ;; handle errors
 
-(autoload 'nnimap-open-server "nnimap")
-(defvar nnimap-server-buffer) ;; nnimap.el
-(autoload 'imap-mailbox-select "imap")
-(autoload 'imap-search "imap")
-(autoload 'imap-quote-specials "imap")
-
-(eval-when-compile
-  (autoload 'nnimap-buffer "nnimap")
-  (autoload 'nnimap-command "nnimap")
-  (autoload 'nnimap-possibly-change-group "nnimap"))
 
 (defun nnir-run-imap (query srv &optional group-option)
   "Run a search against an IMAP back-end server.
@@ -963,7 +972,8 @@ details on the language and supported extensions"
 	  (group (or group-option (gnus-group-group-name)))
 	  (defs (caddr (gnus-server-to-method srv)))
 	  (criteria (or (cdr (assq 'criteria query))
-			nnir-imap-search-field))
+			(cdr (assoc nnir-imap-default-search-key
+				    nnir-imap-search-arguments))))
 	  (gnus-inhibit-demon t)
 	  artlist)
       (message "Opening server %s" server)
@@ -1044,7 +1054,7 @@ In future the following will be added to the language:
   (cond
    ;; Simple string term
    ((stringp expr)
-    (format "%s \"%s\"" criteria (imap-quote-specials expr)))
+    (format "%s %S" criteria expr))
    ;; Trivial term: and
    ((eq expr 'and) nil)
    ;; Composite term: or expression
@@ -1580,7 +1590,7 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
     (if (listp prompt)
 	(let* ((result (apply 'gnus-completing-read prompt))
 	       (mapping (or (assoc result nnir-imap-search-arguments)
-			    (assoc nil nnir-imap-search-arguments))))
+			    (cons nil nnir-imap-search-other))))
 	  (cons sym (format (cdr mapping) result)))
       (cons sym (read-string prompt)))))
 

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: Changelog --]
[-- Type: text/x-diff, Size: 654 bytes --]

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index bae698a..bb4dee7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-10  Andrew Cohen  <cohen@andy.bu.edu>
+
+	* nnir.el (autoload): Clean up autoloads.
+	(nnir-imap-default-search-key): Renamed from
+	nnir-imap-search-field. Use key rather than value.
+	(nnir-imap-search-other): New variable.
+	(nnir-read-parm): Use it.
+	(nnir-imap-expr-to-imap): Use %S rather than imap-quote-specials.
+	(gnus-summary-nnir-goto-thread): Modify to work with imap.
+
 2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 	* spam.el (gnus-summary-mode-map): Bind to "$".  Suggested by Russ

  reply	other threads:[~2010-10-10 13:23 UTC|newest]

Thread overview: 182+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-25 19:58 Lars Magne Ingebrigtsen
2010-09-25 20:10 ` Julien Danjou
2010-09-25 20:27   ` Lars Magne Ingebrigtsen
2010-09-25 20:40     ` Julien Danjou
2010-09-25 20:44       ` Lars Magne Ingebrigtsen
2010-09-25 20:48         ` Sven Joachim
2010-09-25 21:26           ` Lars Magne Ingebrigtsen
2010-09-25 21:46             ` Frank Schmitt
2010-09-25 22:12               ` Lars Magne Ingebrigtsen
2010-09-25 22:20                 ` Any juicy outstanding Gnus bugs Steinar Bang
2010-09-25 22:58                   ` Lars Magne Ingebrigtsen
2010-09-25 22:53                 ` Any juicy outstanding Gnus bugs? Russ Allbery
2010-09-25 23:00                   ` Lars Magne Ingebrigtsen
2010-09-25 23:12                     ` Russ Allbery
2010-09-25 23:13                     ` Lars Magne Ingebrigtsen
2010-09-25 23:29                       ` nndebbugs (was: Re: Any juicy outstanding Gnus bugs?) Lars Magne Ingebrigtsen
2010-09-25 23:36                         ` nndebbugs Russ Allbery
2010-09-26  0:17                           ` nndebbugs Lars Magne Ingebrigtsen
2010-09-26  0:31                             ` nndebbugs Lars Magne Ingebrigtsen
2010-09-26  0:33                             ` nndebbugs Russ Allbery
2010-09-26  0:41                               ` nndebbugs Lars Magne Ingebrigtsen
2010-09-26  1:04                                 ` nndebbugs Lars Magne Ingebrigtsen
2010-09-27  6:25                                   ` nndebbugs Reiner Steib
2010-09-26  9:01                                 ` nndebbugs Michael Albinus
2010-09-26  7:55                           ` nndebbugs Steinar Bang
2010-09-26  8:39                             ` nndebbugs Russ Allbery
2010-09-26 12:11                               ` nndebbugs Lars Magne Ingebrigtsen
2010-09-27 14:56           ` Any juicy outstanding Gnus bugs? Tom Tromey
2010-09-25 20:42 ` Frank Schmitt
2010-09-25 21:29   ` Lars Magne Ingebrigtsen
2010-09-25 21:14 ` Julien Danjou
2010-09-25 21:17   ` Julien Danjou
2010-09-25 21:26     ` Lars Magne Ingebrigtsen
2010-09-26  2:08 ` Nils Ackermann
2010-09-26  2:16   ` Lars Magne Ingebrigtsen
2010-09-26  2:38     ` Nils Ackermann
2010-09-26 12:56       ` Lars Magne Ingebrigtsen
2010-09-26 18:28         ` Nils Ackermann
2010-09-26 18:50           ` Lars Magne Ingebrigtsen
2010-09-27 16:38             ` Nils Ackermann
2010-09-27 18:39               ` Lars Magne Ingebrigtsen
2010-09-28  4:24                 ` Nils Ackermann
2010-09-29 14:33                   ` Lars Magne Ingebrigtsen
2010-09-26  8:32 ` Sivaram Neelakantan
2010-09-26 11:59   ` Lars Magne Ingebrigtsen
2010-09-26 10:16 ` Tassilo Horn
2010-09-26 12:06   ` Lars Magne Ingebrigtsen
2010-09-26 17:06     ` Tassilo Horn
2010-09-26 13:56 ` Richard Riley
2010-09-26 14:10   ` Lars Magne Ingebrigtsen
2010-09-26 15:43     ` Steinar Bang
2010-09-26 15:54       ` Lars Magne Ingebrigtsen
2010-09-26 17:10 ` Julien Danjou
2010-09-26 17:14   ` Lars Magne Ingebrigtsen
2010-09-26 21:24     ` James Cloos
2010-09-26 21:31       ` Lars Magne Ingebrigtsen
2010-09-27 19:13       ` Lars Magne Ingebrigtsen
2010-09-26 17:23   ` Charles Philip Chan
2010-09-26 22:23   ` Andreas Schwab
2010-09-26 18:41 ` Steinar Bang
2010-09-26 18:55   ` Lars Magne Ingebrigtsen
2010-09-27 14:30     ` Andrew Cohen
2010-09-27 18:40       ` Lars Magne Ingebrigtsen
2010-09-27 18:45         ` Andrew Cohen
2010-10-07 22:06           ` Andrew Cohen
2010-10-07 22:36             ` Lars Magne Ingebrigtsen
2010-10-10 13:23               ` Andrew Cohen [this message]
2010-10-10 13:36                 ` Lars Magne Ingebrigtsen
2010-10-10 15:26                 ` Andreas Schwab
2010-10-08  9:41             ` Steinar Bang
2010-09-26 18:57   ` Andrew Cohen
2010-09-26 20:46   ` Ted Zlatanov
2010-09-27  7:35     ` Steinar Bang
2010-09-27 18:15       ` Ted Zlatanov
2010-09-27 18:37         ` Lars Magne Ingebrigtsen
2010-09-27 18:48           ` Ted Zlatanov
2010-09-27 19:02             ` Lars Magne Ingebrigtsen
2010-09-26 19:04 ` Gnus loads too much when entering group before letting the agent fetch (was: Any juicy outstanding Gnus bugs?) Tassilo Horn
2010-09-26 19:07   ` Gnus loads too much when entering group before letting the agent fetch Lars Magne Ingebrigtsen
2010-09-26 19:29     ` Tassilo Horn
2010-09-26 19:38       ` Lars Magne Ingebrigtsen
2010-09-26 20:26         ` Tassilo Horn
2010-09-26 20:43           ` Tassilo Horn
2010-09-26 21:04             ` Lars Magne Ingebrigtsen
2010-09-26 19:56 ` gnus-group-jump-to-group completion bug Dan Christensen
2010-09-26 20:39   ` Lars Magne Ingebrigtsen
2010-09-26 23:04     ` Dan Christensen
2010-09-27 17:37       ` Lars Magne Ingebrigtsen
2010-09-27 18:25         ` Dan Christensen
2010-09-27 18:39           ` Julien Danjou
2010-09-27 18:42             ` Lars Magne Ingebrigtsen
2010-09-26 19:58 ` gnus-summary-insert-new-articles in an nnimap group doesn't work Dan Christensen
2010-09-26 21:01   ` Lars Magne Ingebrigtsen
2010-09-26 23:10     ` Dan Christensen
2010-09-27 17:36       ` Lars Magne Ingebrigtsen
2010-09-27 18:37         ` Dan Christensen
2010-09-27 18:59           ` Lars Magne Ingebrigtsen
2010-09-27 19:08             ` Dan Christensen
2010-09-27 19:49               ` Lars Magne Ingebrigtsen
2010-09-28  1:19                 ` Dan Christensen
2010-09-26 20:04 ` Any juicy outstanding Gnus bugs? Robert Pluim
2010-09-26 20:13   ` Julien Danjou
2010-09-26 20:27     ` Robert Pluim
2010-09-26 20:34       ` Dan Christensen
2010-09-26 20:37       ` Lars Magne Ingebrigtsen
2010-09-26 20:43         ` Dan Christensen
2010-09-26 20:41       ` Julien Danjou
2010-09-26 21:09         ` Robert Pluim
2010-09-26 21:14           ` Lars Magne Ingebrigtsen
2010-09-26 21:23             ` Robert Pluim
2010-09-26 20:10 ` nnmairix not working again Dan Christensen
2010-09-27 18:35   ` Lars Magne Ingebrigtsen
2010-09-27 18:58     ` David Engster
2010-09-27 20:27       ` Dan Christensen
2010-09-26 20:43 ` Any juicy outstanding Gnus bugs? Ted Zlatanov
2010-09-26 20:46   ` Lars Magne Ingebrigtsen
2010-09-26 21:16     ` Richard Riley
2010-09-27  7:40       ` Steinar Bang
2010-09-27 18:41       ` Lars Magne Ingebrigtsen
2010-09-27 18:45         ` Steinar Bang
2010-09-27 19:04           ` Lars Magne Ingebrigtsen
2010-09-28 19:11     ` nnimap splitting (was: Any juicy outstanding Gnus bugs?) Ted Zlatanov
2010-09-29 15:24       ` nnimap splitting Lars Magne Ingebrigtsen
2010-09-29 18:31         ` Ted Zlatanov
2010-09-29 19:06           ` Lars Magne Ingebrigtsen
2010-09-29 19:56             ` Ted Zlatanov
2010-09-29 21:28               ` Andreas Schwab
2010-09-29 21:36               ` Lars Magne Ingebrigtsen
2010-09-29 18:44     ` Any juicy outstanding Gnus bugs? Ted Zlatanov
2010-09-29 19:09       ` Lars Magne Ingebrigtsen
2010-09-29 20:01         ` Ted Zlatanov
2010-09-29 21:34           ` Andreas Schwab
2010-09-30 15:02             ` Ted Zlatanov
2010-09-30 16:48               ` Lars Magne Ingebrigtsen
2010-09-29 21:53           ` Lars Magne Ingebrigtsen
2010-09-30 15:13             ` Ted Zlatanov
2010-09-30 16:52               ` Lars Magne Ingebrigtsen
2010-09-30 17:34                 ` Ted Zlatanov
2010-09-30 17:38                   ` Lars Magne Ingebrigtsen
2010-09-30 17:56                     ` Ted Zlatanov
2010-09-30 18:54                       ` Lars Magne Ingebrigtsen
2010-09-30 19:09                   ` Dan Christensen
2010-09-30 19:13                     ` Ted Zlatanov
2010-09-30 19:42                       ` Lars Magne Ingebrigtsen
2010-09-30 20:01                       ` Ted Zlatanov
2010-09-30 20:10                         ` Lars Magne Ingebrigtsen
2010-09-30 21:34                           ` Ted Zlatanov
2010-10-01 19:12                             ` Lars Magne Ingebrigtsen
2010-10-01 19:45                               ` Ted Zlatanov
2010-10-01 20:25                                 ` Lars Magne Ingebrigtsen
2010-10-01 20:52                                   ` Ted Zlatanov
2010-10-02 18:47                   ` Gijs Hillenius
2010-10-03 11:46                     ` Gijs Hillenius
2010-10-03 12:29                     ` Ted Zlatanov
2010-10-01  0:30               ` nnimap issues: split error and initially missing unread articles (was: Any juicy outstanding Gnus bugs?) Ted Zlatanov
2010-10-01 16:52                 ` nnimap issues: split error and initially missing unread articles Lars Magne Ingebrigtsen
2010-10-01 17:19                   ` Ted Zlatanov
2010-10-01 18:57                     ` Lars Magne Ingebrigtsen
2010-10-01 19:47                       ` Ted Zlatanov
2010-10-01 19:55                       ` Ted Zlatanov
2010-10-01 20:12                         ` Lars Magne Ingebrigtsen
2010-10-01 20:58                           ` Ted Zlatanov
2010-10-01 19:59                       ` Ted Zlatanov
2010-10-01 20:13                         ` Lars Magne Ingebrigtsen
2010-10-01 20:58                           ` Ted Zlatanov
2010-10-01 21:12                             ` Lars Magne Ingebrigtsen
2010-10-08 17:37                               ` Ted Zlatanov
2010-09-27  5:55 ` Any juicy outstanding Gnus bugs? Richard Riley
2010-09-27 18:40   ` Lars Magne Ingebrigtsen
2010-09-28  7:17     ` Gijs Hillenius
2010-09-29 14:37       ` Lars Magne Ingebrigtsen
2010-10-01  7:43     ` Richard Riley
2010-10-01 16:39       ` Lars Magne Ingebrigtsen
2010-10-02 11:39         ` Richard Riley
2010-09-28 14:10 ` Richard Riley
2010-09-29 14:38   ` Lars Magne Ingebrigtsen
2010-09-30 16:49     ` Richard Riley
2010-09-30 16:54       ` Lars Magne Ingebrigtsen
2010-10-02 16:35 ` Richard Riley
2010-10-02 17:22   ` Lars Magne Ingebrigtsen
2010-10-03  6:49     ` Richard Riley
2010-10-03 12:34       ` Lars Magne Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877hhq18re.fsf@andy.bu.edu \
    --to=cohen@andy.bu.edu \
    --cc=ding@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).