Adapt nnmairix to new gnus-registry API.
[gnus] / lisp / nnmairix.el
index bca549a..3d1ac02 100644 (file)
@@ -1,6 +1,6 @@
 ;;; nnmairix.el --- Mairix back end for Gnus, the Emacs newsreader
 
-;; Copyright (C) 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011  Free Software Foundation, Inc.
 
 ;; Author: David Engster <dengste@eml.cc>
 ;; Keywords: mail searching
 (defun nnmairix-summary-mode-hook ()
   "Nnmairix summary mode keymap."
   (define-key gnus-summary-mode-map
-    (kbd "$ t") 'nnmairix-search-thread-this-article)
+    (kbd "G G t") 'nnmairix-search-thread-this-article)
   (define-key gnus-summary-mode-map
-    (kbd "$ f") 'nnmairix-search-from-this-article)
+    (kbd "G G f") 'nnmairix-search-from-this-article)
   (define-key gnus-summary-mode-map
-    (kbd "$ m") 'nnmairix-widget-search-from-this-article)
+    (kbd "G G m") 'nnmairix-widget-search-from-this-article)
   (define-key gnus-summary-mode-map
-    (kbd "$ g") 'nnmairix-create-search-group-from-message)
+    (kbd "G G g") 'nnmairix-create-search-group-from-message)
   (define-key gnus-summary-mode-map
-    (kbd "$ o") 'nnmairix-goto-original-article)
+    (kbd "G G o") 'nnmairix-goto-original-article)
   (define-key gnus-summary-mode-map
-    (kbd "$ u") 'nnmairix-remove-tick-mark-original-article))
+    (kbd "G G u") 'nnmairix-remove-tick-mark-original-article))
 
 (add-hook 'gnus-group-mode-hook 'nnmairix-group-mode-hook)
 (add-hook 'gnus-summary-mode-hook 'nnmairix-summary-mode-hook)
@@ -604,9 +604,7 @@ Other back ends might or might not work.")
 
 ;; Silence byte-compiler.
 (defvar gnus-registry-install)
-(autoload 'gnus-registry-fetch-group "gnus-registry")
-(autoload 'gnus-registry-fetch-groups "gnus-registry")
-(autoload 'gnus-registry-add-group "gnus-registry")
+(autoload 'gnus-registry-get-id-key "gnus-registry")
 
 (deffoo nnmairix-request-set-mark (group actions &optional server)
   (when server
@@ -660,13 +658,7 @@ Other back ends might or might not work.")
                              nnmairix-only-use-registry)
                    (setq ogroup
                          (nnmairix-determine-original-group-from-path
-                          mid nnmairix-current-server))
-                   ;; if available and allowed, add this entry to the registry
-                   (when (and (boundp 'gnus-registry-install)
-                              gnus-registry-install)
-                     (dolist (cur ogroup)
-                       (unless (gnus-parameter-registry-ignore cur)
-                         (gnus-registry-add-group mid cur)))))
+                          mid nnmairix-current-server)))
                  (unless ogroup
                    (nnheader-message
                     3 "Unable to set mark: couldn't find original group for %s" mid)
@@ -848,8 +840,8 @@ called interactively, user will be asked for parameters."
 All necessary information will be queried from the user."
   (interactive)
   (let* ((name (read-string "Name of the mairix server: "))
-       (server (completing-read "Back end server (TAB for completion): "
-                                (nnmairix-get-valid-servers) nil 1))
+       (server (gnus-completing-read "Back end server"
+                                (nnmairix-get-valid-servers) t))
        (mairix (read-string "Command to call mairix: " "mairix"))
        (defaultgroup (read-string "Default search group: "))
        (backend (symbol-name (car (gnus-server-to-method server))))
@@ -1165,7 +1157,7 @@ nnmairix server. Only marks from current session will be set."
 If SKIPDEFAULT is t, the default search group will not be
 updated.
 If UPDATEDB is t, database for SERVERNAME will be updated first."
-  (interactive (list (completing-read "Update groups on server: "
+  (interactive (list (gnus-completing-read "Update groups on server"
                                (nnmairix-get-nnmairix-servers))))
   (save-excursion
     (when (string-match ".*:\\(.*\\)" servername)
@@ -1302,7 +1294,7 @@ Otherwise, ask user for server."
          (while
              (equal '("")
                  (setq nnmairix-last-server
-                       (list (completing-read "Server: " openedserver nil 1
+                       (list (gnus-completing-read "Server" openedserver t
                                               (or nnmairix-last-server
                                                   "nnmairix:"))))))
          nnmairix-last-server)
@@ -1357,7 +1349,7 @@ If ALL is t, return also the unopened/failed ones."
                 (not (member (car server) gnus-ephemeral-servers))
                 (not (member (gnus-method-to-server (car server)) occ)))
        (push
-        (list mserver)
+        mserver
         openedserver)))
     openedserver))
 
@@ -1492,10 +1484,10 @@ group."
          (when (not found)
            (setq mairixserver
                  (gnus-server-to-method
-                  (completing-read
-                   (format "Cannot determine which nnmairix server indexes %s. Please specify"
+                  (gnus-completing-read
+                   (format "Cannot determine which nnmairix server indexes %s. Please specify"
                            (gnus-method-to-server server))
-                   (nnmairix-get-nnmairix-servers) nil nil "nnmairix:")))
+                   (nnmairix-get-nnmairix-servers) nil "nnmairix:")))
            ;; Save result in parameter of default search group so that
            ;; we don't have to ask again
            (setq defaultgroup (gnus-group-prefixed-name
@@ -1572,14 +1564,11 @@ See %s for details" proc nnmairix-mairix-output-buffer)))
 (defun nnmairix-replace-illegal-chars (header)
   "Replace illegal characters in HEADER for mairix query."
   (when header
-    (if (> emacs-major-version 20)
-       (while (string-match "[^-.@/,& [:alnum:]]" header)
-         (setq header (replace-match "" t t header)))
-      (while (string-match "[[]{}:<>]" header)
-       (setq header (replace-match "" t t header))))
+    (while (string-match "[^-.@/,& [:alnum:]]" header)
+      (setq header (replace-match "" t t header)))
     (while (string-match "[-& ]" header)
       (setq header (replace-match "," t t header)))
-  header))
+    header))
 
 (defun nnmairix-group-toggle-parameter (group parameter description &optional par)
   "Toggle on GROUP a certain PARAMETER.
@@ -1633,19 +1622,12 @@ search in raw mode."
        ;; registry was not available or did not find article
        ;; so we search again with mairix in raw mode to get filename
        (setq allgroups
-             (nnmairix-determine-original-group-from-path mid server))
-       ;; if available and allowed, add this entry to the registry
-       (when (and (not no-registry)
-                  (boundp 'gnus-registry-install)
-                  gnus-registry-install)
-         (dolist (cur allgroups)
-           (unless (gnus-parameter-registry-ignore cur)
-             (gnus-registry-add-group mid cur)))))
+             (nnmairix-determine-original-group-from-path mid server)))
       (if (> (length allgroups) 1)
          (setq group
-               (completing-read
-                "Message exists in more than one group. Choose"
-                allgroups nil t))
+               (gnus-completing-read
+                "Message exists in more than one group. Choose"
+                allgroups t))
        (setq group (car allgroups))))
     (if group
        ;; show article in summary buffer
@@ -1660,7 +1642,7 @@ search in raw mode."
       (set mid (concat "<" mid)))
     (unless (string-match ">$" mid)
       (set mid (concat mid ">")))
-    (gnus-registry-fetch-groups mid)))
+    (gnus-registry-get-id-key mid 'group)))
 
 (defun nnmairix-determine-original-group-from-path (mid server)
   "Determine original group(s) for message-id MID from the file path.
@@ -1748,9 +1730,9 @@ SERVER."
             (gnus-group-prefixed-name group (car cur))
             allgroups))))
       (if (> (length allgroups) 1)
-         (setq group (completing-read
-                      "Group %s exists on more than one IMAP server. Choose"
-                      allgroups nil t))
+         (setq group (gnus-completing-read
+                      "Group %s exists on more than one IMAP server. Choose"
+                      allgroups t))
        (setq group (car allgroups))))
     group))