linum-relative-0.6/0000755000175000017500000000000013232061006014137 5ustar dogslegdogsleglinum-relative-0.6/screenshot/0000755000175000017500000000000013232061006016314 5ustar dogslegdogsleglinum-relative-0.6/screenshot/screenshot1.jpg0000644000175000017500000014126613232061006021266 0ustar dogslegdogslegJFIFeeC  !"$"$C"U !1AQ"a#2qr3BUV7Rb$%4E&su'5c3!1AQ23aq"R#B ?< /tdD7g0[qM{p +Q$T a[ HAq(ߴ+Dӂ2B /lkܘWH 4O [_g]mUH99y$sIӧ^crjµ89BN8H86LKHi} C W|b\\78.־JxcUoT&-!EvV{57wB9lC 5`$$ 'o 9Vy9@Mؤ |L c>mZ\Vܑ5>~0Zs]gix8og?PSW}g'W"lӲxᏝWsMNonAl~Buset?ο 8d/{kew=4T$z/vOE: ?džWs\/;+sMNl*=Z_aP]6 ǯ k翆>x_zO翆ʜߩwTUzHڿFB?O_'W|.翆|.;+77T/CŦ2t-pWJ% ܢ-q}?P 79qC҅.t,P?W=߆SOަx(]G)fqkMNonf~? 5L1wCo:FTOƸo J $\ d*og1CE"t=Cg- thj1jVX%-p##5^6bRmQt^dm[C/0s҄ >BNG sER3*=yp&Vce%l'hI;i'8,iKSr 0;^-%%Ip p\ ˽@ io%IaNyd?[z_kMNlnch~?Md/G Nkߧev4TFʽD6O_'WSi~BuyӲ_||ʜߨWfj mvѰO<>=`翆^|0;+77tUzGC?.: ǟ ?NJ{kӲo*s~wO^|lg'W/˿?%w=4TʽB6g'Wl㷆?%w=5_ 79R/-PO-P^{xerWsO/Ӓo*s~W_&[G?&[I?v翆˷_%w=4TFʽ /( ݤ5g!l--RVP;yֆi<=#lyiu!hV wvv;T oS$:ipo"ȫu*@@'8ZYGLqe ! )XN7k*)JQI?Fõ\..'ECRVKE[]!![H=COюq[{uR!/%KLzJ݀Nߨ~2q\WP|$9%̺F.vݣ!@yPZ n  &jv.a%2IARI:W1u[/JY&!Sa*Ki =awNJ?'ߎQ3k<FrqNaֳu湒aLܙ L/KgbTHH@zv;oZ=c=T< =ҵ%'gek]\LVP@FmԌ0.nR^}࢜47Ha[Q!vSpxJnN>WFVa۹G*NUFv&ɗ 뒕'-ʎyJSIX쳪c4%3.5А_B+K@+HPJ`Ii\ƒEsl)Sa-H i+%Pr;ʲ5p "Bӹew~եiks{hO%ET,ېRsejJIR R)JJRR()JJRR()JJRR:Hdׯ~ ]?y 9MzS}P7} WмõZRF] .c2wR)m rr 5wyj}Tdė=-& i[o;u;O͚S/$Q6ZP IǡgDElh7-hSJN=@j؟Me JH$=<\~1$K̗mr0˰Hٸ G 5xuYg@"4KC#rQ2"O\@6\U4Դ eqOtBjuvLݐrP/>)J.pRB`]HɸٽsŻ'7r@'ڴr^hU(n~>jRjg[M޾=qpKA0ZQYA 'W:֑urC2h8Ҙ0$W7.MK}$N, B0qܞ{ZBIJ6Evhf m',R qNgW"Hm )M+/\V8R=kmXZ28=jZ%F7.{%e.%{vyzJ*Ui+oG0Wn~YeBPr=~q@[:R̹/ws)@QuiYVIWs#=TǸ^ئ>~o<1]-Yqp;R2NB VX %!6NznzNU+F=Xw"9MHL8#)H{bJ I$qj{QcJrY详Hs~޾UijK-PM=mɚ$dIQl+kn{xG1Y-ܛ9"-Ĩ%%iإn O9Ol}WYe|;sԮ5<&38È^m@Gz覝Ka4A%!E$g~nN5ǵbJ.8[a*DgT7999Z-EVnJCLjmE*-[ 9H׬V^Tizy&\shʶ ՝Za EIknN2>5bH}RC0rJkR@R{ի [o!7EKHHض֤(v}6`pAWUͥGa,mPKl:T[$;jZ\ L|-Ei*3izr,ܾp \(a@G rN ^yxcى i*sq9xcW+itzc;7Bn:6BJ>[lڧ;ir{qG#eJiH%;mKgkJ[p,yYϧkȊ]im+=4!I<Z:g ݳVg@}$Xy惩i a$gA+H4Ap4@VҠFL;՞&gȖ"’0䠝YHԐզFm)yIRn *XLz{Tڕ+-=tgcI+u=vz»q0^Hp*Z3*RRT47MmK+e^m}ĊǍ΍cMQtdBn5P-iqqSJZsdgt4f9јJ{;$3}٫lE,7ČOHɌ[A * wy#>sYyo+'`E;z4L*f$Z܃g::-ld-e<'xڍ Hzڦ)1e8P!m(-9'Cx#U0)@gEIڕ%%%ٕ忥UWKnq[չ{N}Oƪ4:|9 @mo>uiiw'!v${>1浙d?:[ ҅6Bv<yYV3Wu%im,%dC뮕9`IS4tM ]C!f3v!;!jX8 f:F LVӲiJw}皨=.[t@UD݈lgNXv ,Y?]s=i6JاҮm9N[^iڔ!Q g\qjtYb;[ANZBҬ9Ҹ[t\pvY8H S6؉wDDQ‰BUY8SZ@ZOMeM8F^ ®N1v{_qJ[-v::ӳ@ӊZ{84^-[8F+(rOoc)K \M\٥+tċ}WxEL!LdYNw䫌 nq,iQi>m)NCr]*=D(2@c9bRZ_=/U$MqV=-6-=iŇ[P^|VwZӈ[l>ːHu#w Nk8%Ǘhb~߲JCN]-Vy n(//@sJ}py#w F98c޳JJ./;{ӯWk)4z9$>a-F#k aGyvXmwŏou܄)nW%:jikpP!=^ 7]䦛5{2!I j.-"k]CI 0N #ݫ5;trԩR/wiw(05 )4m**5Dol] RH)JP R)@)JP R)@)JP R)@t>ɯ\~AϲkOm? ;U&ifm)7؝% qJRBG)o?;U0!L>U w5Nf ȧS!5 HmitqekB[ZԤ$NN5p_R-l|$ﭺ3z,{Z2ߓ1mk&;8x㜏S(imC=wd}l4[Q 0*FAbgu/!M()#=YN?mfiL&Х!efI c%hˤgXmR 8^wN-e t,p#]6z$$%> 8Vuj^hspqºpsWbnx+[Ndi"F۔̨,F1CZau45 bӷ= -mC'.8RTv7.@9q]CHI)R#qR@A cյ^[ ӌcPK\ TCRRL‚x${#>Rrw~N'X]/P[|m +SF{#wcJܤ5ʊC%-%J]**I''Q>.S. [ۙ^ӻ 6E-:iM!!ARQR?G>kYxNwſ&&!֗{9##p`9X*ynBڤgh'fwvTv$=aL-IH r Ӆ%S,8[G=N%Zk]=m A(=0rxboJ]VjBc{BԑO S 1b*SgV m]u4{0j ;vmDeL-KF'VxVHtLHQJ>S1>*Ҽ]2]b+6#PܒN.obsCf?nL1-݄⇔YSiA+R0FHe`%*JbA BWE H6~"XWFKe!BZK%`߸ub-!l7y,6Wd$~ ikcra)/6; \)v -)iyI%9H PjjVMX^ҋcpm BH9~+JK0oSJϲFK2P)HCiBBU 9wcp+Zuuu[K tZm'$dܞ泆šܰ[-z묒`L+.)Hyke@Rs?oo:sp="G ߍyf*-% ;-I}FkzhHȶ4'.Q4Fu - SkPG^*-KD^dȣJgm /8U ǖ7,r=+?Sj_'zzyv]q+59vO[n-&JwR>NB1A59vVCϳ/ZaeV˒.u 2 3JY5x/"vJzy%.#;T3~[Vfݪ (R  Pe@. wVs,0y'Z)حRm7$aBpRS{ЃYZ6pgO!%6o>W$ qZ=M\y; iHMëe.:RTrqm*#= Zo3RRN)JJRR()JJRR()JJRR()JJRR()JJRR(? 5ԿTO? 5럂u(v'[lL6E_Ư:uoj+ƔȥpQK '9ԟ?}c`)2JT 88)*O9q<٥>"/Lj)YR( ˽5pp JtD4JH*P򮨙rć8F;*9~d%Ta\Hٹ9#9 2y=H ȅC[ؗhz*g 8p5z_va856Һ4 ' `{՚ JjX<[ u6C8Py*e{Rb#>} V ?e+^u5cb"d%Y)eTII +]rgDm, ml`y*6:]m m @ ]@ AW0j.F- ʊrN?! B7 TM~^>dMQׄ5: beFRZkʔpN3Oƹrzi0%)"3Fi# ώ*ZE;&ݣ&r(JT(t'kSib4vV·,5 O8Ҽzu:戸ɴ\9 oJ\!d ('b\CQc}*SJ Z3ǡkuhJ'GB( (Z NA#ݳQڭi[svMYJ@%Xخ>#dsjJU)I#xawmqsڶSk&1E<K+ǼFOo.Up.[%hJRr{ p+5bX-1/]k! 8@H8(B),xHXQ.Aسb.EBjy L Jl/h$OV&Iv-J'G+tz,D]D4R ϐ8gY"K͠M-req*_Uw4B3^r2#+ɷ:oMܿg^džs v:jRi `M򜁃~%[m01Rڔ+5.rO/CkY!RI8g }&(F㿨KY!27$@um⺭)@㌧"veȸeHKIFJ3)rF7gqޫ!w6'|̇ ҊVq yG^d@9dǂJ*xϧ*+]٤n(vPCBۆDK( xޔ; qvՖڍ ]37Fa#=V V%A ,N8̨;C,m-8ԔrF>嘒eً!֙u4%jݮ|]Ag3+%u6Hl_P yg$SSjD뎸CV›6aJT$q*YDf[ʖj9K*c~u-͕Do0 $:#g#'P rFV /CKw!Kd+ HRNk[ʼn5*^:g1P{%̬uq|ڗ*+ -NtBFԴr1[Z'*=sI׹H##簫5j׏%nS+ɖX*[ꀠT[~pRI;%kqD%#%JϢ~55D IJZ2܄%~̀eR^PnnINmDpFuTrGԶx-VVԤKؕp`sIP#YQuV{^LVΡ,joI9635y_f3 4JAB@9s]Y-i#c]R_$X[;6p$dqڥ\Ӷc!OiMZZ╠A9U=.w6Bq!CRpA[N^!rKHNdn0{<39J dimB!77N6rT $Hzn 0)iZRM9QY֫M$ %1ҕHuo)@QJzT; KJCHQJږFJJ3V:))gFpRmpZmxaSM \p-•sh#U;i`\c{K]Vz#~88To/wpJI󌸴H ZI;B< 7Lb-W5 M])ܜ(nNWrRY"ݞoh`%-:7v5y:Yy[M9V%82A;Oxr4@*ӂXk˳^ّ>DgQJ'=@Q@VBTRF8&+<\ߓR-ͥ2QwȐ][h腯zJH( RiJ ^ce*ZTۮ`{oA'#psށ SR@P >5%c#y论%%|UZ_ۖ$Dk=[ 8<`xM„Z~Sm+JT>jbKcpb*SrHO |qP0oIB I'XBW19'żi8>T}v<8:2K=Lݣwj63`* %زێR -W3d@GKj׮`@}S$co69qZo1m !XRRRwE*!(Fx#JGnpD" ZY6I6:B0V+s^<^#e9%-1pnnޤ8ݽ vK($P9W`K)#JT]ۻk$N"ޙzlR؛*A)EcX.ħd1\j[% ';L)gVˉRTRP)JP R)@)JP RG&gX1is`7mH~?7U4oG^I{CYxq\- )Znhy+8# 8PXX05l xyoIn!)(e)NRV =JS&Sa:w>U/S))lمF,c5D+-{]rH{+ܜJVo)h tX68tڷ!@d(֩5e!|Y108ҰS`8Hƪ u᮵t3ĕ !hcn8p);E`kY3ʈ,XqWRw"Y!xPܺ-H-s,T[ME[ m1R;Nohs R)yMm%ڧ&rL.a{Mvq&ݡɳ[-mw'\iŕm8; =r$랆!ZѺ4rӲKrp<5r3&鈶e2!m~l)%X8)d-9nO7u6"|G"INR))NFi4k[&ܴ) KI@K#JYK=:To~y䫻t es޴47kHꅲ%ɩh6`n'񚃥yW50O48VE3\ egm9. 0CL*yNJʔqE~lpHV9)bܕҷ&mw"JgԂGn#]ZN]L.Ħ^C FP) ^J@p-.%B' y jȰtZ\#.CYBY~Pqd"֨bd#M[n'rE,uY +Ǻ?;9d+.47 0Cq+;ĐZw|r=+ٹ+f,"<[S86zH98ҊRrWr39fͪ$Ot҆m+X`sp?4vbz]RO{N*5krPTtqn q>DT XÌda\@J~TBG8nI;KN5޲`MgfFq5aKFqLW =MU홭Jkum%hi;P%9$ >(DtHRejRؔ#d}[3+R;qι4 o5آZžF!-6 VsYtFJdHA:WьN=r1\| J)'~]R$7yՄ6yRNԚ+RYqm-,(TIКVYqD[/#2AR()JJRR()JJRR()JJRR:Hd׬~ _f/^O#}^-p1ڇ{ Z˼}n4똕)Մml4G#M>?7U:߶"*<(Sz~ ]4^FVJVc=-N4V0JJw(-MKD#E$( Bp( RudFjmm̂ҵd|qX qqgrW֧ӒZt$]ihPAJH5Bv抒̅%prǕC[`G^^A[3qZe<KRߋ F rƋgTU2p;QI?_%1Zn= .#"c=I y3Kfߩ-sэ12v`b~2#=6J3`sQځ>ݺګC)Mfb\>^c滤_mEsXc}4);p' TN:T{#n6a+SڠR8[s/1CmZ|@JA %nMk hnwB MMwv|GVtIpOr9n+Vn]bZeNj߉4Ȃ[Ӷw'8DGǹM{J8+aҹ. R=* qu?gslM E*4;6BMĖیBw{QЕd]'N};YaRZe{ʀ ,˯JfMѬV].:JT%#PNr^Ӑr:Q7&滇>v+K$0[>Bp K/UULS޸n1$<;O##& i[7ғ0%y=qbJj'FjT>0Y@J^䞡!\`|XQ5gmFKE;(RrlRp; WWw<(̿ .LY|7S d {8'8­;foԢ櫳R1m}T0U Nr9A'*E:=tK4 rZ]iHyi >0w$dp^_CW50ݴKy:+'N `,QiV?k%W&S~֔tYEzW% RN+rVƧV`!PJN|v//J:t:o9*LW$,bүm8z*JRR(? 5߂zE7d~Aϲk/ޭ~&Ws"'yLAXnL۝Ay׃idU='xL@inItiYm%HCiJ ?>"Lb)YZ2OYkhȑyH5Z3n,L@u*NyB%C@gБYY]LDq (F$'rxGҎ*ZY,zAR$|n<+BZ!kPȉlf2y*B AT=`r7Q.%d(2Jw1V;T[(QMJ֩6(gZ .p ù9If*6FrS[W0skJmBJ}ÌmVĢܗKVBV\e[ *<9Iښ6Eǜ:-Z prK]xW~* ƜokNs㚱YH^FVuz,')竸B7rNxj6$)m&<%.-H){}sKqϞ2y)Yʒ5#.|V]:˯u}-#+ .RsUڍ\lKZDǡCpv)R OY $(qfW5Ì3 HTV|8 E6һP JZBˆ m#=U,mҰ(Zdp&VQ:-3cϹΎRԅڟ靣%# 7uitUR?-HiE(㔜'}䚶-7ѕ1gܕ5vI$7lґ[O\}66Q[8'LvTYxcn%GZT ʼ|z"+6ٌ6 i)aJiRnRA_VKkw&..i!Kqw%.=Y{EOZٗ%ԥDd>7%Dߜt{UYryꯔsIJ뤶w6H t ek֞噕 ZA#VRsWMcvrv=lAem]*ynv07s3:]tm FRAa)jAtP%d(`s;FiشrmCRCa:绑Mn5:jU]&kjiBp-E> ,H_qԶ~S[o A 1 WyϕB=7JR{%'ү^؞R\k! ,g@B{\7UsOKq9+*9$O'jatޢ9pKrReeW8qj1Q L%H)Rq;qg*Q&Ź\"‘ <ǚ O4SIz֥+Ju']> w2AR-m72\Sn'ڜzTE*r}pi-N"KiVg?c/ٺ^}vǮ8([ruKޑv바jsh`<O< ȝMܦyK+28V680E(BR.F0TKj bA,Gov%I;>5J޸^.Dp% n_n9qoL–thPxqT;Z 5Dd☪ a%̄('`P;}ܜj›K,\uӒǺGTm( 9vauI`,6U gr> VtmDe91T9tI$q;TE( /wGC*kbCZTgNZ{8dQWtRdGB=2@GRRgȑoe b'PR }IF}jҔ)@)JP RIsooCȿyL9MzBej%N0kmȬ>?7Qz.m7wBVF㴂8ʬ^-m.*X%MgKugͭ>ZB;aYT~&Ћݗ#ޤ0JihxI))U{Fmi+Zk ;aZR{#>u>=Qa~ prDIR6sVУB:*R\ƩJWR()JJRTFj}bֆ$;{xDk^m]ꥦD\VS J@RVj$yH Z҂cp~7vK,=2C!x8_)] +9 r-9,dϐe=!n` rxtfj{#umoЂvP+W !#*887Qk;LP*QW}B֣\A ⎡Z ź\npV[RN̡[G$)'j {WWճlP@R&6% Q w q fZ\Crsޏ)-)(;v4>) Jۺ7r̲ð1 nTm8<6E .tba$00 ݔT sTM*jVFp#܇ZNK)’ <9f5$;KY6Ј ![Onh8V6)q%P^\JP(D[n黳n/G@Q[BTGǻ3MJT;b>ni[hXj>y̅d35p݌i9FsgϷ4*b秧uC-NyM%6A !c*H++\tKKsBܠqH!>xlBҷl1om*}ҷ[m8ܥ)DGoMBL)ճ2 C[<+PPXVHnS#(jnKJ PN!#q4=*~~~슙>X6ۉqe+YNT8{ywVRlU<2TYA"i[ j[-qp B^ՠ^ϢhP R)@)JP RG&[\sosE7mȌeS q 嬃䢴ѫbLCɎF/^"))b˼}nKGvۖSeD1< 9;fE]ݛLKrZQ%ӒBV+ݿ -i567'ڹV $5ǎ ~j!R嵅GV$ͯKh)m 薙U.+)JfvhVӂp85^""Z.'eup*ʨ)5zd':oMF}r̖@^09 ' #ʣ=a3t|=Ƣu}C꺁p?ot ~0} zwIχrtQ%2BdtO+ˎ'nV7+rkilۤƋeK_x@Z h%j'ttlTWǺĐF;G)XZ\B Ӑ2pE 9ۀx일}g9[.˳\er)TJJU 2sTήY{LyN@;N-hQ|n6H8ǝKv!4nUi f{M#k0sZ/1dixdںnǐj+r 6 !8{ߺyd{6;(c~K~gc{ۻZ ڊD!ջ2 i%D :%>dp pᓣa L7WВ@Χ|#r Oqm G Qy@0y vV#EuKa(#bh+*ʂ#8x5v~r~>"pRlrb&Er2Ss {VQ{\wD\锲VJF€R9Vyz#ěɷ-*mda;I@!p I)\.Ht˚D]/Wȍ҉"܄2)㍨2dS޸ks* ۍj%!dZ_:#΢CӚN7)A RKy95lFn5=x%6=9Mlޞh/`"M!=|*w8FŎeM] qDT{:}fVҜU^=xG63AraIJ2 HX8rN]CoL[Y\jJDv")neD 'h7[jmi -ԴS@)C;I#ZZDY&d&klC{ u y9lVFDz{;!B!N! < V^Nރ|LH~lLp\${9@7nߜc^1bYP RPc$X^X)7IY;6J܇=۷q&d[,ےxUrjY0 GQVkEQA#% q҃%۝q;6KKW0WXY963 a= *$ W6<#Qܺ"$w"aIHCnRS$`bЙ؛Sﴫ?Eʝ.`R{g9@^W \[ 7j,I O@AO_5n\∐dEն*uIt%D%Yϟƫ)7z(MZqi[+);SйXkBzm !d!@Fr}96Mu7[mѨnmpZ ) r,DCjC%M>ԡ m>)/B\K7N8[c2<.'ց,wqęKĠ,IRwd~jͦ27{sې`8S+@R\QtW`)ie%i BHpz5npa'CTRBO8JyTTM,_>l$6Hx4̏cU#:JaGnҢ N r&,zmThRIUts.P A=)dCB7{ o5v7;e&S[ u- `0;4dɯ"ǹA\˄Q11җTڥ# ʏ5nNO۝@vKTcӀQe=<nQ05!8Ɉ[IOH$b@(gF1!/01H2R)JE@Hǯ=@׫+ VʹEKp-gqk>mxuKD()%#9RHn.MBf2&`4_$pU`B^-Qu Rw';y VpZY6Ӎpal$-+9exlL?ս3̶#!K辧:{ 8OǵAjmYG޷ `$rG'dq?ɢ]v^ I%[kV!nR I&2 ((ܠ}W7 Mt_4&Im e.B@sʀمbب(H[c\jSOlT;7+ (1yl:]yL! l,<\br` :JK6/y9~^IRX$ 8G'׷j?.z4 +諢9r#; 2M$n1]m:Zt&s4=OUa!$Nscғz&@+䤩Ln, nM&)a)\ۡJTN@ǡd~)5DɔZ&A*-AH;IIOB Rr2dGt)2YW/#Z!^ِXUQ&OJBB$l#!g#SPovao.W*k_)醲eCjﻅ$v@/[xV|N&& =4)ARBRJֶ4I9rqͅGd+rոw(#{--6a:m6 clQُx=r>ëa~'Nuu/]/u%+P2IBNv(@$֕bRh{JeO)Oxe88kfYs2@1Mgh YNoAIT]7 5ͽm`Yu6"0i$TN.[xKj 1[.gl7+ $Ԡs8?U55[,ԷI)N2xUO.AYgY '3%SXvWsRwyN<p: ;yVO'=jIɹjILn~>gY)JU )@*N-)VF^z&#(kڭXt*׈vԄ `܅8oy+5Awm|5zI%;\gR0>$cdsZiU4')KpGYK0f֖D_SfEKm֐ҔJJeqV_-xY˗#pG. ؘVsFlYP9lgHlƞli>El TC%-o[QO.8P@$$yeXJ՗VT`-,5B6 }tib%i'z3G-wܧŒQ.^m8IVI1-a IRdV+C>+rWfZJpH m#ךW?u$*>ts"+_#g7ބtiV`ʰp{VV:G ƍJڒ;TM+!/kҚQ JFpq8[ + ,-ZeFRR1^hb/s5DIq37Pmk[0|ep~+s66Tv!2nNW;6!tBkʌqRT$mm9y`XƳ='QcxMXJNՐ@$OzgS-`fܴJiƶ+BH9w'BJCx}yf:ChmxV drF7zjm_& -eJXB;Pz5eon= (>[A:9TrOI1Hn=~%kY>{ p8T\ ޥ-qr{\qKI*ekml N@a]brN)ae)J^='Ԛɻ-EVS=)yM}[':fl0mͶnUK[%??]]raYrթaf,Wb Ԏ *!'o9 =8Z1K͒ʋX Zud]>yզ.$EiO;8E" *[SXu2PԔ48ğF" %N$BjCNJVV˩[PP8k7kԀMݶusZKygj|*Y);yǕT]֓eRLS~m`.^&CS 9)RlA7$cQ#>$[V]vɅn[ %[}}I&!G<) -_641’q5?Rݙ涉`6)Iv3a9P'܎;mWm&\#"T4J [nMv\SmIH1`u NqR{ XQޯW՟Jk;mL/3_sIiJ[n6PW(\%,ʚm7UǍ!6fZqR򿢃(`L)NE8[O6PB"a%y1gTH"9Z }Y<`YϦ;Ծ]r\E:zU )@)JP$~Aϲkտ/ޯ)>ɯV?/_zؘm]̊׌]3uʮRָP\V[JT xHP iQgka3>!*O\?;+ձVOnF7#='A88 Z~-A.2|Bvqdוּt4b4LH g4AT8mCf֦KQJBpA ?!^ܛs'NLmjm @pVv9aesZk,ɸ85Ar1aHR*qUWң<+u!rJU]XkVNksԕ-iMډ D`BŠ]%Xrfjnmqc4䄩M8SJԀ+Usȯ83$zm{*^/1) *!N$.'57in1NiakaJG6eE>O/4:Vo+]Îďܯ+Et.[>hT; t/ rx[sM?pć62͡E%@XIQ$O\F(3`IoZCh; >ʒv% HvqeHyHM22A=vМa%c#/̒2[8A[9RXNgɺlY5d9qTD=)9yOGaIR= h)Yʎ TN{9>ֹg_3 q)&8=d 5kV4= |8ܥO!!}[>N P Ppy9$UdGzLXHq"Hzێ>=)mm=pkR^aG2LjQ܆I AUp)DoLi ;F:eӺ^~Q6DYo4pQCDSmK Q饻lTʝ" HqaVR Ty] bcbTT;ᅳ$rI'Ar?JAMۢ')m}3X<ӌ},XM^Dbʇ*aGLN8U;9_{1Gb./Oa?*;aE-BpGe2VKt,Z\iK.ibm?R-+` ʎ}G$E[C #ˁ0LfB!;)ԥG%Y y?7U$cʋiEM7ya˼}ntdϖ]y)N6\J}ިdc<Ud +; jAIP QBU88ZɭfNȎd4q#dޣήr=R-eiR-ȘG#;Wۚ qؤ- BV!CP )S.A Q=zF\{r`6,gv$suno6ՁCA<<'>u)EK lT]e Gk&~)a*JF N-°Gud|*&ߪ}L4\uHڀTxiQ^K3Ĵ"҅)IB@ʈI;Fqϧ85l 5\G%ي}~JڷeCfP*ajR_K=++A C, +|-^x?E^ڢ/%7y\W[1e7Qm궯 >|<>UG :oC=8 nsU*O VGN;5ggYZ'z7r}F{֗&GuiL K-0%Y镐c*NW{ZWoH}(b'](}ĩHŸ+ FԚqyk^Е$㓁ڹ(XBVP?}̳ǕxiM>Eˍ ! p0 yTLe[ذ7j]#˪a}0 w}>HϕH燫_a\uzUt 6c0ֶṡR=Ei|g#I\[oTq#-zQjߕrJxJH b1OXk;ԩ.2+tT%8:vKeK`b[ʵ +JáDs'ns^w(>軮L&}8uĴ)($ z;פbshI-? qF㝣)J@'4ihvq$:aIǾ#fmr w fJ)J%JQ%#$ TRdc>u`HmB; ُ||q\ xjC& '0z~G.ld~)@)JP R)@)JP R)@)JP R)@)JP$~Aϲkտ/ޯ)>ɯV?/_zؘm]̊׌]3u 3p!/6yXK6|= 55xLECޠa.R롷ۈ-q)q>ò}WoU:ܗ JTq084$8{V јp{Y{"VkCHBM$cD~a qCqjbe%x7"~zLm XP J'qU"}ʖd$o >6i!i[ RJA%\+BM/~!($V R,JPyE8{N7c#Yifܭ\%! cHqRAWrA[%ZB[/7O6Zr8$tzVU?.YGEJJ#Odkm;ѥaIiKM<( BR9V']nÐe˟Ҕ 3i[ !e6bP#V-?"|kuچQitÛFݧ~*χ]YQtMSn<ĖdKnߛ|׀:ñmqʗr*eiYJN1'X>U^oohRbhJid$BHpO,ִ;cٝ-$YwcJ8*_p/`byLJJl KFF<=;!Z{Im 6A^C>/p"ntҐKkB)`<]ZltYQ 'ym+ޔovd\F\/r)#OgWJG)0۫B)!ⴡiaǐí-66 #h7qV3r(e\D+p#i$cD܊Żxj2e hCh AUFK>_B-UQ!:-[T6=Vk~:nmiRINp= j\XK,%ĜB@k4  AE:͛v*[ID'"q ]a#Ea!mJhwT1ϕDj[TIqTN=l7Q%J┇JÊ#H#Ў*>tN~l~Cu(NnMZjĜ0N,u|[S+qZećTfS"Xe$̎)K*RҒs ]jDEɈmIO V#x,m4mi)JR`,pY'xqBb&U=)*PYm 栯Wm; o6Rd%aI $款-IQHZJcnZ)GKi$>5*2J_Ki}~t#Jj6$wE [\QG0'V)[YXͻRH)JP R)@)JP R)@)JP$~Aϲkտ/ޯ)>ɯV?/_vؘm]̊׌|xx?3uW+3+jB p6P=9\x>?]Xo^@"t'gtԥ8},g.4ay]Y59Ӯ ?Z]H t=5\GL9ke qH@Qu.%IzV%j t3os6b:j XzSoZŽ#y\yFg$pJ_׆5'oYMwSIJ\Rr{c0q温QC^,*V122wq m}* %j9F99OˌHSQ#cBY[HWvd2ps^wzv+y.Bˇ;cjo6c%ܐอBA l$2ILհN%R6rBHH!^p1qXFf5M\f޸vR=bUBuf,<Թ \Vu)-P8ٔdpOn*Wgf\F%1"c-:+XIAx9W'pj$ ! -ϫ()R98;fܰ}\w%L)P֫0\Z_#ԁ!#!XVd'mعm˰%;0sAI|S,>7.,8,bT:RQBBSR7fz=T1]u2#:]C* ;yRۛnDuŐMh!sW+p\Wv+ƫ 2[%{]!8OHI[V>ݑirlSTrC\vhJ8 FJ`cUVGjpT 8dc<|;ċbJڶ2JW67cc8B;O8Li\df!CyA#wj(T: Yy9v!MeG@K"ʆ&e撔1 HܑK累A,pnTlˁ-'k W)‡c=̻LVqy˛qio0IaCrUO ֗-JTֲݯch2̘1$6\i*RFys B R)@)JP R)@)JP R)@)JP RG&[[5؋nהd׫~ _b/[lLv^Ek?*A֒ol {FmCe6;rFgUk)N q%H^; {|k9v;+ȬjqqNLC^ZCkݝ//p8V~خlٍ6DxrᶡЖ%) [G 'JuZS-Aw{Ǧ X|f& `e9*EVZRKJzHH;sc*2ݩ>FyR[$u JXtolG5י\|M)׍]l1;9rBLu8)x<)*mCEĺ)ےy 4 F$c8+[Wd[]qɷe%eaM)$d8⺮ko6ֳ^՝[hVˁ `f:*bDeZc[%Ntͣ<KDq"ĕgv[LIJb8<' 4)\u,Gf/?Him)$Nx$.-AMr4Aq35X[OĞʱKe].JB8q<-DnL˯ko=v˫J %+Ho;A#{V ֮7_d,:tR>G;SK[&Tz4OCt0ĥrwq@ԥgڭ7%B"Nk۵;?=P-2_HCiPjHJ#Ԁ+ɛ &5CduaK݂~nwqQR50i&-$&q `Jx׬O΂-[@%BJ99hl9򶣻=6b n;$$$a)씤öK1]&5=~CiyJ8#=f,K)QXmRAHXJJϙI\ҴB,*ےG!%+enHQRw$5_;MX;eJis8!+  ScO*sމ:)#j#}x5u7.L)%]l675$aIopwVvWS yrhPFyv)L2e[[2bf:j/ߐ1=F ^[&Z*r1ҸTqyEYYV(1۔{V[fŐi/ JrJ(\;&A0 ҂%{JVr=lUlVo~(|Aih9JбGAJT\ne8޼k8R>DP)@)JP R)@)JP R)@)JP$~Aϲkտ#Q}yL9Mzj/ݭw1{y{ngj\{n)B3Ag Pۻ].> hH/? ̶HO qGhxˡ\Y$7g4`|z!)[C?@8Wѷo1r2"jȂۭKcnAV[{/.rafUa%. sOO_ I暙Vh@1 T8?;R# h1oRdBeRBN#ޮ"aG٭oQ\_L8wJێ *(7vJ5esO[&.5ˎŖiHI.'!g=+WV/ZޚF72x݀y5<m+#/(q-ia{T 1u\Җ뇷yDMeRj!DoXǽwfb,:&1R)+HVs0Ns^gO:[oeŬ-28gg7/ a'jF;cU=Ni$ &‘.SjmOHH ӟ>xǟ\;Jۋ?Pmi$JIuE8h)BI x^ZxC_7$ݿ=>IgZyBiZ,5 buM-)n8ʔ/nHJld)_،|>Hee*m,IU86`vkӞ1K1{˛a둎rOMA cysg3_)RWsd e޴w#rnנ@`h''ʵ-莳mz\h9pB̠~aBG.eg/)UY-D5ǻ2M{CN.K!5c <1U2X]7lȴgD6*L 貦Jڳh{ܚӮ-Q})-ڥ)Vo ! x$V4/fE-S:˯: JC9@GhxnѽIRn)†`lA~m^hzZjBRpCGUas!{P3jS) $ OcDm+蘞4QKa!׋dQF{ⷤx97UyF  >\zX>h}?~_$mQ73Od'V<,IB&ekRڬ`Zi6ҾOY.wHd{rK(IVYxQLƘyP,Jp LhX0p:5ByfI iSyC<x1c Wѷ |;½n%Zz(Yr8A=#${8_ 0ʮO^K,*=r w>4ƅi_K97ML:aM iT1|,I1,4œXwt7''LHXCMuϣ}{S?7c=3]a5Wr'*!p ƅ_LHv ˨OӶ!Jd RS5;GP}_z_Sn? (Rg=/)Otƅ_d׫~ _b/^õ$Sn__UkMR$cy'V&Os"VoZ Oga4dx 1uzPNLGli 2[iNnQ ֏ׅ8ۣkTX0FxD½ 0C\#3xa;q]-% ) q].>1xc>& ,;T= |za^$Y/M;ll |Ԓ>=O5^J%%Wu>҉iQ L[qJt˾s_:a^W\ O6#Z^^qż㎪:GO=kpKw1*1.uofI򯗰CL+^^%M1mf]0=R]mIϸ@w .:Bd%a )Bٹ*pCL+S\MU]apBMJjN4$h%X%@W-/Q>Ґ⠸ 9$g|za^%ϯ NQS|"m WT |ۀBv s S6j.! ̜80++ 5whb>'`nRe Ub;2 f#WU'06nHןpCL+;|l؂ Niz1J7.jk&FݹLD6{ VHTɕl]0Ȃ.|pj۔;p>yN[ 4½ \o|%ȝg- q{g*-e2KUOO!o**y ((n21niz($/~}<+.\{Spݘ,?Z I*97/jNNtN㲖V떄rr py0CL+@b>x,$+ڥ9%{—⶿ N_ ^WZ G5ujy Ǻ)7N AW/|3rw/eߓe8pvJ1U_p0CL+}(g'^B>JJ @)*'ۻ x-i>GI΢6rC6F>0y5iz`L⇄(&Uw\wn,J|)YY'Y#2)q"J] #6c|za^\M[:m؍n-;R7gnN+d῱rEz ڐ>a½ 0CLo}w[|7:'u|za^ Go];+ 4ݡm؝[|7:'u|za^1_-wo]pCL+v#ӮbwSm؝izn}}ouN-wA½ 0CMwIQ?'u`k\ik-æ "4S*on/H 5,zp~U/[lX9ґ9;pu&6i)D%J/YN+D./B9tO)r-O~P)L+/B9tO)rc?EZ~?/B9t0B~' O?EZ~?]i:~' OҔ¹ T-?sOi:RW!v?_ꅧsT-?sJS .~P?_ꅧsJa\O~P)L+/B9tO)rc?EZ~?/B9t0B~' O?EZ~?]i:~' OҔ¹ T-?sOi:RW!v?_ꅧsT-?sJS .~P?_ꅧsJa\O~P)L+/B9tO)rc?EZ~?/B9t0B~' O?EZ~?]i:~' OҔ¹ T-?sOi:RW!v?_ꅧsT-?sJS .~P?_ꅧsJa\O~P)L+8:;E)$i G?3h[t YZ7Q}{g4TwEYlinum-relative-0.6/README.md0000644000175000017500000000463213232061006015423 0ustar dogslegdogsleg## linum-relative.el *display relative line number in emacs.* --- [![License GPLv2](https://img.shields.io/badge/license-GPL_v2-green.svg)](http://www.gnu.org/licenses/gpl-2.0.html) [![MELPA](http://melpa.org/packages/linum-relative-badge.svg)](http://melpa.org/#/linum-relative) [![MELPA Stable](http://stable.melpa.org/packages/linum-relative-badge.svg)](http://stable.melpa.org/#/linum-relative) ![Screenshot](https://github.com/coldnew/linum-relative/raw/master/screenshot/screenshot1.jpg) linum-relative lets you display relative line numbers for current buffer. ### Installation If you have `melpa` and `emacs24` installed, simply type: M-x package-install linum-relative And add the following to your .emacs (require 'linum-relative) ### Setup & Tips The non-interactive function *linum-on* (which should already be built into recent GNU Emacs distributions), turns on side-bar line numbering: (linum-on) and alternatively, by using command: M-x linum-relative-mode Relative line numbering should already be enabled by default (by installing this package), following *linum-on* or enabling *linum-mode*. One can also use the *linum-relative-toggle* interactive function to switch between relative and non-relative line numbering: M-x linum-relative-toggle ### Backends By default, linum-relative use *linum-mode* as backend, since linum-mode is based on emacs-lisp, you may have performance issue on large file. Since linum-relative 0.6, if you also use emacs version 26.1 or above, you can setup `linum-relative-backend` to make linum-relative-mode use `display-line-number-mode` as backend, which is implement in C so the performance is really nice. However some linum-relative's customize function may not work propely. Here's how to use `display-line-number-mode` as backend: ```elisp ;; Use `display-line-number-mode` as linum-mode's backend for smooth performance (setq linum-relative-backend 'display-line-numbers-mode) ``` ### Function Documentation #### `(linum-relative-in-helm-p)` Return non nil when in an helm session. #### `(linum-relative-on)` Turn ON linum-relative. #### `(linum-relative-off)` Turn OFF linum-relative. #### `(linum-relative-toggle)` Toggle between linum-relative and linum. -----
Markdown README file generated by make-readme-markdown.el
linum-relative-0.6/linum-relative.el0000644000175000017500000002437513232061006017431 0ustar dogslegdogsleg;;; linum-relative.el --- display relative line number in emacs. ;; Copyright (c) 2013 - 2016 Yen-Chin, Lee. ;; ;; Author: coldnew ;; Keywords: converience ;; X-URL: http://github.com/coldnew/linum-relative ;; Version: 0.6 ;; This file is not part of GNU Emacs. ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Commentary: ;; [![MELPA](http://melpa.org/packages/linum-relative-badge.svg)](http://melpa.org/#/linum-relative) ;; [![MELPA Stable](http://stable.melpa.org/packages/linum-relative-badge.svg)](http://stable.melpa.org/#/linum-relative) ;; ![Screenshot](https://github.com/coldnew/linum-relative/raw/master/screenshot/screenshot1.jpg) ;; ;; linum-relative lets you display relative line numbers for current buffer. ;; ;;; Installation: ;; If you have `melpa` and `emacs24` installed, simply type: ;; ;; M-x package-install linum-relative ;; ;; And add the following to your .emacs ;; ;; (require 'linum-relative) ;;; Setup & Tips: ;; The non-interactive function *linum-on* (which should already be built into recent GNU Emacs distributions), turns on side-bar line numbering: ;; ;; (linum-on) ;; ;; and alternatively, by using command: ;; ;; M-x linum-relative-mode ;; ;; Relative line numbering should already be enabled by default (by installing this package), following *linum-on* or enabling *linum-mode*. One can also use the *linum-relative-toggle* interactive function to switch between relative and non-relative line numbering: ;; ;; M-x linum-relative-toggle ;; ;;; Backends ;; By default, linum-relative use *linum-mode* as backend, since linum-mode is based on emacs-lisp, you may have performance issue on large file. ;; ;; Since linum-relative 0.6, if you also use emacs version 26.1 or above, you can setup `linum-relative-backend' to make linum-relative-mode use `display-line-number-mode' as backend, which is implement in C so the performance is really nice. ;; ;; However some linum-relative's customize function may not work propely. ;; ;; Here's how to use `display-line-number-mode' as backend: ;; ;; ```elisp ;; ;; Use `display-line-number-mode' as linum-mode's backend for smooth performance ;; (setq linum-relative-backend 'display-line-numbers-mode) ;; ``` ;;; Code: (eval-when-compile (require 'cl)) ;; display-line-numbers is shipped with emacs 26.0.50 (when (version<= "26.0.50" emacs-version) (require 'display-line-numbers)) (require 'linum) (defgroup linum-relative nil "Show relative line numbers on fringe." :group 'convenience) ;;;; Faces ;; NOTE: can't work on `display-line-numbers-mode' (defface linum-relative-current-face '((t :inherit linum :foreground "#CAE682" :background "#444444" :weight bold)) "Face for displaying current line. This won't take effect if you choose `display-line-numbers-mode' backend." :group 'linum-relative) ;;;; Customize Variables ;; NOTE: can't work on `display-line-numbers-mode' (defcustom linum-relative-current-symbol "0" "The symbol you want to show on the current line, by default it is 0. You can use any string like \"->\". If this variable is empty string, linum-releative will show the real line number at current line. This won't take effect if you choose `display-line-numbers-mode' backend." :type 'string :group 'linum-relative) ;; NOTE: can't work on `display-line-numbers-mode' (defcustom linum-relative-plusp-offset 0 "Offset to use for positive relative line numbers. This won't take effect if you choose `display-line-numbers-mode' backend." :type 'integer :group 'linum-relative) ;; NOTE: can't work on `display-line-numbers-mode' (defcustom linum-relative-format "%3s" "Format for each line. Good for adding spaces/paddings like so: \" %3s \" This won't take effect if you choose `display-line-numbers-mode' backend." :type 'string :group 'linum-relative) (defcustom linum-relative-lighter " LR" "Lighter of linum-relative-mode" :type 'string :group 'linum-relative) (defcustom linum-relative-backend 'linum-mode "The default backend for `linum-relative', by default we use `linum-mode' (slow), you can switch to `display-line-numbers-mode' if you has emacs-version greater than 26.0.50." :group 'linum-relative :type '(choice (const :tag "Use display-line-numbers-mode as backend" display-line-numbers-mode) (other :tag "Use linum-mode as backend" linum-mode))) ;;;; Internal Variables ;; NOTE: can't work on `display-line-numbers-mode' (defvar linum-relative-last-pos 0 "Store last position.") ;; NOTE: can't work on `display-line-numbers-mode' (defvar linum-relative-user-format linum-format "Store the users linum-format") (defvar linum-relative-user-type (bound-and-true-p display-line-numbers-type) "Store the user's `display-line-number-type' value") ;;;; helm support (defvar helm-buffer) (defvar helm-candidate-separator) (defvar helm-alive-p) (declare-function with-helm-buffer "ext:helm-lib.el" (&rest body)) (declare-function helm-candidate-number-at-point "ext:helm.el") (declare-function helm-pos-header-line-p "ext:helm.el") (defmacro linum-relative-with-helm-buffer (&rest body) (when (fboundp 'with-helm-buffer) `(with-helm-buffer ,@body))) (defun linum-relative-in-helm-p () "Return non nil when in an helm session." (bound-and-true-p helm-alive-p)) (defun linum-relative-for-helm () (linum-relative-with-helm-buffer (make-local-variable 'linum-relative-last-pos)) (linum-update helm-buffer)) ;;;; Advices (defadvice linum-update (before relative-linum-update activate) "This advice get the last position of linum." (if (linum-relative-in-helm-p) (setq linum-relative-last-pos (helm-candidate-number-at-point)) (setq linum-relative-last-pos (line-number-at-pos)))) ;;;; Functions (defun linum-relative (line-number) (when (linum-relative-in-helm-p) (linum-relative-with-helm-buffer (if (looking-at helm-candidate-separator) (setq line-number (save-excursion (forward-line 1) (helm-candidate-number-at-point))) (setq line-number (helm-candidate-number-at-point))))) (let* ((diff1 (abs (- line-number linum-relative-last-pos))) (diff (if (minusp diff1) diff1 (+ diff1 linum-relative-plusp-offset))) (current-p (= diff linum-relative-plusp-offset)) (current-symbol (if (and linum-relative-current-symbol current-p) (if (string= "" linum-relative-current-symbol) (number-to-string line-number) linum-relative-current-symbol) (number-to-string diff))) (face (if current-p 'linum-relative-current-face 'linum))) (if (and (linum-relative-in-helm-p) (linum-relative-with-helm-buffer (or (looking-at helm-candidate-separator) (eq (point-at-bol) (point-at-eol)) (helm-pos-header-line-p)))) (propertize (format linum-relative-format current-symbol) 'invisible t) (propertize (format linum-relative-format current-symbol) 'face face)))) (defun linum-relative-on () "Turn ON linum-relative." (cond ;; if use `display-line-numbers-mode' ((eq linum-relative-backend 'display-line-numbers-mode) (unless (eq linum-relative-user-type 'relative) (setq linum-relative-user-type display-line-numbers-type) (setq display-line-numbers-type 'relative)) (display-line-numbers-mode 1)) ;; default for linum-mode backend (t (unless (eq linum-format 'linum-relative) (setq linum-relative-user-format linum-format) (setq linum-format 'linum-relative)) (linum-mode 1)))) (defun linum-relative-off () "Turn OFF linum-relative." (cond ;; if use `display-line-numbers-mode' ((eq linum-relative-backend 'display-line-numbers-mode) (setq display-line-numbers-type linum-relative-user-type) (display-line-numbers-mode -1)) ;; default for linum-mode backend (t (setq linum-format linum-relative-user-format) (linum-mode -1)))) ;;;###autoload (defun linum-relative-toggle () "Toggle between linum-relative and linum." (interactive) (cond ;; if use `display-line-numbers-mode' ((eq linum-relative-backend 'display-line-numbers-mode) (if (eq display-line-numbers-type 'relative) (linum-relative-off) (linum-relative-on))) ;; default for linum-mode backend (t (if (eq linum-format 'linum-relative) (linum-relative-off) (linum-relative-on))))) ;;;###autoload (define-minor-mode linum-relative-mode "Display relative line numbers for current buffer." :group 'linum-relative :lighter linum-relative-lighter (if linum-relative-mode (linum-relative-on) (linum-relative-off))) ;;;###autoload (define-global-minor-mode linum-relative-global-mode linum-relative-mode (lambda () (unless (linum-relative-in-helm-p) (linum-relative-mode 1)))) ;;;; Interaction of helm with linum-relative (defun helm--turn-on-linum-relative () (with-helm-buffer (linum-relative-mode 1))) ;;;###autoload (define-minor-mode helm-linum-relative-mode "Turn on `linum-relative-mode' in helm." :group 'helm (if helm-linum-relative-mode (progn (add-hook 'helm-move-selection-after-hook 'linum-relative-for-helm) (add-hook 'helm-after-initialize-hook 'helm--turn-on-linum-relative) (add-hook 'helm-after-preselection-hook 'linum-relative-for-helm)) (remove-hook 'helm-move-selection-after-hook 'linum-relative-for-helm) (remove-hook 'helm-after-initialize-hook 'helm--turn-on-linum-relative) (remove-hook 'helm-after-preselection-hook 'linum-relative-for-helm))) (provide 'linum-relative) ;;; linum-relative.el ends here. linum-relative-0.6/Makefile0000644000175000017500000000071113232061006015576 0ustar dogslegdogslegEMACS ?= emacs BATCH := $(EMACS) $(EFLAGS) -batch -q -no-site-file -L . all: linum-relative.elc README.md: make-readme-markdown.el emacs --script $< $@ 2>/dev/null make-readme-markdown.el: wget -q -O $@ https://raw.github.com/mgalgs/make-readme-markdown/master/make-readme-markdown.el .INTERMEDIATE: make-readme-markdown.el clean: $(RM) *.elc %.elc: %.el $(BATCH) --eval '(byte-compile-file "$<")' .PHONY: check clean README.md