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/emacs-lisp
Viewing File: /usr/share/emacs/24.3/lisp/emacs-lisp/chart.elc
;ELC ;;; Compiled by mockbuild@buildfarm01-new.corp.cloudlinux.com on Tue Nov 11 12:52:27 2025 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/emacs-lisp/chart.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\302\303\304\305#\210\306\211\203,\211@\303N\203%\304N\204%\307\304\303N#\210A\266\202\202 \210\310\303\304\311#\207" [require eieio defvaralias chart-map chart-mode-map nil (saved-value saved-variable-comment) put make-obsolete-variable "24.1"] 7) #@28 Keymap used in chart mode. (defvar chart-mode-map (make-sparse-keymap) (#$ . 842)) #@63 Local variable containing the locally displayed chart object. (defvar chart-local-object nil (#$ . 931)) (make-variable-buffer-local 'chart-local-object) #@87 Colors to use when generating `chart-face-list'. Colors will be the background color. (defvar chart-face-color-list '("red" "green" "blue" "cyan" "yellow" "purple") (#$ . 1091)) #@103 If pixmaps are allowed, display these background pixmaps. Useful if new Emacs is used on B&W display. (defvar chart-face-pixmap-list (byte-code "\300\301!\205\f\301 \205\f\302\207" [fboundp display-graphic-p ("dimple1" "scales" "dot" "cross_weave" "boxes" "dimple3")] 2) (#$ . 1276)) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\207" [custom-declare-variable chart-face-use-pixmaps funcall function #[0 "\300\207" [nil] 1 "\n\n(fn)"] "Non-nil to use fancy pixmaps in the background of chart face colors." :group eieio :type boolean] 8) #@139 Faces used to colorize charts. List is limited currently, which is ok since you really can't display too much in text characters anyways. (defvar chart-face-list (byte-code "\304\305!\203 \305 \202\f\205\226 \nC\306\211C\203\223\211\307\310\311@\312@@R!!\240\210\313@\314\315\316D\317\315\320\314EDC\217\203A@\202B\321\"\210\322@\323\"\210 \203\200@\203\200\304\324!\203\200\325\315\326\327\330\331\332 \"\333\"\334\335%D\317\315\326\336\337\331\332 !\340\"\341\342%\325EDC\217\210\211@B\262A\262\211@A\240\210\202\266\204\207" [window-system chart-face-color-list chart-face-pixmap-list chart-face-use-pixmaps fboundp display-color-p nil make-face intern "chart-" "-" set-face-background #1=#:err funcall #[0 "\300 \301V\207" [x-display-color-cells 4] 2 "\n\n(fn)"] error #[257 "\300\207" [t] 2 "\n\n(fn IGNORED)"] "white" set-face-foreground "black" set-face-background-pixmap #2=#:err make-byte-code 0 "\302\301@\300@@\"\207" vconcat vector [set-face-background-pixmap] 3 "\n\n(fn)" 257 "\301\302\300@@\"\207" [message "Cannot set background pixmap %s"] 4 "\n\n(fn IGNORED)"] 14) (#$ . 1833)) (byte-code "\300\301N\204\302\300\301\303\304!#\210\305\306!\204\302\306\307\310#\210\300\207" [chart-mode-hook variable-documentation put purecopy "Hook run when entering CHART mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp chart-mode-map definition-name chart-mode] 5) (defvar chart-mode-map (make-sparse-keymap)) (byte-code "\300\301N\204\302\300\301\303\304!#\210\305\306!\204\302\306\307\310#\210\300\207" [chart-mode-map variable-documentation put purecopy "Keymap for `chart-mode'." boundp chart-mode-syntax-table definition-name chart-mode] 5) (defvar chart-mode-syntax-table (make-syntax-table)) (byte-code "\300\301N\204\302\300\301\303\304!#\210\302\305\306\307#\207" [chart-mode-syntax-table variable-documentation put purecopy "Syntax table for `chart-mode'." chart-mode-abbrev-table definition-name chart-mode] 5) (defvar chart-mode-abbrev-table (progn (define-abbrev-table 'chart-mode-abbrev-table nil) chart-mode-abbrev-table)) (byte-code "\300\301N\204\302\300\301\303\304!#\210\302\305\306\307#\207" [chart-mode-abbrev-table variable-documentation put purecopy "Abbrev table for `chart-mode'." chart-mode derived-mode-parent nil] 5) #@158 Define a mode in Emacs for displaying a chart. This mode runs the hook `chart-mode-hook', as the final step during initialization. \{chart-mode-map} (fn) (defalias 'chart-mode #[0 "\306\300!\210\307\310 \210\311\312\313 !\210\314\f!\210 \315 \210\306\316!\210\317\320\321!\210)\322\323!\207" [delay-mode-hooks major-mode mode-name chart-mode-map chart-mode-syntax-table chart-mode-abbrev-table make-local-variable t kill-all-local-variables chart-mode "CHART" use-local-map set-syntax-table buffer-disable-undo font-lock-global-modes nil font-lock-mode -1 run-mode-hooks chart-mode-hook local-abbrev-table] 2 (#$ . 4224) nil]) #@107 Create a new buffer NAME in which the chart OBJ is displayed. Returns the newly created buffer. (fn OBJ) (defalias 'chart-new-buffer #[257 "r\301\302\303\304\305\"\"!q\210\306 \210\211p)\207" [chart-local-object get-buffer-create format "*%s*" eieio-oref title chart-mode] 7 (#$ . 4868)]) (byte-code "\300\301\302\303\304$\210\305\306\307\306\310\"\"\210\311\306\312\301\313$\210\300\314\302\315\316$\210\300\317\320\321\322$\210\300\323\324\325\326$\210\300\327\302\330\331$\210\300\332\333\334\335$\210\305\336\307\336\337\"\"\210\311\336\302\301\340$\210\305\341\307\341\342\"\"\210\311\341\302\301\343$\210\305\344\307\344\345\"\"\210\311\344\302\301\346$\210\305\347\307\347\350\"\"\210\311\347\302\301\351$\210\305\352\307\352\353\"\"\210\311\352\302\314\354$\210\305\355\307\355\356\"\"\210\311\355\302\301\357$\210\305\360\307\360\361\"\"\210\311\360\302\301\362$\210\305\352\307\352\363\"\"\210\311\352\302\317\364$\210\305\365\307\365\366\"\"\210\311\365\302\301\367$\210\305\352\307\352\370\"\"\210\311\352\302\323\371$\210\305\372\307\372\373\"\"\210\311\372\302\332\374$\210\305\375\307\375\376\"\"\210\311\375\302\301\377$\210\305\201@\307\201@\201A\"\"\210\311\201@\302\301\201B$\210\305\201C\307\201C\201D\"\"\210\311\201C\302\301\201E$\207" [eieio-defclass chart nil ((title :initarg :title :initform "Emacs Chart") (title-face :initarg :title-face :initform 'bold-italic) (x-axis :initarg :x-axis :initform nil) (x-margin :initarg :x-margin :initform 5) (x-width :initarg :x-width) (y-axis :initarg :y-axis :initform nil) (y-margin :initarg :y-margin :initform 5) (y-width :initarg :y-width) (key-label :initarg :key-label :initform "Key") (sequences :initarg :sequences :initform nil)) ("Superclass for all charts to be displayed in an Emacs buffer.") eieio--defalias initialize-instance eieio--defgeneric-init-form "Initialize the chart OBJ being created with FIELDS.\nMake sure the width/height is correct." eieio--defmethod :AFTER #[385 "\300\301\302 \303Z#\210\300\304\305 \306Z#\207" [eieio-oset x-width window-width 10 y-width window-height 12] 7 "Initialize the chart OBJ being created with FIELDS.\nMake sure the width/height is correct.\n\n(fn OBJ &rest FIELDS)"] chart-axis ((name :initarg :name :initform "Generic Axis") (loweredge :initarg :loweredge :initform t) (name-face :initarg :name-face :initform 'bold) (labels-face :initarg :labels-face :initform 'italic) (chart :initarg :chart :initform nil)) ("Superclass used for display of an axis.") chart-axis-range (chart-axis) ((bounds :initarg :bounds :initform '(0.0 . 50.0))) ("Class used to display an axis defined by a range of values.") chart-axis-names (chart-axis) ((items :initarg :items :initform nil)) ("Class used to display an axis which represents different named items.") chart-sequece ((data :initarg :data :initform nil) (name :initarg :name :initform "Data")) ("Class used for all data in different charts.") chart-bar (chart) ((direction :initarg :direction :initform vertical)) ("Subclass for bar charts (vertical or horizontal).") chart-draw "Start drawing a chart object C in optional BUFF.\nErases current contents of buffer." #[513 "\212\211\203\211q\210\300 \210\301\302\303\"c\210\304!\210\305!\210\306\307!\210\310\311!\210\312!\210\306\313!)\207" [erase-buffer make-string 100 10 chart-draw-axis chart-draw-title message "Rendering chart..." sit-for 0 chart-draw-data "Rendering chart...done"] 5 "Start drawing a chart object C in optional BUFF.\nErases current contents of buffer.\n\n(fn C &optional BUFF)"] chart-draw-title "Draw a title upon the chart.\nArgument C is the chart object." #[257 "\300\301\302\"\303\304\211\305 \301\306\"&\207" [chart-display-label eieio-oref title horizontal 0 window-width title-face] 10 "Draw a title upon the chart.\nArgument C is the chart object.\n\n(fn C)"] chart-size-in-dir "Return the physical size of chart C in direction DIR." #[514 "\211\300=\203 \301\302\"\207\301\303\"\207" [vertical eieio-oref y-width x-width] 5 "Return the physical size of chart C in direction DIR.\n\n(fn C DIR)"] chart-draw-axis "Draw axis into the current buffer defined by chart C." #[257 "\300\301\"\300\302\"\300\303\"\300\304\"\305\300\306\"\307\300\211\n\306\"\310\"?\205&\211\\&\210\305\300\311\"\312\300\211\n\311\"\310\"?\205D\211\\&\207" [eieio-oref y-margin x-margin y-width x-width chart-axis-draw y-axis vertical loweredge x-axis horizontal] 13 "Draw axis into the current buffer defined by chart C.\n\n(fn C)"] chart-axis-draw "Draw some axis for A in direction DIR with MARGIN in boundary.\nZONE is a zone specification.\nSTART and END represent the boundary." #[1537 "\300\203 \202\f\301\\$\210\302\303\304\"\203'\305\306#\2023\307=\2032\310\2023\301\303\f\311\"&\207" [chart-draw-line 0 chart-display-label eieio-oref name + 3 horizontal 1 name-face] 15 "Draw some axis for A in direction DIR with MARGIN in boundary.\nZONE is a zone specification.\nSTART and END represent the boundary.\n\n(fn A &optional DIR MARGIN ZONE START END)"] chart-translate-xpos "Translate in chart C the coordinate X into a screen column." #[514 "\300\211\301\"\302\"\300\303\"\304\305@Z!\305\300\306\"!\305A@Z!\245_!\\\207" [eieio-oref x-axis bounds x-margin round float x-width] 10 "Translate in chart C the coordinate X into a screen column.\n\n(fn C X)"] chart-translate-ypos "Translate in chart C the coordinate Y into a screen row." #[514 "\300\211\301\"\302\"\300\303\"\300\304\"\305\306@Z!\306\300\304\"!\306A@Z!\245_!Z\\\207" [eieio-oref y-axis bounds x-margin y-width round float] 11 "Translate in chart C the coordinate Y into a screen row.\n\n(fn C Y)"] "Draw axis information based upon a range to be spread along the edge.\nA is the chart to draw. DIR is the direction.\nMARGIN, ZONE, START, and END specify restrictions in chart space." #[1537 "\300 \210\301\302\"@\301\302\"A\203\202\303\304Z\211\305\301 \306\"\f\"\307\245\245\304\303U\2033\310\262X\205\327\311V\203L\312\313\314\245\"\202b\315V\203]\312\316\317\245\"\202b\312\320\"\262 \321=\203\231\n\\\301\322\"\203}G[\202~\310\\\211\310W\203\210\310\262\323\324\301\306\" \"\"\266\202\270\323\325\301\306\" \"\326 \301\322\"\203\264\327\202\265\310#\"\210`\262c\210\330G!\210\331`\332\301\333\"$\210\\\262\2023\207" [call-next-method eieio-oref bounds 0 nil chart-size-in-dir chart 4 1 999999 format "%dM" 1000000 999 "%dK" 1000 "%d" vertical loweredge chart-goto-xy chart-translate-ypos chart-translate-xpos + -1 chart-zap-chars put-text-property face labels-face] 21 "Draw axis information based upon a range to be spread along the edge.\nA is the chart to draw. DIR is the direction.\nMARGIN, ZONE, START, and END specify restrictions in chart space.\n\n(fn A &optional DIR MARGIN ZONE START END)"] chart-translate-namezone "Return a dot-pair representing a positional range for a name.\nThe name in chart C of the Nth name resides.\nAutomatically compensates for direction." #[514 "\300\301\"\211\302=\203\300\303\"\202\300\304\"\302=\203\"\300\305\"\202&\300\306\"\300\302=\2035\300\307\"\202:\300\310\"\311\"G\312\313!\\\313!\245\314\313 !_!\\\315\316\314\317\313 !\\_!#B\207" [eieio-oref direction vertical x-width y-width y-margin x-margin x-axis y-axis items 1.0 float round + -1 1.0] 16 "Return a dot-pair representing a positional range for a name.\nThe name in chart C of the Nth name resides.\nAutomatically compensates for direction.\n\n(fn C N)"] "Draw axis information based upon A range to be spread along the edge.\nOptional argument DIR is the direction of the chart.\nOptional arguments MARGIN, ZONE, START and END specify boundaries of the drawing." #[1537 "\300 \210\301\302\303\"\203\202\301\304\211\211\211\205\342G\305\246\306U\262\307\302\310\"\"\262 \311=\203@@A\\\305\245\262\202S@A@Z\305\245\\@G\305\245Z\262 \311=\203\226\n\\\302\312\"\203n@G[\202r@G\\\211\306W\203|\306\262@G\fSV\203\215\211\f\\\262\313\"\266\202\275\313\f\\\302\312\"\203\261\203\255\314\202\272\315\202\272\203\271\305\202\272\306\\\"\210`\262@c\210\316@G!\210\317`\320\302\321\"$\210T\262A\262\202\207" [call-next-method 0 eieio-oref items nil 2 1 chart-translate-namezone chart vertical loweredge chart-goto-xy -2 -1 chart-zap-chars put-text-property face labels-face] 20 "Draw axis information based upon A range to be spread along the edge.\nOptional argument DIR is the direction of the chart.\nOptional arguments MARGIN, ZONE, START and END specify boundaries of the drawing.\n\n(fn A &optional DIR MARGIN ZONE START END)"] chart-draw-data "Display the data available in a bar chart C." #[257 "\301\302\"\301\303\"\211\304=\203\305\202\304\205\355\301@\306\"@;\204\346\307\301@\306\"\211\203\344\310\"\304=\203?\311@\"\202E\312@\"\304=\203S\311\307\"\202X\312\307\"\203eG\2468\202f\313W\203\201\314@$\210\314A$\210\202\227\314@T$\210\314AT$\210@AU\204\271\314@TA$\210\314@AT$\210W\203\314\315B$\210\202\327\315B$\210\266T\262\211A\262\202'\266A\262\202\207" [chart-face-list eieio-oref sequences direction vertical horizontal data 0 chart-translate-namezone chart-translate-ypos chart-translate-xpos default chart-draw-line chart-deface-rectangle] 15 "Display the data available in a bar chart C.\n\n(fn C)"] chart-add-sequence "Add to chart object C the sequence object SEQ.\nIf AXIS-LABEL, then the axis stored in C is updated with the bounds of SEQ,\nor is created with the bounds of SEQ." #[769 "\211\203\217\302\"\302\303\"@;\2037\302\303\"\204-\304\305\302\306\"\307\310 &\262\2023\311\312#\210\210\202|\313\314B\302\303\"\204P\304 \305\302\306\"\310\n%\262\211\203u\211@@W\203a@\240\210\211@AV\203n@\241\210\211A\262\202P\311\315#\266\316=\203\210\311\317\320#\210\311#\266\311\321\322\302\321\"C\"#\207" [chart-axis-names chart-axis-range eieio-oref data make-instance :name name :items :chart eieio-oset items 0 1 bounds x-axis loweredge nil sequences append] 13 "Add to chart object C the sequence object SEQ.\nIf AXIS-LABEL, then the axis stored in C is updated with the bounds of SEQ,\nor is created with the bounds of SEQ.\n\n(fn C &optional SEQ AXIS-LABEL)"] chart-trim "Trim all sequences in chart C to be at most MAX elements long." #[514 "\300\301\"\211\205#\300@\302\"\211GV\203S\233\303\241\210\210\211A\262\202\207" [eieio-oref sequences data nil] 6 "Trim all sequences in chart C to be at most MAX elements long.\n\n(fn C MAX)"] chart-sort "Sort the data in chart C using predicate PRED.\nSee `chart-sort-matchlist' for more details." #[514 "\300\301\"\211@A@\302\300\303\"@;\203#\304#\210\300\303\"\262\202D\300\303\"@;\203<\304#\210\300\303\"\262\202D\305\306\307!\"\210\300\310\"\311=\203Z\312\300\313\"\314#\202c\312\300\315\"\314#\207" [eieio-oref sequences nil data chart-sort-matchlist error "Sorting of chart %s not supported" object-name direction horizontal eieio-oset y-axis items x-axis] 10 "Sort the data in chart C using predicate PRED.\nSee `chart-sort-matchlist' for more details.\n\n(fn C PRED)"]] 5) #@230 Sort NAMELST and NUMLST (both sequence objects) based on predicate PRED. PRED should be the equivalent of '<, except it must expect two cons cells of the form (NAME . NUM). See `sort' for more details. (fn NAMELST NUMLST PRED) (defalias 'chart-sort-matchlist #[771 "\300\301\302\"\301\302\"\203!@@BB\262A\262\211A\262\202 \303\"\262\300\262\300\262\203F@@B\262@AB\262A\262\202-\304\302\305!#\210\304\302\305!#\207" [nil eieio-oref data sort eieio-oset reverse] 11 (#$ . 16209)]) #@84 Move cursor to position X Y in buffer, and add spaces and CRs if needed. (fn X Y) (defalias 'chart-goto-xy #[514 "\301eb\210y\301\262\211\302U\203i\302U\204\303\304!\210m\203#\303!\210\302W\203,\302\262\302W\2035\302\262\305!U\206H`j\210\306`\307#\262)\207" [indent-tabs-mode nil 0 newline 1 move-to-column remove-text-properties (face)] 9 (#$ . 16729)]) #@50 Zap up to N chars without deleting EOLs. (fn N) (defalias 'chart-zap-chars #[257 "m?\205\211\300 `ZW\203\301!\207`\300 |\207" [point-at-eol delete-char] 4 (#$ . 17113)]) #@190 Display LABEL in direction DIR in column/row ZONE between START and END. Optional argument FACE is the property we wish to place on this text. (fn LABEL DIR ZONE START END &optional FACE) (defalias 'chart-display-label #[1541 "\300=\203.\301\302Z\303\245 G\303\245Z\\\"\210`\262c\210\304G!\210\305`\306$\207\307Z\303\245G\303\245Z\\GW\205f\302\\\"\210Hc\210\304\310!\210\305`S`\306$\210T\262\202<\207" [horizontal nil chart-goto-xy 2 chart-zap-chars put-text-property face 0 1] 13 (#$ . 17296)]) #@132 Draw a line using line-drawing characters in direction DIR. Use column or row ZONE between START and END. (fn DIR ZONE START END) (defalias 'chart-draw-line #[1028 "\300\301Z\302=\203\303\202\304\"%\207" [chart-display-label make-string vertical 124 45] 10 (#$ . 17837)]) #@141 Colorize a rectangle in direction DIR across range R1 by range R2. R1 and R2 are dotted pairs. Colorize it with FACE. (fn DIR R1 R2 FACE) (defalias 'chart-deface-rectangle #[1028 "\300=\203\n\202 \300=\203\202\211@\211AX\205<\301@\"\210\302``A@ZT\\\303$\210\211T\262\202\207" [vertical chart-goto-xy put-text-property face] 12 (#$ . 18129)]) #@397 Wash over the complex EIEIO stuff and create a nice bar chart. Create it going in direction DIR ['horizontal 'vertical] with TITLE using a name sequence NAMELST labeled NAMETITLE with values NUMLST labeled NUMTITLE. Optional arguments: Set the chart's max element display to MAX, and sort lists with SORT-PRED if desired. (fn DIR TITLE NAMELST NAMETITLE NUMLST NUMTITLE &optional MAX SORT-PRED) (defalias 'chart-bar-quickie #[2054 "\302\303 \304\305\306&\307=\310\302 \311\f\312 %\203#\313\202$\314#\210\310\302 \311\n\312 %\2039\314\202:\313#\210\203E\315\"\210\250\203O\316\"\210\317\320!!\210\321!\207" [chart-bar chart-sequece make-instance :title :key-label "8-m" :direction vertical chart-add-sequence :data :name x-axis y-axis chart-sort chart-trim switch-to-buffer chart-new-buffer chart-draw] 18 (#$ . 18504)]) #@43 Test out various charting features. (fn) (defalias 'chart-test-it-all #[0 "\300\301\302\303\304\305\306&\207" [chart-bar-quickie vertical "Test Bar Chart" ("U1" "ME2" "C3" "B4" "QT" "EZ") "Items" (5 -10 23 20 30 -3) "Values"] 7 (#$ . 19360) nil]) #@83 Draw a chart displaying the number of different file extensions in DIR. (fn DIR) (defalias 'chart-file-count #[257 "\300\301\"\204\f\211\302P\262\303\304!\210\305\306\211\307$\310C\311C\203j\300\312@\"\313@P!\2030\310\202;\211\205;@\314\224\314\225O\211\235\203a\211\203WGGZ\233\211@T\240\266\202aB\262\314B\262\266A\262\202\315\316\317\320\321\322\323&\207" [string-match "/$" "/" message "Collecting statistics..." directory-files nil t "<dir>" 0 "[^\\.]\\(\\.[a-zA-Z]+\\|~\\|#\\)$" file-accessible-directory-p 1 chart-bar-quickie vertical "Files Extension Distribution" "File Extensions" "# of occurrences" 10 #[514 "AAV\207" [] 4 "\n\n(fn A B)"]] 13 (#$ . 19615) "DDirectory: "]) #@52 Display a top usage chart for directory D. (fn D) (defalias 'chart-space-usage #[257 "\301\302!\210\303\211\304\305!\211q\210\306 \210\307\310\261\210\301\311\"\210\312ed\313p\303&\210eb\210\301\314!\210\315\316\303\313#\203P\317\224\317\225{\320\224\320\225{B\262\321!\322_B\262\266\202+\204X\323\324!\210\325\326\327\330\"\331\332\333\334&\207" [shell-file-name message "Collecting statistics..." nil get-buffer-create " *du-tmp*" erase-buffer "cd " ";du -sk * \n" "Running `cd %s;du -sk *'..." call-process-region t "Scanning output ..." re-search-forward "^\\([0-9]+\\)[ ]+\\([^ \n]+\\)$" 2 1 string-to-number 1000 error "No files found!" chart-bar-quickie vertical format "Largest files in %s" "File Name" "File Size" 10 #[514 "AAV\207" [] 4 "\n\n(fn A B)"]] 13 (#$ . 20344) "DDirectory: "]) #@56 Chart the current storage requirements of Emacs. (fn) (defalias 'chart-emacs-storage #[0 "\300 \301\302\303\304\305\"\306\304\307\"\310&\207" [garbage-collect chart-bar-quickie vertical "Emacs Runtime Storage Usage" mapcar #[257 "\300@!\207" [symbol-name] 3 "\n\n(fn X)"] "Storage Items" #[257 "\211A@\3008_\207" [2] 4 "\n\n(fn X)"] "Bytes"] 9 (#$ . 21173) nil]) #@54 Chart out the size of various important lists. (fn) (defalias 'chart-emacs-lists #[0 "\300\301 G\302 G\303 G\304 GF\305\306!\203#\307\310\"\262\307\306 GC\"\262\311\312\313\314\315&\207" [("buffers" "frames" "processes" "faces") buffer-list frame-list process-list face-list fboundp x-display-list append ("x-displays") chart-bar-quickie vertical "Emacs List Size Chart" "Various Lists" "Objects"] 9 (#$ . 21549) nil]) #@71 If we are in an rmail summary buffer, then chart out the froms. (fn) (defalias 'chart-rmail-from #[0 "\301=\204\n\302\303!\210\304\211\212eb\210\305\306\304\307#\203I\310\224\310\225{\211\235\311\312\"\210\211\203:GGZ\233\211@T\240\266\202DB\262\310B\262\266\202)\313\314\315\316\317\320\321&\207" [major-mode rmail-summary-mode error "You must invoke chart-rmail-from in an rmail summary buffer" nil re-search-forward "\\-[A-Z][a-z][a-z] +\\(\\w+\\)@\\w+" t 1 message "Scanned username %s" chart-bar-quickie vertical "Username Occurrence in RMAIL box" "User Names" "# of occurrences" 10 #[514 "AAV\207" [] 4 "\n\n(fn A B)"]] 11 (#$ . 21983) nil]) (provide 'chart)