From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/86063 Path: news.gmane.org!not-for-mail From: Dan Christensen Newsgroups: gmane.emacs.gnus.general Subject: Re: [PATCH 0/2] two minor fixes for new/empty nnimap group handling Date: Sun, 12 Jul 2015 13:01:03 -0400 Message-ID: <87io9pz4xc.fsf@uwo.ca> References: <1435750676-710-1-git-send-email-bjorn@mork.no> <87y4itti71.fsf@uwo.ca> <878uaspts1.fsf@ericabrahamsen.net> <87io9va7f5.fsf@uwo.ca> <87zj37nuu3.fsf@ericabrahamsen.net> <877fqa728f.fsf@uwo.ca> <871tgi9jvc.fsf@ericabrahamsen.net> <87r3oixctn.fsf@uwo.ca> <87380u6mmt.fsf@ericabrahamsen.net> <87y4im57as.fsf@ericabrahamsen.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1436720567 9892 80.91.229.3 (12 Jul 2015 17:02:47 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 12 Jul 2015 17:02:47 +0000 (UTC) To: ding@gnus.org Original-X-From: ding-owner+M34298@lists.math.uh.edu Sun Jul 12 19:02:35 2015 Return-path: Envelope-to: ding-account@gmane.org Original-Received: from lists1.math.uh.edu ([129.7.128.208]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZEKe7-00081y-3a for ding-account@gmane.org; Sun, 12 Jul 2015 19:02:31 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by lists1.math.uh.edu with smtp (Exim 4.85) (envelope-from ) id 1ZEKcv-0000HR-JW; Sun, 12 Jul 2015 12:01:17 -0500 Original-Received: from mx2.math.uh.edu ([129.7.128.33]) by lists1.math.uh.edu with esmtps (TLSv1.2:AES128-GCM-SHA256:128) (Exim 4.85) (envelope-from ) id 1ZEKcs-0000HA-Du for ding@lists.math.uh.edu; Sun, 12 Jul 2015 12:01:14 -0500 Original-Received: from quimby.gnus.org ([80.91.231.51]) by mx2.math.uh.edu with esmtps (TLSv1.2:DHE-RSA-AES128-SHA:128) (Exim 4.84) (envelope-from ) id 1ZEKcp-0005dw-Tb for ding@lists.math.uh.edu; Sun, 12 Jul 2015 12:01:14 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]) by quimby.gnus.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1ZEKcn-0004RH-KO for ding@gnus.org; Sun, 12 Jul 2015 19:01:09 +0200 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1ZEKcn-0007UJ-0W for ding@gnus.org; Sun, 12 Jul 2015 19:01:09 +0200 Original-Received: from cpe84948c589861-cm84948c589860.cpe.net.cable.rogers.com ([99.255.115.45]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 12 Jul 2015 19:01:08 +0200 Original-Received: from jdc by cpe84948c589861-cm84948c589860.cpe.net.cable.rogers.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 12 Jul 2015 19:01:08 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: ding@gnus.org Original-Lines: 338 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: cpe84948c589861-cm84948c589860.cpe.net.cable.rogers.com User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/24.3 (gnu/linux) Mail-Copies-To: never Cancel-Lock: sha1:UCepPesqKugmclzxyZEAQc3ZjHs= X-Spam-Score: -4.3 (----) List-ID: Precedence: bulk Xref: news.gmane.org gmane.emacs.gnus.general:86063 Archived-At: Eric Abrahamsen writes: > Eric Abrahamsen writes: > >> Dan Christensen writes: >> >>> Could nnmairix be adjusted to make an extra call at some point to >>> activate the appropriate group? Maybe it needs to call >>> nnimap-request-group-scan instead of nnimap-request-group, now that >>> 447c5 changed the behaviour of the latter? >> >> I think this is probably the right solution. I'm still convinced that >> nnimap should do something in the group creation process to register the >> group with Gnus, but you're right that your problem is likely a direct >> result of "request-group" getting split into "request-group" and >> "request-group-scan", and nnmairix not being edited to follow. >> >> I'm a little bit out of my depth here, but give this patch a whirl and >> see how it goes. > > Dammit, I think that was wrong. Would you try it anyway, then unapply it > and try this one instead? I tried the first, the second, and both, and didn't notice any change. (I still had your nnimap.el patches applied as well.) Here is the backtrace with the patch nnmairix-scan-imap-groups.patch applied. Dan Debugger entered--Lisp error: (wrong-type-argument stringp nil) string-match("^[^:]+:" nil) (if (string-match "^[^:]+:" gname) (substring gname (match-end 0)) gname) (let ((gname (nth 0 info))) (if (string-match "^[^:]+:" gname) (substring= gname (match-end 0)) gname)) (nnimap-decode-gnus-group (let ((gname (nth 0 info))) (if (string-match "= ^[^:]+:" gname) (substring gname (match-end 0)) gname))) (setq params (nth 5 info) group (nnimap-decode-gnus-group (let ((gname (n= th 0 info))) (if (string-match "^[^:]+:" gname) (substring gname (match-end= 0)) gname))) active (cdr (assq (quote active) params)) unexist (assq (quot= e unexist) (nth 3 info)) uidvalidity (cdr (assq (quote uidvalidity) params)= ) modseq (cdr (assq (quote modseq) params))) (while --dolist-tail-- (setq info (car --dolist-tail--)) (setq params (nt= h 5 info) group (nnimap-decode-gnus-group (let ((gname (nth 0 info))) (if (= string-match "^[^:]+:" gname) (substring gname (match-end 0)) gname))) acti= ve (cdr (assq (quote active) params)) unexist (assq (quote unexist) (nth 3 = info)) uidvalidity (cdr (assq (quote uidvalidity) params)) modseq (cdr (ass= q (quote modseq) params))) (progn (or (and (vectorp nnimap-object) (>=3D (l= ength nnimap-object) 13) (memq (aref nnimap-object 0) cl-struct-nnimap-tags= )) (error "%s accessing a non-%s" (quote nnimap-examined) (quote nnimap))) = (let* ((v nnimap-object)) (aset v 10 group))) (if (and qresyncp uidvalidity= active modseq unexist) (setq sequences (cons (list (nnimap-send-command "E= XAMINE %S (%s (%s %s))" (utf7-encode group t) (nnimap-quirk "QRESYNC") uidv= alidity modseq) (quote qresync) nil group (quote qresync)) sequences)) (let= ((command (if uidvalidity "EXAMINE" "SELECT")) start) (if (and active uidv= alidity unexist) (setq start (max 1 (- (cdr active) 100))) (progn (or (and = (vectorp nnimap-object) (>=3D ... 13) (memq ... cl-struct-nnimap-tags)) (er= ror "%s accessing a non-%s" (quote nnimap-initial-resync) (quote nnimap))) = (let* ((v nnimap-object)) (aset v 12 (+ ... 1)))) (setq start 1)) (setq seq= uences (cons (list (nnimap-send-command "%s %S" command (utf7-encode group = t)) (nnimap-send-command "UID FETCH %d:* FLAGS" start) start group command)= sequences)))) (setq --dolist-tail-- (cdr --dolist-tail--))) (let ((--dolist-tail-- infos) info) (while --dolist-tail-- (setq info (ca= r --dolist-tail--)) (setq params (nth 5 info) group (nnimap-decode-gnus-gro= up (let ((gname (nth 0 info))) (if (string-match "^[^:]+:" gname) (substrin= g gname (match-end 0)) gname))) active (cdr (assq (quote active) params)) u= nexist (assq (quote unexist) (nth 3 info)) uidvalidity (cdr (assq (quote ui= dvalidity) params)) modseq (cdr (assq (quote modseq) params))) (progn (or (= and (vectorp nnimap-object) (>=3D (length nnimap-object) 13) (memq (aref nn= imap-object 0) cl-struct-nnimap-tags)) (error "%s accessing a non-%s" (quot= e nnimap-examined) (quote nnimap))) (let* ((v nnimap-object)) (aset v 10 gr= oup))) (if (and qresyncp uidvalidity active modseq unexist) (setq sequences= (cons (list (nnimap-send-command "EXAMINE %S (%s (%s %s))" (utf7-encode gr= oup t) (nnimap-quirk "QRESYNC") uidvalidity modseq) (quote qresync) nil gro= up (quote qresync)) sequences)) (let ((command (if uidvalidity "EXAMINE" "S= ELECT")) start) (if (and active uidvalidity unexist) (setq start (max 1 (- = ... 100))) (progn (or (and ... ... ...) (error "%s accessing a non-%s" ... = ...)) (let* (...) (aset v 12 ...))) (setq start 1)) (setq sequences (cons (= list (nnimap-send-command "%s %S" command ...) (nnimap-send-command "UID FE= TCH %d:* FLAGS" start) start group command) sequences)))) (setq --dolist-ta= il-- (cdr --dolist-tail--)))) (progn (let ((--dolist-tail-- infos) info) (while --dolist-tail-- (setq i= nfo (car --dolist-tail--)) (setq params (nth 5 info) group (nnimap-decode-g= nus-group (let ((gname ...)) (if (string-match "^[^:]+:" gname) (substring = gname ...) gname))) active (cdr (assq (quote active) params)) unexist (assq= (quote unexist) (nth 3 info)) uidvalidity (cdr (assq (quote uidvalidity) p= arams)) modseq (cdr (assq (quote modseq) params))) (progn (or (and (vectorp= nnimap-object) (>=3D (length nnimap-object) 13) (memq (aref nnimap-object = 0) cl-struct-nnimap-tags)) (error "%s accessing a non-%s" (quote nnimap-exa= mined) (quote nnimap))) (let* ((v nnimap-object)) (aset v 10 group))) (if (= and qresyncp uidvalidity active modseq unexist) (setq sequences (cons (list= (nnimap-send-command "EXAMINE %S (%s (%s %s))" ... ... uidvalidity modseq)= (quote qresync) nil group (quote qresync)) sequences)) (let ((command (if = uidvalidity "EXAMINE" "SELECT")) start) (if (and active uidvalidity unexist= ) (setq start (max 1 ...)) (progn (or ... ...) (let* ... ...)) (setq start = 1)) (setq sequences (cons (list ... ... start group command) sequences)))) = (setq --dolist-tail-- (cdr --dolist-tail--))))) (let ((qresyncp (nnimap-capability "QRESYNC")) params groups sequences ac= tive uidvalidity modseq group unexist) (progn (let ((--dolist-tail-- infos)= info) (while --dolist-tail-- (setq info (car --dolist-tail--)) (setq param= s (nth 5 info) group (nnimap-decode-gnus-group (let (...) (if ... ... gname= ))) active (cdr (assq (quote active) params)) unexist (assq (quote unexist)= (nth 3 info)) uidvalidity (cdr (assq (quote uidvalidity) params)) modseq (= cdr (assq (quote modseq) params))) (progn (or (and (vectorp nnimap-object) = (>=3D ... 13) (memq ... cl-struct-nnimap-tags)) (error "%s accessing a non-= %s" (quote nnimap-examined) (quote nnimap))) (let* ((v nnimap-object)) (ase= t v 10 group))) (if (and qresyncp uidvalidity active modseq unexist) (setq = sequences (cons (list ... ... nil group ...) sequences)) (let ((command ...= ) start) (if (and active uidvalidity unexist) (setq start ...) (progn ... .= ..) (setq start 1)) (setq sequences (cons ... sequences)))) (setq --dolist-= tail-- (cdr --dolist-tail--))))) sequences) (save-current-buffer (set-buffer (nnimap-buffer)) (erase-buffer) (progn (= or (and (vectorp nnimap-object) (>=3D (length nnimap-object) 13) (memq (are= f nnimap-object 0) cl-struct-nnimap-tags)) (error "%s accessing a non-%s" (= quote nnimap-group) (quote nnimap))) (let* ((v nnimap-object)) (aset v 1 ni= l))) (progn (or (and (vectorp nnimap-object) (>=3D (length nnimap-object) 1= 3) (memq (aref nnimap-object 0) cl-struct-nnimap-tags)) (error "%s accessin= g a non-%s" (quote nnimap-initial-resync) (quote nnimap))) (let* ((v nnimap= -object)) (aset v 12 0))) (let ((qresyncp (nnimap-capability "QRESYNC")) pa= rams groups sequences active uidvalidity modseq group unexist) (progn (let = ((--dolist-tail-- infos) info) (while --dolist-tail-- (setq info (car --dol= ist-tail--)) (setq params (nth 5 info) group (nnimap-decode-gnus-group (let= ... ...)) active (cdr (assq ... params)) unexist (assq (quote unexist) (nt= h 3 info)) uidvalidity (cdr (assq ... params)) modseq (cdr (assq ... params= ))) (progn (or (and ... ... ...) (error "%s accessing a non-%s" ... ...)) (= let* (...) (aset v 10 group))) (if (and qresyncp uidvalidity active modseq = unexist) (setq sequences (cons ... sequences)) (let (... start) (if ... ...= ... ...) (setq sequences ...))) (setq --dolist-tail-- (cdr --dolist-tail--= ))))) sequences)) (progn (save-current-buffer (set-buffer (nnimap-buffer)) (erase-buffer) (= progn (or (and (vectorp nnimap-object) (>=3D (length nnimap-object) 13) (me= mq (aref nnimap-object 0) cl-struct-nnimap-tags)) (error "%s accessing a no= n-%s" (quote nnimap-group) (quote nnimap))) (let* ((v nnimap-object)) (aset= v 1 nil))) (progn (or (and (vectorp nnimap-object) (>=3D (length nnimap-ob= ject) 13) (memq (aref nnimap-object 0) cl-struct-nnimap-tags)) (error "%s a= ccessing a non-%s" (quote nnimap-initial-resync) (quote nnimap))) (let* ((v= nnimap-object)) (aset v 12 0))) (let ((qresyncp (nnimap-capability "QRESYN= C")) params groups sequences active uidvalidity modseq group unexist) (prog= n (let ((--dolist-tail-- infos) info) (while --dolist-tail-- (setq info (ca= r --dolist-tail--)) (setq params (nth 5 info) group (nnimap-decode-gnus-gro= up ...) active (cdr ...) unexist (assq ... ...) uidvalidity (cdr ...) modse= q (cdr ...)) (progn (or ... ...) (let* ... ...)) (if (and qresyncp uidvalid= ity active modseq unexist) (setq sequences ...) (let ... ... ...)) (setq --= dolist-tail-- (cdr --dolist-tail--))))) sequences))) (if (and (nnimap-change-group nil server) infos) (progn (save-current-buf= fer (set-buffer (nnimap-buffer)) (erase-buffer) (progn (or (and (vectorp nn= imap-object) (>=3D (length nnimap-object) 13) (memq (aref nnimap-object 0) = cl-struct-nnimap-tags)) (error "%s accessing a non-%s" (quote nnimap-group)= (quote nnimap))) (let* ((v nnimap-object)) (aset v 1 nil))) (progn (or (an= d (vectorp nnimap-object) (>=3D (length nnimap-object) 13) (memq (aref nnim= ap-object 0) cl-struct-nnimap-tags)) (error "%s accessing a non-%s" (quote = nnimap-initial-resync) (quote nnimap))) (let* ((v nnimap-object)) (aset v 1= 2 0))) (let ((qresyncp (nnimap-capability "QRESYNC")) params groups sequenc= es active uidvalidity modseq group unexist) (progn (let ((--dolist-tail-- i= nfos) info) (while --dolist-tail-- (setq info ...) (setq params ... group .= .. active ... unexist ... uidvalidity ... modseq ...) (progn ... ...) (if .= .. ... ...) (setq --dolist-tail-- ...)))) sequences)))) nnimap-retrieve-group-data-early("rocky" (nil)) (let ((sequences (nnimap-retrieve-group-data-early server (list info)))) = (nnimap-finish-retrieve-group-infos server (list info) sequences t) (setq a= ctive (nth 2 (assoc group nnimap-current-infos)))) (progn (let ((sequences (nnimap-retrieve-group-data-early server (list in= fo)))) (nnimap-finish-retrieve-group-infos server (list info) sequences t) = (setq active (nth 2 (assoc group nnimap-current-infos))))) (if (or (not dont-check) (not (setq active (nth 2 (assoc group nnimap-cur= rent-infos))))) (progn (let ((sequences (nnimap-retrieve-group-data-early s= erver (list info)))) (nnimap-finish-retrieve-group-infos server (list info)= sequences t) (setq active (nth 2 (assoc group nnimap-current-infos)))))) (progn (if (or (not dont-check) (not (setq active (nth 2 (assoc group nni= map-current-infos))))) (progn (let ((sequences (nnimap-retrieve-group-data-= early server (list info)))) (nnimap-finish-retrieve-group-infos server (lis= t info) sequences t) (setq active (nth 2 (assoc group nnimap-current-infos)= ))))) (erase-buffer) (insert (format "211 %d %d %d %S\n" (- (cdr active) (c= ar active)) (car active) (cdr active) group)) t) (if result (progn (if (or (not dont-check) (not (setq active (nth 2 (asso= c group nnimap-current-infos))))) (progn (let ((sequences (nnimap-retrieve-= group-data-early server ...))) (nnimap-finish-retrieve-group-infos server (= list info) sequences t) (setq active (nth 2 (assoc group nnimap-current-inf= os)))))) (erase-buffer) (insert (format "211 %d %d %d %S\n" (- (cdr active)= (car active)) (car active) (cdr active) group)) t)) (save-current-buffer (set-buffer nntp-server-buffer) (if result (progn (i= f (or (not dont-check) (not (setq active (nth 2 ...)))) (progn (let ((seque= nces ...)) (nnimap-finish-retrieve-group-infos server (list info) sequences= t) (setq active (nth 2 ...))))) (erase-buffer) (insert (format "211 %d %d = %d %S\n" (- (cdr active) (car active)) (car active) (cdr active) group)) t)= )) (let ((result (nnimap-change-group (if (and (not dont-check) (assoc group= nnimap-current-infos)) nil group) server)) active) (save-current-buffer (s= et-buffer nntp-server-buffer) (if result (progn (if (or (not dont-check) (n= ot (setq active ...))) (progn (let (...) (nnimap-finish-retrieve-group-info= s server ... sequences t) (setq active ...)))) (erase-buffer) (insert (form= at "211 %d %d %d %S\n" (- (cdr active) (car active)) (car active) (cdr acti= ve) group)) t)))) nnimap-request-group("zz_mairix-nnmairixsearch-1" "rocky") apply(nnimap-request-group ("zz_mairix-nnmairixsearch-1" "rocky")) nnmairix-call-backend("request-group" "zz_mairix-nnmairixsearch-1" "rocky= ") (save-excursion (nnmairix-call-backend "request-group" folder nnmairix-ba= ckend-server) (set-buffer nnmairix-mairix-output-buffer) (goto-char (point-= min)) (re-search-forward "^Matched.*messages") (nnheader-message 7 (match-s= tring 0)) (set-buffer nntp-server-buffer) (goto-char (point-min)) (let ((st= atus (read (current-buffer))) (total (read (current-buffer))) (low (read (c= urrent-buffer))) (high (read (current-buffer))) (corr (gnus-group-get-param= eter qualgroup (quote numcorr) t))) (if (=3D status 211) (progn (if (and co= rr (> (+ ... high) 0)) (progn (if (car corr) (progn ... ...)) (setq low (+ = low ...) high (+ high ...))) (if (member nnmairix-backend nnmairix-delete-a= nd-create-on-change) (progn (gnus-group-set-parameter qualgroup ... ...))))= (erase-buffer) (insert (format "%d %d %d %d %s" status total low high (let= (...) (if ... ... gname)))) t) (progn (nnheader-report (quote nnmairix) "E= rror calling back end on group %s" folder) nil)))) nnmairix-request-group-with-article-number-correction("zz_mairix-nnmairix= search-1" "nnmairix+mairixserver:nnmairixsearch") (if (and fast allowfast) t (nnmairix-request-group-with-article-number-co= rrection folder qualgroup)) (cond ((zerop rval) (nnmairix-call-backend "open-server" nnmairix-backend= -server) (if (eq nnmairix-backend (quote nnml)) (progn (if nnmairix-rename-= files-for-nnml (progn (nnmairix-rename-files-consecutively mfolder))) (nnml= -generate-nov-databases-directory mfolder nil t))) (nnmairix-call-backend "= request-scan" folder nnmairix-backend-server) (if (eq nnmairix-backend (quo= te nnimap)) (progn (nnmairix-call-backend "request-group-scan" folder nnmai= rix-backend-server))) (if (and fast allowfast) t (nnmairix-request-group-wi= th-article-number-correction folder qualgroup))) ((and (=3D rval 1) (save-c= urrent-buffer (set-buffer nnmairix-mairix-output-buffer) (goto-char (point-= min)) (looking-at "^Matched 0 messages"))) (nnheader-message 5 "Mairix: No = matches found.") (set-buffer nntp-server-buffer) (erase-buffer) (insert (co= ncat "211 0 1 0 " group)) t) (t (nnheader-report (quote nnmairix) "Error ru= nning mairix. See buffer %s for details" nnmairix-mairix-output-buffer) nil= )) (cond ((not folder) (nnheader-report (quote nnmairix) "Check folder param= eter for group %s" group) nil) ((not query) (save-current-buffer (set-buffe= r nntp-server-buffer) (erase-buffer) (insert (concat "211 0 1 0 " group)) t= )) (t (setq mfolder (if (and nnmairix-hidden-folders (not (string-match "^\= \." folder))) (concat "." folder) folder)) (if (eq nnmairix-backend (quote = nnml)) (progn (setq folderpath (cadr (assoc (quote nnml-directory) backendm= ethod))) (if (not folderpath) (progn (setq folderpath nnml-directory))))) (= if (eq nnmairix-backend (quote nnmaildir)) (progn (setq folderpath (cadr (a= ssoc (quote directory) backendmethod))))) (if folderpath (progn (setq mfold= er (concat (file-name-as-directory (expand-file-name folderpath)) mfolder))= )) (setq rval (if (and fast allowfast) 0 (nnmairix-call-mairix-binary (spli= t-string nnmairix-mairix-command) mfolder query threads))) (cond ((zerop rv= al) (nnmairix-call-backend "open-server" nnmairix-backend-server) (if (eq n= nmairix-backend (quote nnml)) (progn (if nnmairix-rename-files-for-nnml (pr= ogn ...)) (nnml-generate-nov-databases-directory mfolder nil t))) (nnmairix= -call-backend "request-scan" folder nnmairix-backend-server) (if (eq nnmair= ix-backend (quote nnimap)) (progn (nnmairix-call-backend "request-group-sca= n" folder nnmairix-backend-server))) (if (and fast allowfast) t (nnmairix-r= equest-group-with-article-number-correction folder qualgroup))) ((and (=3D = rval 1) (save-current-buffer (set-buffer nnmairix-mairix-output-buffer) (go= to-char (point-min)) (looking-at "^Matched 0 messages"))) (nnheader-message= 5 "Mairix: No matches found.") (set-buffer nntp-server-buffer) (erase-buff= er) (insert (concat "211 0 1 0 " group)) t) (t (nnheader-report (quote nnma= irix) "Error running mairix. See buffer %s for details" nnmairix-mairix-out= put-buffer) nil)))) (let* ((qualgroup (if server (gnus-group-prefixed-name group (list (quote= nnmairix) server)) group)) (folder (gnus-group-get-parameter qualgroup (qu= ote folder))) (allowfast (gnus-group-get-parameter qualgroup (quote allow-f= ast))) (query (gnus-group-get-parameter qualgroup (quote query) t)) (thread= s (gnus-group-get-parameter qualgroup (quote threads))) (backendmethod (gnu= s-server-to-method (format "%s:%s" (symbol-name nnmairix-backend) nnmairix-= backend-server))) rval mfolder folderpath args) (cond ((not folder) (nnhead= er-report (quote nnmairix) "Check folder parameter for group %s" group) nil= ) ((not query) (save-current-buffer (set-buffer nntp-server-buffer) (erase-= buffer) (insert (concat "211 0 1 0 " group)) t)) (t (setq mfolder (if (and = nnmairix-hidden-folders (not (string-match "^\\." folder))) (concat "." fol= der) folder)) (if (eq nnmairix-backend (quote nnml)) (progn (setq folderpat= h (cadr (assoc ... backendmethod))) (if (not folderpath) (progn (setq folde= rpath nnml-directory))))) (if (eq nnmairix-backend (quote nnmaildir)) (prog= n (setq folderpath (cadr (assoc ... backendmethod))))) (if folderpath (prog= n (setq mfolder (concat (file-name-as-directory ...) mfolder)))) (setq rval= (if (and fast allowfast) 0 (nnmairix-call-mairix-binary (split-string nnma= irix-mairix-command) mfolder query threads))) (cond ((zerop rval) (nnmairix= -call-backend "open-server" nnmairix-backend-server) (if (eq nnmairix-backe= nd (quote nnml)) (progn (if nnmairix-rename-files-for-nnml ...) (nnml-gener= ate-nov-databases-directory mfolder nil t))) (nnmairix-call-backend "reques= t-scan" folder nnmairix-backend-server) (if (eq nnmairix-backend (quote nni= map)) (progn (nnmairix-call-backend "request-group-scan" folder nnmairix-ba= ckend-server))) (if (and fast allowfast) t (nnmairix-request-group-with-art= icle-number-correction folder qualgroup))) ((and (=3D rval 1) (save-current= -buffer (set-buffer nnmairix-mairix-output-buffer) (goto-char ...) (looking= -at "^Matched 0 messages"))) (nnheader-message 5 "Mairix: No matches found.= ") (set-buffer nntp-server-buffer) (erase-buffer) (insert (concat "211 0 1 = 0 " group)) t) (t (nnheader-report (quote nnmairix) "Error running mairix. = See buffer %s for details" nnmairix-mairix-output-buffer) nil))))) nnmairix-request-group("nnmairixsearch" "mairixserver" nil ("nnmairix+mai= rixserver:nnmairixsearch" 3 nil nil (nnmairix "mairixserver" (nnmairix-back= end nnimap) (nnmairix-backend-server "rocky") (nnmairix-mairix-command "mai= rix") (nnmairix-hidden-folders t) (nnmairix-default-group "nnmairixsearch")= ) ((query "test" "d:1w-") (folder . "zz_mairix-nnmairixsearch-1") (threads)= ))) gnus-activate-group("nnmairix+mairixserver:nnmairixsearch" scan nil (nnma= irix "mairixserver" (nnmairix-backend nnimap) (nnmairix-backend-server "roc= ky") (nnmairix-mairix-command "mairix") (nnmairix-hidden-folders t) (nnmair= ix-default-group "nnmairixsearch"))) gnus-group-get-new-news-this-group() (save-excursion (nnmairix-open-server (nth 1 method)) (set-buffer gnus-gr= oup-buffer) (setq info (nth 2 (symbol-value (intern-soft group gnus-newsrc-= hashtb)))) (set (intern group gnus-active-hashtb) nil) (gnus-info-clear-dat= a info) (nnmairix-delete-recreate-group group) (if (member nnmairix-backend= nnmairix-delete-and-create-on-change) (progn (if corr (progn (setcar corr = t) (gnus-group-set-parameter group (quote numcorr) corr))))) (gnus-group-ju= mp-to-group group) (gnus-group-get-new-news-this-group)) (if (eq (nth 0 method) (quote nnmairix)) (save-excursion (nnmairix-open-s= erver (nth 1 method)) (set-buffer gnus-group-buffer) (setq info (nth 2 (sym= bol-value (intern-soft group gnus-newsrc-hashtb)))) (set (intern group gnus= -active-hashtb) nil) (gnus-info-clear-data info) (nnmairix-delete-recreate-= group group) (if (member nnmairix-backend nnmairix-delete-and-create-on-cha= nge) (progn (if corr (progn (setcar corr t) (gnus-group-set-parameter group= (quote numcorr) corr))))) (gnus-group-jump-to-group group) (gnus-group-get= -new-news-this-group)) (error "`nnmairix-update-and-clear-marks' called wit= h non-nnmairix group")) (let ((method (or method (gnus-find-method-for-group group))) (corr (gnus= -group-get-parameter group (quote numcorr) t)) info) (if (or (gnus-group-pr= efixed-p group) (not method)) nil (setq group (gnus-group-prefixed-name gro= up method))) (if (eq (nth 0 method) (quote nnmairix)) (save-excursion (nnma= irix-open-server (nth 1 method)) (set-buffer gnus-group-buffer) (setq info = (nth 2 (symbol-value (intern-soft group gnus-newsrc-hashtb)))) (set (intern= group gnus-active-hashtb) nil) (gnus-info-clear-data info) (nnmairix-delet= e-recreate-group group) (if (member nnmairix-backend nnmairix-delete-and-cr= eate-on-change) (progn (if corr (progn (setcar corr t) (gnus-group-set-para= meter group ... corr))))) (gnus-group-jump-to-group group) (gnus-group-get-= new-news-this-group)) (error "`nnmairix-update-and-clear-marks' called with= non-nnmairix group"))) nnmairix-update-and-clear-marks("nnmairix+mairixserver:nnmairixsearch") (let* ((qualgroup (gnus-group-prefixed-name nnmairix-default-group (list = (quote nnmairix) (nth 1 server))))) (set-buffer gnus-group-buffer) (if (str= ingp query) (progn (setq query (split-string query)))) (gnus-group-set-para= meter qualgroup (quote query) query) (if (symbolp threads) (if (eq threads = (quote t)) (progn (gnus-group-set-parameter qualgroup (quote threads) t))) = (if (< threads 0) (progn (gnus-group-set-parameter qualgroup (quote threads= ) nil)))) (nnmairix-update-and-clear-marks qualgroup) (if (equal (symbol-va= lue (intern-soft qualgroup gnus-active-hashtb)) (quote (1 . 0))) nil (gnus-= group-read-group nil t qualgroup))) nnmairix-search("test d:1w-") call-interactively(nnmairix-search record nil) command-execute(nnmairix-search record) execute-extended-command(nil "nnmairix-search") call-interactively(execute-extended-command nil nil)