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
Viewing File: /usr/share/emacs/24.3/lisp/ls-lisp.elc
;ELC ;;; Compiled by mockbuild@buildfarm01-new.corp.cloudlinux.com on Tue Nov 11 13:00:14 2025 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/ls-lisp.el ;;; in Emacs version 24.3 ;;; 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. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (custom-declare-group 'ls-lisp nil "Emulate the ls program completely in Emacs Lisp." :version "21.1" :group 'dired) #@63 Reset the ls-lisp options that depend on `ls-lisp-emulation'. (defalias 'ls-lisp-set-options #[nil "\300\301\302\"\207" [mapc custom-reevaluate-setting (ls-lisp-ignore-case ls-lisp-dirs-first ls-lisp-verbosity)] 3 (#$ . 665)]) (byte-code "\302\303\304\305\306\307\310\311\312\313\314\315& \210\316\317\320\321#\210\322\321\211\203; @\317N\2034\320N\2044\323\320\317N#\210 A\211\204*\324\317\320\325#\210\302\320\326\327\330\331\306\332\314\315& \210\302\333\334\335\330\336\306\332\314\315& \210\302\337\340\341\330\342\306\343\314\315& \210\302\344\345\346\306\332\314\315&\210\302\347\350\351\306\332\314\315&\210\302\352\353\354\306\355\314\315&\210\302\356\321\357\306\332\314\315&\207" [prop --dolist-tail-- custom-declare-variable ls-lisp-emulation (cond ((memq system-type '(hpux usg-unix-v irix berkeley-unix)) 'UNIX)) "Platform to emulate: GNU (default), MacOS, MS-Windows, UNIX.\nCorresponding value is one of: nil, `MacOS', `MS-Windows', `UNIX'.\nSet this to your preferred value; it need not match the actual platform\nyou are using.\n\nThis variable does not affect the behavior of ls-lisp directly.\nRather, it controls the default values for some variables that do:\n`ls-lisp-ignore-case', `ls-lisp-dirs-first', and `ls-lisp-verbosity'.\n\nIf you change this variable directly (without using customize)\nafter loading `ls-lisp', you should use `ls-lisp-set-options' to\nupdate the dependent variables." :type (choice (const :tag "GNU" nil) (const MacOS) (const MS-Windows) (const UNIX)) :initialize custom-initialize-default :set #[(symbol value) "\302 !\232?\205\303 \"\210\304 \207" [value symbol eval custom-set-default ls-lisp-set-options] 3] :group ls-lisp defvaralias ls-lisp-dired-ignore-case ls-lisp-ignore-case nil (saved-value saved-variable-comment) put make-obsolete-variable "21.1" (memq ls-lisp-emulation '(MS-Windows MacOS)) "Non-nil causes ls-lisp alphabetic sorting to ignore case." :set-after (ls-lisp-emulation) boolean ls-lisp-dirs-first (eq ls-lisp-emulation 'MS-Windows) "Non-nil causes ls-lisp to sort directories first in any ordering.\n(Or last if it is reversed.) Follows Microsoft Windows Explorer." (ls-lisp-emulation) ls-lisp-verbosity (cond ((eq ls-lisp-emulation 'MacOS) nil) ((eq ls-lisp-emulation 'MS-Windows) (if (and (fboundp 'w32-using-nt) (w32-using-nt)) '(links))) ((eq ls-lisp-emulation 'UNIX) '(links uid)) (t '(links uid gid))) "A list of optional file attributes that ls-lisp should display.\nIt should contain none or more of the symbols: links, uid, gid.\nA value of nil (or an empty list) means display none of them.\n\nConcepts come from UNIX: `links' means count of names associated with\nthe file; `uid' means user (owner) identifier; `gid' means group\nidentifier.\n\nIf emulation is MacOS then default is nil;\nif emulation is MS-Windows then default is `(links)' if platform is\nWindows NT/2K, nil otherwise;\nif emulation is UNIX then default is `(links uid)';\nif emulation is GNU then default is `(links uid gid)'." (ls-lisp-emulation) (set (const :tag "Show Link Count" links) (const :tag "Show User" uid) (const :tag "Show Group" gid)) ls-lisp-use-insert-directory-program (not (memq system-type '(ms-dos windows-nt))) "Non-nil causes ls-lisp to revert back to using `insert-directory-program'.\nThis is useful on platforms where ls-lisp is dumped into Emacs, such as\nMicrosoft Windows, but you would still like to use a program to list\nthe contents of a directory." ls-lisp-support-shell-wildcards t "Non-nil means ls-lisp treats file patterns as shell wildcards.\nOtherwise they are treated as Emacs regexps (for backward compatibility)." ls-lisp-format-time-list '("%b %e %H:%M" "%b %e %Y") "List of `format-time-string' specs to display file time stamps.\nThese specs are used ONLY if a valid locale can not be determined.\n\nIf `ls-lisp-use-localized-time-format' is non-nil, these specs are used\nregardless of whether the locale can be determined.\n\nSyntax: (EARLY-TIME-FORMAT OLD-TIME-FORMAT)\n\nThe EARLY-TIME-FORMAT is used if file has been modified within the\ncurrent year. The OLD-TIME-FORMAT is used for older files. To use ISO\n8601 dates, you could set:\n\n(setq ls-lisp-format-time-list\n '(\"%Y-%m-%d %H:%M\"\n \"%Y-%m-%d \"))" (list (string :tag "Early time format") (string :tag "Old time format")) ls-lisp-use-localized-time-format "Non-nil means to always use `ls-lisp-format-time-list' for time stamps.\nThis applies even if a valid locale is specified.\n\nWARNING: Using localized date/time format might cause Dired columns\nto fail to line up, e.g. if month names are not all of the same length."] 13) #@68 This holds the original function definition of `insert-directory'. (defvar original-insert-directory nil (#$ . 5317)) #@33 Format to display integer UIDs. (defvar ls-lisp-uid-d-fmt "-%d" (#$ . 5441)) #@31 Format to display user names. (defvar ls-lisp-uid-s-fmt "-%s" (#$ . 5524)) #@33 Format to display integer GIDs. (defvar ls-lisp-gid-d-fmt "-%d" (#$ . 5605)) #@37 Format to display user group names. (defvar ls-lisp-gid-s-fmt "-%s" (#$ . 5688)) #@39 Format to display integer file sizes. (defvar ls-lisp-filesize-d-fmt "%d" (#$ . 5775)) #@37 Format to display float file sizes. (defvar ls-lisp-filesize-f-fmt "%.0f" (#$ . 5868)) (byte-code "\301\302!\204 \303K\301\207" [original-insert-directory featurep ls-lisp insert-directory] 2) #@1216 Insert directory listing for FILE, formatted according to SWITCHES. Leaves point after the inserted text. SWITCHES may be a string of options, or a list of strings. Optional third arg WILDCARD means treat FILE as shell wildcard. Optional fourth arg FULL-DIRECTORY-P means file is a directory and switches do not contain `d', so that a full listing is expected. This version of the function comes from `ls-lisp.el'. If the value of `ls-lisp-use-insert-directory-program' is non-nil then it works exactly like the version from `files.el' and runs a directory listing program whose name is in the variable `insert-directory-program'; if also WILDCARD is non-nil then it runs the shell specified by `shell-file-name'. If the value of `ls-lisp-use-insert-directory-program' is nil then it runs a Lisp emulation. The Lisp emulation does not run any external programs or shells. It supports ordinary shell wildcards if `ls-lisp-support-shell-wildcards' is non-nil; otherwise, it interprets wildcards as regular expressions to match file names. It does not support all `ls' switches -- those that work are: A a B C c F G g h i n R r S s t U u X. The l switch is assumed to be always present and cannot be turned off. (defalias 'insert-directory #[(file switches &optional wildcard full-directory-p) "\203 \n \f $\207\306\307\n!\310\"\n\311%&\211'\203('\310\n \f %\202\264\312\313 \"\2036\314\315\311\211 $\316\317\316\320\321 \311\"\"\"(\203f\312\322\n\"\203f\323\n!\204f\n\211GSH\324=\203d\n\325\nGSO\326\f\203\203(\203w\327\330\n!!\202z\330\n!%\331\n!\202\214\332 >\203\214\333%\334\335\336\217\210\212eb\210\337\340\311\326#\205\263\341\342!\211)\205\262\314\343!\210\311\210\344)\261))+\207" [ls-lisp-use-insert-directory-program original-insert-directory file switches wildcard full-directory-p find-file-name-handler expand-file-name insert-directory nil string-match "--dired " replace-match "" delete 32 45 append "[[?*]" file-exists-p 47 0 t wildcard-to-regexp file-name-nondirectory file-name-directory 66 "[^~]\\'" err (byte-code "\304 \305 !\n %\207" [file switches wildcard-regexp full-directory-p ls-lisp-insert-directory ls-lisp-time-index] 6) ((invalid-regexp (byte-code "\211A@)\306\232\203%\307\n>\205\310\311\f!\312 \n\313\n!\314%\210\202,\315@A\"\210\314\207" [err x switches wildcard-regexp orig-file file "Unmatched [ or [^" 66 "[^~]\\'" file-relative-name ls-lisp-insert-directory ls-lisp-time-index nil signal full-directory-p] 7))) re-search-forward "^total" get-free-disk-space "." "total used in directory" " available " wildcard-regexp orig-file handler ls-lisp-support-shell-wildcards available] 8 (#$ . 6071)]) #@528 Insert directory listing for FILE, formatted according to SWITCHES. Leaves point after the inserted text. This is an internal function optionally called by the `ls-lisp.el' version of `insert-directory'. It is called recursively if the -R switch is used. SWITCHES is a *list* of characters. TIME-INDEX is the time index into file-attributes according to SWITCHES. WILDCARD-REGEXP is nil or an *Emacs regexp*. FULL-DIRECTORY-P means file is a directory and SWITCHES does not contain `d', so that a full listing is expected. (defalias 'ls-lisp-insert-directory #[(file switches time-index wildcard-regexp full-directory-p) "\204 \203%\306\n!\211\307 \310\311\312 >\203\313\202\314%>\315\211?@\315\211AB\310\211CD\310\211EF\310\211GH\310\211IJ\310\211KL\316>!>\317 >\203a\320\321>\">\202n\322 >\204n\320\323>\">\324> \">\325 >\203\203\326>!\210\202\333`>\242BC>\310E\211M\203M@\211EAH\327H8\211I;\203\260\330I!\202\266\331\332I\"GK\333H8\211J;\203\312\330J!\202\320\331\332J\"GL\334H8GK@V\203\344K@LAV\203\360LAGBV\203\374GBMA\211M\204\225*\331\335@\"N\331\336@\"O\331\335A\"P\331\336A\"Q\331\337\340 >\2037\331\341\342B\343\245!\"G\202=\331\341B\"G\"R\331\344\340 >\203U\331\341\342B\345\245!\"G\202[\331\341B\"G\"S>DD\203\300D@EDADE@FEAH\334H8GH\203bG?\346GZW\204\240\347?!\204\240\347G!\203\245?\202\251\350?!\\\211?\203b\351FHG T%c\210\202b\212C@b\210CA\204\317\352c\210\331\353\342?\354\245!\"c\210)\355 >\205\">\205\">@E>A>E\211UA@)\311=\203\341\356\357E@\"\204\341\360E@ \"E\361E\362\261\210\363E T %\210\202\341.\207\364\n!\203/\360\n!\n\211GSH\365=\203>\n\315\366O\367\n\314\"\211V\203f\351\370 >\203W\371\nV\"\202X\nV\334V8 T%c\202q\372\373\n\"\210\374 \210\375\327!)\207" [wildcard-regexp full-directory-p file dir default-directory switches file-name-as-directory directory-files-and-attributes nil t 110 integer string 0 ls-lisp-sanitize 65 ls-lisp-delete-matching "^\\.\\.?$" 97 "^\\." ls-lisp-handle-switches 67 ls-lisp-column-format 2 string-width format "%d" 3 7 " %%-%dd" " %%-%ds" " %%%dd" 115 "%.0f" fceiling 1024.0 " %%%d.0f" 1024.0 134217727 floatp float ls-lisp-format "(No match)\n" "total %.0f\n" 1024.0 82 string-match "\\`\\.\\.?/?\\'" expand-file-name "\n" ":\n" ls-lisp-insert-directory file-name-absolute-p 47 -1 file-attributes 70 ls-lisp-classify-file message "%s: doesn't exist or is inaccessible" ding sit-for file-alist sum max-uid-len max-gid-len max-file-size total-line files elt short file-size attr fuid fgid uid-len gid-len --dolist-tail-- ls-lisp-uid-d-fmt ls-lisp-uid-s-fmt ls-lisp-gid-d-fmt ls-lisp-gid-s-fmt ls-lisp-filesize-d-fmt ls-lisp-filesize-f-fmt time-index x fattr] 8 (#$ . 8764)]) #@511 Sanitize the elements in FILE-ALIST. Fixes any elements in the alist for directory entries whose file attributes are nil (meaning that `file-attributes' failed for them). This is known to happen for some network shares, in particular for the ".." directory entry. If the ".." directory entry has nil attributes, the attributes are copied from the "." entry, if they are non-nil. Otherwise, the offending element is removed from the list, as are any elements for other directory entries with nil attributes. (defalias 'ls-lisp-sanitize #[(file-alist) "\301\302\"A\204\301\303\"A\203\301\302\"\301\303\"A\241\210\304\305\"\207" [file-alist assoc ".." "." rassq-delete-all nil] 4 (#$ . 11581)]) #@183 Insert the file names (only) in FILE-ALIST into the current buffer. Format in columns, sorted vertically, following GNU ls -C. Responds to the window width as ls should but may not! (defalias 'ls-lisp-column-format #[(file-alist) "\306\211\211\211\307\211\306\211\203> T\211@@)\211 BAG\211V\203\202* \237\310\\\311\312\"\313 \245 \245 \n _V\203_\nT\307\306\211\nW\205\234\211 W\203\210\311\f 8\"c\210\n\\\211\202p`\314\306x\210`|\210\315c\210T\211\202f.\207" [colwid nfiles collen ncols fmt files nil 0 2 format "%%-%ds" window-width " " 10 len file file-alist x j i] 7 (#$ . 12292)]) #@65 Delete all elements matching REGEXP from LIST, return new list. (defalias 'ls-lisp-delete-matching #[(regexp list) "\304 \203\305\n \211@@)\"\204 @B A\211\204)\207" [result list regexp x nil string-match] 4 (#$ . 12955)]) #@182 Return t if string S1 is less than string S2 in lexicographic order. Case is significant if `ls-lisp-ignore-case' is nil. Unibyte strings are converted to multibyte for comparison. (defalias 'ls-lisp-string-lessp #[(s1 s2) "\304\305\306 \305\306\n&\211\247\205 \305W)\207" [s1 s2 ls-lisp-ignore-case u compare-strings 0 nil] 9 (#$ . 13196)]) (put 'ls-lisp-string-lessp 'byte-optimizer 'byte-compile-inline-expand) #@119 Return new FILE-ALIST sorted according to SWITCHES. SWITCHES is a list of characters. Default sorting is alphabetic. (defalias 'ls-lisp-handle-switches #[(file-alist switches) "\306>\204 \307\310\311\217\210\312>\203\313\314 \"\n\203m\315\211\211 \203\\ @\211\211A@)\316=\204J \211A@);\203Q\317 \211A@)!\203Q \fB\202U B A\211\204$\306>\203h\f \244\202k \f\244+\306>?\320>?=\n=\203~ \237\207 \207" [switches file-alist ls-lisp-dirs-first files dirs el 85 err (byte-code "\303\304\305 !\306\n>\203\307\202'\310\n!\211\203\311\202'\312\n>\203&\313\202'\314\")\303\207" [index file-alist switches nil sort copy-sequence 83 #[(x y) "\302A8\302 A8W\207" [y x 7] 3] ls-lisp-time-index #[(x y) "\303 A8\nA8\"\207" [index y x time-less-p] 4] 88 #[(x y) "\306@!\306 @!\307 \310\311\n\310\311\f&\211\247\205 \310W+\207" [x y s2 s1 ls-lisp-ignore-case u ls-lisp-extension compare-strings 0 nil] 8] #[(x y) "@ @\306 \307\310\n\307\310\f&\211\247\205 \307W+\207" [x y s2 s1 ls-lisp-ignore-case u compare-strings 0 nil] 8]] 4) ((error (byte-code "\301\302\303!\"\210\304 \210\305\306!\207" [err message "Unsorted (ls-lisp sorting error) - %s" error-message-string ding sit-for 2] 4))) 70 mapcar ls-lisp-classify nil t file-directory-p 114 x] 4 (#$ . 13622)]) #@319 Append a character to FILENAME indicating the file type. FATTR is the file attributes returned by `file-attributes' for the file. The file type indicators are `/' for directories, `@' for symbolic links, `|' for FIFOs, `=' for sockets, `*' for regular files that are executable, and nothing for other types of files. (defalias 'ls-lisp-classify-file #[(filename fattr) "@\3058\211\306\307O \203 \f \310=\203\311\202\312P\202F\313\314\n\"\203-\f\315P\202F \316\230\2039\f\317P\202F \320\230\203E\f\321P\202F\f+\207" [fattr type modestr typestr filename 8 0 1 t "/" "@" string-match "x" "*" "p" "|" "s" "="] 4 (#$ . 14937)]) #@386 Append a character to file name in FILEDATA indicating the file type. FILEDATA has the form (FILENAME . ATTRIBUTES), where ATTRIBUTES is the structure returned by `file-attributes' for that file. The file type indicators are `/' for directories, `@' for symbolic links, `|' for FIFOs, `=' for sockets, `*' for regular files that are executable, and nothing for other types of files. (defalias 'ls-lisp-classify #[(filedata) "@A\303\n\304\305#\306\n \" *B\207" [filedata fattr file-name propertize dired-filename t ls-lisp-classify-file] 4 (#$ . 15585)]) #@127 Return extension of FILENAME (ignoring any version extension) FOLLOWED by null and full filename, SOLELY for full alpha sort. (defalias 'ls-lisp-extension #[(filename) "G\303 SH\304U\203\305\202` S\211\306Y\203# H\304U\203 \306W\203-\307\202` TH\310U\204> T\303O\202`  S\211\306Y\203Q H\304U\203@ \306W\203[\307\202` T\nO*\305Q\207" [filename i end nil 46 "" 0 "" 126] 3 (#$ . 16153)]) #@181 Format one line of long ls output for file FILE-NAME. FILE-ATTR and FILE-SIZE give the file's attributes and size. SWITCHES and TIME-INDEX give the full switch list and time data. (defalias 'ls-lisp-format #[(file-name file-attr file-size switches time-index) "@\3068\307 >\205^\3108\211:\203Y\fA:\203L\f@\311_\312\f@\313_\f\211A@)\314_\f\211AA)#+,\315\316,\317+\320\"\\\321+\322\"#*\202]\315\323\f@\324_\fA\\\"\202]\315\325\f\")\326 >\205n\315-\327.\330\245!\" \331/>\205|\315\332A@\"\333/>\205\232\3348\315;\203\2240\202\2261\")\335 >?\205\305\336 >\204\256\337/>\205\305\3408\315;\203\2772\202\3013\")\341.\342 >\"\343\3444\"\343\345 >\204\342\3465\347\350#\202\3445\n;\205\354\351\nP\352\260 *\207" [file-attr drwxrwxrwx file-type switches inode x 8 105 10 10995116.0 + 27776.0 65536.0 format " %13.0f%05.0f " floor 100000.0 mod 100000.0 " %18.0f " 65536.0 " %18d " 115 fceiling 1024.0 links "%3d" uid 2 71 103 gid 3 ls-lisp-format-file-size 104 " " ls-lisp-format-time 70 propertize dired-filename t " -> " "\n" p2 p1 ls-lisp-filesize-f-fmt file-size ls-lisp-verbosity ls-lisp-uid-s-fmt ls-lisp-uid-d-fmt ls-lisp-gid-s-fmt ls-lisp-gid-d-fmt time-index file-name] 15 (#$ . 16576)]) #@107 Return time index into file-attributes according to ls SWITCHES list. Return nil if no time switch found. (defalias 'ls-lisp-time-index #[(switches) "\301>\203\302\207\303>\203\304\207\305>\205\306\207" [switches 99 6 116 5 117 4] 2 (#$ . 17829)]) #@261 Format time for file with attributes FILE-ATTR according to TIME-INDEX. Use the same method as ls to decide whether to show time-of-day or year, depending on distance between file date and the current time. All ls time options, namely c, t and u, are handled. (defalias 'ls-lisp-format-time #[(file-attr time-index) "\206\305 8\306\n!\306 Z\307\310\311\312\217+\207" [time-index file-attr time diff past-cutoff 5 float-time -15778476 nil (byte-code "\211\204\306\307\n@!\211\204\nA\211\204) \310\235\203!\311\312 \fX\203@\f\313X\203@ \203: \204:\314\202P@\202P \203L \204L\315\202PA@\")\207" [system-time-locale locale vars past-cutoff diff ls-lisp-use-localized-time-format ("LC_ALL" "LC_TIME" "LANG") getenv ("C" "POSIX") nil format-time-string 0 "%m-%d %H:%M" "%Y-%m-%d " ls-lisp-format-time-list time] 4) ((error "Unk 0 0000"))] 3 (#$ . 18093)]) (defalias 'ls-lisp-format-file-size #[(file-size human-readable) "\204\304\305 !\203\n\202 \"\207\304\306\307 !\"\207" [human-readable file-size ls-lisp-filesize-f-fmt ls-lisp-filesize-d-fmt format floatp " %7s" file-size-human-readable] 4]) (provide 'ls-lisp)