summaryrefslogtreecommitdiffstats
path: root/.emacs.d
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d')
-rw-r--r--.emacs.d/icons/cl.xpm276
-rw-r--r--.emacs.d/icons/emacs.xpm189
-rw-r--r--.emacs.d/icons/php.xpm334
-rw-r--r--.emacs.d/icons/python.xpm173
-rw-r--r--.emacs.d/icons/scheme.xpm22
-rw-r--r--.emacs.d/init.el691
-rw-r--r--.emacs.d/site-lisp/ext.el47
-rw-r--r--.emacs.d/site-lisp/mode-icons.el59
-rw-r--r--.emacs.d/site-lisp/oni.el555
-rw-r--r--.emacs.d/themes/new-theme.el25
10 files changed, 1700 insertions, 671 deletions
diff --git a/.emacs.d/icons/cl.xpm b/.emacs.d/icons/cl.xpm
new file mode 100644
index 0000000..d7dd0f8
--- /dev/null
+++ b/.emacs.d/icons/cl.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char * cl_xpm[] = {
+"23 16 257 2",
+" c None",
+". c #122C44",
+"+ c #112B43",
+"@ c #112B44",
+"# c #132D45",
+"$ c #132F48",
+"% c #14304A",
+"& c #133049",
+"* c #132F49",
+"= c #122C45",
+"- c #122C46",
+"; c #122D45",
+"> c #132E46",
+", c #14314C",
+"' c #14324D",
+") c #15334E",
+"! c #15344F",
+"~ c #14324E",
+"{ c #15324D",
+"] c #13304B",
+"^ c #14304B",
+"/ c #14314B",
+"( c #112E49",
+"_ c #244054",
+": c #233F54",
+"< c #12304D",
+"[ c #103050",
+"} c #0D2E4F",
+"| c #123352",
+"1 c #183854",
+"2 c #214059",
+"3 c #163653",
+"4 c #163553",
+"5 c #163552",
+"6 c #153452",
+"7 c #1A3954",
+"8 c #4D686E",
+"9 c #6D857F",
+"0 c #203E56",
+"a c #143350",
+"b c #112F4B",
+"c c #305065",
+"d c #678280",
+"e c #8AA291",
+"f c #3F5E6D",
+"g c #2E4E65",
+"h c #678380",
+"i c #41606D",
+"j c #193C5A",
+"k c #183A59",
+"l c #183959",
+"m c #173959",
+"n c #163857",
+"o c #143656",
+"p c #163757",
+"q c #123454",
+"r c #91A894",
+"s c #768F87",
+"t c #1E3E5A",
+"u c #163756",
+"v c #173754",
+"w c #6D8580",
+"x c #B8CCAA",
+"y c #CDE0B4",
+"z c #99B19C",
+"A c #D0E2B5",
+"B c #38596D",
+"C c #7F998F",
+"D c #627F81",
+"E c #173B5D",
+"F c #193D5E",
+"G c #1A3E5E",
+"H c #1C405F",
+"I c #33546A",
+"J c #537179",
+"K c #2E4F67",
+"L c #A2B89F",
+"M c #406070",
+"N c #14395B",
+"O c #183C5D",
+"P c #193C5D",
+"Q c #193C5C",
+"R c #183958",
+"S c #8CA595",
+"T c #385B71",
+"U c #A5BCA2",
+"V c #C8DAB1",
+"W c #D4E5B6",
+"X c #4F6F7B",
+"Y c #668384",
+"Z c #5B797F",
+"` c #1E4264",
+" . c #2C506A",
+".. c #55737C",
+"+. c #A5BBA1",
+"@. c #B4C9A8",
+"#. c #8CA697",
+"$. c #9AB29D",
+"%. c #B7CCA9",
+"&. c #506F7A",
+"*. c #153B5F",
+"=. c #1A3F61",
+"-. c #1A3F60",
+";. c #1A3E60",
+">. c #A7BDA2",
+",. c #466777",
+"'. c #32556E",
+"). c #6A8787",
+"!. c #AAC0A4",
+"~. c #C9DCB2",
+"{. c #C3D7AF",
+"]. c #77948D",
+"^. c #89A396",
+"/. c #B6CBAA",
+"(. c #B9CDAB",
+"_. c #75918C",
+":. c #53737E",
+"<. c #76928E",
+"[. c #3C5E73",
+"}. c #678486",
+"|. c #839D93",
+"1. c #31556D",
+"2. c #163C62",
+"3. c #1A4064",
+"4. c #1B4164",
+"5. c #A8BDA1",
+"6. c #839E94",
+"7. c #274C6A",
+"8. c #32566F",
+"9. c #30546D",
+"0. c #54747D",
+"a. c #7F9990",
+"b. c #95AD9A",
+"c. c #87A194",
+"d. c #5B7A80",
+"e. c #406275",
+"f. c #809B92",
+"g. c #CCDFB6",
+"h. c #CDE0B6",
+"i. c #4F6F7C",
+"j. c #7C9790",
+"k. c #A5BDA4",
+"l. c #77928E",
+"m. c #34566E",
+"n. c #173D62",
+"o. c #194063",
+"p. c #92A995",
+"q. c #D3E6B9",
+"r. c #BCD0AE",
+"s. c #C1D5B0",
+"t. c #A9BFA4",
+"u. c #4A6B79",
+"v. c #153C61",
+"w. c #1D4365",
+"x. c #31546D",
+"y. c #6B8988",
+"z. c #B5CAAA",
+"A. c #D3E5B8",
+"B. c #D6E8BA",
+"C. c #C8DCB4",
+"D. c #8FA899",
+"E. c #7E9A91",
+"F. c #A7BEA4",
+"G. c #C6DAB2",
+"H. c #9BB39E",
+"I. c #5F7E82",
+"J. c #3A5C71",
+"K. c #1C4264",
+"L. c #BCCFAB",
+"M. c #D2E4B7",
+"N. c #D1E3B6",
+"O. c #CCDEB4",
+"P. c #6E8A8A",
+"Q. c #718E8B",
+"R. c #A7BEA3",
+"S. c #D3E5B7",
+"T. c #C4D7B1",
+"U. c #CBDDB4",
+"V. c #D0E2B6",
+"W. c #D3E6B8",
+"X. c #D0E3B6",
+"Y. c #BED3AE",
+"Z. c #BFD2AE",
+"`. c #8DA492",
+" + c #C9DCB1",
+".+ c #D0E1B4",
+"++ c #CFE1B4",
+"@+ c #93AB9A",
+"#+ c #CDDFB3",
+"$+ c #93AC99",
+"%+ c #3D5F73",
+"&+ c #9BB39D",
+"*+ c #A1B8A0",
+"=+ c #C2D6AE",
+"-+ c #CFE1B5",
+";+ c #CCDFB4",
+">+ c #6F8C89",
+",+ c #79958E",
+"'+ c #698687",
+")+ c #BED1AD",
+"!+ c #D4E6B7",
+"~+ c #ABC1A3",
+"{+ c #94AA95",
+"]+ c #C2D4AC",
+"^+ c #CBDDB1",
+"/+ c #6E8B89",
+"(+ c #8CA695",
+"_+ c #D9E8B7",
+":+ c #617E82",
+"<+ c #92AA98",
+"[+ c #D1E3B4",
+"}+ c #B5CAA7",
+"|+ c #87A193",
+"1+ c #B5CAA8",
+"2+ c #96AE9A",
+"3+ c #98B09C",
+"4+ c #486878",
+"5+ c #52717C",
+"6+ c #738F8B",
+"7+ c #59777C",
+"8+ c #869E8E",
+"9+ c #A7BC9F",
+"0+ c #ADC2A3",
+"a+ c #D5E5B4",
+"b+ c #B8CBA8",
+"c+ c #51717B",
+"d+ c #BFD1AB",
+"e+ c #CADCB0",
+"f+ c #A4BA9F",
+"g+ c #56757E",
+"h+ c #9BB29B",
+"i+ c #496A78",
+"j+ c #3E6074",
+"k+ c #A0B79E",
+"l+ c #88A293",
+"m+ c #99B09A",
+"n+ c #708B87",
+"o+ c #7A938A",
+"p+ c #A6BB9E",
+"q+ c #92AA97",
+"r+ c #486877",
+"s+ c #648183",
+"t+ c #A0B69D",
+"u+ c #5F7D81",
+"v+ c #3D6072",
+"w+ c #C6D8AD",
+"x+ c #476776",
+"y+ c #4B6C78",
+"z+ c #4F6D76",
+"A+ c #769089",
+"B+ c #80998D",
+"C+ c #819A8E",
+"D+ c #95AC97",
+"E+ c #8BA393",
+"F+ c #A0B59B",
+"G+ c #93AB96",
+"H+ c #668282",
+" . . . . + @ + . # ",
+" $ % & * * % = - . . ; > $ ",
+" , ' ) ! ~ { { ' , , ] ^ / ^ ( _ : ",
+" < [ } | 1 2 3 4 4 3 5 5 5 6 7 8 9 0 a ",
+" b c d e f g h i j k l m n o p q r s t u v ",
+" w x y z A B C D E F G H I J K L M N O P Q R ",
+" S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.=.-.;.",
+" >.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.4.",
+" 5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.n.o.",
+" p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.",
+" L.A.M.N.O.P.Q.R./.M.M.M.S.T.U.M.V.W.X.Y.Z.",
+" `. +.+++@+_.#+$+%+&+#+*+=+-+;+>+,+'+)+!+~+",
+" {+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+z L.7+",
+" 8+9+0+a+b+c+d+e+f+g+h+i+j+k+J.l+m+n+ ",
+" o+p+q+r+s+Y t+J.t+u+v+w+x+y+ ",
+" z+A+B+C+D+E+F+G+C+H+ "};
diff --git a/.emacs.d/icons/emacs.xpm b/.emacs.d/icons/emacs.xpm
new file mode 100644
index 0000000..30183a4
--- /dev/null
+++ b/.emacs.d/icons/emacs.xpm
@@ -0,0 +1,189 @@
+/* XPM */
+static char * emacs_xpm[] = {
+"16 16 170 2",
+" c None",
+". c #5551AB",
+"+ c #5652AB",
+"@ c #5853AC",
+"# c #504CA8",
+"$ c #4C47A7",
+"% c #5752AA",
+"& c #534FA8",
+"* c #5652A8",
+"= c #6460AF",
+"- c #6E6BB5",
+"; c #8380BF",
+"> c #928FC7",
+", c #9794CA",
+"' c #8784C3",
+") c #5A55AE",
+"! c #5753AA",
+"~ c #6D6AB3",
+"{ c #9593C8",
+"] c #9D9BCC",
+"^ c #9895CA",
+"/ c #9A97CB",
+"( c #A2A0CF",
+"_ c #BBB9DB",
+": c #F4F4F8",
+"< c #D1D0E8",
+"[ c #5E59AF",
+"} c #5854A9",
+"| c #5954A9",
+"1 c #5955A9",
+"2 c #BCBADC",
+"3 c #F6F5FA",
+"4 c #EFEEF7",
+"5 c #F0F0F7",
+"6 c #E9E8F4",
+"7 c #DFDFEE",
+"8 c #D8D8EB",
+"9 c #F2F2F9",
+"0 c #FAFAFD",
+"a c #7B77BB",
+"b c #4F4BA7",
+"c c #5A57AA",
+"d c #6461AF",
+"e c #A19FCE",
+"f c #F0F0F8",
+"g c #E3E3F1",
+"h c #B9B8DA",
+"i c #B9B8DB",
+"j c #BCBBDC",
+"k c #C3C2E0",
+"l c #CBCAE5",
+"m c #AAA8D3",
+"n c #5F5BAC",
+"o c #5651A8",
+"p c #5955AA",
+"q c #5956AA",
+"r c #5C59AB",
+"s c #6B68B3",
+"t c #7C7ABB",
+"u c #B8B7DB",
+"v c #EBEAF5",
+"w c #B1B0D7",
+"x c #908EC6",
+"y c #908DC5",
+"z c #8581C0",
+"A c #726FB6",
+"B c #5E5BAC",
+"C c #5B56AA",
+"D c #5B57AB",
+"E c #5653A8",
+"F c #7574B8",
+"G c #8280BE",
+"H c #B0AED7",
+"I c #E1E1EF",
+"J c #BDBBDD",
+"K c #8481BF",
+"L c #7571B7",
+"M c #6A68B2",
+"N c #625FAD",
+"O c #5C58AB",
+"P c #5B57AA",
+"Q c #7A78BB",
+"R c #ADACD5",
+"S c #C8C7E3",
+"T c #D4D3E9",
+"U c #D0CFE7",
+"V c #D5D5EA",
+"W c #ECEDF6",
+"X c #7B79BB",
+"Y c #6664B0",
+"Z c #625FAE",
+"` c #5551A7",
+" . c #918EC7",
+".. c #F3F3FA",
+"+. c #F5F4FA",
+"@. c #F4F3F9",
+"#. c #E7E6F3",
+"$. c #C7C7E2",
+"%. c #B2B0D7",
+"&. c #B3B2D8",
+"*. c #9593C9",
+"=. c #6663AF",
+"-. c #5F5DAD",
+";. c #5B59AB",
+">. c #534FA6",
+",. c #F4F3FA",
+"'. c #C9C8E4",
+"). c #7675B9",
+"!. c #6C6AB3",
+"~. c #706EB5",
+"{. c #716FB6",
+"]. c #6E6CB4",
+"^. c #6968B1",
+"/. c #6462AF",
+"(. c #5B58AB",
+"_. c #5A56AA",
+":. c #5855A9",
+"<. c #6D6BB4",
+"[. c #D1D0E7",
+"}. c #F2F1F8",
+"|. c #B7B6DA",
+"1. c #6765B0",
+"2. c #6F6EB5",
+"3. c #7B7ABB",
+"4. c #807EBE",
+"5. c #807EBD",
+"6. c #7876B9",
+"7. c #615EAE",
+"8. c #5754A8",
+"9. c #6A67B2",
+"0. c #B4B3D8",
+"a. c #EAEAF4",
+"b. c #DADAEC",
+"c. c #B0B0D6",
+"d. c #9998CB",
+"e. c #8988C2",
+"f. c #7F7EBD",
+"g. c #7978BA",
+"h. c #7472B8",
+"i. c #6B68B2",
+"j. c #5D5AAC",
+"k. c #5755A8",
+"l. c #8A88C2",
+"m. c #C9C7E3",
+"n. c #E4E4F2",
+"o. c #EAE9F4",
+"p. c #E0E0EF",
+"q. c #CECEE6",
+"r. c #AFAED6",
+"s. c #8A89C3",
+"t. c #6865B1",
+"u. c #615FAE",
+"v. c #918FC6",
+"w. c #AAA9D4",
+"x. c #B9B8DC",
+"y. c #CDCCE5",
+"z. c #F5F5FA",
+"A. c #FFFFFF",
+"B. c #E7E7F3",
+"C. c #706DB5",
+"D. c #7E7CBC",
+"E. c #908FC5",
+"F. c #9C9BCC",
+"G. c #A2A1CF",
+"H. c #A09ECE",
+"I. c #9390C6",
+"J. c #7977BA",
+"K. c #5D59AB",
+"L. c #5552A8",
+"M. c #5451A7",
+" . + @ . # $ ",
+" % & * = - ; > , ' ) ",
+" ! * ~ { ] ^ / ( _ : < [ ",
+" } | 1 2 3 4 5 6 7 8 9 0 a b ",
+" } c d e f g h i j k l m n o ",
+"p q r s t u v w x y z A B C 1 ! ",
+"q D E B F G H I J K L M N O q } ",
+"P * Q R S T U V W S X Y Z r c 1 ",
+"` ...+.@.#.$.u %.&.*.=.-.;.P p ",
+">.&.,.f '.).!.~.{.].^./.B r (._.",
+":.<.[.}.|.1.2.3.4.5.6.<.7.r (._.",
+" 8.9.0.a.b.c.d.e.f.g.h.i.j.c ",
+" j.q k.l.m.n.o.p.q.r.s.t.r D ",
+" r u.h.v.w.x.y.z.A.B.C.} ",
+" B !.D.E.F.G.H.I.J.K. ",
+" :.8.8.8.L.M. "};
diff --git a/.emacs.d/icons/php.xpm b/.emacs.d/icons/php.xpm
new file mode 100644
index 0000000..8b316ef
--- /dev/null
+++ b/.emacs.d/icons/php.xpm
@@ -0,0 +1,334 @@
+/* XPM */
+static char * php_xpm[] = {
+"30 16 315 2",
+" c None",
+". c #D9D7E1",
+"+ c #CAC9D8",
+"@ c #B6B5CC",
+"# c #A5A4C3",
+"$ c #9697BA",
+"% c #8C8DB4",
+"& c #8283AE",
+"* c #787BA8",
+"= c #6D70A1",
+"- c #606598",
+"; c #5F6390",
+"> c #636588",
+", c #C7C5D6",
+"' c #BFBED5",
+") c #AAABCC",
+"! c #9193C0",
+"~ c #7E81B7",
+"{ c #767AB4",
+"] c #7478B3",
+"^ c #8185BE",
+"/ c #8488C0",
+"( c #777BB5",
+"_ c #777BB4",
+": c #777BB3",
+"< c #7579B1",
+"[ c #7275A9",
+"} c #6F709C",
+"| c #6A6A89",
+"1 c #626175",
+"2 c #A8A6C2",
+"3 c #9F9FC3",
+"4 c #8789BB",
+"5 c #6E73B1",
+"6 c #7075B1",
+"7 c #7379B2",
+"8 c #7377B3",
+"9 c #8387BD",
+"0 c #636474",
+"a c #595965",
+"b c #898CBC",
+"c c #7479B4",
+"d c #787CB7",
+"e c #787CB9",
+"f c #7376A9",
+"g c #656788",
+"h c #545463",
+"i c #9090B6",
+"j c #8083B6",
+"k c #7176B2",
+"l c #7578B4",
+"m c #787CB5",
+"n c #797DB5",
+"o c #7A7DB6",
+"p c #7B7FB8",
+"q c #757AB7",
+"r c #9193BF",
+"s c #070705",
+"t c #1F1F1E",
+"u c #878BBD",
+"v c #797DB7",
+"w c #797DB6",
+"x c #7B80BA",
+"y c #7D82C0",
+"z c #7174A7",
+"A c #50526A",
+"B c #2D2E36",
+"C c #7A7DA5",
+"D c #8182B0",
+"E c #757AB3",
+"F c #7579B5",
+"G c #7D80B1",
+"H c #6C6D86",
+"I c #57596B",
+"J c #58596C",
+"K c #6A6C86",
+"L c #8185B8",
+"M c #7F82A3",
+"N c #060607",
+"O c #28282A",
+"P c #5C5E70",
+"Q c #5B5C70",
+"R c #6E718E",
+"S c #8083B5",
+"T c #7A7DA1",
+"U c #5A5B6D",
+"V c #57596C",
+"W c #57586A",
+"X c #606177",
+"Y c #787B9F",
+"Z c #7F83BD",
+"` c #7B7FBB",
+" . c #4D4F6E",
+".. c #13141B",
+"+. c #7679A9",
+"@. c #767AB5",
+"#. c #7579B3",
+"$. c #74769C",
+"%. c #21211E",
+"&. c #10100C",
+"*. c #333334",
+"=. c #232221",
+"-. c #080803",
+";. c #5F606D",
+">. c #6F7082",
+",. c #040405",
+"'. c #212123",
+"). c #2D2E2F",
+"!. c #191916",
+"~. c #0E0D0B",
+"{. c #6C6D7E",
+"]. c #5A5B6A",
+"^. c #010000",
+"/. c #272727",
+"(. c #2F2F30",
+"_. c #0F0F0B",
+":. c #232321",
+"<. c #747798",
+"[. c #7C80BA",
+"}. c #7E83C1",
+"|. c #383A55",
+"1. c #64699A",
+"2. c #7679B2",
+"3. c #767AB3",
+"4. c #7D82BB",
+"5. c #686A89",
+"6. c #0D0C08",
+"7. c #4E4F5F",
+"8. c #8F92C1",
+"9. c #8487AD",
+"0. c #1D1E24",
+"a. c #1C1C1A",
+"b. c #4D4D4E",
+"c. c #010100",
+"d. c #7D7F97",
+"e. c #8487BA",
+"f. c #646579",
+"g. c #54545A",
+"h. c #43434C",
+"i. c #1A1B20",
+"j. c #8C90C0",
+"k. c #56576A",
+"l. c #000000",
+"m. c #565769",
+"n. c #7A7EB5",
+"o. c #7B80BB",
+"p. c #7276AD",
+"q. c #14151F",
+"r. c #64699D",
+"s. c #7E82B9",
+"t. c #5B5D73",
+"u. c #0E0E0A",
+"v. c #666887",
+"w. c #878BD1",
+"x. c #8F93C5",
+"y. c #25252D",
+"z. c #272726",
+"A. c #12110F",
+"B. c #8A8DB8",
+"C. c #7E83C4",
+"D. c #626479",
+"E. c #050505",
+"F. c #63646E",
+"G. c #2F2F31",
+"H. c #2F303B",
+"I. c #8C90C7",
+"J. c #8A8FD2",
+"K. c #62647C",
+"L. c #060501",
+"M. c #5A5B70",
+"N. c #7B7EB6",
+"O. c #7F83C0",
+"P. c #2D2F45",
+"Q. c #65699C",
+"R. c #787CB6",
+"S. c #777BB6",
+"T. c #7E81B5",
+"U. c #464755",
+"V. c #141313",
+"W. c #6C6D88",
+"X. c #8487B4",
+"Y. c #56576C",
+"Z. c #060606",
+"`. c #5B5B5C",
+" + c #8385B9",
+".+ c #8387BF",
+"++ c #45464F",
+"@+ c #0A0A0B",
+"#+ c #767783",
+"$+ c #111211",
+"%+ c #3F3F4A",
+"&+ c #8B8EB7",
+"*+ c #717496",
+"=+ c #24252B",
+"-+ c #1A1916",
+";+ c #75789A",
+">+ c #7A7EB8",
+",+ c #7E84C0",
+"'+ c #2F3047",
+")+ c #636593",
+"!+ c #7579B2",
+"~+ c #797DB8",
+"{+ c #7D80AF",
+"]+ c #36363E",
+"^+ c #232323",
+"/+ c #262627",
+"(+ c #181713",
+"_+ c #454650",
+":+ c #818292",
+"<+ c #0A0A07",
+"[+ c #4B4B53",
+"}+ c #8287C0",
+"|+ c #8387B9",
+"1+ c #2C2C29",
+"2+ c #171717",
+"3+ c #7F808C",
+"4+ c #141414",
+"5+ c #2C2C2E",
+"6+ c #696A82",
+"7+ c #7E82B7",
+"8+ c #767AB2",
+"9+ c #171722",
+"0+ c #6B6F9F",
+"a+ c #7A7EB9",
+"b+ c #7377A0",
+"c+ c #202020",
+"d+ c #202025",
+"e+ c #616276",
+"f+ c #5E5F77",
+"g+ c #686A87",
+"h+ c #8084B3",
+"i+ c #8486AF",
+"j+ c #63657E",
+"k+ c #797B9F",
+"l+ c #797EB9",
+"m+ c #8185B7",
+"n+ c #6C6E86",
+"o+ c #71738D",
+"p+ c #5F606E",
+"q+ c #070707",
+"r+ c #4F505E",
+"s+ c #61627C",
+"t+ c #76789D",
+"u+ c #7F83B8",
+"v+ c #8386C6",
+"w+ c #3F405E",
+"x+ c #64678F",
+"y+ c #6D70A2",
+"z+ c #7D81BC",
+"A+ c #6D708F",
+"B+ c #050500",
+"C+ c #444653",
+"D+ c #8C90C5",
+"E+ c #7D81BB",
+"F+ c #787CB4",
+"G+ c #7D81B9",
+"H+ c #7A7EB7",
+"I+ c #7C80B8",
+"J+ c #3B3C3E",
+"K+ c #111113",
+"L+ c #8082A8",
+"M+ c #8185C1",
+"N+ c #7B7FB9",
+"O+ c #8084C2",
+"P+ c #484B6E",
+"Q+ c #13141D",
+"R+ c #64668F",
+"S+ c #6E719E",
+"T+ c #7B7DA1",
+"U+ c #5D5E6F",
+"V+ c #77799B",
+"W+ c #7C81BA",
+"X+ c #7579B4",
+"Y+ c #7D81B4",
+"Z+ c #616379",
+"`+ c #8185B6",
+" @ c #7478B5",
+".@ c #8084C3",
+"+@ c #7073A9",
+"@@ c #393A56",
+"#@ c #151620",
+"$@ c #6A6C94",
+"%@ c #7375A5",
+"&@ c #787BB2",
+"*@ c #777CB6",
+"=@ c #767BB4",
+"-@ c #7C80B9",
+";@ c #7A7FBC",
+">@ c #7C80BD",
+",@ c #7175A9",
+"'@ c #4D4F70",
+")@ c #21222F",
+"!@ c #65678D",
+"~@ c #696D97",
+"{@ c #6F72A2",
+"]@ c #7477AD",
+"^@ c #777AB3",
+"/@ c #787CB8",
+"(@ c #787DB9",
+"_@ c #777BB7",
+":@ c #62658B",
+"<@ c #4B4D64",
+"[@ c #2F313A",
+"}@ c #666785",
+"|@ c #676888",
+"1@ c #696B8D",
+"2@ c #6C6D91",
+"3@ c #6C6D92",
+"4@ c #6D6E92",
+"5@ c #6B6D8F",
+"6@ c #696A8B",
+"7@ c #656682",
+"8@ c #5E5F75",
+"9@ c #555463",
+"0@ c #484750",
+" . + @ # $ % & * = - ; > ",
+" , ' ) ! ~ { ] ^ / ( { _ : < [ } | 1 ",
+" 2 3 4 ] 5 6 7 8 9 0 a b c { { ( d e d f g h ",
+" i j k l m n o p q r s t u v p ( m o w w x y z A B ",
+" C D E F G H I I J K L M N O P Q R S T U V W X Y Z ` ... ",
+" +.@.#.x $.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|. ",
+"1.2._ 3.4.5.6.7.8.9.0.a.b.c.d.e.f.^.g.h.i.M j.k.l.m.n.o.p.q.",
+"r.m 3.{ s.t.u.v.w.x.y.t z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.{ O.P.",
+"Q.R.3.S.T.U.V.W.X.Y.Z.`.V.G. +.+++@+#+$+%+&+*+=+-+;+>+{ ,+'+",
+")+!+( ~+{+]+c.^+/+(+_+:+<+[+}+|+1+2+3+l.4+5+a.z.6+7+_ >+8+9+",
+" 0+d a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+K.s+t+u+_ R.v+w+ ",
+" x+y+z+A+B+C+D+[.E+v F+G+H+3._ I+u J+K+L+M+G+N+{ ` O+P+Q+ ",
+" R+S+T+U+V+W+X+{ 3.3.{ { : 3.{ Y+>.Z+`+ @3.~+.@+@@@#@ ",
+" $@%@&@*@d ( ( _ 3.3.3.3.3.=@p -@~+;@>@,@'@)@ ",
+" !@~@{@]@^@( d /@e (@(@/@_@{ z :@<@[@ ",
+" }@|@1@2@3@4@5@6@7@8@9@0@ "};
diff --git a/.emacs.d/icons/python.xpm b/.emacs.d/icons/python.xpm
new file mode 100644
index 0000000..b7b6a23
--- /dev/null
+++ b/.emacs.d/icons/python.xpm
@@ -0,0 +1,173 @@
+/* XPM */
+static char * python_xpm[] = {
+"16 16 154 2",
+" c None",
+". c #4D8CBE",
+"+ c #4787B8",
+"@ c #4483B5",
+"# c #417FB1",
+"$ c #3E7BAD",
+"% c #3B77A8",
+"& c #508FBE",
+"* c #BBD3E5",
+"= c #73A2C7",
+"- c #3F7CAE",
+"; c #3C79A9",
+"> c #3975A6",
+", c #3672A2",
+"' c #4B8ABA",
+") c #A2C1DA",
+"! c #6698C0",
+"~ c #3F7DAE",
+"{ c #3C79AA",
+"] c #3976A5",
+"^ c #3772A2",
+"/ c #346E9E",
+"( c #4686B7",
+"_ c #4A85B5",
+": c #4782B3",
+"< c #3D7BAC",
+"[ c #3A76A7",
+"} c #3773A3",
+"| c #346F9E",
+"1 c #326C9B",
+"2 c #4B8BBE",
+"3 c #4888BA",
+"4 c #4585B7",
+"5 c #4381B3",
+"6 c #407DAF",
+"7 c #3D7AAB",
+"8 c #3873A3",
+"9 c #35709F",
+"0 c #286499",
+"a c #FFF46F",
+"b c #FFE872",
+"c c #FFE66E",
+"d c #4B8CBE",
+"e c #4889BB",
+"f c #4382B3",
+"g c #417FB0",
+"h c #3873A4",
+"i c #326C9C",
+"j c #306998",
+"k c #276499",
+"l c #FFF26E",
+"m c #FFE56D",
+"n c #FFE366",
+"o c #FFE162",
+"p c #4888BC",
+"q c #4685B8",
+"r c #4482B4",
+"s c #407FB1",
+"t c #3E7BAC",
+"u c #3B77A9",
+"v c #3974A4",
+"w c #3571A1",
+"x c #336D9D",
+"y c #306A99",
+"z c #2F6897",
+"A c #1F5F9B",
+"B c #FFEA68",
+"C c #FFE265",
+"D c #FFE05E",
+"E c #FFDE58",
+"F c #4687B9",
+"G c #3E7CAD",
+"H c #3B78A8",
+"I c #3472A6",
+"J c #2C6BA3",
+"K c #2A689F",
+"L c #26649B",
+"M c #25629A",
+"N c #1D5E9C",
+"O c #DCCE6E",
+"P c #FEE162",
+"Q c #FFDF5C",
+"R c #FFDD56",
+"S c #FFDB50",
+"T c #427FB2",
+"U c #3F7CAD",
+"V c #3C78A9",
+"W c #4B80A2",
+"X c #FFF86B",
+"Y c #FFF06F",
+"Z c #FFF070",
+"` c #FFEF6E",
+" . c #FFEC67",
+".. c #FFE762",
+"+. c #FEE060",
+"@. c #FFDE5A",
+"#. c #FFDD53",
+"$. c #FFDA4D",
+"%. c #FFD848",
+"&. c #4280B1",
+"*. c #3C7AAA",
+"=. c #3372A8",
+"-. c #FFF36D",
+";. c #FFE873",
+">. c #FFE772",
+",. c #FFE66F",
+"'. c #FFE469",
+"). c #FFE263",
+"!. c #FFDF5D",
+"~. c #FFDE57",
+"{. c #FFDC51",
+"]. c #FFD94B",
+"^. c #FFD745",
+"/. c #FFD540",
+"(. c #296AA7",
+"_. c #FFED70",
+":. c #FFE367",
+"<. c #FFE161",
+"[. c #FFDF5B",
+"}. c #FFDD55",
+"|. c #FFDA4F",
+"1. c #FFD849",
+"2. c #FFD743",
+"3. c #FFD43D",
+"4. c #FFD43A",
+"5. c #3B77A7",
+"6. c #2566A4",
+"7. c #FFEC6D",
+"8. c #FFE46A",
+"9. c #FFE264",
+"0. c #FFDC52",
+"a. c #FFD94C",
+"b. c #FFD846",
+"c. c #FFD43B",
+"d. c #FFD33A",
+"e. c #FEE368",
+"f. c #FFE262",
+"g. c #FFD641",
+"h. c #FFD43C",
+"i. c #FFE15F",
+"j. c #FFDE59",
+"k. c #FFDC53",
+"l. c #FFD847",
+"m. c #FFDA58",
+"n. c #FFE58C",
+"o. c #FFD33E",
+"p. c #FFD53F",
+"q. c #FFDF73",
+"r. c #FFF6D7",
+"s. c #FFD645",
+"t. c #FFD94A",
+"u. c #FFD643",
+"v. c #FFD33B",
+"w. c #FFD542",
+" . + @ # $ % ",
+" & * = # - ; > , ",
+" ' ) ! ~ { ] ^ / ",
+" ( _ : < [ } | 1 ",
+" 2 3 4 5 6 7 [ 8 9 1 0 a b c ",
+"d e ( f g < % h 9 i j k l m n o ",
+"p q r s t u v w x y z A B C D E ",
+"F @ g G H I J K L M N O P Q R S ",
+"@ T U V W X Y Z ` ...+.@.#.$.%.",
+"&.~ *.=.-.;.>.,.'.).!.~.{.].^./.",
+"U 7 [ (._.b m :.<.[.}.|.1.2.3.4.",
+" 5.} 6.7.8.9.D E 0.a.b./.c.d. ",
+" e.f.Q R $.%.g.h. ",
+" i.j.k.$.l.m.n.o. ",
+" R {.].^.p.q.r.s. ",
+" t.u.3.v.c.w. "};
diff --git a/.emacs.d/icons/scheme.xpm b/.emacs.d/icons/scheme.xpm
new file mode 100644
index 0000000..721b32e
--- /dev/null
+++ b/.emacs.d/icons/scheme.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static char * scheme_xpm[] = {
+"13 16 3 1",
+" c None",
+". c #7d7d7d",
+"+ c #000000",
+" .... ",
+" .+++. ",
+".+..++. ",
+".+. .+. ",
+" . .+. ",
+" .+. ",
+" .++. ",
+" .+++. ",
+" .+++. ",
+" .++++. ",
+" .++.++. ",
+" .++..+. ",
+" .++. .+. . ",
+" .++. .++..+.",
+".++. .+++. ",
+" .. ... "};
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
index faf5ff5..c209642 100644
--- a/.emacs.d/init.el
+++ b/.emacs.d/init.el
@@ -21,6 +21,10 @@
'("/usr/share/emacs/site-lisp" "~/.emacs.d/site-lisp"))
(add-to-list 'load-path "~/.emacs.d/"))
+(require 'ext)
+(require 'mode-icons)
+(require 'oni)
+
(autoload 'define-slime-contrib "slime")
(autoload 'gtags-mode "gtags" nil t)
(autoload 'identica-mode "identica-mode" nil t)
@@ -39,598 +43,8 @@
(define-key key-translation-map (kbd "C-j") (kbd "C-l"))
(define-key key-translation-map (kbd "C-l") (kbd "C-j"))
-(defadvice org-agenda-redo (after org-agenda-redo-add-appts)
- "Pressing `r' on the agenda will also add appointments."
- (progn
- (setq appt-time-msg-list nil)
- (org-agenda-to-appt)))
-
(defalias 'yes-or-no-p 'y-or-n-p)
-(defface oni:mode-line-buffer-column
- '((t (:inherit font-lock-type-face)))
- "Face for the column number in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-buffer-line
- '((t (:inherit font-lock-type-face)))
- "Face for the line number in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-buffer-position
- '((t (:inherit font-lock-constant-face)))
- "Face for the buffer position in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-buffer-state
- '((t (:inherit font-lock-preprocessor-face)))
- "Face for the state of the buffer in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-mode
- '((t (:inherit font-lock-string-face)))
- "Face for the major mode in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-modified
- '((t (:inherit font-lock-warning-face)))
- "Face for the modified state in the mode-line"
- :group 'local)
-
-(defmacro oni:define-mailbox (name email &optional signature longname)
- "Define a mailbox function for mailbox NAME with address EMAIL.
-Optionally set signature to SIGNATURE and use LONGNAME as the
-actual account name."
- `(defun ,(make-symbol (concat "oni:" name "-mailbox")) ()
- ,(concat "Settings for " name " mailbox")
- (setq mu4e-mu-home ,(expand-file-name (concat "~/.mu/" name))
- mu4e-maildir ,(expand-file-name (concat "~/documents/mail/"
- (or longname name)))
- mu4e-get-mail-command ,(concat "offlineimap -oa " (or longname
- name))
- mu4e~main-buffer-name ,(concat "*mu4e-" name "*")
- user-mail-address ,email
- message-sendmail-extra-arguments '("-a" ,name)
- message-signature-file ,signature)))
-
-(defmacro oni:email (user at host dot com)
- "Turn arguments into an email address.
-The resulting email address will look like: USER@HOST.COM, AT and
-DOT are intentionally being skipped."
- (concat (symbol-name user) "@" (symbol-name host) "."
- (symbol-name com)))
-
-(defvar oni:mailbox-map
- '("top" ("menu"
- ("ryulash.org" . "ryuslash")
- ("ninthfloor" . "ninthfloor")
- ("gmail" . "gmail")
- ("aethon" . "aethon")))
- "A mailbox map for use with `tmm-prompt'.")
-
-(defvar oni:required-packages
- '(graphviz-dot-mode htmlize magit rainbow-delimiters
- rainbow-mode yasnippet markdown-mode flymake
- flymake-cursor pony-mode sauron dispass
- expand-region fill-column-indicator
- git-auto-commit-mode idomenu magit smex)
- "List of all the packages I have (want) installed.")
-
-(defun oni:after-save-func ()
- "Function for `after-save-hook'."
- (oni:compile-el)
- (executable-make-buffer-file-executable-if-script-p)
- (let ((dom-dir (locate-dominating-file (buffer-file-name) "Makefile")))
- (when dom-dir
- (shell-command (concat "make -C " dom-dir " TAGS >/dev/null 2>&1")))))
-
-(defun oni:before-save-func ()
- "Function for `before-save-hook'."
- (if (eq major-mode 'html-mode)
- (oni:replace-html-special-chars))
- (if (not (eq major-mode 'markdown-mode))
- (delete-trailing-whitespace)))
-
-(defun oni:c-mode-common-func ()
- "Function for `c-mode-common-hook'."
- )
-
-(defun oni:c-mode-func ()
- "Function for `c-mode-hook'."
- (local-set-key [f9] 'compile)
- (local-set-key "\C-j" 'oni:newline-and-indent))
-
-(defun oni:close-client-window ()
- "Close a client's frames."
- (interactive)
- (server-save-buffers-kill-terminal nil))
-
-(defun oni:compilation-finish-function (buffer str)
- "Don't show compilation window if everything went OK."
- (unless (string-match-p "exited abnormally" str)
- ;;(run-at-time 0.5 nil 'delete-windows-on buffer)
- (delete-windows-on buffer)
- (message "Compilation successful")))
-
-(defun oni:compile-el ()
- "Compile the current buffer file if it is an .el file."
- (let* ((full-file-name (buffer-file-name))
- (file-name (file-name-nondirectory full-file-name))
- (suffix (file-name-extension file-name)))
- (if (and (not (string-equal file-name ".dir-locals.el"))
- (string-equal suffix "el"))
- (byte-compile-file full-file-name))))
-
-(defun oni:css-mode-func ()
- "Function for `css-mode-hook'."
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (rainbow-mode))
-
-(defun oni:diary-display-func ()
- "Function for `diary-display-hook'."
- (diary-fancy-display))
-
-(defun oni:emacs-lisp-mode-func ()
- "Function for `emacs-lisp-mode-hook'."
- (eldoc-mode))
-
-(defun oni:emms-toggle-playing ()
- "Toggle between playing/paused states."
- (interactive)
- (if (eq emms-player-playing-p nil)
- (emms-start)
- (emms-pause)))
-
-(defun oni:erc-mode-func ()
- "Function for `erc-mode-hook'."
- (erc-fill-mode -1)
- (visual-line-mode)
- (setq truncate-lines nil))
-
-(defun oni:eshell-mode-func ()
- "Function for `eshell-mode-hook'."
- (setq truncate-lines nil))
-
-(defun oni:eshell-prompt-function ()
- "Show a pretty shell prompt."
- (let ((status (if (zerop eshell-last-command-status) ?+ ?-))
- (hostname (shell-command-to-string "hostname"))
- (dir (abbreviate-file-name (eshell/pwd)))
- (branch
- (shell-command-to-string
- "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'"))
- (userstatus (if (zerop (user-uid)) ?# ?$)))
- (concat
- (propertize (char-to-string status)
- 'face `(:foreground ,(if (= status ?+)
- "green"
- "red")))
- " "
- (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id)
- " "
- (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face)
- " "
- (when (not (string= branch ""))
- (propertize
- ;; Cut off "* " and "\n"
- (substring branch 2 -1)
- 'face 'font-lock-function-name-face))
- " \n"
- (propertize (char-to-string userstatus)
- 'face `(:foreground "blue"))
- "> ")))
-
-(defun oni:flymake-mode-func ()
- "Function for `flymake-mode-hook'."
- (local-set-key [M-P] 'flymake-goto-prev-error)
- (local-set-key [M-N] 'flymake-goto-next-error))
-
-(defun oni:flymake-pyflakes-init ()
- "Initialize function for flymake with pyflakes."
- (let* ((temp-file (flymake-init-create-temp-buffer-copy
- 'flymake-create-temp-inplace))
- (local-file (file-relative-name temp-file (file-name-directory
- buffer-file-name))))
- (list "pycheck.sh" (list local-file))))
-
-(defun oni:go-mode-func ()
- "Function for `go-mode-hook'."
- (setq indent-tabs-mode nil)
- (local-set-key "\C-j" 'oni:newline-and-indent))
-
-(defun oni:gtags-mode-func ()
- "Function for `gtags-mode-hook'."
- (local-set-key "\M-," 'gtags-find-tag)
- (local-set-key "\M-." 'gtags-find-rtag))
-
-(defun oni:html-mode-func ()
- "Function for `html-mode-hook'."
- (yas-minor-mode)
- (fci-mode))
-
-(defun oni:indent-shift-left (start end &optional count)
- "Rigidly indent region.
-Region is from START to END. Move
-COUNT number of spaces if it is non-nil otherwise use
-`tab-width'."
- (interactive
- (if mark-active
- (list (region-beginning) (region-end) current-prefix-arg)
- (list (line-beginning-position)
- (line-end-position)
- current-prefix-arg)))
- (if count
- (setq count (prefix-numeric-value count))
- (setq count tab-width))
- (when (> count 0)
- (let ((deactivate-mark nil))
- (save-excursion
- (goto-char start)
- (while (< (point) end)
- (if (and (< (current-indentation) count)
- (not (looking-at "[ \t]*$")))
- (error "Can't shift all lines enough"))
- (forward-line))
- (indent-rigidly start end (- count))))))
-
-(defun oni:indent-shift-right (start end &optional count)
- "Indent region between START and END rigidly to the right.
-If COUNT has been specified indent by that much, otherwise look at
-`tab-width'."
- (interactive
- (if mark-active
- (list (region-beginning) (region-end) current-prefix-arg)
- (list (line-beginning-position)
- (line-end-position)
- current-prefix-arg)))
- (let ((deactivate-mark nil))
- (if count
- (setq count (prefix-numeric-value count))
- (setq count tab-width))
- (indent-rigidly start end count)))
-
-(defun oni:jabber-chat-mode-func ()
- "Function for `jabber-chat-mode-hook'."
- (visual-line-mode)
- (setq mode-line-format (append (cddr jabber-chat-header-line-format)
- '(global-mode-string))
- header-line-format nil))
-
-(defun oni:jabber-roster-mode-func ()
- "Function for `jabber-roster-mode-hook'."
- (setq mode-line-format
- (list (propertize " %m" 'face 'mode-line-buffer-id))))
-
-(defun oni:java-mode-func ()
- "Function for `java-mode-hook'."
- (local-set-key "\C-j" 'oni:newline-and-indent))
-
-(defun oni:js-mode-func ()
- "Function for `js-mode-hook'."
- (rainbow-delimiters-mode)
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (pretty-symbols-mode -1))
-
-(defun oni:js2-mode-func ()
- "Function for `js2-mode-hook'."
- (oni:prog-mode-func)
- (oni:js-mode-func)
- (local-set-key (kbd "<f5>") #'slime-js-reload)
- (slime-js-minor-mode))
-
-(defun oni:kill-region-or-backward-char ()
- "Either `kill-region' or `backward-delete-char-untabify'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (backward-delete-char-untabify 1)))
-
-(defun oni:kill-region-or-forward-char ()
- "Either `kill-region' or `delete-forward-char'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (delete-forward-char 1)))
-
-(defun oni:kill-region-or-line ()
- "Either `kill-region' or `kill-line'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (kill-line)))
-
-(defun oni:lisp-mode-func ()
- "Function for `lisp-mode-hook'."
- )
-
-(defun oni:lua-mode-func()
- "Function for `lisp-mode-hook'."
- (local-unset-key (kbd ")"))
- (local-unset-key (kbd "]"))
- (local-unset-key (kbd "}")))
-
-(defun oni:magit-log-edit-mode-func ()
- "Function for `magit-log-edit-mode-hook'."
- (auto-fill-mode)
- (font-lock-add-keywords
- nil
- '(("\\`\\(.\\{,50\\}\\)\\(.*\\)\n?\\(.*\\)$"
- (1 'git-commit-summary-face)
- (2 'git-commit-overlong-summary-face)
- (3 'git-commit-nonempty-second-line-face))
- ("`\\([^']+\\)'" 1 font-lock-constant-face))
- t))
-
-(defun oni:markdown-mode-func ()
- "Function for `markdown-mode-hook'."
- (auto-fill-mode)
- (whitespace-mode))
-
-(defun oni:message-mode-func ()
- "Function for `message-mode-hook'."
- (auto-fill-mode)
- (flyspell-mode)
- (ispell-change-dictionary (read-string "New dictionary: ")))
-
-(defun oni:mini-fix-timestamp-string (date-string)
- "A minimal version of Xah Lee's `fix-timestamp-string'.
-Turn DATE-STRING into something else that can be worked with in
-code. Found at http://xahlee.org/emacs/elisp_parse_time.html"
- (setq date-string (replace-regexp-in-string "Jan" "01" date-string)
- date-string (replace-regexp-in-string "Feb" "02" date-string)
- date-string (replace-regexp-in-string "Mar" "03" date-string)
- date-string (replace-regexp-in-string "Apr" "04" date-string)
- date-string (replace-regexp-in-string "May" "05" date-string)
- date-string (replace-regexp-in-string "Jun" "06" date-string)
- date-string (replace-regexp-in-string "Jul" "07" date-string)
- date-string (replace-regexp-in-string "Aug" "08" date-string)
- date-string (replace-regexp-in-string "Sep" "09" date-string)
- date-string (replace-regexp-in-string "Oct" "10" date-string)
- date-string (replace-regexp-in-string "Nov" "11" date-string)
- date-string (replace-regexp-in-string "Dec" "12" date-string))
- (string-match
- "^\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{4\\}\\)$"
- date-string)
- (format "%s-%s-%s"
- (match-string 3 date-string)
- (match-string 2 date-string)
- (match-string 1 date-string)))
-
-(defun oni:move-beginning-of-dwim ()
- "Move to beginning of line either after indentation or before."
- (interactive)
- (let ((start (point)))
- (back-to-indentation)
- (if (= start (point))
- (beginning-of-line))))
-
-(defun oni:move-end-of-dwim ()
- "Move to end of line, either before any comments or after."
- (interactive)
- (let ((start (point))
- (eolpos (line-end-position)))
- (beginning-of-line)
- (if (and comment-start
- (comment-search-forward eolpos t))
- (progn
- (search-backward-regexp (concat "[^ \t" comment-start "]"))
- (forward-char)
-
- (when (or (bolp)
- (= start (point)))
- (end-of-line)))
- (end-of-line))))
-
-;; (defun oni:mu4e-view-mode-func ()
-;; "Function for `mu4e-view-mode-hook'."
-;; (longlines-mode))
-
-(defun oni:myepisodes-formatter (plist)
- "Format RSS items from MyEpisodes as org tasks.
-PLIST contains all the pertinent information."
- (let ((str (plist-get plist :title)))
- (string-match
- "^\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]$"
- str)
- (let* ((title (match-string 1 str))
- (episode (match-string 2 str))
- (name (match-string 3 str))
- (date (oni:mini-fix-timestamp-string (match-string 4 str))))
- (format "* ACQUIRE %s %s - %s <%s>" title episode name date))))
-
-(defun oni:newline-and-indent ()
- "`newline-and-indent', but with a twist.
-When dealing with braces, add another line and indent that too."
- (interactive)
- (if (and (not (or (= (point) (point-max))
- (= (point) (point-min))))
- (or (and (char-equal (char-before) ?{)
- (char-equal (char-after) ?}))
- (and (char-equal (char-before) ?\()
- (char-equal (char-after) ?\)))))
- (save-excursion (newline-and-indent)))
- (newline-and-indent))
-
-(defun oni:org-mode-func ()
- "Function for `org-mode-hook'."
- (flyspell-mode)
- (auto-fill-mode)
- (yas-minor-mode))
-
-(defun oni:php-mode-func ()
- "Function for `php-mode-hook'."
- (flymake-mode)
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (c-set-offset 'arglist-intro '+)
- (c-set-offset 'arglist-close '0)
- (rainbow-delimiters-mode)
- (setq fci-rule-column 80))
-
-(defun oni:prog-mode-func ()
- "Function for `prog-mode-hook'."
- (rainbow-delimiters-mode)
- (fci-mode)
- (pretty-symbols-mode)
- (yas-minor-mode))
-
-(defun oni:python-mode-func ()
- "Function for `python-mode-hook'."
- (flymake-mode)
- (local-set-key (kbd "C->") 'python-indent-shift-right)
- (local-set-key (kbd "C-<") 'python-indent-shift-left)
- (set (make-local-variable 'electric-indent-chars) nil)
- (rainbow-delimiters-mode)
- (setq fci-rule-column 79
- fill-column 72)
- (fci-mode))
-
-(defun oni:raise-eshell ()
- "Start or switch back to `eshell'.
-Also change directories to current working directory."
- (interactive)
- (let ((dir (file-name-directory
- (or (buffer-file-name) "~/")))
- (hasfile (not (eq (buffer-file-name) nil))))
- (eshell)
- (if (and hasfile (eq eshell-process-list nil))
- (progn
- (eshell/cd dir)
- (eshell-reset)))))
-
-(defun oni:raise-scratch (&optional mode)
- "Show the *scratch* buffer.
-If called with a universal argument, ask the user which mode to
-use. If MODE is not nil, open a new buffer with the name
-*MODE-scratch* and load MODE as its major mode."
- (interactive (list (if current-prefix-arg
- (read-string "Mode: ")
- nil)))
- (let* ((bname (if mode
- (concat "*" mode "-scratch*")
- "*scratch*"))
- (buffer (get-buffer bname))
- (mode-sym (intern (concat mode "-mode"))))
-
- (unless buffer
- (setq buffer (generate-new-buffer bname))
- (with-current-buffer buffer
- (when (fboundp mode-sym)
- (funcall mode-sym))))
-
- (select-window (display-buffer buffer))))
-
-(defun oni:reload-buffer ()
- "Reload current buffer."
- (interactive)
- (revert-buffer nil t nil))
-
-(defun oni:replace-html-special-chars ()
- "Replace special characters with HTML escaped entities."
- (oni:replace-occurrences "é" "&eacute;"))
-
-(defun oni:replace-occurrences (from to)
- "Replace all occurrences of FROM with TO in the current buffer."
- (save-excursion
- (goto-char (point-min))
- (while (search-forward from nil t)
- (replace-match to))))
-
-(defun oni:required-packages-installed-p ()
- "Check if all the packages I need are installed."
- (let ((tmp-packages oni:required-packages)
- (result t))
- (while (and tmp-packages result)
- (if (not (package-installed-p (car tmp-packages)))
- (setq result nil))
- (setq tmp-packages (cdr tmp-packages)))
- result))
-
-(defun oni:scheme-mode-func ()
- "Function for `scheme-mode-hook'."
- )
-
-(defun oni:self-insert-dwim ()
- "Execute self insert, but when the region is active call self
-insert at the end of the region and at the beginning."
- (interactive)
- (if (region-active-p)
- (let ((electric-pair-mode nil)
- (beginning (region-beginning))
- (end (region-end)))
- (goto-char end)
- (self-insert-command 1)
- (save-excursion
- (goto-char beginning)
- (self-insert-command 1)))
- (self-insert-command 1)))
-
-(defun oni:shorten-dir (dir)
- "Shorten a directory, (almost) like fish does it."
- (while (string-match "\\(/\\.?[^./]\\)[^/]+/" dir)
- (setq dir (replace-match "\\1/" nil nil dir)))
- dir)
-
-(defun oni:split-window-interactive (dir)
- "Split windows in direction DIR.
-
-Can also delete or switch to another window."
- (interactive
- (list (read-char "Direction (h,v,q,d,o): ")))
- (case dir
- ((?v) (split-window-vertically))
- ((?h) (split-window-horizontally))
- ((?q) (delete-other-windows))
- ((?d) (delete-window))
- ((?o) (other-window 1))))
-
-(defun oni:split-window-interactively (window)
- "Ask for a direction and split WINDOW that way.
-
-If no direction is given, don't split."
- (let ((dir (read-char "Direction (h,v): ")))
- (case dir
- ((?v) (split-window-vertically))
- ((?h) (split-window-horizontally))
- (t window))))
-
-(defun oni:start-emms ()
- "Check to see if the function `emms' exists, if not call
-`emms-player-mpd-connect' and assume that will have loaded it."
- (interactive)
- (unless (fboundp 'emms)
- (emms-player-mpd-connect))
- (emms))
-
-(defun oni:term-mode-func ()
- "Function for `term-mode-hook'."
- (setq truncate-lines nil))
-
-(defun oni:texinfo-mode-func ()
- "Function for `texinfo-mode-hook'."
- (auto-fill-mode))
-
-(defun oni:view-mail (inbox)
- "Show a menu with all mailbox options from `oni:mailbox-map'
-for easy selection."
- (interactive
- (list (progn
- (require 'tmm)
- (let ((tmm-completion-prompt "Choose a mailbox\n"))
- (tmm-prompt oni:mailbox-map)))))
- (if inbox
- (progn
- (require 'mu4e)
- (funcall (intern (concat "oni:" inbox "-mailbox")))
- (mu4e))))
-
-(defun oni:write-file-func ()
- "Function for `write-file-hooks'."
- (time-stamp))
-
-(defun oni:yas-minor-mode-func ()
- "Function for `yas-minor-mode-hook'."
- (yas-load-directory (car yas-snippet-dirs)))
-
(eval-after-load "ebuff-menu"
'(define-key electric-buffer-menu-mode-map
(kbd "C-s") 'isearch-forward))
@@ -659,7 +73,7 @@ for easy selection."
(add-to-list ; Make sure pyflakes is loaded
'flymake-allowed-file-name-masks ; for python files.
- '("\\.py\\'" oni:flymake-pyflakes-init))
+ '("\\.py\\'" ext:flymake-pyflakes-init))
(add-to-list ; Error line repexp for go
'flymake-err-line-patterns ; compilation.
@@ -677,15 +91,6 @@ for easy selection."
(eval-after-load "info"
'(require 'info+))
-(eval-after-load "mu4e"
- '(add-to-list
- 'org-capture-templates
- '("c" "Contact" entry (file "~/documents/org/misc/contacts.org")
- (concat "* %(mu4e-view-snarf-from 'name)\n"
- " :PROPERTIES:\n"
- " :EMAIL: %(mu4e-view-snarf-from 'email)\n"
- " :END:"))))
-
(eval-after-load "org"
'(progn
(require 'appt)
@@ -731,53 +136,6 @@ for easy selection."
(setq-default fci-rule-column 73)
(setq-default gac-automatically-push-p t)
(setq-default indent-tabs-mode nil)
-;; (setq-default mode-line-format
-;; (list
-;; '(:eval
-;; (if (and (buffer-modified-p) (buffer-file-name))
-;; (propertize "!"
-;; 'face 'oni:mode-line-modified
-;; 'help-echo "Buffer has been modified")
-;; " "))
-
-;; '(:eval (propertize "%m"
-;; 'face 'oni:mode-line-mode
-;; 'help-echo buffer-file-coding-system))
-
-;; ": "
-
-;; '(:eval (propertize "%b "
-;; 'face 'mode-line-buffer-id
-;; 'help-echo (buffer-file-name)))
-
-;; "("
-;; (propertize "%p" 'face 'oni:mode-line-buffer-position) ":"
-;; (propertize "%04l" 'face 'oni:mode-line-buffer-line) ","
-;; (propertize "%02c" 'face 'oni:mode-line-buffer-column)
-;; ") "
-
-;; "["
-;; '(:eval (propertize
-;; (if buffer-read-only
-;; "R"
-;; (if overwrite-mode "O" "I"))
-;; 'face 'oni:mode-line-buffer-state
-;; 'help-echo (concat "Buffer is "
-;; (if buffer-read-only
-;; "read-only"
-;; (if overwrite-mode
-;; "in overwrite mode"
-;; "in insert mode")))))
-
-;; "] "
-
-;; '(:eval
-;; (propertize (format-time-string "%H:%M")
-;; 'help-echo
-;; (concat (format-time-string "%c; ")
-;; (emacs-uptime "Uptime: %hh"))))
-;; " --"
-;; '(:eval global-mode-string)))
(setq-default php-mode-warn-if-mumamo-off nil)
(setq-default require-final-newline t)
(setq-default tab-width 4)
@@ -847,8 +205,8 @@ for easy selection."
(setq jabber-chat-buffer-format "*jabber:%n*")
(setq jabber-chat-buffer-show-avatar nil)
(setq jabber-chat-fill-long-lines nil)
-(setq jabber-chat-foreign-prompt-format "[%t] < ")
-(setq jabber-chat-local-prompt-format "[%t] > ")
+(setq jabber-chat-foreign-prompt-format "%t < ")
+(setq jabber-chat-local-prompt-format "%t > ")
(setq jabber-chatstates-confirm nil)
(setq jabber-history-dir "~/.emacs.d/jabber")
(setq jabber-roster-show-bindings nil)
@@ -922,16 +280,16 @@ for easy selection."
(setq org-src-fontify-natively t)
(setq org-tags-exclude-from-inheritance '("crypt"))
(setq org-todo-keyword-faces
- '(("TODO" :foreground "red")
- ("IN PROGRESS" :foreground "yellow")
- ("DONE" :foreground "forest green")
- ("SUCCEEDED" :foreground "forest green")
- ("WAITING" :foreground "orange")
- ("CANCELLED" :foreground "orangered")
- ("FAILED" :foreground "orangered")))
-(setq org-todo-keywords
- '((sequence "TODO(t)" "IN PROGRESS" "WAITING(@/!)" "|"
- "DONE(!/!)" "CANCELLED(@/!)")))
+ '(("TODO" :background "red")
+ ("DONE" :background "forest green")
+ ("SUCCEEDED" :background "forest green")
+ ("WAITING" :background "orange" :foreground "black")
+ ("CANCELLED" :background "orange red")
+ ("FAILED" :background "orange red")
+ ("WIP" :background "#ff9800" :foreground "black")
+ ("HOLD" :background "orange" :foreground "black")
+ ("ACQUIRE" :background "red")
+ ("IGNORED" :background "#555555")))
(setq org-use-fast-todo-selection t)
(setq package-archives
'(("melpa" . "http://melpa.milkbox.net/packages/")
@@ -974,7 +332,6 @@ for easy selection."
(add-hook 'after-save-hook 'oni:after-save-func t)
(add-hook 'before-save-hook 'oni:before-save-func)
-(add-hook 'c-mode-common-hook 'oni:c-mode-common-func)
(add-hook 'c-mode-hook 'oni:c-mode-func)
(add-hook 'css-mode-hook 'oni:css-mode-func)
(add-hook 'diary-display-hook 'oni:diary-display-func)
@@ -990,17 +347,15 @@ for easy selection."
(add-hook 'java-mode-hook 'oni:java-mode-func)
(add-hook 'js-mode-hook 'oni:js-mode-func)
(add-hook 'js2-mode-hook 'oni:js2-mode-func)
-(add-hook 'lisp-mode-hook 'oni:lisp-mode-func)
(add-hook 'lua-mode-hook 'oni:lua-mode-func)
(add-hook 'magit-log-edit-mode-hook 'oni:magit-log-edit-mode-func)
(add-hook 'markdown-mode-hook 'oni:markdown-mode-func)
(add-hook 'message-mode-hook 'oni:message-mode-func)
-;; (add-hook 'mu4e-view-mode-hook 'oni:mu4e-view-mode-func)
(add-hook 'org-mode-hook 'oni:org-mode-func)
(add-hook 'php-mode-hook 'oni:php-mode-func)
(add-hook 'prog-mode-hook 'oni:prog-mode-func)
(add-hook 'python-mode-hook 'oni:python-mode-func)
-(add-hook 'scheme-mode-hook 'oni:scheme-mode-func)
+(add-hook 'rst-mode-hook 'oni:rst-mode-func)
(add-hook 'term-mode-hook 'oni:term-mode-func)
(add-hook 'texinfo-mode-hook 'oni:texinfo-mode-func)
(add-hook 'write-file-hooks 'oni:write-file-func)
@@ -1014,12 +369,13 @@ for easy selection."
(global-set-key (kbd "<XF86HomePage>") 'oni:raise-scratch)
(global-set-key (kbd "<XF86Mail>") 'oni:view-mail)
(global-set-key (kbd "<XF86Tools>") 'oni:start-emms)
-(global-set-key (kbd "<f5>") 'oni:reload-buffer)
+(global-set-key (kbd "<f5>") 'ext:reload-buffer)
(global-set-key (kbd "<f6>") 'jabber-switch-to-roster-buffer)
(global-set-key (kbd "<f7>") 'magit-status)
(global-set-key (kbd "<f8>") 'oni:raise-eshell)
(global-set-key (kbd "C-<") 'indent-shift-left)
(global-set-key (kbd "C->") 'indent-shift-right)
+(global-set-key (kbd "C-M-4") 'split-window-vertically)
(global-set-key (kbd "C-M-SPC") 'er/expand-region)
(global-set-key (kbd "C-M-d") 'kill-word)
(global-set-key (kbd "C-M-w") 'backward-kill-word)
@@ -1028,15 +384,15 @@ for easy selection."
(global-set-key (kbd "C-c a") 'org-agenda)
(global-set-key (kbd "C-c c") 'org-capture)
(global-set-key (kbd "C-c i p") 'identica-update-status-interactive)
+(global-set-key (kbd "C-c p") 'oni:show-buffer-position)
(global-set-key (kbd "C-d") 'oni:kill-region-or-forward-char)
(global-set-key (kbd "C-e") 'oni:move-end-of-dwim)
(global-set-key (kbd "C-k") 'oni:kill-region-or-line)
(global-set-key (kbd "C-w") 'oni:kill-region-or-backward-char)
(global-set-key (kbd "C-x C-b") 'electric-buffer-list)
+(global-set-key (kbd "M-4") 'split-window-horizontally)
(global-set-key (kbd "M-n") 'idomenu)
(global-set-key (kbd "\"") 'oni:self-insert-dwim)
-(global-set-key (kbd "M-4") 'split-window-horizontally)
-(global-set-key (kbd "C-M-4") 'split-window-vertically)
(if (daemonp)
(global-set-key "\C-x\C-c" 'oni:close-client-window)
@@ -1064,9 +420,10 @@ for easy selection."
'(".*" . ((bw-display-in-other-window . nil))))
(add-to-list 'display-buffer-alist
'("^\\*.*\\*$" . ((bw-display-in-bottom-window . nil))))
+(add-to-list 'display-buffer-alist
+ '("^\\*magit: .*\\*$" . ((display-buffer-same-window . nil))))
(delete " " mode-line-format)
-(delete " " mode-line-format)
(unless (oni:required-packages-installed-p)
(message "%s" "Refreshing package database...")
diff --git a/.emacs.d/site-lisp/ext.el b/.emacs.d/site-lisp/ext.el
new file mode 100644
index 0000000..2ed65d4
--- /dev/null
+++ b/.emacs.d/site-lisp/ext.el
@@ -0,0 +1,47 @@
+;;; ext.el --- More emacs functions
+
+;; Copyright (C) 2012 Tom Willemsen
+
+;; Author: Tom Willemsen <tom@ryuslash.org>
+;; Keywords: local
+
+;; 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 of the License, 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, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defadvice org-agenda-redo (after ext:org-agenda-redo-add-appts)
+ "Pressing `r' on the agenda will also add appointments."
+ (progn
+ (setq appt-time-msg-list nil)
+ (org-agenda-to-appt)))
+
+(defun ext:flymake-pyflakes-init ()
+ "Initialize function for flymake with pyflakes."
+ (let* ((temp-file (flymake-init-create-temp-buffer-copy
+ 'flymake-create-temp-inplace))
+ (local-file (file-relative-name temp-file (file-name-directory
+ buffer-file-name))))
+ (list "pycheck.sh" (list local-file))))
+
+(defun ext:reload-buffer ()
+ "Reload current buffer."
+ (interactive)
+ (revert-buffer nil t nil))
+
+(provide 'ext)
+;;; ext.el ends here
diff --git a/.emacs.d/site-lisp/mode-icons.el b/.emacs.d/site-lisp/mode-icons.el
new file mode 100644
index 0000000..771d6f3
--- /dev/null
+++ b/.emacs.d/site-lisp/mode-icons.el
@@ -0,0 +1,59 @@
+;;; mode-icons.el --- Show icons for modes
+
+;; Copyright (C) 2012 Tom Willemsen
+
+;; Author: Tom Willemsen <thomas@aethon.nl>
+;; Keywords: multimedia
+
+;; 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 of the License, 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, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defun mode-icons-get-icon-file (name)
+ (concat user-emacs-directory "/icons/" name))
+
+(defvar mode-icons
+ `(("Emacs-Lisp" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "emacs.xpm")
+ :ascent center))
+ ("Python" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "python.xpm")
+ :ascent center))
+ ("Scheme" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "scheme.xpm")
+ :ascent center))
+ ("Lisp" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "cl.xpm")
+ :ascent center))
+ ("PHP" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "php.xpm")
+ :ascent center)))
+ "Icons for major modes.")
+
+(defun set-mode-icon (mode)
+ (let ((icon-spec (assoc mode mode-icons)))
+ (if icon-spec
+ (setq mode-name (propertize mode-name 'display (cdr icon-spec))))))
+
+(defun set-current-mode-icon ()
+ (set-mode-icon mode-name))
+
+(add-hook 'after-change-major-mode-hook 'set-current-mode-icon)
+
+(provide 'mode-icons)
+;;; mode-icons.el ends here
diff --git a/.emacs.d/site-lisp/oni.el b/.emacs.d/site-lisp/oni.el
new file mode 100644
index 0000000..2338ecc
--- /dev/null
+++ b/.emacs.d/site-lisp/oni.el
@@ -0,0 +1,555 @@
+;;; oni.el --- Functions for emacs
+
+;; Copyright (C) 2012 Tom Willemsen
+
+;; Author: Tom Willemsen <tom@ryuslash.org>
+;; Keywords: local
+
+;; 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 of the License, 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, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defmacro oni:define-mailbox (name email &optional signature longname)
+ "Define a mailbox function for mailbox NAME with address EMAIL.
+Optionally set signature to SIGNATURE and use LONGNAME as the
+actual account name."
+ `(defun ,(make-symbol (concat "oni:" name "-mailbox")) ()
+ ,(concat "Settings for " name " mailbox")
+ (setq mu4e-mu-home ,(expand-file-name (concat "~/.mu/" name))
+ mu4e-maildir ,(expand-file-name (concat "~/documents/mail/"
+ (or longname name)))
+ mu4e-get-mail-command ,(concat "offlineimap -oa " (or longname
+ name))
+ mu4e~main-buffer-name ,(concat "*mu4e-" name "*")
+ user-mail-address ,email
+ message-sendmail-extra-arguments '("-a" ,name)
+ message-signature-file ,signature)))
+
+(defmacro oni:email (user at host dot com)
+ "Turn arguments into an email address.
+The resulting email address will look like: USER@HOST.COM, AT and
+DOT are intentionally being skipped."
+ (concat (symbol-name user) "@" (symbol-name host) "."
+ (symbol-name com)))
+
+(defvar oni:mailbox-map
+ '("top" ("menu"
+ ("ryulash.org" . "ryuslash")
+ ("ninthfloor" . "ninthfloor")
+ ("gmail" . "gmail")
+ ("aethon" . "aethon")))
+ "A mailbox map for use with `tmm-prompt'.")
+
+(defvar oni:required-packages
+ '(graphviz-dot-mode htmlize magit rainbow-delimiters
+ rainbow-mode yasnippet markdown-mode flymake
+ flymake-cursor pony-mode sauron dispass
+ expand-region fill-column-indicator
+ git-auto-commit-mode idomenu magit smex)
+ "List of all the packages I have (want) installed.")
+
+(defun oni:after-save-func ()
+ "Function for `after-save-hook'."
+ (oni:compile-el)
+ (executable-make-buffer-file-executable-if-script-p)
+ (let ((dom-dir (locate-dominating-file (buffer-file-name) "Makefile")))
+ (when dom-dir
+ (shell-command (concat "make -C " dom-dir " TAGS >/dev/null 2>&1")))))
+
+(defun oni:before-save-func ()
+ "Function for `before-save-hook'."
+ (if (eq major-mode 'html-mode)
+ (oni:replace-html-special-chars))
+ (if (not (eq major-mode 'markdown-mode))
+ (delete-trailing-whitespace)))
+
+(defun oni:c-mode-func ()
+ "Function for `c-mode-hook'."
+ (local-set-key [f9] 'compile)
+ (local-set-key "\C-j" 'oni:newline-and-indent))
+
+(defun oni:close-client-window ()
+ "Close a client's frames."
+ (interactive)
+ (server-save-buffers-kill-terminal nil))
+
+(defun oni:compile-el ()
+ "Compile the current buffer file if it is an .el file."
+ (let* ((full-file-name (buffer-file-name))
+ (file-name (file-name-nondirectory full-file-name))
+ (suffix (file-name-extension file-name)))
+ (if (and (not (string-equal file-name ".dir-locals.el"))
+ (string-equal suffix "el"))
+ (byte-compile-file full-file-name))))
+
+(defun oni:css-mode-func ()
+ "Function for `css-mode-hook'."
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (rainbow-mode))
+
+(defun oni:diary-display-func ()
+ "Function for `diary-display-hook'."
+ (diary-fancy-display))
+
+(defun oni:emacs-lisp-mode-func ()
+ "Function for `emacs-lisp-mode-hook'."
+ (eldoc-mode))
+
+(defun oni:emms-toggle-playing ()
+ "Toggle between playing/paused states."
+ (interactive)
+ (if (eq emms-player-playing-p nil)
+ (emms-start)
+ (emms-pause)))
+
+(defun oni:erc-mode-func ()
+ "Function for `erc-mode-hook'."
+ (erc-fill-mode -1)
+ (visual-line-mode)
+ (setq truncate-lines nil))
+
+(defun oni:eshell-mode-func ()
+ "Function for `eshell-mode-hook'."
+ (setq truncate-lines nil))
+
+(defun oni:eshell-prompt-function ()
+ "Show a pretty shell prompt."
+ (let ((status (if (zerop eshell-last-command-status) ?+ ?-))
+ (hostname (shell-command-to-string "hostname"))
+ (dir (abbreviate-file-name (eshell/pwd)))
+ (branch
+ (shell-command-to-string
+ "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'"))
+ (userstatus (if (zerop (user-uid)) ?# ?$)))
+ (concat
+ (propertize (char-to-string status)
+ 'face `(:foreground ,(if (= status ?+)
+ "green"
+ "red")))
+ " "
+ (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id)
+ " "
+ (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face)
+ " "
+ (when (not (string= branch ""))
+ (propertize
+ ;; Cut off "* " and "\n"
+ (substring branch 2 -1)
+ 'face 'font-lock-function-name-face))
+ " \n"
+ (propertize (char-to-string userstatus)
+ 'face `(:foreground "blue"))
+ "> ")))
+
+(defun oni:flymake-mode-func ()
+ "Function for `flymake-mode-hook'."
+ (local-set-key [M-P] 'flymake-goto-prev-error)
+ (local-set-key [M-N] 'flymake-goto-next-error))
+
+(defun oni:go-mode-func ()
+ "Function for `go-mode-hook'."
+ (setq indent-tabs-mode nil)
+ (local-set-key "\C-j" 'oni:newline-and-indent))
+
+(defun oni:gtags-mode-func ()
+ "Function for `gtags-mode-hook'."
+ (local-set-key "\M-," 'gtags-find-tag)
+ (local-set-key "\M-." 'gtags-find-rtag))
+
+(defun oni:html-mode-func ()
+ "Function for `html-mode-hook'."
+ (yas-minor-mode)
+ (fci-mode))
+
+(defun oni:indent-shift-left (start end &optional count)
+ "Rigidly indent region.
+Region is from START to END. Move
+COUNT number of spaces if it is non-nil otherwise use
+`tab-width'."
+ (interactive
+ (if mark-active
+ (list (region-beginning) (region-end) current-prefix-arg)
+ (list (line-beginning-position)
+ (line-end-position)
+ current-prefix-arg)))
+ (if count
+ (setq count (prefix-numeric-value count))
+ (setq count tab-width))
+ (when (> count 0)
+ (let ((deactivate-mark nil))
+ (save-excursion
+ (goto-char start)
+ (while (< (point) end)
+ (if (and (< (current-indentation) count)
+ (not (looking-at "[ \t]*$")))
+ (error "Can't shift all lines enough"))
+ (forward-line))
+ (indent-rigidly start end (- count))))))
+
+(defun oni:indent-shift-right (start end &optional count)
+ "Indent region between START and END rigidly to the right.
+If COUNT has been specified indent by that much, otherwise look at
+`tab-width'."
+ (interactive
+ (if mark-active
+ (list (region-beginning) (region-end) current-prefix-arg)
+ (list (line-beginning-position)
+ (line-end-position)
+ current-prefix-arg)))
+ (let ((deactivate-mark nil))
+ (if count
+ (setq count (prefix-numeric-value count))
+ (setq count tab-width))
+ (indent-rigidly start end count)))
+
+(defun oni:jabber-chat-mode-func ()
+ "Function for `jabber-chat-mode-hook'."
+ (visual-line-mode)
+ (setq mode-line-format (append (cddr jabber-chat-header-line-format)
+ '(global-mode-string))
+ header-line-format nil))
+
+(defun oni:jabber-roster-mode-func ()
+ "Function for `jabber-roster-mode-hook'."
+ (setq mode-line-format
+ (list (propertize " %m" 'face 'mode-line-buffer-id))))
+
+(defun oni:java-mode-func ()
+ "Function for `java-mode-hook'."
+ (local-set-key "\C-j" 'oni:newline-and-indent))
+
+(defun oni:js-mode-func ()
+ "Function for `js-mode-hook'."
+ (rainbow-delimiters-mode)
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (pretty-symbols-mode -1))
+
+(defun oni:js2-mode-func ()
+ "Function for `js2-mode-hook'."
+ (oni:prog-mode-func)
+ (oni:js-mode-func)
+ (local-set-key (kbd "<f5>") #'slime-js-reload)
+ (slime-js-minor-mode))
+
+(defun oni:kill-region-or-backward-char ()
+ "Either `kill-region' or `backward-delete-char-untabify'."
+ (interactive)
+ (if (region-active-p)
+ (kill-region (region-beginning) (region-end))
+ (backward-delete-char-untabify 1)))
+
+(defun oni:kill-region-or-forward-char ()
+ "Either `kill-region' or `delete-forward-char'."
+ (interactive)
+ (if (region-active-p)
+ (kill-region (region-beginning) (region-end))
+ (delete-forward-char 1)))
+
+(defun oni:kill-region-or-line ()
+ "Either `kill-region' or `kill-line'."
+ (interactive)
+ (if (region-active-p)
+ (kill-region (region-beginning) (region-end))
+ (kill-line)))
+
+(defun oni:lua-mode-func()
+ "Function for `lua-mode-hook'."
+ (local-unset-key (kbd ")"))
+ (local-unset-key (kbd "]"))
+ (local-unset-key (kbd "}")))
+
+(defun oni:magit-log-edit-mode-func ()
+ "Function for `magit-log-edit-mode-hook'."
+ (auto-fill-mode)
+ (font-lock-add-keywords
+ nil
+ '(("\\`\\(.\\{,50\\}\\)\\(.*\\)\n?\\(.*\\)$"
+ (1 'git-commit-summary-face)
+ (2 'git-commit-overlong-summary-face)
+ (3 'git-commit-nonempty-second-line-face))
+ ("`\\([^']+\\)'" 1 font-lock-constant-face))
+ t))
+
+(defun oni:markdown-mode-func ()
+ "Function for `markdown-mode-hook'."
+ (auto-fill-mode)
+ (whitespace-mode))
+
+(defun oni:message-mode-func ()
+ "Function for `message-mode-hook'."
+ (auto-fill-mode)
+ (flyspell-mode)
+ (ispell-change-dictionary (read-string "New dictionary: ")))
+
+(defun oni:mini-fix-timestamp-string (date-string)
+ "A minimal version of Xah Lee's `fix-timestamp-string'.
+Turn DATE-STRING into something else that can be worked with in
+code. Found at http://xahlee.org/emacs/elisp_parse_time.html"
+ (setq date-string (replace-regexp-in-string "Jan" "01" date-string)
+ date-string (replace-regexp-in-string "Feb" "02" date-string)
+ date-string (replace-regexp-in-string "Mar" "03" date-string)
+ date-string (replace-regexp-in-string "Apr" "04" date-string)
+ date-string (replace-regexp-in-string "May" "05" date-string)
+ date-string (replace-regexp-in-string "Jun" "06" date-string)
+ date-string (replace-regexp-in-string "Jul" "07" date-string)
+ date-string (replace-regexp-in-string "Aug" "08" date-string)
+ date-string (replace-regexp-in-string "Sep" "09" date-string)
+ date-string (replace-regexp-in-string "Oct" "10" date-string)
+ date-string (replace-regexp-in-string "Nov" "11" date-string)
+ date-string (replace-regexp-in-string "Dec" "12" date-string))
+ (string-match
+ "^\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{4\\}\\)$"
+ date-string)
+ (format "%s-%s-%s"
+ (match-string 3 date-string)
+ (match-string 2 date-string)
+ (match-string 1 date-string)))
+
+(defun oni:move-beginning-of-dwim ()
+ "Move to beginning of line either after indentation or before."
+ (interactive)
+ (let ((start (point)))
+ (back-to-indentation)
+ (if (= start (point))
+ (beginning-of-line))))
+
+(defun oni:move-end-of-dwim ()
+ "Move to end of line, either before any comments or after."
+ (interactive)
+ (let ((start (point))
+ (eolpos (line-end-position)))
+ (beginning-of-line)
+ (if (and comment-start
+ (comment-search-forward eolpos t))
+ (progn
+ (search-backward-regexp (concat "[^ \t" comment-start "]"))
+ (forward-char)
+
+ (when (or (bolp)
+ (= start (point)))
+ (end-of-line)))
+ (end-of-line))))
+
+(defun oni:myepisodes-formatter (plist)
+ "Format RSS items from MyEpisodes as org tasks.
+PLIST contains all the pertinent information."
+ (let ((str (plist-get plist :title)))
+ (string-match
+ "^\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]$"
+ str)
+ (let* ((title (match-string 1 str))
+ (episode (match-string 2 str))
+ (name (match-string 3 str))
+ (date (oni:mini-fix-timestamp-string (match-string 4 str))))
+ (format "* ACQUIRE %s %s - %s <%s>" title episode name date))))
+
+(defun oni:newline-and-indent ()
+ "`newline-and-indent', but with a twist.
+When dealing with braces, add another line and indent that too."
+ (interactive)
+ (if (and (not (or (= (point) (point-max))
+ (= (point) (point-min))))
+ (or (and (char-equal (char-before) ?{)
+ (char-equal (char-after) ?}))
+ (and (char-equal (char-before) ?\()
+ (char-equal (char-after) ?\)))))
+ (save-excursion (newline-and-indent)))
+ (newline-and-indent))
+
+(defun oni:org-mode-func ()
+ "Function for `org-mode-hook'."
+ (flyspell-mode)
+ (auto-fill-mode)
+ (yas-minor-mode))
+
+(defun oni:php-mode-func ()
+ "Function for `php-mode-hook'."
+ (flymake-mode)
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (c-set-offset 'arglist-intro '+)
+ (c-set-offset 'arglist-close '0)
+ (rainbow-delimiters-mode)
+ (setq fci-rule-column 80))
+
+(defun oni:prog-mode-func ()
+ "Function for `prog-mode-hook'."
+ (rainbow-delimiters-mode)
+ (fci-mode)
+ (pretty-symbols-mode)
+ (yas-minor-mode))
+
+(defun oni:python-mode-func ()
+ "Function for `python-mode-hook'."
+ (flymake-mode)
+ (local-set-key (kbd "C->") 'python-indent-shift-right)
+ (local-set-key (kbd "C-<") 'python-indent-shift-left)
+ (set (make-local-variable 'electric-indent-chars) nil)
+ (rainbow-delimiters-mode)
+ (setq fci-rule-column 79
+ fill-column 72)
+ (fci-mode))
+
+(defun oni:raise-eshell ()
+ "Start or switch back to `eshell'.
+Also change directories to current working directory."
+ (interactive)
+ (let ((dir (file-name-directory
+ (or (buffer-file-name) "~/")))
+ (hasfile (not (eq (buffer-file-name) nil))))
+ (eshell)
+ (if (and hasfile (eq eshell-process-list nil))
+ (progn
+ (eshell/cd dir)
+ (eshell-reset)))))
+
+(defun oni:raise-scratch (&optional mode)
+ "Show the *scratch* buffer.
+If called with a universal argument, ask the user which mode to
+use. If MODE is not nil, open a new buffer with the name
+*MODE-scratch* and load MODE as its major mode."
+ (interactive (list (if current-prefix-arg
+ (read-string "Mode: ")
+ nil)))
+ (let* ((bname (if mode
+ (concat "*" mode "-scratch*")
+ "*scratch*"))
+ (buffer (get-buffer bname))
+ (mode-sym (intern (concat mode "-mode"))))
+
+ (unless buffer
+ (setq buffer (generate-new-buffer bname))
+ (with-current-buffer buffer
+ (when (fboundp mode-sym)
+ (funcall mode-sym))))
+
+ (select-window (display-buffer buffer))))
+
+(defun oni:replace-html-special-chars ()
+ "Replace special characters with HTML escaped entities."
+ (oni:replace-occurrences "é" "&eacute;"))
+
+(defun oni:replace-occurrences (from to)
+ "Replace all occurrences of FROM with TO in the current buffer."
+ (save-excursion
+ (goto-char (point-min))
+ (while (search-forward from nil t)
+ (replace-match to))))
+
+(defun oni:required-packages-installed-p ()
+ "Check if all the packages I need are installed."
+ (let ((tmp-packages oni:required-packages)
+ (result t))
+ (while (and tmp-packages result)
+ (if (not (package-installed-p (car tmp-packages)))
+ (setq result nil))
+ (setq tmp-packages (cdr tmp-packages)))
+ result))
+
+(defun oni:rst-mode-func ()
+ "Function for `rst-mode-hook'."
+ (auto-fill-mode))
+
+(defun oni:self-insert-dwim ()
+ "Execute self insert, but when the region is active call self
+insert at the end of the region and at the beginning."
+ (interactive)
+ (if (region-active-p)
+ (let ((electric-pair-mode nil)
+ (beginning (region-beginning))
+ (end (region-end)))
+ (goto-char end)
+ (self-insert-command 1)
+ (save-excursion
+ (goto-char beginning)
+ (self-insert-command 1)))
+ (self-insert-command 1)))
+
+(defun oni:shorten-dir (dir)
+ "Shorten a directory, (almost) like fish does it."
+ (while (string-match "\\(/\\.?[^./]\\)[^/]+/" dir)
+ (setq dir (replace-match "\\1/" nil nil dir)))
+ dir)
+
+(defun oni:show-buffer-position ()
+ "Show the position in the current buffer."
+ (interactive)
+ (message (format "%d:%d" (line-number-at-pos) (current-column))))
+
+(defun oni:split-window-interactive (dir)
+ "Split windows in direction DIR.
+
+Can also delete or switch to another window."
+ (interactive
+ (list (read-char "Direction (h,v,q,d,o): ")))
+ (case dir
+ ((?v) (split-window-vertically))
+ ((?h) (split-window-horizontally))
+ ((?q) (delete-other-windows))
+ ((?d) (delete-window))
+ ((?o) (other-window 1))))
+
+(defun oni:split-window-interactively (window)
+ "Ask for a direction and split WINDOW that way.
+
+If no direction is given, don't split."
+ (let ((dir (read-char "Direction (h,v): ")))
+ (case dir
+ ((?v) (split-window-vertically))
+ ((?h) (split-window-horizontally))
+ (t window))))
+
+(defun oni:start-emms ()
+ "Check to see if the function `emms' exists, if not call
+`emms-player-mpd-connect' and assume that will have loaded it."
+ (interactive)
+ (unless (fboundp 'emms)
+ (emms-player-mpd-connect))
+ (emms))
+
+(defun oni:term-mode-func ()
+ "Function for `term-mode-hook'."
+ (setq truncate-lines nil))
+
+(defun oni:texinfo-mode-func ()
+ "Function for `texinfo-mode-hook'."
+ (auto-fill-mode))
+
+(defun oni:view-mail (inbox)
+ "Show a menu with all mailbox options from `oni:mailbox-map'
+for easy selection."
+ (interactive
+ (list (progn
+ (require 'tmm)
+ (let ((tmm-completion-prompt "Choose a mailbox\n"))
+ (tmm-prompt oni:mailbox-map)))))
+ (if inbox
+ (progn
+ (require 'mu4e)
+ (funcall (intern (concat "oni:" inbox "-mailbox")))
+ (mu4e))))
+
+(defun oni:write-file-func ()
+ "Function for `write-file-hooks'."
+ (time-stamp))
+
+(defun oni:yas-minor-mode-func ()
+ "Function for `yas-minor-mode-hook'."
+ (yas-load-directory (car yas-snippet-dirs)))
+
+(provide 'oni)
+;;; oni.el ends here
diff --git a/.emacs.d/themes/new-theme.el b/.emacs.d/themes/new-theme.el
index c4df5e6..1d5a454 100644
--- a/.emacs.d/themes/new-theme.el
+++ b/.emacs.d/themes/new-theme.el
@@ -30,15 +30,18 @@
(custom-theme-set-faces
'new
'(default ((t (:background "#111113" :foreground "#eeeeec"))))
- '(flymake-errline ((t (:background "#8b1a1a"))))
- '(flymake-infoline ((t (:background "#00008b"))))
- '(flymake-warnline ((t (:background "#9a3200"))))
+ '(flymake-errline ((t (:background nil :underline (:color "#ff5555" :style wave)))))
+ '(flymake-infoline ((t (:background nil :underline (:color "#55ff55" :style wave)))))
+ '(flymake-warnline ((t (:background nil :underline (:color "#5555ff" :style wave)))))
'(font-lock-comment-delimiter-face ((t (:foreground "#a9a9a9" :slant italic :weight bold))))
'(font-lock-comment-face ((t (:foreground "#a9a9a9" :slant italic))))
+ '(font-lock-constant-face ((t (:foreground "#93d8d8"))))
'(font-lock-doc-face ((t (:foreground "#9ad870"))))
+ '(font-lock-function-name-face ((t (:foreground "#78a2c1"))))
'(font-lock-keyword-face ((t (:foreground "#cfce29"))))
'(font-lock-string-face ((t (:foreground "#ffbd5c"))))
- '(font-lock-type-face ((t (:foreground "#78a2c1"))))
+ '(font-lock-type-face ((t (:foreground "#78a2c1" :bold t))))
+ '(font-lock-variable-name-face ((t (:foreground "#c39cc3"))))
'(highlight ((t (:background "#171719"))))
'(ido-subdir ((t (:foreground "#ff5d55"))))
'(jabber-chat-prompt-foreign ((t (:foreground "#ff5d55"))))
@@ -48,7 +51,21 @@
'(minibuffer-prompt ((t (:foreground "#78a2c1"))))
'(mode-line ((t (:background "#222224" :foreground "#eeeeec" :box nil))))
'(mode-line-inactive ((t (:background "#171719" :foreground "#999999" :box nil))))
+ '(org-level-1 ((t (:height 1.5))))
+ '(org-level-2 ((t (:height 1.4))))
+ '(org-level-3 ((t (:height 1.3))))
+ '(org-level-4 ((t (:height 1.2))))
+ '(org-level-5 ((t (:height 1.1))))
+ '(org-level-6 ((t (:height 1.0))))
+ '(org-level-7 ((t (:height 1.0))))
+ '(org-level-8 ((t (:height 1.0))))
'(region ((t (:background "#2729b6"))))
+ '(rst-level-1 ((t (:height 1.5 :background nil))))
+ '(rst-level-2 ((t (:height 1.4 :background nil))))
+ '(rst-level-3 ((t (:height 1.3 :background nil))))
+ '(rst-level-4 ((t (:height 1.2 :background nil))))
+ '(rst-level-5 ((t (:height 1.1 :background nil))))
+ '(rst-level-6 ((t (:height 1.0 :background nil))))
)
(provide-theme 'new)