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/eshell
Viewing File: /usr/share/emacs/24.3/lisp/eshell/em-dirs.elc
;ELC ;;; Compiled by mockbuild@buildfarm01-new.corp.cloudlinux.com on Tue Nov 11 12:56:00 2025 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/eshell/em-dirs.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\300\303!\210\304\305\306\307\310\311\312\313&\210\314\315\306\316\317\320\321\322\312\305& \210\314\323\324\325\321\326\312\305&\210\314\327\330\331\321\332\312\305&\210\314\333\306\334\321\335\312\305&\210\314\336\337\340\321\335\312\305&\210\314\341\306\342\321\322\312\305&\210\314\343\306\344\321\335\312\305&\210\314\345\306\346\321\335\312\305&\210\314\347\306\350\321\335\312\305&\210\314\351\306\352\321\335\312\305&\210\314\353\337\354\321\335\312\305&\210\314\355\356\357\321\360\312\305&\210\314\361\362\363\321\364\312\305&\210\314\365\337\366\321\335\312\305&\207" [require eshell ring esh-opt custom-declare-group eshell-dirs nil "Directory navigation involves changing directories, examining the\ncurrent directory, maintaining a directory stack, and also keeping\ntrack of a history of the last directory locations the user was in.\nEmacs does provide standard Lisp definitions of `pwd' and `cd', but\nthey lack somewhat in feel from the typical shell equivalents." :tag "Directory navigation" :group eshell-module custom-declare-variable eshell-dirs-load-hook "A hook that gets run when `eshell-dirs' is loaded." :version "24.1" :type hook eshell-pwd-convert-function (if (eshell-under-windows-p) 'expand-file-name 'identity) "The function used to normalize the value of Eshell's `pwd'.\nThe value returned by `pwd' is also used when recording the\nlast-visited directory in the last-dir-ring, so it will affect the\nform of the list used by 'cd ='." (radio (function-item file-truename) (function-item expand-file-name) (function-item identity) (function :tag "Other")) eshell-ask-to-save-last-dir 'always "Determine if the last-dir-ring should be automatically saved.\nThe last-dir-ring is always preserved when exiting an Eshell buffer.\nHowever, when Emacs is being shut down, this variable determines\nwhether to prompt the user, or just save the ring.\nIf set to nil, it means never ask whether to save the last-dir-ring.\nIf set to t, always ask if any Eshell buffers are open at exit time.\nIf set to `always', the list-dir-ring will always be saved, silently." (choice (const :tag "Never" nil) (const :tag "Ask" t) (const :tag "Always save" always)) eshell-cd-shows-directory "If non-nil, using `cd' will report the directory it changes to." boolean eshell-cd-on-directory t "If non-nil, do a cd if a directory is in command position." eshell-directory-change-hook "A hook to run when the current directory changes." eshell-list-files-after-cd "If non-nil, call \"ls\" with any remaining args after doing a cd.\nThis is provided for convenience, since the same effect is easily\nachieved by adding a function to `eshell-directory-change-hook' that\ncalls \"ls\" and references `eshell-last-arguments'." eshell-pushd-tohome "If non-nil, make pushd with no arg behave as 'pushd ~' (like `cd').\nThis mirrors the optional behavior of tcsh." eshell-pushd-dextract "If non-nil, make \"pushd +n\" pop the nth dir to the stack top.\nThis mirrors the optional behavior of tcsh." eshell-pushd-dunique "If non-nil, make pushd only add unique directories to the stack.\nThis mirrors the optional behavior of tcsh." eshell-dirtrack-verbose "If non-nil, show the directory stack following directory change.\nThis is effective only if directory tracking is enabled." eshell-last-dir-ring-file-name (expand-file-name "lastdir" eshell-directory-name) "If non-nil, name of the file to read/write the last-dir-ring.\nSee also `eshell-read-last-dir-ring' and `eshell-write-last-dir-ring'.\nIf it is nil, the last-dir-ring will not be written to disk." file eshell-last-dir-ring-size 32 "If non-nil, the size of the directory history ring.\nThis ring is added to every time `cd' or `pushd' is used. It simply\nstores the most recent directory locations Eshell has been in. To\nreturn to the most recent entry, use 'cd -' (equivalent to 'cd -0').\nTo return to an older entry, use 'cd -N', where N is an integer less\nthan `eshell-last-dir-ring-size'. To return to the last directory\nmatching a particular regexp, use 'cd =REGEXP'. To display the\ndirectory history list, use 'cd ='.\n\nThis mechanism is very similar to that provided by `pushd', except\nit's far more automatic. `pushd' allows the user to decide which\ndirectories gets pushed, and its size is unlimited.\n\n`eshell-last-dir-ring' is meant for users who don't use `pushd'\nexplicitly very much, but every once in a while would like to return to\na previously visited directory without having to type in the whole\nthing again." integer eshell-last-dir-unique "If non-nil, `eshell-last-dir-ring' contains only unique entries."] 10) #@109 List of directories saved by pushd in the Eshell buffer. Thus, this does not include the current directory. (defvar eshell-dirstack nil (#$ . 5221)) #@40 The last directory that Eshell was in. (defvar eshell-last-dir-ring nil (#$ . 5376)) #@46 Initialize the builtin functions for Eshell. (defalias 'eshell-dirs-initialize #[nil "\306\300!\210\307\310\" \203\306\302!\210\311\312B\nB\313\314\315\316\317$\210 \320>\203+\313\314\321\316\317$\210\322\211 >)\203;\313\323\324\316\317$\210\306\325!\210\306\326!\210\203K\327 \210\204V\330!\313\331\332\316\317$\210\313\333\334\"\207" [eshell-variable-aliases-list eshell-cd-on-directory eshell-interpreter-alist system-type module eshell-modules-list make-local-variable append (("-" (lambda (indices) (if (not indices) (unless (ring-empty-p eshell-last-dir-ring) (expand-file-name (ring-ref eshell-last-dir-ring 0))) (expand-file-name (eshell-apply-indices eshell-last-dir-ring indices))))) ("+" "PWD") ("PWD" (lambda (indices) (expand-file-name (eshell/pwd))) t) ("OLDPWD" (lambda (indices) (unless (ring-empty-p eshell-last-dir-ring) (expand-file-name (ring-ref eshell-last-dir-ring 0)))) t)) eshell-lone-directory-p eshell-dirs-substitute-cd add-hook eshell-parse-argument-hook eshell-parse-user-reference nil t (ms-dos windows-nt) eshell-parse-drive-letter eshell-cmpl pcomplete-try-first-hook eshell-complete-user-reference eshell-dirstack eshell-last-dir-ring eshell-read-last-dir-ring make-ring eshell-exit-hook eshell-write-last-dir-ring kill-emacs-hook eshell-save-some-last-dir eshell-last-dir-ring-file-name eshell-last-dir-ring-size] 6 (#$ . 5467)]) #@53 Save the list-dir-ring for any open Eshell buffers. (defalias 'eshell-save-some-last-dir #[nil "\304 \305\211\205; @\306!\2033rq\210\n\2032 \2032 \307=\204/\310\311\312\313!\"!\2032\314 \210) A\211\204 \305*\207" [buf --dolist-tail-- eshell-mode eshell-ask-to-save-last-dir buffer-list nil buffer-live-p always y-or-n-p format "Save last dir ring for Eshell buffer `%s'? " buffer-name eshell-write-last-dir-ring] 6 (#$ . 6856)]) #@69 Test whether FILE is just a directory name, and not a command name. (defalias 'eshell-lone-directory-p #[(file) "\301!\205\302!\206\303!?\207" [file file-directory-p file-name-directory eshell-search-path] 2 (#$ . 7305)]) #@63 Substitute the given command for a call to `cd' on that name. (defalias 'eshell-dirs-substitute-cd #[(&rest args) "G\301V\203 \302\303@\"\207\304\305\306\307\310!\"\"\207" [args 1 error "%s: command not found" throw eshell-replace-command eshell-parse-command "cd" eshell-flatten-list] 6 (#$ . 7540)]) #@60 An argument beginning with ~ is a filename to be expanded. (defalias 'eshell-parse-user-reference #[nil "?\205\301f\302=\205\303\304\305\"\210\301u\210\306`Sf!\207" [eshell-current-argument nil 126 add-to-list eshell-current-modifiers expand-file-name char-to-string] 3 (#$ . 7852)]) #@64 An argument beginning with X:[^/] is a drive letter reference. (defalias 'eshell-parse-drive-letter #[nil "?\205#\304\305!\205#\306\225b\210\307\306!\310 P\311\n!\211\206 \312P+\207" [eshell-current-argument letter regexp path looking-at "\\([A-Za-z]:\\)\\([^/\\\\]\\|\\'\\)" 1 match-string "\\`" eshell-find-previous-directory "/"] 3 (#$ . 8147)]) #@44 If there is a user reference, complete it. (defalias 'eshell-complete-user-reference #[nil "\304 \305\306\"\205\307\310O\311\312\313\314 \210\315\316\317 \"!\")\207" [arg pcomplete-stub pcomplete-last-completion-raw eshell-user-names pcomplete-actual-arg string-match "\\`~[a-z]*\\'" 1 nil t throw pcomplete-completions eshell-read-user-names pcomplete-uniqify-list mapcar #[(user) "\301A!\207" [user file-name-as-directory] 2]] 6 (#$ . 8510)]) #@41 Change output from `pwd` to be cleaner. (defalias 'eshell/pwd #[(&rest args) "\211G\211\305V\203( \nSH\306=\203( \307>\203!\310\311 \"\204( \312 GSO\f\2032\f !\2023 *\207" [default-directory path len system-type eshell-pwd-convert-function 1 47 (ms-dos windows-nt) string-match "\\`[A-Za-z]:[\\\\/]\\'" 0] 4 (#$ . 8969)]) #@386 Convert '...' to '../..', '....' to '../../..', etc.. With the following piece of advice, you can make this functionality available in most of Emacs, with the exception of filename completion in the minibuffer: (defadvice expand-file-name (before translate-multiple-dots (filename &optional directory) activate) (setq filename (eshell-expand-multiple-dots filename))) (defalias 'eshell-expand-multiple-dots #[(path) "\304\305\"\203.\306\307\"\211G\310\n\311V\203\" \312P\nS\211\202\313 \314\211\307%+\202\207" [path extra-dots len replace-text string-match "\\(?:^\\|/\\)\\.\\.\\(\\.+\\)\\(?:$\\|/\\)" match-string 1 nil 0 "/.." replace-match t] 7 (#$ . 9308)]) #@48 Find the most recent last-dir matching REGEXP. (defalias 'eshell-find-previous-directory #[(regexp) "\305\306!\307\fG\305V\2030 \nW\2030\310 \"\311\f \"\203'\n\211\202\307 T\211\202 +\207" [eshell-last-dir-ring oldpath len index regexp 0 ring-length nil ring-ref string-match] 4 (#$ . 10009)]) #@39 Alias to extend the behavior of `cd'. (defalias 'eshell/cd #[(&rest args) "\306!\211@A@ \307>\310\211\247\203\311 !\f\247\203#\311\f!\f\203G\312 )\313 )\"\203>\314\f\310\211)$\202C\315\316 \"\210)\202\324 \203n\313\317 \"\203n\320\321 \"*\322+*\203g\323*!\202h\324\")\202\324 \203\314\313\325 \"\203\314\326\320\321 \"!\211,\203\213,\202\310\327+!\324*\211-\324U\203\236\315\330!\210\331 \210*-W\203\302\332\311*!\333\334+*\"\335R!\210*T\211*\202\243\336 \210\337*)\202\324 \203\324\340 !\n?\205' \206\336\341.\312 \211).\232\204\360\342)!\210\343.!/0\203/\21111\34412\"\210)\3351\34412\"\210*)\345\346!\2103\203%\347\350A\"\210)\310,\207" [args system-type handled case-fold-search subpath path eshell-flatten-list (ms-dos windows-nt) nil number-to-string eshell/pwd string-match replace-match error "Path substring '%s' not found" "^-\\([0-9]*\\)$" match-string 1 ring-remove string-to-number 0 "^=\\(.*\\)$" eshell-find-previous-directory ring-length "Directory ring empty" eshell-init-print-buffer eshell-buffered-print ": " ring-ref "\n" eshell-flush t eshell-expand-multiple-dots "~" eshell-add-to-dir-ring cd eshell-output-object run-hooks eshell-directory-change-hook eshell-plain-command "ls" curdir index eshell-last-dir-ring oldpath len dired-directory result eshell-cd-shows-directory object eshell-output-handle eshell-list-files-after-cd] 7 (#$ . 10325)]) (put 'eshell/cd 'eshell-no-numeric-conversions t) #@47 Add PATH to the last-dir-ring, if applicable. (defalias 'eshell-add-to-dir-ring #[(path) "\305!?\205 \306\307\"\232?\205>\n\203:\307\310!\f W\2039\306\f\" \232\2032\311\f\"\210\202\fT\211\202*\312 \"\207" [eshell-last-dir-ring path eshell-last-dir-unique len index ring-empty-p ring-ref 0 ring-length ring-remove ring-insert] 5 (#$ . 11828)]) #@34 Implementation of pushd in Lisp. (defalias 'eshell/pushd #[(&rest args) "@\211\2042\n\203\306\307!\210\202\317 \203+\310 \311 @!\210\f AB\312\313!\210)\202\317\314\315!\210\202\317\316\317 \"\203\261\320\321\322 \"!\211 GV\203N\314\323!\210\202\317 \324U\203[\314\325!\210\202\317 \203{ S 8\326 !\210\306\310 !\210\311!\210\312\313!\210)\202\317\310 B\211G \233 Z\327!\233\237\330\"\311@!\210A\312\313!\210-\202\317\310  \311 !\210!\203\305 \235\204\312 B\312\313!\210))\331\207" [args path eshell-pushd-tohome eshell-dirstack old eshell-pushd-dextract eshell/pushd "~" eshell/pwd eshell/cd eshell/dirs t error "pushd: No other directory" string-match "^\\+\\([0-9]\\)" string-to-number match-string 1 "Directory stack not that deep" 0 "Couldn't cd" eshell/popd reverse append nil dir ds dslen front back new-ds old-wd eshell-pushd-dunique] 5 (#$ . 12196)]) (put 'eshell/pushd 'eshell-no-numeric-conversions t) #@33 Implementation of popd in Lisp. (defalias 'eshell/popd #[(&rest args) "@\206\306\211;\203\307\310 \"\204\311\312 \"\210\313\314\315 \"!\211\316U\203<\n\204-\311\317!\210\320\n@!\210\nA\321\322!\210\202}\323 !\nGX\203y\324\nB \316V\203T S\202X\nG \\ \233\211\211A@)\320!\210\f\211AA\241\210 A\321\322!\210+\202}\311\325!\210)\324\207" [args ref eshell-dirstack ds cell x "+0" string-match "\\`\\([+-][0-9]+\\)\\'" error "popd: bad arg `%s'" string-to-number match-string 1 0 "popd: Directory stack empty" eshell/cd eshell/dirs t abs nil "Couldn't popd" dir] 5 (#$ . 13172)]) (put 'eshell/popd 'eshell-no-numeric-conversions t) #@33 Implementation of dirs in Lisp. (defalias 'eshell/dirs #[(&optional if-verbose) "\203 \205M\306\307 B\310\311!\211G\f\203K\f@\211GY\203< \312O\230\203<\311\313OP\n\314!\315Q\fA)\202\n,\207" [if-verbose eshell-dirtrack-verbose msg eshell-dirstack ds home "" eshell/pwd expand-file-name "~/" 0 nil directory-file-name " " homelen dir] 5 (#$ . 13829)]) #@62 Set the buffer's `eshell-last-dir-ring' from a history file. (defalias 'eshell-read-last-dir-ring #[nil "\211\203 \306\232\204\307 !\204\310\202k\311 \312\f!\313\314!rq\210\315\216\316 !\210db\210\n\fW\203M\317\320\310\321#\203M\322 \323\324!\"\210\nT\211\2022\325 !\204e\326 \311\"\327 \232\203e\330 \311\"\210\202M+ \211+)\207" [eshell-last-dir-ring-file-name file count eshell-last-dir-ring-size size ring "" file-readable-p nil 0 make-ring generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) insert-file-contents re-search-backward "^\\([^\n].*\\)$" t ring-insert-at-beginning match-string 1 ring-empty-p ring-ref eshell/pwd ring-remove #1# eshell-last-dir-ring] 5 (#$ . 14218)]) #@62 Write the buffer's `eshell-last-dir-ring' to a history file. (defalias 'eshell-write-last-dir-ring #[nil "\211\203 \306\232\204\n\203\307\n!\203\310\202d\311 !\204'\312\313 \"\202d\n\314 !\315\316!r q\210\317\216\f\320V\203K\fS\321 \f\"\322\261\210\2027\323 \322\261\210\324 \325\326!\210\327\216\330ed \310\331%.)\207" [eshell-last-dir-ring-file-name file eshell-last-dir-ring ring index #1=#:temp-buffer "" ring-empty-p nil file-writable-p message "Cannot write last-dir-ring file %s" ring-length generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) 0 ring-ref 10 eshell/pwd default-file-modes set-default-file-modes 384 ((set-default-file-modes modes)) write-region no-message modes] 7 (#$ . 15004)]) (provide 'em-dirs)