pip-requirements.el-0.5/0000755000175000017500000000000012773627051015132 5ustar dogslegdogslegpip-requirements.el-0.5/README.md0000644000175000017500000000354112773627051016414 0ustar dogslegdogsleg# pip-requirements.el [![MELPA](http://melpa.org/packages/pip-requirements-badge.svg)](http://melpa.org/#/pip-requirements) [![MELPA Stable](http://stable.melpa.org/packages/pip-requirements-badge.svg)](http://stable.melpa.org/#/pip-requirements) This is a major mode for editing pip requirements files, with the following features: * Syntax highlighting * Togglable comments * Auto completion of package names from PyPI ![pip-requirements](pip_requirements_screenshot.png) ## Auto Completion This major mode provides completion of package names from PyPI. It supports Emacs' built-in `completion-at-point` command and thus also [Company][] via its generic CAPF backend. To use [Auto Complete][] instead, add the following to your `init.el`: ```cl (add-hook 'pip-requirements-mode-hook #'pip-requirements-auto-complete-setup) ``` [Company]: https://github.com/company-mode/company-mode [Auto Complete]: https://github.com/auto-complete/auto-complete ## Changelog ### 0.5 Added support for completion-at-point-functions. Autocomplete is now optional, and pip-requirements also works with company (via `company-capf`). `.` and `_` are now supported in package names, and `.postN` is now supported in version numbers. `pip-requirements-mode` now inherits from `prog-mode`. `requirements.in` files are now recognised as pip requirements files. ### 0.4 Auto-completion of package names! See screenshot above. Requires auto-complete, and your Emacs must be compiled with libxml support. Added support for toggling comments with `M-;`. ### 0.3 Improved syntax highlighting in different version strings. Improved detection of pip requirements files (it's now anything that matches `*.pip` or `requirements*.txt`). ### 0.2 First public release, just syntax highlighting. ## Credits This package is very much inspired by https://github.com/wuub/requirementstxt for Sublime. pip-requirements.el-0.5/pip_requirements_screenshot.png0000644000175000017500000014643412773627051023504 0ustar dogslegdogslegPNG  IHDR}jsBIT|dtEXtSoftwaregnome-screenshot> IDATxw|elϦJ/Ć`?=xr6Tl?잧< tAz賓nfXɦ&}^bg晧N<3 B!B!B!B!B!G%tm+B!@ _V޹snp:E I5B!8 TU-wݻ=ŋ;ɞC6Z ̙fXfwX1͝ !B!@uu5۷og֭~+{UD7 6?l***Z|BwM+B!dnݺѣGEAAV: >}:++ Um2C!B`t&%&&V͝;w=s]0V58+/AB!Cׯ&xex;iEBf3n++B!aa61 0{5qn.pVE f!Bq,h4P,,j3P !Bq0R0סW=΀B!X0p x{5HB!Y7h{)P?!qB!ǚrY!g!B! pn8og!Bqi47|IBtt:1Lh55!P۸hY!>=NywtIy+׮㇥?QQY% !𣴶gY!EįϮ}LFtdD'Ghlu]giuF !]Q#߻q11*BqD;Ӹͦ;h^|aCAqBt*vۏGFI [*)*)!l&[/ngonFWXn'&*>ݳ0}r 8Ku̴n$cbon>dW}L&r=#Ąf566'HHTU Z:CǴNY=r;$++ï3GUUSR^ .:=Z!UqSUۃ͟;/fíz3$v!x] x9\y\x z^{>V Vo]/(%%ɷ߱~6ET( }zdk~oeM |y}wٰɗ)FpUZއ_ux剩$u ]9w>ſ;tIe&_^]=SG !8 <8].>b&:N}{Ag!D};!,bL{*U5ռ|ƞph`LЯgw< Ttq%ѯgw<:: Be?h8Si5D3$?Wƞ<KJbwx-z *%e7xW^x.. =ӿwOjVJJ60~ɵ %>6EQش}'ȥ'.&EQضk+NYF) &3LtqN.:&m+76$_a٪͖U:m=y t٪FG}wPQ`ݦ1tNm|[vϤkk{/k÷xh maaWX:Ɩ[^{h4|knSU&mW{>󶎩RI^=q78y$Ųp ֫'~Bwxt\?7p{ ._NqI)1>_FjnʻQW||r x><<Yz56kD|\9QgOhuzQ#F;s{nBii)fٷLce$%&kr1: /h6dL6r49a5osu2h6s@! ʹѽ;&kD=;ZD5W5VUU<f_ߝ~%%LrV=4JKKn,Y~ocձq;tC 朳p?7g~KdD媀Ï_6tZzdN?T{2iGT 0ػo?oշh9vZgo7y k2yK-'&::tyY!Gii~کn xKJZj0 JPuSQQA͆[g6yݷ/{ŗ(++~}֟=LnN翘h6j(CIi)qtMOݎ^G HtƝqoyع3w͐9\p޹,]7])MrYkk1CokRXT9*nK+yw1TzӦ1zHƏ;ӗk0˘gڳWTo~n-L8[ܧw/NsJe6woKKKg]ڣ3B!B8ϥ d{^~>|y6o݊Fጱqϝw`2:JM׿_`F8bú3?;v|ŊUr~A3@bB7\{ O{gL~ b_l 2)$>>o: zyXWV_oݻ:W^}-_s5xe^p_()-̾:iq$|?˵ DeUU%mk>zLwo$v]r1fÇtuh44 x!xmdES4s!w󥳮u_Ú6uMBB>9:6 o͛y'98r +'1sl.<<N:F? GϛヌjEՠ( n3l8xRw_`h LF_~^^>={]{9Qݷ3O_V`{N;u ?XɆ28!99|/̜O?oO>}zҹڜ;vׇ!s .O{ɷik!1-/=>6&RtkW`- mܴ߻]{.7ݳ|ILH }͌x螕ųO?[-wIݹkCG6>>A| \˘7>{N7h>{]u܂=]^or3Ep/poicpژ1lٺ1g-ږߝ G!U-h23 Cq= z"ǪNU6~HOK*_@bBBsh(%%&2j~G.8VVVOJr2Ç 7\MYVӺyڷV__[F ƈص{^y<$LEF_f>6~e{Ͻn{[ǵgpbXXjƝqk3gfɲLfojп驩Tׄ;m13Vrg"«Kg 3ѷoRyɧ-BEaqCVn~~K-[=?Ç %%9_};n8mb>RRX̛V FMN~xx*R(-+g9x~3jRUUMuM5/*II:64dp?/ ^lߢpSmvvG޽0ٓ-[ӵ=GꎗX,NǸ3N'.6sX? #NaQY㷿(~A0dϽh{K:n111ng4)(*:,mYtnk7FᱧfӇS#{rfjYav`]]vKߝCC;Zڮ(6ϗκ>s[JJmBѲ. "#9Sf,~X{g|^z>UU iڵvߺ<s޹W \_t!7n?/BZj7J(.&'%W^bgÂ).)!&:Ç1+ܙǟG3O?Aձ!F3O>oxl^qqqNPU]oIeUk;}?eBh4$'%10{o|w^n`00bl-4qhnLA{]u܀67=֖/&{@&19фÂƲ~bђ%h42xlsI.N]w󥳮jn|smY!D{~ƌ>;JIi)1< p`uXNQS7<<TZL9$&$txXp:$&$|@l6JJKIJL\{GB۫whh㡼Ȉ綾;|*-ձ9Pa!8̛7'^Ck[qVN$̍)%GwFC\ljq{GB۫whhF 붾;|*-ձᾞ!jB!$B!D$&$h] !:m}wֱf!qB!"8 !B B!@csrr9A2B!G6<%=B!B dj$%%p 薒#ͬddm;Xnߺp ;YsSU]ẋ׻'啕<#8SYd9E]X;!B YCYEšє[ϾUAذi KUU}bVg!B?αєWzC :PK%K% K$B!G8o,x}sCucc8{XmE^ٺ}':^3ٵ{>b4?qqkز}'v ^ZALd4zڶ{} 7Scy_Y+'''2tP6118v}G B|l 1_oZ-{fzTUEq Ol۱9 !B-:8GFDp9|'IGpI0㳯;RD?Z[w"_vϚuuP6oNmm4;a!l6 '"))Ra$::nɾ9-G g+ [ Ǐ@n+ж'%&p/`ϫ`HN66{򉉉RYż͘FS\\ynfΞcO&/vr9lB! kV8 ?D=YӊPձ ju ߗ]RZVΈa8p޷?ׯƒŒT@Zj7y EQ|iEiY9V ?(8.Ps ?BUU z= UUe\.ZKJIIJdE0`v>zv-BU:X+Wv~"VZbEa!55-{=)NawtCS`q1ZnMʨSVn!99o{DJʃ.5Rb"jjdӉ^(B!6q.XHII`q evK`o>`DGGITT$ɉ F*TvASU¢՝"TF `q)E>8"6Sa$22x Nvɣ5byϲWilظ!АbcX+$##܂Bl6;&>>N¥?Q$OB!Qc%'_t$?Ю|zde=r;gGnwUcqC8qnv^ȈZJ@>0 XM/`Ūݟ3ֲjZ5BEK&g`N:a$n oHJ06nJ(3|zyAB!b3w_;'FB!BHI~?<'N^5 qB!X!B!Y!BH,B!D$pB!"8 !BnizNUaq7jTdܰkjr!RHʆL8O >QwuEeaP3|z ΀tP4P̀B!ı$$=ߕyp_5ߖ;87{} 4NZ'@P۟Ϡ?>5nmPLV}нm g<]/B!Zgv?Zhq0ΗKboY}?=gL},}j<* og{%oCS`m(BqLI>U.Ό1KBq6Ϥ3C:u vKl|Ujy(-f*\Q*SL7S>)mRRzڗ8#7&jPnYsa `; NG!.3#Ѐ/|[pMq Qpl ʀ0StK7L.vXeZ(Ը1nO탵qruR& ,_c <vW:8%J#T<,8hhvzj+lq{G#@v.~_E fs6caϲQ!⏤SJNpBա >s-_^YdY_Qᙼj=*NW;9>B '%ooZ7 5)F'r=*3阔`bAR4۷et.gi6w^4: oO7,.~m@O!⏦SgP(@k4fTd3 4Fj^\ZO}%.q:= oeN;mn WBBn644 !BQW?™?Z.QiQ2>.npebfԢQA1EqF n?P7e]h`?p7٣Yq@kѷ/#,u7h%ϴB!ıbg̘9!55uĥ}޷=`Nv,qIp"B!\%my8q%@-`=iúe44?4 LZ8Q93˅B!86tI|ksc xT;X #½3(M+L?'B!D0$p۾*+J"v}ӞB!hB!Bs$pB!"8 !Bq̟b5lj%<0n?>>з޻&ӣ{wso+.`E<̿:S4\ I 7sQwuEeaP3UB!C Y<Ȭㆤ0̭aՉ'ظiO>,55[PfΚEy`=ZNxd7|lX)xw<{JB!1#dsQKK!#v¢.)5555ptS(_^}Tڗ砦~* }Y!B4ÁCi\PnH<@1)Twm|($MjE~o={pUW1({_ܹ~y~کoqu3ed ̦_y%˖^zBOànk)'&!B?ίZy`-b [*h:&|QjgqS<N#4ۧgYp5,.ofEqq1/w)=wNyy?X$=yx6EգzVPyaٹӊB!CplqX*.U|gӮI &6Z]<[ JLާŁ N'`q1t.B_h/ok~i?#̚ ={GR4oY4f͝׻= p`VB!B<90ۤRlvrm)4/(`qu3qzN'+.OCRR:Nuo򟂮@yf|5zNIGzo\,ث;!B?. # [ŤQ*VK**rtt4%%z͜14[ر ^MttL^xN{-U%Z^7T#4NAP!BKjJV[UyT_@H@EDD-GFF*͊g=|y|iƖ{n* ֑:Tc+`g!Z!K67"PXntVWPi-Dp!9NEQ0TVV҇30v߸V8%> *`ūAg-Bq/wdjzoƌ:[T@\.ߘgdffrqWPU֬s&bկ(uh4ZZP( d7ŀF'x} 7¯o5 Os }T:TBѦ6!Bqy?Wsc8<~o@jw *g3{NϿ5{wsP4sh`?pM\/am6B!NJ3,oF-~%?4Tܲ<.X)8DvrB!D;*ghMz3ye-}j߀gz{B!GS\`2/QUܒbfYGN!azJmWVD|-3@5=CTX5Jfohǯ~A3RO:!B#$ *Q:<|\ {(ryNKe@)uYR`YULkx{$nlUD%G(Aܵ3#eE!02rޟ4&y' Q9>>6 !BIH-V7?W9y<=UQx`-_6ά1Ԫy+-*Y F- L\u8]OmWFc_Uѥ~}rr6l vƷ F}Mo!Bqxt8p~P2jMSpުVy+\ ^XuV[v&B!BܢwlPAwUB!Q d>ڨʅpWC!B%g!B!!B!Y!BH,B!DL0fuɶhqaY`#AZC- }_ˤ`mL7hȹ!&ni<9+dISe ;(:( k?ҝϧNtJOF^kfЮs]90:J|=(X|>B!D(q=W$?8,큔ڭ6vJ&l.gyU y"TCU[Kg<.X)8Dv .P~>vE$i鿼;B!BqGpf;=<*NGz3\6KhQK7@ P9rxsS.~z !mphF8ݍZպ9?ΈӣYW=E0ZX=P&-_]luˠ8߶&0>*l^_3Lpl^ /3rcR #|̫sMbF|qkQI-)fuDrǬUnH=S Q0;47٬HcOUe5͎knF[{#!+ * j`J hagyx\*9SOnk)'Wv? URrhC/nwFʐS!VHzgprx!+|e6,nN΋5)px|cl'l.,tᡀ?L àx.IfԸ›hOdDEŕNHz8. ,_0-l _i= EqFnI㍢Z6[]\y Qpl ʀ0StI[ ##ŕ8XEw;R̔:=,΁U0as9Z1 ٪JJُP 9k j(Oգ[ et7xc|/']KlzSeعd]ݮ_}g-T@ (ޡDB!DW I<_C[*'3LL0uW2;INC8M5]}~w*UnշXV}U9=N2p|NJ0\y*3阔` =*ƏZT=s-_^YdY#K*0պwo*(\phYn՛NmLjNIڠ1 <:|9y)k%IcиZcˢm^J4R}̀/Y(|ҲO!=4 HvfPQ ծW;i!qP=.=^i{f( ,7xQt!ǮȶX]\oB(xTU,.b |PlcptYe;`P ˵{mE+\h[pS۠^Q05XeP7FQeUYb]6`è5fGH1h:¯A̜WRha'o5NnLàQpx7Kn,EپSM1q.ͬB֔.{/ª7#.s CϹ[eiOGBY?!KH_!G].[K!8B87uڣU JPRq0F>(qNMV{jwOpCBIc U~[fgR^&-gyJgvD7cUyTUUK,v*NU%ф~'yoEVYF EzxL輠ZU)EMj{ Z^5SN{4]3i IDATogo4ik[Oe[Ԑs} u5ᬭb񛓛vUz97ͻ^7 !8B8g45 FFesPG2"*mack7܌Caz6[]-ԂRJ!*M?a&-; ]I l5OKmw*j6jyr/}C|& ۤeweVSzs͘"(;ka1T#ٻ(tN'BF^ r]AE e5#2 Q/3 0e"@CXBҝ(R$n|Cשy;|x89U-:A!(fZ8j}|>! ǿOǸX~3z4w`?9lFmG%U7Ԭ6KnqjHsp`yլg!+B&4+ ,z{0<ȓyuW35ʇmՔ`/Y)9(;UkEm}rWnL O-}CfD\v 4F/>uz伙vX(Ν|W+0^z{>Tg﫩+g=rvI5 ^` B!M$JY6f|zo[iMu\v(O?W>׳wN| \ΔTU~xj4l.f5O{l:av" R';=V^:n" 8j쫴v̿G05Z_ -l+bgfzcKOx/Yu_%}-L!C,=[?s7^K ^W7]^(5kT\p[S\:mPpZ*J8+,]lj]A7yioPSWnx^s+)B Ȩ6mZEG3/ttZ-uH{Zm𦢼c'Nq(hSQ#@slqG^M&.^1 tFלvL6Mn)+2I&**+ou:w2l nu:B!D5YDQIGi"`2 upj4ѭImǩy-JMeX&9ӹcEX[B!Mdspp %Q|vUDGE?6Un1v4Mt:Y-2VSp{ĭNE!jr"l09GѾ]C]{8vgz'O@?%GsCnwDD OPpUU=N#xxxGXc;w 1UcR;@BqY:uhN=1x{m5完!=gH lԕ@?9՟B!Qᠸё\*,{ZT7:ki]( cfyG?VӉfCWb+TSqQ1qڢh\Z֠j  elUKtNބʹz)RM4]Z:uu|| h5Z- ^hn'>}'<p\j*CлgwNpiȍl9rJY !wFťXp >_,RqHLsjs'=FhH0':* %1sw8ӋQߑ{ZH=\, ,4{۶&,4_eUK{v'&:(;1_:LjՒ0F _|k]{<4XptrEڵko7)/{ЩC,QŶSRG0س2SXG#eobBuw~6՜]J۵wsgc0d&<""Z'B܎9*.gncĶk'f3N*1gϱc׿ߑ{CE]{~TTLAA!}ztr{۲gBɑٻ nv;ҷOOv%u~e pa|{0_8'&t'::Rٽ+t \_S{Cs,h}ѕGn񓜬wNtm'׽od:HYX'Nχvtk_ Vu;?Wr.))U(zvråKupytcOP!4}FFFi<8,:3jߏoNw'|ѣ!K O͛7'@WEfdOnC6xF6s"BۃBp"h5O!wpyxֻJ-߾KKBqcuW !B!q,)i<B!Ug!B!\pS (!}s:`u6vB!^ !Bq+5{'{H!B!I )mBH@9S1%ȣfeȮR3)?דWڄp7Az-g6>+k7}o_,Vxi`r>8VT^nS-hH/>?/ GE%fl?/ "Ơ'bOgcOmCIʼtIê<ϟJi_Λx? !B[kdxE]'n3 q'l|p?Ϛs&ލmAR*8_/~79aW wmBi/#ЛUC}CpvXZ0V?Hh.Tx%<+J&bJy`|tZĤDxޕB!-5r2͗*%,lKl]'\ JrUTo/KJ݉`v89We#T6T@T5+6 *~*1AlT6CUL>x']a%:-`vLK?[ s&,F=m.'B!nFZX_O%VVݗVho : ,1N1;.()5@'/+TV9RΧ'_+Sm/1|LM`]lwb$D#8kmqvSf*m|trB!QNJvU{v_o#ā*N^kJz5嚮N_.@:M|JmmmNNUnr?ĵPb˽-ϣ&&Dhj pϫ/j!wB!m4p.9:y[?KSՙ`o71YXN :$a;Lɪl2_.~toYqF!Bq{jTrʫ르zYq=K ŵf}tz8TQV>˫I 2~yf8CK'ʯs>8q ,W|ΥjR+N'Y& >UʣDžB!t8Ky} 9X^{Cֺ oQl+2Nil)+k|`vJ}Qۂo*bG7wkOk4V'l<ߋ~^x۹ !B_F;_FK/>KeCA9;럥6EfDž=T9o>zB=3Z*+?_Q[8R5~ϫmB(>jf Z!B7Ȩ6mZ4se#9lfwo.5)Q.B!wc͛ĉf{3`i'pcA<~v1;'@e݅B!4KjFQnwb_ĥ 6' 橖4]^ͤ)YP!B[ U[4B!B4ZO㑄x贬שzcLFOFĀX:`s8Ƭ3J##.*m{,۔sS2WIlT U[O5}db~L5 噤@v俷 .*E]'ٽq_/uaOy,tPWJX{?ou^ W !BFû"e@,ێr\)mGZ8 Jd>X~B!}.lÏ+K0+%դ:q&3j;݁|;p%Y'.ĠѪ鄥?jd&L1چ)sr6l9ϟdnjm/?`ы@rnO N`ы<@;U?Oc|l{gKU gO͹@P_~ӫR82߅B!p_hhϾ2 CKJX|Hu$SwծlW|9FC͒W)2UQtPՖuQ6?oiU: a[9Va~kVVY1W,V;O_\jDui.B!D]qCbU*a '[q\)V.jNmM{6k}<(3s,3Wסj;ja]Z򻇻(1K~ug}: fn# Ϳ?҅>qɁqxyW}1k _+c5w!B!/@oO-۲ϱda^?QF ,V;\" IDAT:CJP_D0W&K殓h5ʫf!o;7%!\o0f޼yL8q`*/*j7fr,*؇ O"}.[ߴ"|5}' TH?ic !B;_ΓƑdlIeXk BS9tiozAՐ{ֆB!4K~_CqdU;e,!Bqh]5B!4jy~rC!b|Vg n#3B!B/3f̨w̙3ygnư{I&4B!u4ŁcB!W _~B!њdҥK0`}?7FFcK5rrrxHJJ{=9s搒ªU2d}eΜ98U\ZZ… ]:?L5jT\sNRRRHHH`Ȑ!XBwAF#$$$pB̙C޽IMMWZZ_~,Xy]o+6n܈hԩS<$$$0x`6o|C'B!j4p^v-1?8sa޽ٳNܚ5kشi#FcǎYl̞=^Cnn.W>/d˖-׳xbƍܹs"++K֭[1c={䣏>`֬Y|7n޽{y gL4K 'dfMիxͶmxyYr%_|c]1}toGrA!j*##C*K0:w̰aEFFSo?==ݻwo8ƍ4hҮjy71 DFFҭ[7v>@zz:IIIt҅$XFfΜ !==ɢEС ,@0p@L&+V`̘1J㩬d<FΝ˩Sj2|"##}*ƺbȐ!uڄB!čkԌsEE6@U{pp}͟? 60uTdjP3m|TubX,vt:֭c֬YJ[oń >v;-bɒ%JtRPPi4ZJ޵.rmWKJJlp-[2-B!F g???zjjJwmذ{dl6Շ?zRUd"**J1x{{+E3AXrݪU+U:ɓ'Y AII˹L:Ǻ֕B]!B4FX>fN8ֺZӉbQTWVVEǎ'..ݻw+3%%%ҡC%.>>]vݱcPBCCKӵkWrssy\9s+5Ѷm[z=@%B!'Nܹs:t(:ub…X,h4$&&f$55\oͲe֭}ު'xɓ'Ķmbn+ /*^»kվwy{QFa0;v,QQQ<7t;wpBrrr $%%g}2~xRRR_¤I(//'33dx i3gy>'!BQW8]?9sw^S'n͚5lڴ#FϱcLj`,[dfϞ!77իW_eeYx1ƍcܹdeec̘֭1={G0k,}޽⋄3|&MҥKTO|rf3ӦMc\xѭ| #""شi6lp<B!D=㜑СC;wfذau"##񩷟zHX޽{s6nȠAvV˛o` 22nݺcef5==$^}UtBRRjtF#3g`䐞^odѢEtЁ h8p &+V0f%nTVV|r}QF#sԩSOCN#::Z֐ !Bqv8ҳgO-<B!iԌsEE6@U{pp}͟? 60uTdjP3m|TubX,vt:֭c֬YJ[oń >v;-bɒ%JtRPPi4e "[*3î#B!nF~~~zerڰa=Jlvz=vDTT*kcJKKV bʕvVT}t:&O\g)Ԭ7r!_C\G!B:*5 >|Xi3͜8qq:X,Luee%YYYtѭ|ؽ{23\RRBnn.:tPٵk;vj %44ޱz=]v%77{j>B!iŁ'Ndܹ :N:pB,[}h4Yf tp;~m-[FnV<L+9s[wԀ{)d^u<==eرns#g۶mvV߿߭B!Z ӦMkM6=)S̟?codĈ<]sBվnfD!į٥˿}y1qq XgΜJJJᩧRݯxΜ9QQQ<7to;wpBrrr $%%g}2~xRRR_¤I(//'33dx =??Ç+t;_ycZZOϏnݺ;-B!j4zڵkyǙ3g{eϞ=u֬YæM1bD;vOβeHNNf|rssYz5|_~%[lQ_ŋ3n8ΝKVVYYY>nʌ3ٳ'}<foqˋ/Hxx8gҤI,]LU\PPO>$˗/l63m4V^ŋ]>6mĆ ZǏgӇe˖oMeeeB!5z9##C*K0:w̰aEFFSo?=ؽ{lܸA)Z7|@dd$ݺucǎkzz:IIIt҅$XFfΜ !==ɢEС ,@0p@L&+V`̘1J㩬d<FΝ˩Swu:э^ ԩSYzwY!nըgAnn.={Ti׮}UUUFrr2у-[PXX`0(aaaJ$''DeHH>ի-11Q)*Z)/ժڗh4J{=8qJ{F`Pfy]=Ю];vl67B!wF8WTT` TٰaSN%>>OOO/^LQQ*v 53W.R^O@@jNL`` ݎN`ݺu̚5Ky뭷0a҇ngѢE,YDq:8N 6F^)Z2{7N:?^@1j(fΜG_+*BqhT^>6ls=Grrl?zRUd"**J1x{{+E3AXrݪU+U:ɓ'Y 5k\ ِ8jπgȑ9RP#ݻwW/B!TCÇ6̉'tbXT3Օu.s%8vޭg׮];vj {ʫE>^O׮]ͥm۶u^6չP?#%%HBE!BQFn~ĉ̝;CҩS'.\bqFCbb"k֬_~8NRSSq8n瓒oͲe֭}ު'xɓ'Ķmbn+ /\="e) @qq1DGGbڵki׮aaaJ̚5k߿?ܹsu| !BFcƌ!??ӧSUU,[J;{1j( cǎ% 'O#_Z9_qFF#N'!!7j\!BY k3g˞={ĭYM61bĈz9vL>e˖ٳUq999zj>Kl٢_~=/fܸq̝;,T}lݺ3fгgO>#xf͚7|ֹݻ_|pϟϤIXt) |I/_lfڴi^/|lڴ 6|:t(9o6K !B_FWA :TYѹsg V'.22zy衇Tݻ7`ƍ 4Hij "##֭;v ==$^}UtBRRjtF#3g`䐞^odѢEtЁ h8p &+V0f%nTVV|r}QF#sԩSt:Fw5+FmB!F8;rssٳNv4ILLGlٲBU\LL A SbN'999$&&*CBB|KՖHvvjRVVVj_VVÇG(=zĉTWW+m~~~*5 Jν!C4iB!F8WTT` TٰaSN%>>OOO/^LQQ*v 53W.R^O@@jNL`` ݎN`ݺu̚5Ky뭷0a҇ngѢE,YDq:8N 6FVU_챫XܲeK1W.8B!5pC+3W׆ xHNNVf[})--UL&Ty_SZZR4 4+W*ۭZR[O0yd}]ضmYYY,X^y^xz=СC:tEԇ^TT,%(..&??hUlBBXv-ڵ#,,LiB!F.njC~~>ӧOÇ׹Z-%xwx5jcɓ'G!// VZEJJ v]2{l>+9s[wԀ5--%KIll,cǎuW=۶mSgϞ߿#G?3ozc,#oFNNIIItޝѣG׿U3gRRRXjC o߾̙3áKKKSYpaKG233y޽;F3vIJJ 2Du+b4IMM%!! 2gz=+瞟|~ -Tk^y3rf{s>ƭ[ʹx"{{{ddd ""[/33nnnؼy3Ο?y #F$%%axWѻwolܸxg28EaҤI:t(:KVAN<3gbСxבnAAABVZaX~=`,[ T*;99!%%:AwA|P9JR3ӧ^"""߻ >|0gϞu-[YѣE\~pY޽[8r{P*pvvF>}*yzB@@xj LǛ8Ġ[nXr%d2haQUVVLXB֥aܹdB}bݺuҬ<5ϕJ%ZI}'"""ǧAsII `gg'J7h$''cV^|QA3P=]s"ܝ;wPYYi[[[rqqQ;;;A sN,]TȳpBet: 66Vc0`0pM!M&A. k]3+DDDD4(pBFNk\Vrr2f̘`!Ԥ2lllP(PTT$Jh4pqqsXZZL6 g|~ kѓoGSNP @ۣReMrk׮9998|0ϟ~:R]vA4!DDDDDM8"))  ĉY]8qѽ{w|F#""""2EΑl 64I]DDDDѠQ0p&""""3$p5k-ZTpˏ?NZoh]pp0j5j5ΝZGDDD|5ɁT*ud:L.]nR#..UUUCˈ&|ͦYؾ}{T*@T)EDDD5T5k`Ȑ!߿?>: Tۈt oߎO>?}:֯_R,X7oƍ7$ )))HNN6uyP{l0|p?s&?ADDD58IHHÅ)={ij>kвe:=zٳg{n rJ%ѧObĈx`޼y^z! @TW||"""'Qg^,L0AHSTpss3r|سgPYY*x{{oJRXvtt۷?~(ɓEiDi(++---P(uiii;w.d2o߾Xn***4kkk!OsR VkRK}푺 k6l#i'ѓAsII `gg'J7h$''cV^|QA3P=]s"ܝ;wPYYi[[[rqqQ;;;A sN,]TȳpBet: 66Vc0`0pM!M&A. k]3z,H݆՜HDDDԜ5(pBFNk\Vrr2f̘`!Ԥ2lllP(PTT$Jh4pqqG}4L6̙ͤ={`ɒ%ؿ?ߏ5k`Μ9ː|"77PPP Z Nۑ^gHنDDDD4 FPPrssr9>>>K,e0f(JL06=ƍCNNi&BӉ燈[;v쀋 MP!66,,,.:YR )}_x1<(,GDDϜ9#*/00鈊FAHH.\(=R!M]a  ,xSRRLpܹP(6`0`ԨQx饗4܆$}-!"'- Gޣ0uԉJh{z^ ITq5 ''Y]ׯ_Gbb"|||T*k.h4u~܆DDDDƚ$pERR'>q Cף{O.FmHDDDdIHDFF6EUprr† ې/KDDDD$g""""" 8IHYfaѢEu /(CtPoCVCVcܹuDDDDWXJNkj L.]y38TUU?| -#"""jޚ|0gϞxg9;;ZlYg9Gҹ_~8{,v !].ރR3Ta5>>7oW^Zp!C:~?111֭V\ L???h4lذAAAB)S@b"""ԩSk.QQQ(++3 L___lٲn͛7x⇚+}aڵ8r}]XZZL6 gΜ|Cᣏ>BZZMfR]s={d߿ǚ5k0geH{~~>rss (((-SNaHOO7ʣP(0|߿qqqسgN* CDDDԜ4AAAEXX1rHUT%K`ٲe3f J%&L[[[dggԞq!'' شiBCCDwCDD֭[;v&]QPwypww7RxbL9D VXXd8:(L:u"R%(k[n_v Ç1GVב(Jڵ Ftd!& ccckkk>8qѽ{w|駼҃ 5T "DD$EcNuÈ$`LDDDD$g""""" I?˗ɓ8qQ-[ %%F/ aaaXv-~A/33YYYؼy3>#|طo>)) Wĉb !--MTƁh"x{{ Kb޽&ɓ9s&T* /`͚5HLLkժOף ,͛q }wrrBJJ Mj.]0k׮KKKhZk.뒒oooI57 Ç S0zg}(3e˖u3zh-뇳gbr9{=(J8;;O>HMMň#yzB@@xj LAnݰrJd2A`Æ  M2ZׯɓVb \r*JRжm̟?ry~ӽ}?~ܾ}[}P*²`0 33zȀ(WkTVVΝ;£R.-- #GI۷/._ !VVVsLR)J{cpss^ǒ%Kp1T9DDDDEFe2qy!/_62HV5:OJ{vǏ i]RSS!Jkݺ5<==G6mu {FVV:ud07OX}h_%{ IDAT. pb=zK.EQQ}O|P9DDDDEO:u*VXÇGXjL*C&[lA`0it9)BCCcڵӧ>sXZZL6 g| QFᥗ^BHHH\l޼W?-Z<>~ kѓoGSNP @ۣReMrk׮9998|0ϟ~:R]vAшLKn:7A3aHJJ51qGV9N8xzt~b޽߿?ΝCDDDDh922MQaÆ&@DDDi興(8IHG8Ϛ5 -s]xx8^~GQNZƷ~k.88jjN#Scm˗/GhhhQkgJv5u͆L&C.]D7t 4ړp9ijo6u͊\.\RJUUUM,"""fQF׬Y!C3x`aA]S5233o# ?~\ٳg3e˖u3zhQ@د_?={wtrJ%ѧO X||<0o<@^ +>>j!C 33&111֭V\ L???h4lذA8O2ZׯɓVb \r*JRжm[t:\LmS|b\1b<(z~/8zdeea„ BJe?Ǟ={JTUU[}P*²#n߾ 0 pwwɓ'|}}g*++QVV&,[ZZBP0w\d2!O߾}n:TTTiBJZ֤7 \]] Zy~O8 vvvt{{{ˊFrr2ϟXXX`4#5'ݹsF-屳CYYt:;wҥK< .DHHPNCLL bcc<7od2r5R.zGIgkkk( aFqqe%''cƌJKKM* EEEtFQSTTKKK!hlܸQXvuuaffٳgM$Jjwc#S (;Q! i|I FZ-LnO׮]E.,,DVV(;&JKMM(umڴ) YYYԩ\>Ic6[[[Srppi0p…:벶6q""""j|9Sb׮]HMMEQQLdŖ-[p-ܼy/~˖b߾}Xv-9w}<ӦMÙ3gСC裏iӦTל9sg,Yf̙3GrR\ D˵yyyԩSؾ};Ӆ_U#(( Cyy9F z_ST%K`ٲe3f J%&L[[[dggԞq!'' شiBCCDwCDD֭[;v&]QPwypww,)/^#""gΜtDEEA $$ .\W޽1k,DGG#** &M_Gx aΜ9())i"""߃&**,X\s΅B@ttɯ}FK/$GDOš%DD$U{EEEaԩ(@Yrڵk(((@NN>?_D@Tb׮]h4 iQαHJJ51qGV9N8xzt~爈L$sdd$"##*899aÆ MRq4DDDDD q}j#DDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDD0p&""""3 $`LDDDD$g""""" 8IHDDDDDoő7lrDwWrQ ϝ2K%WT{5J9DDDDDz伜A8Cܵ%n wQ{g8XYn >X% Cbcs7e1 c)ضmh]xRmpiYkz)yLբE DD|u_~EnС o>ʗd Đ!~Ann.n݊|:uƜ9sp{(++kp8q"<x% $$;vDdd^{-Z1ޘm(lڴ Gt,]VFfff|GGG!p}pttD~mٓb+?_~s^⁑@ܚS׋q-NckiI}ak wCmlZ ؿ#5d(nmLnT=zx`ʔ)/6RĘ1cѺukh4b„oՖHӔf.D؈|TdȺC^_x-7aŞX_!vlĿGnQ[=Э]Vl twCafܯ>J+dSbhp #zCfߝxmm 9w.Ŋ?˛_=Z᮪xrD={իWQ\\'"p֭rx?Og/K7tׯ\\.\.GUxg ƣeeeͽݻgG6hٲ%\ɮ7_AA>.\\WTT`…Czi0jT 9[ 4tRR...(((W_}btSNF̘*;5y-ZVfwww[8}4䌠 h49rبoAPTY?7ŋ}{W̚5 ?x{*SoH={Ĕ)!}8< =>>4g!Z5"ۧW^x饗q!l~ZӧC-}2f0almmۆkee`?>/8s&f tlȑ# 9~p/^՟믾 8ÇСBTj9pEa?&AjR˟5kPTTѣg1>jѢd2\]]'ܾ} 99Ɵma|2 8s \]]0LԮՁq}3ƍCYYjr> 3<)\mf&>j5GX-+-PV`[%;Zh[|ACۿ{}eر(޽)yLiOC<ݶVzTd?<_HR. w9ݱ :Z9r,1W1f ,rY)NU-jSV]YK8s0M,p@WJtnS))4_R5= \pG㩧2yD1_W>}iӑйsgL uС8u\СhaII l?O+"æaaߺg͗`0LؑQ(1bsssrIr!/ȑ#Fyi7233C.]cg…,9DIKK3Unܸ!:ʕL&3i\J9kHڵVVVˍr.E}f)Ξ=V ooo۷;w#RSSۀ 㣬w㝟θR4oo}?k׮N}F% -SM^L* tzlܭ,'wKѿL>]X//Oc.ZV) n|Ԫ/s_DJ \q74^>kae{v5ewjkvLT iϣ()4 ^-Z ''zO?c 4i"N<]GaT*&MdRgtP}?B~u?pN#AGR: #wB!4i}mV\rUU?>66wq5_Æ [o GS/yPBTB.#((Ǐe2d2Zjetv~chσ{RrXYYtI1)#u;M9jK`cS(eC5Rt:;vb߾}l(--1(((@aa}wW*[DY+))Cl^WWW̘1|O?i!VV h40 !xO0ˠ-WTA/U~{|fnםqAy=uєU؊J\TyG?]~OU`t)d;r ͩ\ ZA.N/ʖܖ{?.vwW|t fIDATM/Gh\V_S%Ճ4== WQGOX5Βli|?\G68|X|H477E#u)++êU=,--믿_-F~nݺR._GVgcy{`Ϟݢ-ZU:~8? s#++KRzܙXC̵5մ}/j5amm ^o\W)ֵ}n;weKQ-._R>|жm[ɢM둕%9o]JKYYY⡿'M۪U+̞=iiiHJJzd;Q[wTVv(9ɀmp VZõFAVV   G{i-PZ)Rg۷aZVzSH>!Qh]Z`>e mϸ>>w`0`p`.ݼcW[p,ݜ~Ոx_Iϣ)i~=),--ѹ:oxꩧyjZ{I#E^^^sڵk/Jo׮=JJJ;⥗^3L&C۶q5\~ӧ+++|Go W\5>zrC{---1gbӦmh|X{W{I%dzcU~ΈF|6uLՉt'鷅ZQ'!m,[fEx_oӵa˲G-(HֶYGUKv$G~ӣu֓?XlSs6Wv!=j^ۭ={B ,Э[ofiݺA3~ 2 C=RSSU_jV_:Zf.߿83/ݻ|]_/e(]'Dt]CCvv>6nlTffy'|}IV40&{]׿ܘ㵟аZYYYc7@Id/K/UddFy^ΐxw^TKtH|H,r\;TQmoTXX8ႛHeffi\-1X_rrrp8lYZ[YYf)??_<󬊊tҥϛ7iݭۛdE0 ֛1#))I;vl.Q@| … og*+_Լy488gԩгf⹗bgN8 _߈e?@$J؅3ipePrf϶&Vu߸@L, 8 g3` X@p, 8 g3` X@p, 8'[u{~;|fl!6Kz@R4;pOH4o6lh¾=")YAHt^!I}6G )T s8 ٿq`h3ɶ@15mMט,w:4Htf59ladm9Th903lQ89I"8`f0+hY7pш8Y9TE јy70@.:l(nM#Ё HtOOfq F@ՇqqIENDB`pip-requirements.el-0.5/example.pip0000644000175000017500000000017512773627051017302 0ustar dogslegdogsleg# I'm a comment! Django==1.2.3 foo[bar]==1.2 baz>1,<2 python-dateutil>=1.5,<=2.1,!=2.0 backports.ssl-match-hostname==3.4.0.2 pip-requirements.el-0.5/pip-requirements.el0000644000175000017500000001237612773627051020776 0ustar dogslegdogsleg;;; pip-requirements.el --- A major mode for editing pip requirements files. ;; Copyright (C) 2014 Wilfred Hughes ;; ;; Author: Wilfred Hughes ;; Created: 11 September 2014 ;; Version: 0.5 ;; Package-Requires: ((dash "2.8.0")) ;;; License: ;; This file is not part of GNU Emacs. ;; However, it is distributed under the same license. ;; GNU Emacs 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 3, or (at your option) ;; any later version. ;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This is a major mode for editing pip requirements files, with the following features: ;; * Syntax highlighting ;; * Togglable comments ;; * Auto completion of package names from PyPI ;; TODO: Steal shamelessly all the fantasic ideas in ;; https://github.com/wuub/requirementstxt ;;; Code: (require 'dash) (require 'cl-lib) (defgroup pip-requirements nil "Requirements files for pip" :prefix "pip-requirements-" :group 'languages :link '(url-link :tag "Github" "https://github.com/Wilfred/pip-requirements.el")) (defcustom pip-requirements-mode-hook nil "Hook to run after `pip-requirements-mode'." :group 'pip-requirements :type 'hook :risky t) ;;;###autoload (add-to-list 'auto-mode-alist `(,(rx ".pip" string-end) . pip-requirements-mode)) ;;;###autoload (add-to-list 'auto-mode-alist `(,(rx "requirements" (zero-or-more anything) ".txt" string-end) . pip-requirements-mode)) ;;;###autoload (add-to-list 'auto-mode-alist `(,(rx "requirements.in") . pip-requirements-mode)) (defconst pip-requirements-name-regex (rx line-start (group (1+ (or alphanumeric "-" "_" "."))))) (defconst pip-requirements-version-regex (rx (group (or "==" ">" ">=" "<" "<=" "!=")) (group (1+ (or digit "b" "." "post"))))) (defconst pip-requirements-operators (list (list pip-requirements-name-regex 1 'font-lock-variable-name-face) (list pip-requirements-version-regex 1 'font-lock-builtin-face) (list pip-requirements-version-regex 2 'font-lock-constant-face))) (defconst pip-requirements-syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?# "<" table) (modify-syntax-entry ?\n ">" table) table)) (defvar pip-http-buffer nil) (defvar pip-packages nil "List of PyPI packages for completion.") (defun pip-requirements-callback (&rest _) (with-current-buffer pip-http-buffer ;; Move over the HTTP header. (goto-char (point-min)) (re-search-forward "^$" nil 'move) (setq pip-packages (->> (libxml-parse-html-region (point) (point-max)) ;; Get the body tag. -last-item ;; Immediate children of the body. cdr cdr cdr ;; Anchor tags. (--filter (eq (car it) 'a)) ;; Inner text of anchor tags. (-map #'cl-third)))) (kill-buffer pip-http-buffer)) (defun pip-requirements-fetch-packages () "Get a list of all packages available on PyPI and store them in `pip-packages'. Assumes Emacs is compiled with libxml." (setq pip-http-buffer (url-retrieve "https://pypi.python.org/simple/" #'pip-requirements-callback nil t))) (defun pip-requirements-complete-at-point () "Complete at point in Pip Requirements Mode." (let* ((bounds (bounds-of-thing-at-point 'symbol)) (start (or (car bounds) (point))) (end (or (cdr bounds) (point)))) (list start end pip-packages))) ;; Declare variables from AC, to avoid a hard dependency on Auto Complete. (defvar ac-modes) (defvar ac-sources) ;;;###autoload (defun pip-requirements-auto-complete-setup () "Setup Auto-Complete for Pip Requirements. See URL `https://github.com/auto-complete/auto-complete' for information about Auto Complete." (add-to-list 'ac-modes 'pip-requirements-mode) (add-to-list 'ac-sources '((candidates . pip-packages))) (when (and (fboundp 'auto-complete-mode) (not (bound-and-true-p auto-complete-mode))) ;; Enable Auto Complete (auto-complete-mode))) (custom-add-frequent-value 'pip-requirements-mode-hook 'pip-requirements-auto-complete-setup) ;;;###autoload (define-derived-mode pip-requirements-mode prog-mode "pip-require" "Major mode for editing pip requirements files." :syntax-table pip-requirements-syntax-table (set (make-local-variable 'font-lock-defaults) '(pip-requirements-operators)) (set (make-local-variable 'comment-start) "#") (add-hook 'completion-at-point-functions #'pip-requirements-complete-at-point nil 'local) (unless pip-packages ;; Fetch the list of packages for completion (pip-requirements-fetch-packages))) (provide 'pip-requirements) ;;; pip-requirements.el ends here pip-requirements.el-0.5/Cask0000644000175000017500000000012712773627051015736 0ustar dogslegdogsleg(source gnu) (source melpa) (package-file "pip-requirements.el") (depends-on "dash")