org-bullets-0.2.4/0000755000175000017500000000000012406623202013603 5ustar dogslegdogslegorg-bullets-0.2.4/screenshot.png0000644000175000017500000010325112406623202016470 0ustar dogslegdogslegPNG  IHDR TS>sBITO IDATx^xǑ=3ȉf1G(*$*Sl9||,ٖ$KI1(19 Db 3Ȭy=տkISf2t"@ D-TdBD D@2@'D"@@?Q'c&U]<`+C_`,5JV}O;XXpb\dS3F;4\:Fp{ fH"@ Dc]!Zs<+7f2%"* hRa/ J* [a:X(sG];b ذWQ\Irz]CKkZD= &ڑMȔPkhՌMq5k i?lA9NxY31*;4Xy(׌\lXt#  IV3'eOp {+z1`K Dv{GK[ctdB8p6F%d`5g8zN2zj4%XOTioqv %C&Ci#1Qoʕ9WԔJEK4|ĂGC ~I;bJ{ a:X5;6<[dO닳ىd78X' }եMD?oihW%‹g2pE G!55a;\+c/wYi[9c^ZoK$+%. ^#}Lh::EFx`SPn8T N JʫJd9H:wz)|W> xLia%d0&ըpypKWlD{, )곶+ڸygԢ-q6ɻv[+G[c\L\BEu)HSR]]W~~)39vd5 D(+paB!3Lx~^aaF8E"@ J k8N@E 5X X&"@ @qiI= y4T 5LU n"@H x dV,_"@ md]D"@ }Ev+"@ 4Y   }ԯϳ ֭qlU%  D P{让myjPOZ-OB3U6=xWP H"@-z3gO?z.O}&D":`lh~?![nEPIMwXyNs"@9X}Er@xݞKUhRiy1;L?~rKf"@&p:Xvֽ+&,^r8* ~ X9}? n̾gELrf;mwGy\Z__:~[,=|ɴG̙ w[8n=xܵk5FeOȄꗾj+I?9{;ᆭщfKo>޻?{L*sJ&{\KgJ06r^O˙1rڻ뵷n0v\Bo<ɟ7r/1Rudo~:Õcw͟HO&S=^%&z+ܽ-"@F6455tcɞ>_RQI`^ڄR9::>3QQ_+[b>H{Ccx}wԘ\<\4s OU4:}Ej^wKOמ79Ghǯ$ax!F91+_`ZN#>Ъ3gh6o}z ;hj-=4:;pCǂz1bSRzқP=$C C@`뱇~s֛^J]ZjEnNVݹ׬ݒ UWޱ кUiֶ_=*UϞ;sw$BϺZjj ܅UbV&|܅]U Kn̚2IE[YY{~Vߋ/KxCsuJ5wu|맧w5FD,xp-C0e̩}q4X7Ll@ Io^|FsY0 )eZZ$:gFZ"^H"@V奪?)udACc^Sr5c괩e囶~vs7.h#"#}HeUݷ+8kFkYJ7]S vү]@֒tuK G#% 'NmKzHs"5>c1sfǥbIG%_AI".8jEpDBf~WYX<[*9^&"3,o5BY]ƋB2D"0(:X'SGmٸ+'n:i"q- 1r>ܸb@xG1pڂM+*qLqXʑesgϔt֜pIA{S566u8WdNv|ձ3 O/u55}$R[7N{wWDL ~Ƙx>~#mKIˣ["z.b5MJj}!P~*o[1Bw*^ x93KlAA|$!w>{ )@m냐 `q+ f`9X= DCWcZ|jxa^ggťe vӒlPlsjv[_ HW_˟߲->3 h7:6 Fmc87mtK Kf}ڼ5Wx޴։nk5F&ݴDZU_(|#H˂Rd}ˣ[2Y-XAx;͕˫ί*.q0R O;v9BHGC rtzYJ9JV0@93nig/_y}q≾ 2̐Y XP5{4i,yy_̼/_JOTTTA6gxadb"fT##/'֏괟% =& ?Aݭ~Ǜ-X?5\+~Y7=SJV˯y+BSxN0ᙝ;t' De‡5z4>_Ni–i\D~0L`"kJg_}gp;z )z7uŀMpUC-(Q9 D SˇC5OӦ""ڐm(;*ǟHp([N"@P!RF3!ރiS]I]yhn"@ `923Yy0Q5"@ D` +J D"@"@ D1r(#D"@9X4 D"c"@ ` D"@@ :"@ DEs"@ }L>J D"@"@ D1r(#D"@9X4 D"Fe3fò} nī#n#~D"zh$^C"ьgi`FɦESKx6kN 84)r"@ C@_F,I05}sMa@Unc V4. D%#X|0AMzG1J/8zF1߾|n7-Wfk &G9TLKP8ýU&'\Jz|fڽY:8j/3Ą)*Þwv NWS¾1[&$ GEQ3Zw`e|v {TjVq[Cd%/S.F2V`=42B8S-gt1Nh79F@>S Jb66{{ҭ7sTaf2[-W'?u-!0 D",Ɠ ;h5BzrN&X*XSi.ihaz&xDpf4v|'~]+偿ye6T&}ov)J7{. WTw7c*SGA/`63HtS]GXkW3F DJxR$Aϟ/?<>vlR_.mp7Z$D"@F zjI[ D"@@8o`5A DK@mp,'D"@  § DI9+"@ D` 5i"@ D`dP{pdx _K{t.l*֝C|2"@!I-Snѭ6h*\W=Z&!9VID@"""@ H !18wMMã:xi$td3"@/jKi ^Nplca ?kRGn!9)nǤ 8p ձ&vTx_>Aᛜ7>H( F4eKqY8Dm3W\L7x4B'EGyp^E FNt ,oeUԉ(ٯG`pk}oAI7"@ H@1(]_ 5L~ NkVpkjppx,? |n|n7-W~X8nDh1)-;T'\J1LvTjfj[]yt[M bBra;;9K0_NO;05Ѐ*UL9{D(yK3d9\b: 3k$1ZR9"@ }B@01bI&Fғ{m9U(^?$D|׊FLm ZmUX+Uot;d(lha E44K×֫􏂝.ʼU[Y_VU-)̞ _%]>(I D"0,t^e ;,+\e? Մ'K]'D$Ue u$ƈbn!1㊅|gbc,¨8f@AZU씕+BpnՍxBsؖR2өb? Y̲|}3_G'm "@@_P{/G>}/;:vn[_3p]Ӗ2Vͭ5ݎ6?NSCQY?͇U"@'eQg6d7'ͺj'Ok:997_xhSOӃEbD"@@x{p ~.˺m`PPOUg/s=.?NCDvTLJ?͇A@ Â@ Kd*6r$BqQk*ڔYoRG &uV]G KᄴulڜZ2F92l̈́6ӖNB{ػ.ά}K*eMqqͶS쎚YaPNEl)}^MDա8X?HWmcIj>o=-F;|7|Ӧl۹#eǏmYɀ{Qq&9'' V7/ĽK%=}bI*ad1m()<#1w\X&cцjJyW=KMeYcsOadO:.)  D`f0Utvۄե {~Cͩ$\ou[uO ,Oљֳ2/>nyIIiUFL3J5 ?́ի-%*&E$vid;2dgҔF=:`2Y0q'VKH<ҞZ^WŁdEY-ٺB@QeTz[gfJ2Rst/|_ٯb?g&?p6! {]$ V^0>j)h ^J|BGCSI"@P#(%Q9ًP TI4:U} >WHJ`9"Z6fy8412SZl*bF!c34]2&tY* Adk#cZcrp4LU*ޠ#nNÏf'E9:B{11p~gJLNfBskE0gYMS^V?~9xQucKd+ޒuj0 X[\Mgj KvU8:?UT-"@Rq2&MeT4*sauʢ?!cr<"5y7kr۽Z4s.cP._ 4wUa',; XYɻMEN^>Ѯ+Vw_ AU' ݤ&sX-ٜ9.@Z\՚z>QjWOQSB D`3FJn;.ӊ 썆-] ˌ.$ larMyN9*:@!_Pz\usv~@%%qzW[NgI!&#M`9"Ty0ѧ.$㍊~廼@8=^Eدngq"EIf;qR2Wa U*WoARJ#%<6e{TD"0X;H4| ١GPdhu4Ly,򠫏#+/k<ĉbLH]F ^^ ᰥ)A[W=ֱ Ļ9Y;$ԇJO;랧r`Uln-U.Ywl&twŕ0.Y}hI-z؉_9a PR9 D3 i#Ts"^Ϊ7jeVIS`ӹH8ƘLysWTi x F<2}JMA>dRQak0:,BCc<~y,MRxr1AʃIhK'16ʤIXyD_k%Ǚ=1U$Mj“;ywC;jFzȲ/j> tqwϹ u,t"@F v}Dohӆ b#mp˃dd7AGR D@"g,x\"@ D\BLBQQ߉ D"\" E"D"@'@>="@ D` 5̩E"@ D` Zıf-my> DD/"W.kSyǩ@b5={13ӝ6O D"0M㢳}p[uj3lс; D"@ ǀ &~TTЌJc]0Se&X8Y_g"D"@@ K:Mͤe! N(9%#͞e&Gj \ExK.Y!UVsW>q9VA`?iQp؊twx`OFϴ{6Ao DaH _55JpzrwF_8侮=ghЈH6 ]ὒ|S W%%y߼WZ+/ɿTNn~6$ D"Ї:mk:w%9XήlxC$]nv5|v!$a?-Z֨a] rN/]-I `rB"@ #9X9ڬcѴv3OR\Z֞nA`i)Y5 .mK1t)#p5=Zu_JB fLj)^գQ󌖮Gk\^|'G2 u%H;Nut"@a^͹qڪNbp+ZH-;/:XHqzԾ2E?3Z9襹y /B,PJz;͓kZħ`!@' }MPߪpjsu`!ɽݻJhMK D '.a}?.fD~?1Ҥ"@`F$CɻRSZ4x$|"@ D wbI0ݛkI D"F/)ͫ!~"@ D$@| D"@@ :"@ DEs`xtF`fvU_Jçgd) D 0bsZ欔ưm뮋#c"Ϝ!FZ6>i O&"2b]l5C[xG 1*k谟^O6>Gօ6W7JHt9xvSD&*!kx{>=ֶ}Rژdڸa>4V5Eqia,NoxW B_TbIƼ_axRzT -s1- \"-i,11> 3#'0ϼ÷_i>`gPRʃI2D"09X9~U_S4щK57`v3vڎ'&4&q8{.LqQ^C 6{WH%&f21'ׅ$ru vcQ_*,se5Z1Y9ΟB+IJkB&d]O o3{9S(=  (kWE[[JLys8뒲XQ|vx&*>4tYV<{4&@?T׃JR* D` ` U2-krU R>ujp r|shF໽+^EgxZ%ok6*- |[ϻJ>]qro"̣Ҵ-%y8hvSGt ,EO\Ѷ25=}q/$ѦI} n4 U D͙# ܵXސ=&WeHIQEļVw]<+b=jzG1|7m[~SxQNWOCLX4;mHla'}VkYxV/blIr5, _BCW61ݗblӡ*Aaxzju)PaQ :v{ˁDF4#$HV3@L˅=Wb2meLT+WID"05 IDAT4YZD@ciAvޮJ\%f&kSrHc67di1hA١ظECWy!%|{#щpP,BCLBC94~e'ܮ.!ݐ;8]B<2urgߩ!TeM%eFpYqy[j Ǒ3DD!c!cǃzftV6S{l,3BxZju麄,G~\tt)闟]zȪ>{)Y>=UokV꯬*$D%_|p-˺]KĈ]~u$ D`ipCv2n㐩O s)'D"@sh͉6`;3"@%AO"@ #=y$"@DV"@ È9XhT"@ D`x~ܗvhܴ1Pd5j"#Ϳ9^?q!Mz!55lqi7HC2~ea0Z"\ꘘ4Nѻo](+빤e IIƸ 7zp'fϛ_zUup&jڳ%E6r o4Vܻ:3+ 466mqq<8$-V+b;~оݻTʋFmnn7vq!,""+sr^OaA~7*͜5whNjxƶ-(Q*rdd$#w ff]mmKKfo U\NNN(Y=9c,%.!t,Qn |P(C%yKRwjkG`4nxᄰl*Mv|.d]ٿ?Jƣ\~Y{$=_UL vʇgJֈ$0, XSNKIOg>i\Aawxޠ7^='$$w*wsl}T;K#ƬtӐ\]u)Q<[|^jokS܌PPs"!aX)>dKr99adIX1Uů*.vvv*) X~ vA gY xZRwܟ7]%mTYz}DFG_aw`ˍH̙b= VQ y/YK޻s;[,1Xp8흶ssg x-ϗC_IϋRUNbszѼIST$Un)sY쑺?N%PT/`#<Ŋ46?͍MA ]'({{8Na̚u +gg=D`ƍ( ҆^bNC*ὼV{ ۻ=Ŏ6U ff,\466Kg+K tKwae%}J_kRꗬ1H8_lR+pפy"ۨTD,= dudpEN\V^*D9:m3LP?EdWG2v *PTNR&0,g[74~Գ8Tb0-"^VKK+nҋݾO~WdTC럘>k6<]^S*hF4#Gكߴ'O⛗T؋JdC|jd rhU( ㍆ ?Iy@/r"mjuEg:֖^2گYd硬T(GESauvHޕJ-4] %*zo@{*,Ty΀W! G'T0T_i\^^PSnk%zaXDA Bݑe Q3,^2Y9gV|u:V[Uy 45՛VlEx{g .X ,NM= …WVhu1>-nr_xKWܱ$KB ;S OWL4 ">o8d_dE67Ab)+9e$ĥҮ| %*H%=J*jg>#J@xuaXԌ iaڅA1k2_~=åkAzO` n {m@%Mm JIz24&6v̸qgK$ _c][]#f)&Fb _KCl"<pۊBc3T*9S`Lm'@`hX@KCc "@ D`L2_yAÏC  D\ zT"@ 2BED"@Dx-b]M> ۸[=\ ii+WgV$UG>=[@F?}ĐUr5 M8#_Cv@(uѹ?RŅؼD/ C_+}^!]|[<hzW 4U'\W!Be|AW!~ =5C]` 33*..9E_,=R0-m|oC.Y_FyzG6 fΚ;Z1mqK*/&obc!ckZ 1qoxЇ^oiqyqlIѶxTcGښ8[_W?'q^cz=O?MbY7c=%7-KHJz7TŭuF)ii8wߺPVz)*(- zz-_]%JRG%Kf>?޷yN S&M׿흝8(b{oQ`0|[iO=o~鹳JR'JŒ䔊ri>CXø #yRU扬~ 4y_%J9c,%.!tj(#9U/UY98΃JڦwUE8uŽkRRSkkq9J8+Wa|.dD=*\IO"/i}(O 0#X8}ӇTW㘿?1o"Y~99|=g̞oNx<#dS{,f?q{^ܲ#I`TJh߽K[؟IIKzDoORin97^(SJNKZUJӲBүnRGYƣtS?߿?xZ%a[L϶l*).I*$k\RRp5|g~}VެԯP ?q;xn'үP* C<=a:*٣_?K?w).*ӖԢz~Z8oǞ|"{6zgo |Gx2qIFOyHڣ2e0qQT~U u\r9X9^rDFtAQ/$t?tIS}r99adpnzprsޤ)(gYdž(=rpޤny İ 7UjBlxWx#5jH _*8 SRFCTddKA R_I67#܀{1XJ iH8N۹b PA?/*0REV8|>aCYcP(k~%g>s:LakSԢz~Zطjk9H]mzzղX,vG `JJ$Ρ s5{UJm!}~CFVfV¥Kccc$g0*++|Ct8ju*S!*&w׬{@`XQl7,Iu6s q\{{TfߦڳKѮRn().d+02!qp'XhW JDžxk9|cRB'R6Mzx3BUHfT꯬Ja|?aC%dQѯ XQj%r%sGtD(++T?Uljkڢ9Ta|.bJI㢢-oH(`!3o'eчqAW_zoPϻQQ4:|ظ&_'x!OL5q {8Ne0}ۅ@H΁V~- w %a?ny 8dy-W)T.㴱J扊UgSY㮮_^E|?PQү¡%&.ֿ!q׌)Z+ɶP 7^vtdhwMbxҬk {d9((Q/qQOwG^hU9XX fuakdOA:u]+r-{.N>3:6a9ۢ3,^(Y9gV'%mcb}Jn gw>##2i\^$n0})/u X++gﮒ~P8 #T7`ݞ*R'!pHT ]~yF9 uj~xf¤H0@RM$52S]]HX\Λݨ UԨ9Ȉzt(Djf%θSRav؃&9((Q/'맻#6|i=bw:΋ˬW&G̑ؑ{:$%o?=,!WCXJ~6|ogxz9 c␷r:u[Ͼ׬{[QkK tz$ҮxF1NՒldHp#6oB"_tu- ԯ0QJC4!)Q< I?CbR!uDI|d?!C%(WGV $KnZbg+52SJ]hG?g.ЭMC.<~I 9 ~-)5# HҸ >oe.9)RH D $(#D"@@h0XR$7 >2"05소 &D"@:Z"#D"@ Î9Xn`"@ D`^,e4]õjݡfP'T$O D $#vѐ(#\\xZ>&kyɯX(rFb?=x"@C`;8=XѾۿwIB?7 MD"@@(FsWܻ&%5z%2zMjgKmJrr,YvK\B:^7(`nl$9.oͷ5&旞;wqwYs/Y8*qm[6y⹤a\{<8 \׃#wSDHU_NPQm7>)28bl]TH D`Фg{8x3=տPWjjJΠ:bc_K8ejFf"=[n胓ǏCyC}_EDuZ &L??;~DFƫ/ݽj.Wbr#?ۺԉc/5 /\99+xNv\*+W Nq2Xޥ?/k|(/.|]ϧ|BQ! D%#6bgd۽+) IS}Dr99adϜ?SXq0?_T 811Ŋ[9^ QizT"0_{}dY}vE?rp$0d=ڣ$("@FhkkFE}TxVu +bhg z/?C wq=lj+2.]˲W%y}vHZlF+hkZE.J;p_h(̩+׮X-ng[) Iեvu=zSGXSnZ@;X+/gᆋ̷ں;Ɵ9cۡA^~7nD]wʟx< iH?z/ 孇(ΎD"/^p^PHD*ujI=Ko·zwmTkfr]^{DtmO>Y:wd4F @ ˞o- @8L IDATkc6E8n #k+ Q"k(, #k+ Q"k(, #k`V'}PM0㎴ 1? -pXK J.oq yk' ƞ`;+":h@F@Or׾.r-EjhHnߐC2R;?qkБF@K;AħDX R=dz|o8R5˹6ی傳;މm j`*>66 ,VoL~Dz^}J]SN*J_J$6mrSQs}R=׽+8_w5r8>~=,[l 6 \2`.\vM{-TKD<1 pi5p& E[(Z*_jh?)pvhEpf k.6'ZN|ڈvEcGdv\i_Û3{{+?H[o) ii.L ]:Sx4=ȅCkk7\ EϲAr&ijkHV:DTL]қ/tP 6Pc<_pP9mq%k))2'j ?<;殷.l>sWԇST4lf̤&9]]fvovXt7.,rNjR@N|INѭZ,zW":]P @/0jЉOZ4F2B{DO9jQ66eJ#R±?I7b}÷-%Z0-ԣh,2tp|>52Y"AIX[=*.΍7VaRҒ{rW~޴0 ӮS.'YmMP/#l@= H4E8"@M9. .ka\ @.+[rsڳ*l0Jo @)pr]=_~p]k[O7sKv|߾WmkG:_3BG .E9Pȡ;p|_ڳ+P (!rj^nB ?zp//_0V, (4FXU+r6bVDqon/>f=_%߾X"|hr^"JNVO8֕ߊzԲХS1E{~bDŽ]Dž&>f.|r¹ډfm‡)GnD eI~FRW ͟<+ԷdPX6,gSb宥y:P3%9mjhu^]6HNt9?V{$Mwh">FOo^-ʭsg~Ro1( d))E,[?Y!o;?9"z, I?/7A9=(.o,J fؾ3|PR3Okuz V?ݙP͛"rmW!􆃏TG3V 0rF p^(O?ymu2XJ .y3')=nqsAZ`,XCm7qΙ\ >kXngb= | a0 @I9q1 @,+Z@ nd̎夘PnNA 0"ndo~bXؙU23V^  rfM+_ؑe\g9,A 02}L}n6}o6sVwTXoͰC/fCCx @d1 YEXS}MZQP0)WU-o u[OFog #QEg^QҶ@Yj7rE[oo+_lMγV46~n[r.U,iłjY:{W \mձs$iǧq\K첝~d  Q*M0pov4Ԍ{i7t׻DkW\ ~ @` dJחWL^|AeHLb'_*Xq0Vհ{|`p m,Y\1*?V EQ~`"I+x(^ݜwI?ݮFSGo^f{{\{*iǧhyY\ѮsK+ El_] lUWP9pnWPH| 2+<_auƒ +9'߳?e S ξ]=}CۯOk=Zu NlRY]Y<&l|}52,q*!@FXÈ @9`W @0 F쾩4$̫3-r5rh @&`DfK ?s\ ϝ mT[CxD7>$_F ޘda@`u ᣾L_6iԻ2qft5~+AK@ `i.GN7=M"+#o^eY7 ` @ @WJd/t8^yRi'*+C:(sw򵴡?_Fd`frWU`kɻ;>P>/g  k2X_~|^IYWjq0Afs&;蕖QWɴW,Ǚua*kOU<֎czMi.1&+zͱ!hruY5,!BHUZVuH) @T.ǷG A}ǂ5b[ՍoNq?8jzOxL{mhNV}WzJ4h̴K<5YFz|u~iP=V3 ;c Ka;iKK4@ 楆蕐갶ԼTlg!O1+>OӮ`VbM!'"3y:WZF϶խy[g$TA@6)”*Wb3m̛&Z7^cϼ B%XM,0K~i (:闧8KS5Ao>Ћ7%W2.Y#=*xM Gww}9[pu]|)_de._xnK>1GeRtE!rOTJ-^oly1H>ɪ%^(ݬGGrc2=n-6iavm)5Z(x 腟De_= ӂZC:Ej3(/ߙ.)P]&( m}Zv}^pz}(=֞^30i$0-Nw'^j%n'9;TiO: =8Y$u_lӶ}2Xg{ڥ#M5$ZU fT3^z5@=FK*mbi5?uH"Qm\e1+^k[;JC* RPQhc(}M^P3"H7۬*FŴ BI.d?R7&_(FXOdzLree&z\~z<_o^fXQ5uGB373|>4²"5JՏ?_,ɶBM^Eq`]+z: Osgm5_iզ~zKKRGs=1N|ϩSkHFX[Qbj ʗAz)peDޮ_zRQf Ĺm̷MM%47UXh}ٜ8\L]ho+:%Ma +S6N'G>w QzA[Kʹ~rh_Cwu/ևic ])ӚR8BO󽙣=-xTREX3.fһ/)IAy1IDAT5;= T iWw zϓ=R*] r], ~!kMχ]\=iB}c $3:7v}2~M=G>cssTB, YC\g-D'@`<鶎vd "| }V G8c !>қ!@DƧG  @@A ,)BddjC3@ V `!JB@ `@)Bh@XHtP@  Eh ] @K)B @  @` EA @0 4t @,Y: @"4. @%!Ku @R "d @@ R,A H@C@ @:@ `@)Bh@XHtP@  Eh ] @K)B @  @` EA @0 4t @,Y: @"4. @%!Ku @R "d @@ R,A H@C@ @:@ `@)Bh@XHtP@  Eh ] @K)B @  @` EA @0 4t @,Y: @"4. @%!Ku @R "d @@ R,A H@C@ @:@ `@)Bh@XHtP@  Eh ] @K)B @  @` EA @0 4t @,Y: @"4. @%!Ku @,h@XX: @`@C@ @A @0 @ , @X `tP@  2. @%:@ `@4t @,X,A   @` b @e ] @K= 9IOIENDB`org-bullets-0.2.4/README.md0000644000175000017500000000066212406623202015066 0ustar dogslegdogsleg

org-bullets mode

Show org-mode bullets as UTF-8 characters. ![screenshot](https://github.com/sabof/org-bullets/raw/master/screenshot.png)

Installation

Copy the file somewhere in your load-path, then add to your .emacs: (require 'org-bullets) (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))) select, do [M-x eval-region]. The *s will be replaced with utf-8 bullets next time you open an org fileorg-bullets-0.2.4/org-bullets.el0000644000175000017500000001101312406623202016360 0ustar dogslegdogsleg;;; org-bullets.el --- Show bullets in org-mode as UTF-8 characters ;;; Version: 0.2.4 ;;; Author: sabof ;;; URL: https://github.com/sabof/org-bullets ;; 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 3, 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 ; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; The project is hosted at https://github.com/sabof/org-bullets ;; The latest version, and all the relevant information can be found there. ;;; Code: (eval-when-compile (require 'cl)) (defgroup org-bullets nil "Display bullets as UTF-8 characters" :group 'org-appearance) ;; A nice collection of unicode bullets: ;; http://nadeausoftware.com/articles/2007/11/latency_friendly_customized_bullets_using_unicode_characters (defcustom org-bullets-bullet-list '(;;; Large "◉" "○" "✸" "✿" ;; ♥ ● ◇ ✚ ✜ ☯ ◆ ♠ ♣ ♦ ☢ ❀ ◆ ◖ ▶ ;;; Small ;; ► • ★ ▸ ) "This variable contains the list of bullets. It can contain any number of symbols, which will be repeated." :group 'org-bullets :type '(repeat (string :tag "Bullet character"))) (defcustom org-bullets-face-name nil "This variable allows the org-mode bullets face to be overridden. If set to a name of a face, that face will be used. Otherwise the face of the heading level will be used." :group 'org-bullets :type 'symbol) (defvar org-bullets-bullet-map '(keymap (mouse-1 . org-cycle) (mouse-2 . (lambda (e) (interactive "e") (mouse-set-point e) (org-cycle)))) "Mouse events for bullets. Should this be undesirable, one can remove them with \(setcdr org-bullets-bullet-map nil\)") (defun org-bullets-level-char (level) (string-to-char (nth (mod (1- level) (length org-bullets-bullet-list)) org-bullets-bullet-list))) ;;;###autoload (define-minor-mode org-bullets-mode "UTF8 Bullets for org-mode" nil nil nil (let* (( keyword `(("^\\*+ " (0 (let* (( level (- (match-end 0) (match-beginning 0) 1)) ( is-inline-task (and (boundp 'org-inlinetask-min-level) (>= level org-inlinetask-min-level)))) (compose-region (- (match-end 0) 2) (- (match-end 0) 1) (org-bullets-level-char level)) (when is-inline-task (compose-region (- (match-end 0) 3) (- (match-end 0) 2) (org-bullets-level-char level))) (when (facep org-bullets-face-name) (put-text-property (- (match-end 0) (if is-inline-task 3 2)) (- (match-end 0) 1) 'face org-bullets-face-name)) (put-text-property (match-beginning 0) (- (match-end 0) 2) 'face (list :foreground (face-attribute 'default :background))) (put-text-property (match-beginning 0) (match-end 0) 'keymap org-bullets-bullet-map) nil)))))) (if org-bullets-mode (progn (font-lock-add-keywords nil keyword) (font-lock-fontify-buffer)) (save-excursion (goto-char (point-min)) (font-lock-remove-keywords nil keyword) (while (re-search-forward "^\\*+ " nil t) (decompose-region (match-beginning 0) (match-end 0))) (font-lock-fontify-buffer)) ))) (provide 'org-bullets) ;;; org-bullets.el ends here