PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/share/emacs/24.3/lisp/net
Viewing File: /usr/share/emacs/24.3/lisp/net/mairix.elc
;ELC ;;; Compiled by mockbuild@buildfarm01-new.corp.cloudlinux.com on Tue Nov 11 12:55:30 2025 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/net/mairix.el ;;; in Emacs version 24.3.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310%\210\311\312\313\314\315\316\307\304&\210\311\317\320\321\315\322\307\304&\210\311\323\324\325\315\322\307\304&\210\311\326\327\330\315\322\307\304&\210\311\331\332\333\315\322\307\304&\210\311\334\335\336\315\322\307\304&\210\311\337\340\341\315\342\307\304&\210\311\343\344\345\315\346\307\304&\210\311\347\305\350\315\351\307\304&\210\311\352\305\353\315\354\307\304&\210\311\355\356\357\315\360\307\304&\210\311\361\362\363\315\364\307\304&\210\311\365\366\367\315\370\307\304&\210\311\371\372\373\315\374\307\304&\207" [require widget cus-edit custom-declare-group mairix nil "Mairix interface for Emacs." :group mail custom-declare-variable mairix-file-path "~/" "Path where output files produced by Mairix should be stored." :type directory mairix-search-file "mairixsearch.mbox" "Name of the default file for storing the searches.\nNote that this will be prefixed by `mairix-file-path'." string mairix-command "mairix" "Command for calling mairix.\nYou can add further options here if you want to, but better use\n`mairix-update-options' instead." mairix-output-buffer "*mairix output*" "Name of the buffer for the output of the mairix binary." mairix-customize-query-buffer "*mairix query*" "Name of the buffer for customizing a search query." mairix-saved-searches-buffer "*mairix searches*" "Name of the buffer for displaying saved searches." mairix-update-options '("-F" "-Q") "Options when calling mairix for updating the database.\nThe default is '-F' and '-Q' for making updates faster. You\nshould call mairix without these options from time to\ntime (e.g. via cron job)." (repeat string) mairix-search-options '("-Q") "Options when calling mairix for searching.\nThe default is '-Q' for making searching faster." (repeat string) mairix-synchronous-update "Defines if Emacs should wait for the mairix database update." boolean mairix-saved-searches "Saved mairix searches.\nThe entries are: Name of the search, Mairix query string, Name of\nthe file (nil: use `mairix-search-file' as default), Search whole\nthreads (nil or t). Note that the file will be prefixed by\n`mairix-file-path'." (repeat (list (string :tag "Name") (string :tag "Query") (choice :tag "File" (const :tag "default") file) (boolean :tag "Threads"))) mairix-mail-program 'rmail "Mail program used to display search results.\nCurrently RMail, Gnus (mbox), and VM are supported. If you use Gnus\nwith maildir, use nnmairix.el instead." (choice (const :tag "RMail" rmail) (const :tag "Gnus mbox" gnus) (const :tag "VM" vm)) mairix-display-functions '((rmail mairix-rmail-display) (gnus mairix-gnus-ephemeral-nndoc) (vm mairix-vm-display)) "Specifies which function should be called for displaying search results.\nThis is an alist where each entry consists of a symbol from\n`mairix-mail-program' and the corresponding function for\ndisplaying the search results. The function will be called with\nthe mailbox file produced by mairix as the single argument." (repeat (list (symbol :tag "Mail program") (function))) mairix-get-mail-header-functions '((rmail mairix-rmail-fetch-field) (gnus mairix-gnus-fetch-field) (vm mairix-vm-fetch-field)) "Specifies function for obtaining a header field from the current mail.\nThis is an alist where each entry consists of a symbol from\n`mairix-mail-program' and the corresponding function for\nobtaining a header field from the current displayed mail. The\nfunction will be called with the mail header string as single\nargument. You can use nil if you do not have such a function for\nyour mail program, but then searches based on the current mail\nwon't work." (repeat (list (symbol :tag "Mail program") (choice :tag "Header function" (const :tag "none") function))) mairix-widget-select-window-function (lambda nil (select-window (get-largest-window))) "Function for selecting the window for customizing the mairix query.\nThe default chooses the largest window in the current frame." function] 8) #@359 Fields that should be editable during interactive query customization. Header, corresponding mairix command and description for editable fields in interactive query customization. The header specifies which header contents should be inserted into the editable field when creating a Mairix query based on the current message (can be nil for disabling this). (defvar mairix-widget-fields-list '(("from" "f" "From") ("to" "t" "To") ("cc" "c" "Cc") ("subject" "s" "Subject") ("to" "tc" "To or Cc") ("from" "a" "Address") (nil "b" "Body") (nil "n" "Attachment") ("Message-ID" "m" "Message ID") (nil "s" "Size") (nil "d" "Date")) (#$ . 4562)) #@107 Other editable mairix commands when using customization widgets. Currently there are 'threads and 'flags. (defvar mairix-widget-other '(threads flags) (#$ . 5207)) (defvar mairix-last-search nil) (defvar mairix-searches-changed nil) #@38 Display mbox file FOLDER with RMail. (defalias 'mairix-rmail-display #[(folder) "\303\304!\210\305\306\301!\203\" \203\" q\210\307 !\203\"\310\307 !!\210\311 \312\313\n!!\2039\312\313\n!!q\210\314\305!\210\315\305!\210\304\n!\210\205C\316 )\207" [show-summary rmail-buffer folder require rmail nil boundp get-buffer-window select-window rmail-summary-displayed get-buffer file-name-nondirectory set-buffer-modified-p kill-buffer rmail-summary] 3 (#$ . 5446)]) #@56 Get mail header FIELD for current message using RMail. (defalias 'mairix-rmail-fetch-field #[(field) "\302\300!\203\n\204\303\304!\210\305\306!\203\306 !\207rq\210\214\307 \210\310 !*\207" [rmail-buffer field boundp error "No RMail buffer available" fboundp rmail-get-header rmail-narrow-to-non-pruned-header mail-fetch-field] 2 (#$ . 5920)]) #@68 Create ephemeral nndoc group for reading mbox file FOLDER in Gnus. (defalias 'mairix-gnus-ephemeral-nndoc #[(folder) "\301 \204 \302\303!\210\304\305\306\307\310\311!!\"\312\313\314D\315BBB\"\207" [folder gnus-alive-p error "Gnus is not running" gnus-group-read-ephemeral-group format "mairix.%s" number-to-string random 10000 nndoc "mairix" nndoc-address ((nndoc-article-type mbox))] 6 (#$ . 6276)]) #@55 Get mail header FIELD for current message using Gnus. (defalias 'mairix-gnus-fetch-field #[(field) "\302 \204 \303\304!\210\305!\204\303\306!\210rq\210\307\310!\210\311 !)\207" [gnus-article-buffer field gnus-alive-p error "Gnus is not running" gnus-buffer-exists-p "No article buffer available" gnus-summary-toggle-header 1 message-field-value] 2 (#$ . 6685)]) #@35 Display mbox file FOLDER with VM. (defalias 'mairix-vm-display #[(folder) "\302\303!\210\304!\211\203 q\210\305\306!\210\306\307\310\217\210\311 !\210)\312\313\"\207" [folder buf require vm get-file-buffer set-buffer-modified-p nil (vm-quit t) ((error)) kill-buffer vm-visit-folder t] 4 (#$ . 7058)]) #@53 Get mail header FIELD for current message using VM. (defalias 'mairix-vm-fetch-field #[(field) "\212\301 \210\302 \210\303 \210\304\305\306!@\")\207" [field vm-select-folder-buffer vm-check-for-killed-summary vm-error-if-folder-empty vm-get-header-contents vm-select-marked-or-prefixed-messages 1] 3 (#$ . 7370)]) #@146 Call Mairix with SEARCH. If THREADS is non-nil, also display whole threads of found messages. Results will be put into the default search file. (defalias 'mairix-search #[(search threads) "\303\304!\305 #\205 \306\n!\207" [search threads mairix-search-file mairix-call-mairix split-string nil mairix-show-folder] 4 (#$ . 7692) (list (read-string "Query: ") (y-or-n-p "Include threads? "))]) #@41 Use a saved search for querying Mairix. (defalias 'mairix-use-saved-search #[nil "\306\307\"\310\311 \"\312\n\"\313 8\211\204  \205-\314\315 A@!\f\316 !@#\210\317\f!,\207" [mairix-saved-searches completions search query folder mairix-search-file mapcar #[(el) "@C\207" [el] 1] completing-read "Name of search: " assoc 2 mairix-call-mairix split-string last mairix-show-folder] 6 (#$ . 8092) nil]) #@23 Save the last search. (defalias 'mairix-save-search #[nil "\304\305!\306 \"\211\204\307\301\310C \"\"\210\202&\311\312!\203&\306 \" \241\210*\313 \207" [name mairix-saved-searches exist mairix-last-search read-string "Name of the search: " assoc add-to-list append y-or-n-p "There is already a search with this name. Overwrite existing entry? " mairix-select-save] 6 (#$ . 8506) nil]) #@60 Edit the list of saved searches in a customization buffer. (defalias 'mairix-edit-saved-searches-customize #[nil "\300\301\302DC\303\304\305\306\307\"\310\305\306\307\"\311\260#\207" [custom-buffer-create mairix-saved-searches custom-variable "*Customize Mairix Query*" "\n\n" make-string 65 61 "\nYou can now customize your saved Mairix searches by modifying\nthe variable mairix-saved-searches. Don't forget to save your\nchanges in your .emacs by pressing 'Save for Future Sessions'.\n" "\n"] 9 (#$ . 8907) nil]) (autoload 'mail-strip-quoted-names "mail-utils") #@187 Search messages from sender of the current article. This is effectively a shortcut for calling `mairix-search' with f:current_from. If prefix THREADS is non-nil, include whole threads. (defalias 'mairix-search-from-this-article #[(threads) " \236\211A@)\211\203\305\306\307\310 \311!!\"\f\"\202\312\313!)\207" [mairix-mail-program mairix-get-mail-header-functions x get-mail-header threads mairix-search format "f:%s" mail-strip-quoted-names "from" error "No function for obtaining mail header specified"] 7 (#$ . 9480) "P"]) #@156 Search thread for the current article. This is effectively a shortcut for calling `mairix-search' with m:msgid of the current article and enabled threads. (defalias 'mairix-search-thread-this-article #[nil " \236\211A@)\305\211\204\306\307!\210\f\310!\311\312 \"\203(\313\314\315\211 $\202\311\316 \"\2033 \317P\311\316 \"\203D\313\320\315\211 $\2023\321\322\323 \"\315\"*\207" [mairix-mail-program mairix-get-mail-header-functions x mid get-mail-header nil error "No function for obtaining mail header specified" "message-id" string-match "[<>]" replace-match "" t "\\$" "=" "=," mairix-search format "m:%s"] 6 (#$ . 10021) nil]) #@61 Create mairix query based on current article using widgets. (defalias 'mairix-widget-search-based-on-article #[nil "\300\301 !\207" [mairix-widget-search mairix-widget-get-values] 2 (#$ . 10674) nil]) #@31 Edit current mairix searches. (defalias 'mairix-edit-saved-searches #[nil "\302!\210\303 \210\304\305 \210\306 \210\307 \207" [mairix-saved-searches-buffer mairix-searches-changed switch-to-buffer erase-buffer nil mairix-build-search-list mairix-searches-mode hl-line-mode] 2 (#$ . 10881) nil]) #@109 Create mairix query interactively using graphical widgets. MVALUES may contain values from current article. (defalias 'mairix-widget-search #[(&optional mvalues) " \210\303 !\210\304\305\306\307\310$\210\311\312!\210\304\305\306\313\314$\210\311\312!\210\304\305\306\315\316$\210\317\n!\210\320 \210eb\207" [mairix-widget-select-window-function mvalues widget-keymap mairix-widget-create-query widget-create push-button :notify #[(&rest ignore) "\301!\207" [mairix-widgets mairix-widget-send-query] 2] "Send Query" widget-insert " " #[(&rest ignore) "\301!\207" [mairix-widgets mairix-widget-save-search] 2] "Save search" #[(&rest ignore) "\301!\207" [mairix-customize-query-buffer kill-buffer] 2] "Cancel" use-local-map widget-setup] 5 (#$ . 11185) nil]) #@183 Call mairix for updating the database for SERVERS. Mairix will be called asynchronously unless `mairix-synchronous-update' is t. Mairix will be called with `mairix-update-options'. (defalias 'mairix-update-database #[nil "\306!\307 \2032\310\n@\307\311\f!\307F!\nG\312V\203&\310 \nA #\202+\310 \"\313\314 \"\202]\315\316!\210\310\317\311\f!\n@E!\nG\312V\203Q\310 \nA #\202V\310 \"\320\313\321 \"\322\"*\207" [mairix-command args commandsplit mairix-synchronous-update mairix-output-buffer mairix-update-options split-string nil append get-buffer-create 1 apply call-process message "Updating mairix database..." "mairixupdate" set-process-sentinel start-process mairix-sentinel-mairix-update-finished] 5 (#$ . 11954) nil]) #@92 Display mail FOLDER with mail program. The mail program is given by `mairix-mail-program'. (defalias 'mairix-show-folder #[(folder) " \236\211A@)\211\203 \306\307\f!! P!\202\310\311!)\207" [mairix-mail-program mairix-display-functions x display-function mairix-file-path folder file-name-as-directory expand-file-name error "No mail program set"] 5 (#$ . 12701)]) #@165 Call Mairix with QUERY and output FILE. If FILE is nil, use default. If THREADS is non-nil, also return whole threads. Function returns t if messages were found. (defalias 'mairix-call-mairix #[(query file threads) "\306!\211@\307\310\n!\311BBB\307r\nq\210\312 \210) G\313V\203&\314 A\" \203/\314 \315\"!;\203;\306!!!\316\317!\320#\" E#\"\204P$\"\321\322%!!\"P\"\323\324\314 \325\"D!#\"\326\f!\203\203r\nq\210eb\210\327\330!\210\331\332\333!!\210)\202\243\f\313U\203\236r\nq\210eb\210\334\335!)\203\236\331\336!\210\202\243\337\340\n\"\210\326\f!+\207" [mairix-command commandsplit mairix-output-buffer args rval threads split-string nil get-buffer-create (nil) erase-buffer 1 append ("-t") mapconcat identity " " file-name-as-directory expand-file-name apply call-process "-o" zerop re-search-forward "^Matched.*messages" message match-string 0 looking-at "^Matched 0 messages" "No messages found" error "Error running Mairix. See buffer %s for details" query file mairix-last-search mairix-search-file mairix-file-path] 7 (#$ . 13079)]) #@56 Replace invalid characters in HEADER for mairix query. (defalias 'mairix-replace-invalid-chars #[(header) "\205'\301\302\"\203\303\304\305\211$\202\301\306\"\203&\303\307\305\211$\202\207" [header string-match "[^-.@/,^=~& [:alnum:]]" replace-match "" t "[& ]" ","] 5 (#$ . 14158)]) #@54 Sentinel for mairix update process PROC with STATUS. (defalias 'mairix-sentinel-mairix-update-finished #[(proc status) "\302\232\203\n\303\304!\207\305\306 \"\207" [status mairix-output-buffer "finished\n" message "Updating mairix database... done" error "There was an error updating the mairix database. See %s for details"] 3 (#$ . 14463)]) #@43 Send query from WIDGETS to mairix binary. (defalias 'mairix-widget-send-query #[(widgets) "\303\304!\305\306\307\"\211A@)!\205\310\"\210\311\n!\207" [widgets x mairix-customize-query-buffer mairix-search mairix-widget-make-query-from-widgets widget-value assoc "Threads" t kill-buffer] 7 (#$ . 14815)]) #@46 Save search based on WIDGETS for future use. (defalias 'mairix-widget-save-search #[(widgets) "\304!\305\306\307\310\"\211A@)!E\311 \210\312 !)\207" [widgets x mairix-last-search mairix-customize-query-buffer mairix-widget-make-query-from-widgets nil widget-value assoc "Threads" mairix-save-search kill-buffer] 7 (#$ . 15129)]) #@49 Create mairix query from widget values WIDGETS. (defalias 'mairix-widget-make-query-from-widgets #[(widgets) "\306\211\211 \306\211\203Q @\307\310\311\f\211AA)@P\"\211A@)!\203J\fA@\312\313\307\310\314\f\211AA)@P\"\211A@)!!Q\nB A\211\204*\315\235\203l\316\317\320\321#\322G!\204l\323P\nB\316\324\n\325#+\207" [flag temp query mairix-widget-fields-list cur --dolist-tail-- nil widget-value assoc "c" ":" mairix-replace-invalid-chars "e" flags mapconcat #[(flag) "\304\305@ \"\211A@)!\211\306\230\203\211A@)\207 \307\230\205(\310\211A@)P\207" [flag mairix-widgets x temp widget-value assoc "yes" "no" "-"] 5] (("seen" "s") ("replied" "r") ("flagged" "f")) "" zerop "F:" identity " " x widgets mairix-widget-other] 8 (#$ . 15468)]) #@84 Create widgets for creating mairix queries. Fill in VALUES if based on an article. (defalias 'mairix-widget-create-query #[(&optional values) "\305\306 !\203\f\307 !\210\310 !\210\311 \210\312 \210\313\314!\210\313\315\316\317\320\321#\322\323\324\325\326\260!\210\313\327!\210\330\n!\331\f\235\203e\313\332!\210\333\334\335\336\337\340\341\342&\210\313\343!\210\333\344\335\336\337\345\346\347&\210\313\350!\210\333\351\335\336\337\352\353\354&\210\355\f\235\203u\313\356!\210\333\357\360\305#\210\313\361!)\207" [allwidgets mairix-customize-query-buffer values mairix-widgets mairix-widget-other nil get-buffer kill-buffer switch-to-buffer kill-all-local-variables erase-buffer widget-insert "Specify your query for Mairix using check boxes for activating fields.\n\n" "Use ~word to match messages " propertize "not" face italic " containing the word)\n" " substring= to match words containing the substring\n" " substring=N to match words containing the substring, allowing\n" " up to N errors(missing/extra/different letters)\n" " ^substring= to match the substring at the beginning of a word.\n" "Whitespace will be converted to ',' (i.e. AND). Use '/' for OR.\n\n" mairix-widget-build-editable-fields flags "\nFlags:\n Seen: " mairix-widget-add "seen" menu-choice :value "ignore" (item "yes") (item "no") (item "ignore") " Replied: " "replied" (item "yes") (item "no") (item "ignore") " Ticked: " "flagged" (item "yes") (item "no") (item "ignore") threads "\n" "Threads" checkbox " Show full threads\n\n"] 8 (#$ . 16244)]) #@132 Build editable field widgets in `nnmairix-widget-fields-list'. VALUES may contain values for editable fields from current article. (defalias 'mairix-widget-build-editable-fields #[(values) "\302\303\304 \"\210)\207" [ret mairix-widget-fields-list nil mapc #[(field) "\211AA)@\304P\305\306\307\310\311\312&DC\313P\305\314\315\316\317\320\321\322\323GZ\324\"\325\260\326\327\n\"\211A@)\2069\330&DC\244 \244\331\332!\210\333 A@\211A@)\334\"\207" [field x values ret "c" widget-create checkbox :tag :notify #[(widget &rest ignore) "\301!\207" [widget mairix-widget-toggle-activate] 2] nil "e" editable-field :size 60 :format " " ":" make-string 11 32 "%v" :value assoc "" widget-insert "\n" widget-apply :deactivate] 14]] 3 (#$ . 17849)]) #@39 Add a widget NAME with optional ARGS. (defalias 'mairix-widget-add #[(name &rest args) "\303\304 \"D\nB\211\207" [name args mairix-widgets apply widget-create] 4 (#$ . 18609)]) #@65 Toggle activation status of WIDGET depending on checkbox value. (defalias 'mairix-widget-toggle-activate #[(widget) "\304\305\"\306!\203\307\310\311 P\n\"\211A@)\312\"\210\202,\307\310\311 P\n\"\211A@)\313\"\210)\314 \207" [widget field mairix-widgets x widget-get :tag widget-value widget-apply assoc "e" :activate :deactivate widget-setup] 5 (#$ . 18794)]) #@32 'mairix-searches-mode' keymap. (defvar mairix-searches-mode-map (byte-code "\301 \302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\306#\210\302\312\310#\210\302\313\310#\210\302\314\306#\210\302\315\316#\210\302\317\320#\210\302\321\322#\210\302\323\324#\210)\207" [map make-keymap define-key [(return)] mairix-select-search [(down)] mairix-next-search [(up)] mairix-previous-search [(right)] [(left)] "" "" [(q)] mairix-select-quit [(e)] mairix-select-edit [(d)] mairix-select-delete [(s)] mairix-select-save] 4) (#$ . 19167)) #@41 Major mode for editing mairix searches. (defalias 'mairix-searches-mode #[nil "\306 \210\307\310\311\n!\210\312 !\210\313\305!\210\314\315D\316\317\320E\321\322\323E\324\325\326E\327\330D\331\332\333E\257\334\211\207" [major-mode mode-name text-mode-syntax-table mairix-searches-mode-map mairix-searches-mode-font-lock-keywords font-lock-defaults kill-all-local-variables mairix-searches-mode "mairix-searches" set-syntax-table use-local-map make-local-variable "^\\([0-9]+\\)" (1 font-lock-constant-face) "^[0-9 ]+\\(Name:\\) \\(.*\\)" (1 font-lock-keyword-face) (2 font-lock-string-face) "^[ ]+\\(Query:\\) \\(.*\\) , " (1 font-lock-keyword-face) (2 font-lock-string-face) ", \\(Threads:\\) \\(.*\\)" (1 font-lock-keyword-face) (2 font-lock-constant-face) "^\\([A-Z].*\\)$" (1 font-lock-comment-face) "^[ ]+\\(Folder:\\) \\(.*\\)" (1 font-lock-keyword-face) (2 font-lock-string-face) (mairix-searches-mode-font-lock-keywords)] 8 (#$ . 19726) nil]) #@43 Display saved searches in current buffer. (defalias 'mairix-build-search-list #[nil "\304c\210\305`\306\n GW\203\"\n 8\nT\307\n\"\210\310c\210\202 b+\207" [current beg num mairix-saved-searches "These are your current saved mairix searches.\nYou may use the following keys in this buffer: \nReturn: execute search, e: edit, d: delete, s: save, q: quit\nUse cursor keys or C-n,C-p to select next/previous search.\n\n" 0 nil mairix-insert-search-line "\n"] 3 (#$ . 20687)]) #@65 Insert new mairix query with NUMBER and values FIELD in buffer. (defalias 'mairix-insert-search-line #[(number field) "\302\303 @ A@\304 8\203\305\202\306\307 8\203\307 8\202 \310&c\207" [number field format "%d Name: %s\n Query: %s , Threads: %s\n Folder: %s\n" 3 "Yes" "No" 2 "Default"] 8 (#$ . 21174)]) #@45 Call mairix with currently selected search. (defalias 'mairix-select-search #[nil "\304 \210\305\306!\204\307 \210\310\311!\207\312p!S8\313 8\211\204! \314\315 A@!\n\316 !@#\210\317 \210\320\n!*\207" [mairix-saved-searches query folder mairix-search-file beginning-of-line looking-at "[0-9]+ Name" ding message "Put cursor on a line with a search name first" read 2 mairix-call-mairix split-string last mairix-select-quit mairix-show-folder] 6 (#$ . 21499) nil]) #@22 Jump to next search. (defalias 'mairix-next-search #[nil "\300\301d\302\303$\203\f\304 \207\305 \207" [search-forward-regexp "^[0-9]+" t 2 beginning-of-line ding] 5 (#$ . 21975) nil]) #@26 Jump to previous search. (defalias 'mairix-previous-search #[nil "\300\301e\302#\203 \303 \207\304 \207" [search-backward-regexp "^[0-9]+" t beginning-of-line ding] 4 (#$ . 22166) nil]) #@26 Quit mairix search mode. (defalias 'mairix-select-quit #[nil "\203\301 \210\302\303!\207" [mairix-searches-changed mairix-select-save kill-buffer nil] 2 (#$ . 22359) nil]) #@31 Save current mairix searches. (defalias 'mairix-select-save #[nil "\301\302!\205\n\303\300\"\207" [mairix-saved-searches y-or-n-p "Save mairix searches permanently in your .emacs? " customize-save-variable] 3 (#$ . 22540) nil]) #@40 Edit currently selected mairix search. (defalias 'mairix-select-edit #[nil "\306 \210\307\310!\204 \311\312!\207\313p!S\211 8\314\n8\315\211\315\211\316u\210\317\320\n@\"\321\f\322 8 \"\"\203=\311\323!\210\317\324\nA@\"\325\326!\317\327 \"\330G!\203Z\315 8\f\240\210 8 E\241\210\331`\332y\210\315\210`|\210\333T 8\"\210b.\207" [number mairix-saved-searches query folder newname newquery beginning-of-line looking-at "[0-9]+ Name" error "Put cursor on a line with a search name first" read 2 nil -1 read-string "Name of the search: " assoc remq "This name does already exist" "Query: " y-or-n-p "Include whole threads? " "Mail folder (use empty string for default): " zerop t 3 mairix-insert-search-line newfolder threads mairix-searches-changed beg] 6 (#$ . 22776) nil]) #@42 Delete currently selected mairix search. (defalias 'mairix-select-delete #[nil "\305\306!\204\n\307\310!\207\311p!S\211 8\312\313u\210\314\315\316\n@\"!\203J\317\n \"\320`\321y\210\322 \210 `|\210\323\324d\320\325$\203J\326\327T\211!!\210\2025+\322 \207" [number mairix-saved-searches query beg mairix-searches-changed looking-at "[0-9]+ Name" error "Put cursor on a line with a search name first" read nil -1 y-or-n-p format "Delete search %s ? " delq t 4 beginning-of-line search-forward-regexp "^[0-9]+" 1 replace-match number-to-string] 6 (#$ . 23594) nil]) #@57 Create values for editable fields from current article. (defalias 'mairix-widget-get-values #[nil " \236\211A@)\211\203\212\214\305\306\f\"*\202\307\310!)\207" [mairix-mail-program mairix-get-mail-header-functions x get-mail-header mairix-widget-fields-list mapcar #[(field) "\211AA)@@\205\303\n@!!D\207" [field x get-mail-header mairix-replace-invalid-chars] 5] error "No function for obtaining mail header specified"] 4 (#$ . 24174)]) (provide 'mairix)