Commit 1eb6baf34570

Vincent Demeester <vincent@sbr.pm>
2020-02-04 13:35:05
Add org-mode publishing stuff ๐Ÿ‘ผ
This will get publish at https://sbr.pm/dotemacs ๐Ÿ‘ผ Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent c7a7d3d
.gitignore
@@ -25,4 +25,8 @@ projectile-bookmarks.eld
 
 # dap-mode
 .dap-breakpoints
-.extension
\ No newline at end of file
+.extension
+
+# publishing
+publish.el
+sitemap.org
\ No newline at end of file
_setup.org
@@ -0,0 +1,14 @@
+#+AUTHOR: Vincent Demeester
+#+EMAIL: vincent@sbr.pm
+#+EXPORT_EXCLUDE_TAGS: noexport
+#+STARTUP: showall
+
+#+OPTIONS: ':t *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline author:t c:nil
+#+OPTIONS: creator:comment d:(not LOGBOOK) date:t e:t email:nil f:t inline:t
+#+OPTIONS: num:t p:nil pri:t stat:t tags:t tasks:t tex:t timestamp:t toc:nil
+#+OPTIONS: todo:t |:t
+#+CREATOR: Emacs 24.3.50.3 (Org mode 8.0.3)
+#+LANGUAGE: en
+
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./notes.css"/>
+#+OPTIONS: html-style:nil
emacs.org
@@ -1,3 +1,4 @@
+#+SETUPFILE: ./_setup.org
 #+TITLE: Vincent Demeester's .emacs.d
 
 * Overview
index.org
@@ -0,0 +1,34 @@
+#+SETUPFILE: ./_setup.org
+#+TITLE: vdemeester's .emacs.d
+
+#+BEGIN_QUOTE
+My emacs setup is tested to work only with emacs 26.1 and newer versions. If you are on
+older versions, I would recommend that you upgrade to the [[https://www.gnu.org/software/emacs/download.html][latest available stable version]].
+#+END_QUOTE
+
+*Warning: this repository is being /transformed/ a bit: slowly migrating to literate programming ([[./emacs.org][emacs.org]]) and most likely moving into [[https://github.com/vdemeester/home][=home=]] at some point*
+
+* Few notes
+
+- This works best in =NixOS=, coupled with my [[https://github.com/vdemeester/home][=home=]] repository (especially with my
+  [[https://github.com/vdemeester/home/blob/master/modules/profiles/emacs.nix][emacs.nix]] file).
+- Almost all setup files have setup done as per my personal tastes and needs.
+- If you want to change the default theme, font size, etc, you would want to edit
+  =setup-files/setup-style.el=
+
+* Key points
+
+- Use of my minor mode =vde-mode= to enable my custom key-bindings. Doing so allows me to
+  force override my bindings in all major and minor modes. If I ever need to try out the
+  default emacs bindings, I can simply disable =vde-mode= by doing =M-x vde-mode=. /It
+  is enabled globally by default./
+- Use of =use-package= in load all packages for faster load times.
+- Use of =bind-keys= allows me to review my custom bindings in a single buffer by doing
+  =M-x describe-personal-keybindings=.
+- Certain packages will be loaded only if you have the associated applications installed.
+
+* Feedback
+
+Use at your own risk, but I am definitely looking forward to suggestions, corrections.
+
+Thanks!
Makefile
@@ -0,0 +1,7 @@
+all: publish
+
+publish.el: publish.org
+	emacs --batch --eval "(require 'ob-tangle)" --eval '(org-babel-tangle-file "publish.org")'
+
+publish: publish.el
+	emacs -batch --load publish.el --eval '(clean-and-publish)'
notes.css
@@ -0,0 +1,1274 @@
+@font-face {
+    font-family: "GraublauWeb";
+    src: url("/fonts/GraublauWeb.otf") format("opentype");
+}
+@font-face {
+    font-family: "GraublauWeb";
+    font-weight: bold;
+    src: url("/fonts/GraublauWebBold.otf") format("opentype");
+}
+@font-face {
+    font-family: "Merriweather";
+    src: url("/fonts/Merriweather-Regular.otf") format("opentype");
+}
+@font-face {
+    font-family: "Merriweather";
+    font-weight: bold;
+    src: url("/fonts/Merriweather-Bold.otf") format("opentype");
+}
+@font-face {
+    font-family: "Merriweather";
+    font-weight: bold;
+    font-style: italic;
+    src: url("/fonts/Merriweather-BoldItalic.otf") format("opentype");
+}
+@font-face {
+    font-family: "Merriweather";
+    font-style: italic;
+    src: url("/fonts/Merriweather-Italic.otf") format("opentype");
+}
+@font-face {
+    font-family: "Merriweather";
+    font-weight: lighter;
+    font-style: italic;
+    src: url("/fonts/Merriweather-LightItalic.otf") format("opentype");
+}
+@font-face {
+    font-family: "Merriweather";
+    font-weight: lighter;
+    src: url("/fonts/Merriweather-Light.otf") format("opentype");
+}
+
+html {
+    font-family:sans-serif;
+    line-height:1.15;
+    -ms-text-size-adjust:100%;
+    -webkit-text-size-adjust:100%;
+    --font-mono: 'Fira Code','Deja Vu Sans Mono','Bitstream Vera Sans Mono','Source Code Pro','Courier New',monospace;
+    --font-header: 'Merriweather','Linux Libertine','Georgia','Times',serif;
+
+}
+body {
+    margin:0
+}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary {
+    display:block
+}
+audio,canvas,progress,video {
+    display:inline-block
+}
+audio:not([controls]) {
+    display:none;
+    height:0
+}
+progress {
+    vertical-align:baseline
+}
+[hidden],template {
+    display:none
+}
+a {
+    background-color:transparent;
+    -webkit-text-decoration-skip:objects;
+    border-bottom:1px solid;
+}
+a:active,a:hover {
+    outline-width:0
+}
+div#table-of-contents a {
+    border-bottom: 0px solid;
+}
+abbr[title] {
+    border-bottom:none;
+    text-decoration:underline;
+    text-decoration:underline dotted
+}
+b,strong {
+    font-weight:inherit;
+    font-weight:bolder
+}
+dfn {
+    font-style:italic
+}
+h1 {
+    font-size:2em;
+    margin:.67em 0
+}
+mark {
+    background-color:#ff0;
+    color:#000
+}
+small {
+    font-size:80%
+}
+sub,sup {
+    font-size:75%;
+    line-height:0;
+    position:relative;
+    vertical-align:baseline
+}
+sub {
+    bottom:-.25em
+}
+sup {
+    top:-.5em
+}
+img {
+    border-style:none
+}
+svg:not(:root) {
+    overflow:hidden
+}
+code,kbd,pre,samp {
+    font-family:monospace,monospace;
+    font-family: var(--font-mono);
+    font-size:1em
+}
+figure {
+    margin:1em 40px
+}
+hr {
+    box-sizing:content-box;
+    height:0;
+    overflow:visible
+}
+button,input,optgroup,select,textarea {
+    font:inherit;
+    margin:0
+}
+optgroup {
+    font-weight:700
+}
+button,input {
+    overflow:visible
+}
+button,select {
+    text-transform:none
+}
+[type=reset],[type=submit],button,html [type=button] {
+    -webkit-appearance:button
+}
+[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner {
+    border-style:none;
+    padding:0
+}
+[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring {
+    outline:1px dotted ButtonText
+}
+fieldset {
+    border:1px solid silver;
+    margin:0 2px;
+    padding:.35em .625em .75em
+}
+legend {
+    box-sizing:border-box;
+    color:inherit;
+    display:table;
+    max-width:100%;
+    padding:0;
+    white-space:normal
+}
+textarea {
+    overflow:auto
+}
+[type=checkbox],[type=radio] {
+    box-sizing:border-box;
+    padding:0
+}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button {
+    height:auto
+}
+[type=search] {
+    -webkit-appearance:textfield;
+    outline-offset:-2px
+}
+[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration {
+    -webkit-appearance:none
+}
+::-webkit-input-placeholder {
+    color:inherit;
+    opacity:.54
+}
+::-webkit-file-upload-button {
+    -webkit-appearance:button;
+    font:inherit
+}
+.org-bold {
+    font-weight:700
+}
+.org-bold-italic {
+    font-weight:700;
+    font-style:italic
+}
+.org-buffer-menu-buffer {
+    font-weight:700
+}
+.org-builtin {
+    color:#483d8b
+}
+.org-button {
+    color:#3a5fcd;
+    text-decoration:underline
+}
+.org-calendar-month-header {
+    color:#00f
+}
+.org-calendar-today {
+    text-decoration:underline
+}
+.org-calendar-weekday-header {
+    color:#008b8b
+}
+.org-calendar-weekend-header {
+    color:#b22222
+}
+.org-comint-highlight-input {
+    font-weight:700
+}
+.org-comint-highlight-prompt {
+    color:#0000cd
+}
+.org-comment,.org-comment-delimiter {
+    color:#b22222
+}
+.org-constant {
+    color:#008b8b
+}
+.org-diary {
+    color:red
+}
+.org-doc {
+    color:#8b2252
+}
+.org-error {
+    color:red;
+    font-weight:700
+}
+.org-escape-glyph {
+    color:brown
+}
+.org-file-name-shadow {
+    color:#7f7f7f
+}
+.org-fringe {
+    background-color:#f2f2f2
+}
+.org-function-name {
+    color:#00f
+}
+.org-glyphless-char {
+    font-size:60%
+}
+.org-header-line {
+    color:#333;
+    background-color:#e5e5e5
+}
+.org-help-argument-name {
+    font-style:italic
+}
+.org-highlight {
+    background-color:#b4eeb4
+}
+.org-holiday {
+    background-color:pink
+}
+.org-info-header-node {
+    color:brown;
+    font-weight:700;
+    font-style:italic
+}
+.org-info-header-xref {
+    color:#3a5fcd;
+    text-decoration:underline
+}
+.org-info-index-match {
+    background-color:#ff0
+}
+.org-info-menu-header {
+    font-weight:700
+}
+.org-info-menu-star {
+    color:red
+}
+.org-info-node {
+    color:brown;
+    font-weight:700;
+    font-style:italic
+}
+.org-info-title-1 {
+    font-size:172%;
+    font-weight:700
+}
+.org-info-title-2 {
+    font-size:144%;
+    font-weight:700
+}
+.org-info-title-3 {
+    font-size:120%;
+    font-weight:700
+}
+.org-info-title-4 {
+    font-weight:700
+}
+.org-info-xref {
+    color:#3a5fcd;
+    text-decoration:underline
+}
+.org-italic {
+    font-style:italic
+}
+.org-keyword {
+    color:#a020f0
+}
+.org-lazy-highlight {
+    background-color:#afeeee
+}
+.org-link {
+    color:#3a5fcd;
+    text-decoration:underline
+}
+.org-link-visited {
+    color:#8b008b;
+    text-decoration:underline
+}
+.org-makefile-makepp-perl {
+    background-color:#bfefff
+}
+.org-makefile-space {
+    background-color:#ff69b4
+}
+.org-makefile-targets {
+    color:#00f
+}
+.org-match {
+    background-color:#ff0
+}
+.org-next-error {
+    background-color:gtk_selection_bg_color
+}
+.org-nobreak-space {
+    color:brown;
+    text-decoration:underline
+}
+.org-org-agenda-calendar-event,.org-org-agenda-calendar-sexp {
+    color:#000;
+    background-color:#fff
+}
+.org-org-agenda-clocking {
+    background-color:#ff0
+}
+.org-org-agenda-column-dateline {
+    background-color:#e5e5e5
+}
+.org-org-agenda-current-time {
+    color:#b8860b
+}
+.org-org-agenda-date {
+    color:#00f
+}
+.org-org-agenda-date-today {
+    color:#00f;
+    font-weight:700;
+    font-style:italic
+}
+.org-org-agenda-date-weekend {
+    color:#00f;
+    font-weight:700
+}
+.org-org-agenda-diary {
+    color:#000;
+    background-color:#fff
+}
+.org-org-agenda-dimmed-todo {
+    color:#7f7f7f
+}
+.org-org-agenda-done {
+    color:#228b22
+}
+.org-org-agenda-filter-category,.org-org-agenda-filter-effort,.org-org-agenda-filter-regexp,.org-org-agenda-filter-tags {
+    color:#000;
+    background-color:#bfbfbf
+}
+.org-org-agenda-restriction-lock {
+    background-color:#eee
+}
+.org-org-agenda-structure {
+    color:#00f
+}
+.org-org-archived,.org-org-block {
+    color:#7f7f7f
+}
+.org-org-block-begin-line,.org-org-block-end-line {
+    color:#b22222
+}
+.org-org-checkbox {
+    font-weight:700
+}
+.org-org-checkbox-statistics-done {
+    color:#228b22;
+    font-weight:700
+}
+.org-org-checkbox-statistics-todo {
+    color:red;
+    font-weight:700
+}
+.org-org-clock-overlay {
+    color:#000;
+    background-color:#d3d3d3
+}
+.org-org-code {
+    color:#7f7f7f
+}
+.org-org-column,.org-org-column-title {
+    background-color:#e5e5e5
+}
+.org-org-column-title {
+    font-weight:700;
+    text-decoration:underline
+}
+.org-org-date {
+    color:#a020f0;
+    text-decoration:underline
+}
+.org-org-date-selected {
+    color:red
+}
+.org-org-default {
+    color:#000;
+    background-color:#fff
+}
+.org-org-document-info {
+    color:#191970
+}
+.org-org-document-info-keyword {
+    color:#7f7f7f
+}
+.org-org-document-title {
+    color:#191970;
+    font-weight:700
+}
+.org-org-done {
+    color:#228b22;
+    font-weight:700
+}
+.org-org-drawer {
+    color:#00f
+}
+.org-org-ellipsis {
+    color:#b8860b;
+    text-decoration:underline
+}
+.org-org-footnote {
+    color:#a020f0;
+    text-decoration:underline
+}
+.org-org-formula {
+    color:#b22222
+}
+.org-org-headline-done {
+    color:#bc8f8f
+}
+.org-org-hide {
+    color:#fff
+}
+.org-org-latex-and-related {
+    color:#8b4513
+}
+.org-org-level-1 {
+    color:#00f
+}
+.org-org-level-2 {
+    color:sienna
+}
+.org-org-level-3 {
+    color:#a020f0
+}
+.org-org-level-4 {
+    color:#b22222
+}
+.org-org-level-5 {
+    color:#228b22
+}
+.org-org-level-6 {
+    color:#008b8b
+}
+.org-org-level-7 {
+    color:#483d8b
+}
+.org-org-level-8 {
+    color:#8b2252
+}
+.org-org-link {
+    color:#3a5fcd;
+    text-decoration:underline
+}
+.org-org-list-dt {
+    font-weight:700
+}
+.org-org-macro {
+    color:#8b4513
+}
+.org-org-meta-line {
+    color:#b22222
+}
+.org-org-mode-line-clock {
+    color:#000;
+    background-color:#bfbfbf
+}
+.org-org-mode-line-clock-overrun {
+    color:#000;
+    background-color:red
+}
+.org-org-priority {
+    color:#a020f0
+}
+.org-org-quote {
+    color:#7f7f7f
+}
+.org-org-scheduled {
+    color:#006400
+}
+.org-org-scheduled-previously {
+    color:#b22222
+}
+.org-org-scheduled-today {
+    color:#006400
+}
+.org-org-sexp-date,.org-org-special-keyword {
+    color:#a020f0
+}
+.org-org-table {
+    color:#00f
+}
+.org-org-tag,.org-org-tag-group {
+    font-weight:700
+}
+.org-org-target {
+    text-decoration:underline
+}
+.org-org-time-grid {
+    color:#b8860b
+}
+.org-org-todo {
+    color:red;
+    font-weight:700
+}
+.org-org-upcoming-deadline {
+    color:#b22222
+}
+.org-org-verbatim,.org-org-verse {
+    color:#7f7f7f
+}
+.org-org-warning {
+    color:red;
+    font-weight:700
+}
+.org-outline-1 {
+    color:#00f
+}
+.org-outline-2 {
+    color:sienna
+}
+.org-outline-3 {
+    color:#a020f0
+}
+.org-outline-4 {
+    color:#b22222
+}
+.org-outline-5 {
+    color:#228b22
+}
+.org-outline-6 {
+    color:#008b8b
+}
+.org-outline-7 {
+    color:#483d8b
+}
+.org-outline-8 {
+    color:#8b2252
+}
+.org-preprocessor {
+    color:#483d8b
+}
+.org-regexp-grouping-backslash,.org-regexp-grouping-construct {
+    font-weight:700
+}
+.org-region {
+    background-color:gtk_selection_bg_color
+}
+.org-secondary-selection {
+    background-color:#ff0
+}
+.org-shadow {
+    color:#7f7f7f
+}
+.org-show-paren-match {
+    background-color:#40e0d0
+}
+.org-show-paren-mismatch {
+    color:#fff;
+    background-color:#a020f0
+}
+.org-string {
+    color:#8b2252
+}
+.org-success {
+    color:#228b22;
+    font-weight:700
+}
+.org-table-cell {
+    color:#e5e5e5;
+    background-color:#00f
+}
+.org-tooltip {
+    color:#000;
+    background-color:#ffffe0
+}
+.org-trailing-whitespace {
+    background-color:red
+}
+.org-type {
+    color:#228b22
+}
+.org-underline {
+    text-decoration:underline
+}
+.org-variable-name {
+    color:sienna
+}
+.org-warning {
+    color:#ff8c00;
+    font-weight:700
+}
+.org-warning-1 {
+    color:red;
+    font-weight:700
+}
+body {
+    width:85%;
+    margin:2% auto;
+    font-size:14px;
+    line-height:1.4em;
+    font-fannnnnmily:Georgia,serif;
+    color:#333
+}
+@media screen and (min-width:600px) {
+    body {
+	font-size:18px
+    }
+}
+@media screen and (min-width:1270px) {
+    body {
+	width:1200px
+    }
+}
+::-moz-selection {
+    background:#d6edff
+}
+::selection {
+    background:#d6edff
+}
+dl,ol,p,ul {
+    margin:0 auto
+}
+#content p {
+    margin: 1em auto;
+}
+.title {
+    margin:.8em auto;
+    color:gray;
+}
+.subtitle,.title {
+    text-align:center
+}
+.subtitle {
+    font-size:0.7em;
+    line-height:1.4;
+    font-weight:700;
+    margin:1em auto;
+    color: lightgray;
+}
+.abstract {
+    margin:auto;
+    width:80%;
+    font-style:italic
+}
+.abstract p:last-of-type:before {
+    content:"    ";
+    white-space:pre
+}
+.status {
+    font-size:90%;
+    margin:2em auto
+}
+[class^=section-number-] {
+    margin-right:.5em
+}
+[id^=orgheadline] {
+    clear:both
+}
+#footnotes {
+    font-size:90%
+}
+.footpara {
+    display:inline;
+    margin:.2em auto
+}
+.footdef {
+    margin-bottom:1em
+}
+.footdef sup {
+    padding-right:.5em
+}
+li.on {
+    list-style: "โ˜‘ ";
+}
+li.off {
+    list-style: "โ˜ ";
+}
+a {
+    color:#527d9a;
+    text-decoration:none
+}
+a:hover {
+    color:#035;
+    border-bottom:2px solid;
+}
+figure {
+    padding:0;
+    margin:1em auto;
+    text-align:center
+}
+img {
+    max-width:100%;
+    vertical-align:middle
+}
+.MathJax_Display {
+    margin:0!important;
+    width:90%!important
+}
+h1,h2,h3,h4,h5,h6 {
+    font-family: var(--font-header);
+}
+h1 {
+    color: grey;
+}
+h2,h3,h4,h5,h6 {
+    color:#a5573e;
+    line-height:1em;
+    font-family:Helvetica,sans-serif
+}
+h1,h2,h3 {
+    line-height:1.4em
+}
+h4,h5,h6 {
+    font-size:1em
+}
+@media screen and (min-width:600px) {
+    h1 {
+	font-size:2em
+    }
+    h2 {
+	font-size:1.5em
+    }
+    h3 {
+	font-size:1.3em
+    }
+    h1,h2,h3 {
+	line-height:1.4em
+    }
+    h4,h5,h6 {
+	font-size:1.1em
+    }
+}
+dt {
+    font-weight:700
+}
+table {
+    margin:1em auto;
+    border-top:2px solid;
+    border-collapse:collapse
+}
+table,thead {
+    border-bottom:2px solid
+}
+table td+td,table th+th {
+    border-left:1px solid gray
+}
+table tr {
+    border-top:1px solid #d3d3d3
+}
+td,th {
+    padding:.3em .6em;
+    vertical-align:middle
+}
+caption.t-above {
+    caption-side:top
+}
+caption.t-bottom {
+    caption-side:bottom
+}
+caption {
+    margin-bottom:.3em
+}
+figcaption {
+    margin-top:.3em
+}
+th.org-center,th.org-left,th.org-right {
+    text-align:center
+}
+td.org-right {
+    text-align:right
+}
+td.org-left {
+    text-align:left
+}
+td.org-center {
+    text-align:center
+}
+blockquote {
+    margin:1em 2em;
+    padding-left:1em;
+    border-left:3px solid #ccc
+}
+kbd {
+    background-color:#f7f7f7;
+    font-size:80%;
+    margin:0 .1em;
+    padding:.1em .6em
+}
+.todo {
+    background-color:red
+}
+.done,.todo {
+    color:#fff;
+    padding:.1em .3em;
+    border-radius:3px;
+    background-clip:padding-box;
+    font-size:80%;
+    font-family:Lucida Console,monospace;
+    line-height:1
+}
+.done {
+    background-color:green
+}
+.priority {
+    color:orange;
+    font-family:Lucida Console,monospace
+}
+#table-of-contents li {
+    clear:both
+}
+.tag {
+    font-family:Lucida Console,monospace;
+    font-size:.7em;
+    font-weight:400
+}
+.tag span {
+    padding:.3em;
+    float:right;
+    margin-right:.5em;
+    border:1px solid #bbb;
+    border-radius:3px;
+    background-clip:padding-box;
+    color:#333;
+    background-color:#eee;
+    line-height:1
+}
+.timestamp {
+    color:#bebebe;
+    font-size:90%
+}
+.timestamp-kwd {
+    color:#5f9ea0
+}
+.org-right {
+    margin-left:auto;
+    margin-right:0;
+    text-align:right
+}
+.org-left {
+    margin-left:0;
+    margin-right:auto;
+    text-align:left
+}
+.org-center {
+    margin-left:auto;
+    margin-right:auto;
+    text-align:center
+}
+.underline {
+    text-decoration:underline
+}
+#postamble p,#preamble p {
+    font-size:90%;
+    margin:.2em
+}
+p.verse {
+    margin-left:3%
+}
+:not(pre)>code {
+    padding:2px 5px;
+    margin:auto 1px;
+    border:1px solid #ddd;
+    border-radius:3px;
+    background-clip:padding-box;
+    color:#333;
+    font-size:80%
+}
+.org-src-container {
+    background-color: #FDFDFD;
+    border:1px solid #ccc;
+    box-shadow:3px 3px 3px #eee;
+    font-family:Lucida Console,monospace;
+    font-size:80%;
+    margin:1em auto;
+    padding:.1em .5em;
+    position:relative;
+    color: #000;
+}
+.org-src-container>pre {
+    overflow:auto
+}
+.org-src-container>pre:before {
+    display:block;
+    position:absolute;
+    background-color:#b3b3b3;
+    top:0;
+    right:0;
+    padding:0 .5em;
+    border-bottom-left-radius:8px;
+    border:0;
+    color:#fff;
+    font-size:80%
+}
+.org-src-container>pre.src-sh:before {
+    content:"sh"
+}
+.org-src-container>pre.src-bash:before {
+    content:"bash"
+}
+.org-src-container>pre.src-emacs-lisp:before {
+    content:"Emacs Lisp"
+}
+.org-src-container>pre.src-R:before {
+    content:"R"
+}
+.org-src-container>pre.src-cpp:before {
+    content:"C++"
+}
+.org-src-container>pre.src-c:before {
+    content:"C"
+}
+.org-src-container>pre.src-html:before {
+    content:"HTML"
+}
+.org-src-container>pre.src-javascript:before,.org-src-container>pre.src-js:before {
+    content:"Javascript"
+}
+// More languages 0% http://orgmode.org/worg/org-contrib/babel/languages.html .org-src-container>pre.src-abc:before {
+    content:"ABC"
+}
+.org-src-container>pre.src-asymptote:before {
+    content:"Asymptote"
+}
+.org-src-container>pre.src-awk:before {
+    content:"Awk"
+}
+.org-src-container>pre.src-C:before {
+    content:"C"
+}
+.org-src-container>pre.src-calc:before {
+    content:"Calc"
+}
+.org-src-container>pre.src-clojure:before {
+    content:"Clojure"
+}
+.org-src-container>pre.src-comint:before {
+    content:"comint"
+}
+.org-src-container>pre.src-css:before {
+    content:"CSS"
+}
+.org-src-container>pre.src-D:before {
+    content:"D"
+}
+.org-src-container>pre.src-ditaa:before {
+    content:"Ditaa"
+}
+.org-src-container>pre.src-dot:before {
+    content:"Dot"
+}
+.org-src-container>pre.src-ebnf:before {
+    content:"ebnf"
+}
+.org-src-container>pre.src-forth:before {
+    content:"Forth"
+}
+.org-src-container>pre.src-F90:before {
+    content:"Fortran"
+}
+.org-src-container>pre.src-gnuplot:before {
+    content:"Gnuplot"
+}
+.org-src-container>pre.src-haskell:before {
+    content:"Haskell"
+}
+.org-src-container>pre.src-io:before {
+    content:"Io"
+}
+.org-src-container>pre.src-java:before {
+    content:"Java"
+}
+.org-src-container>pre.src-latex:before {
+    content:"LaTeX"
+}
+.org-src-container>pre.src-ledger:before {
+    content:"Ledger"
+}
+.org-src-container>pre.src-ly:before {
+    content:"Lilypond"
+}
+.org-src-container>pre.src-lisp:before {
+    content:"Lisp"
+}
+.org-src-container>pre.src-makefile:before {
+    content:"Make"
+}
+.org-src-container>pre.src-matlab:before {
+    content:"Matlab"
+}
+.org-src-container>pre.src-max:before {
+    content:"Maxima"
+}
+.org-src-container>pre.src-mscgen:before {
+    content:"Mscgen"
+}
+.org-src-container>pre.src-Caml:before {
+    content:"Objective"
+}
+.org-src-container>pre.src-octave:before {
+    content:"Octave"
+}
+.org-src-container>pre.src-org:before {
+    content:"Org"
+}
+.org-src-container>pre.src-perl:before {
+    content:"Perl"
+}
+.org-src-container>pre.src-picolisp:before {
+    content:"Picolisp"
+}
+.org-src-container>pre.src-plantuml:before {
+    content:"PlantUML"
+}
+.org-src-container>pre.src-python:before {
+    content:"Python"
+}
+.org-src-container>pre.src-ruby:before {
+    content:"Ruby"
+}
+.org-src-container>pre.src-sass:before {
+    content:"Sass"
+}
+.org-src-container>pre.src-scala:before {
+    content:"Scala"
+}
+.org-src-container>pre.src-scheme:before {
+    content:"Scheme"
+}
+.org-src-container>pre.src-screen:before {
+    content:"Screen"
+}
+.org-src-container>pre.src-sed:before {
+    content:"Sed"
+}
+.org-src-container>pre.src-shell:before {
+    content:"shell"
+}
+.org-src-container>pre.src-shen:before {
+    content:"Shen"
+}
+.org-src-container>pre.src-sql:before {
+    content:"SQL"
+}
+.org-src-container>pre.src-sqlite:before {
+    content:"SQLite"
+}
+.org-src-container>pre.src-stan:before {
+    content:"Stan"
+}
+.org-src-container>pre.src-vala:before {
+    content:"Vala"
+}
+.org-src-container>pre.src-axiom:before {
+    content:"Axiom"
+}
+.org-src-container>pre.src-browser:before {
+    content:"HTML"
+}
+.org-src-container>pre.src-cypher:before {
+    content:"Neo4j"
+}
+.org-src-container>pre.src-elixir:before {
+    content:"Elixir"
+}
+.org-src-container>pre.src-request:before {
+    content:"http"
+}
+.org-src-container>pre.src-ipython:before {
+    content:"iPython"
+}
+.org-src-container>pre.src-kotlin:before {
+    content:"Kotlin"
+}
+.org-src-container>pre.src-Flavored Erlang lfe:before {
+    content:"Lisp"
+}
+.org-src-container>pre.src-mongo:before {
+    content:"MongoDB"
+}
+.org-src-container>pre.src-prolog:before {
+    content:"Prolog"
+}
+.org-src-container>pre.src-rec:before {
+    content:"rec"
+}
+.org-src-container>pre.src-ML sml:before {
+    content:"Standard"
+}
+.org-src-container>pre.src-Translate translate:before {
+    content:"Google"
+}
+.org-src-container>pre.src-typescript:before {
+    content:"Typescript"
+}
+.org-src-container>pre.src-rust:before {
+    content:"Rust"
+}
+.org-src-container>pre.src-go:before {
+    content:"Go"
+}
+.org-src-container>pre.src-http:before {
+    content:"HTTP"
+}
+.inlinetask {
+    background:#ffc;
+    border:2px solid gray;
+    margin:10px;
+    padding:10px
+}
+#org-div-home-and-up {
+    font-size:70%;
+    text-align:right;
+    white-space:nowrap
+}
+.linenr {
+    font-size:90%
+}
+.code-highlighted {
+    background-color:#ff0
+}
+#bibliography {
+    font-size:90%
+}
+#bibliography table {
+    width:100%
+}
+.creator {
+    display:block
+}
+@media screen and (min-width:600px) {
+    .creator {
+	display:inline;
+	float:right
+    }
+}
+
+div#nav ul li {
+    display: inline;
+}
+
+div.drawer {
+    border:1px solid #ccc;
+    box-shadow:3px 3px 3px #eee;
+    font-size:85%;
+    margin:1em auto;
+    padding:.1em .5em;
+    position:relative
+}
+div.drawer h6 {
+    margin: 0;
+    padding: 0.1em;
+    color: #333;
+}
+
+div.drawer.results {
+    font-family:monospace,monospace;
+    font-family: var(--font-mono);
+    background-color: #333;
+    color: #fff;
+}
+div.drawer p {
+    display: block;
+    unicode-bidi: embed;
+    white-space: pre;
+}
+div.drawer.results h6 {
+    color: #fff;
+}
+
+.info {
+    border: 1px solid;
+    background-color: #BDE5F8;
+    color: #00529B;
+}
+
+.tip {
+    border: 1px solid;
+    background-color: #DFF2BF;
+    color: #4F8A10;
+}
+
+.note {
+    border: 1px solid;
+    background-color: #FFFCCB;
+    color: #9F6000;
+}
+
+.warning {
+    border: 1px solid;
+    background-color: #FFBABA;
+    color: #D8000C;
+}
+
+/* Set the colors in <pre> blocks from the Leuven theme */
+pre span.org-builtin                     {color:#006FE0;font-weight:bold;}
+pre span.org-string                      {color:#008000;}
+pre span.org-keyword                     {color:#0000FF;}
+pre span.org-variable-name               {color:#BA36A5;}
+pre span.org-function-name               {color:#006699;}
+pre span.org-type                        {color:#6434A3;}
+pre span.org-preprocessor                {color:#808080;font-weight:bold;}
+pre span.org-constant                    {color:#D0372D;}
+pre span.org-comment-delimiter           {color:#8D8D84;}
+pre span.org-comment                     {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-1            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-2            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-3            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-4            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-5            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-6            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-7            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-8            {color:#8D8D84;font-style:italic}
+pre span.org-outshine-level-9            {color:#8D8D84;font-style:italic}
+pre span.org-rainbow-delimiters-depth-1  {color:#707183;}
+pre span.org-rainbow-delimiters-depth-2  {color:#7388d6;}
+pre span.org-rainbow-delimiters-depth-3  {color:#909183;}
+pre span.org-rainbow-delimiters-depth-4  {color:#709870;}
+pre span.org-rainbow-delimiters-depth-5  {color:#907373;}
+pre span.org-rainbow-delimiters-depth-6  {color:#6276ba;}
+pre span.org-rainbow-delimiters-depth-7  {color:#858580;}
+pre span.org-rainbow-delimiters-depth-8  {color:#80a880;}
+pre span.org-rainbow-delimiters-depth-9  {color:#887070;}
+pre span.org-sh-quoted-exec              {color:#FF1493;}
publish.org
@@ -0,0 +1,236 @@
+#+SETUPFILE: ./_setup.org
+#+TITLE: Publish dotemacs notes using Emacs org-mode
+
+This document is a literate version of my publishing /script/ on publishing my dotemacs
+notes (that uses [[https://orgmode.org][=org-mode=]]).
+
+First let's import required libraries, which are =org= related.
+
+#+begin_src emacs-lisp :tangle yes
+  (require 'org)
+  (require 'ox)
+  (require 'ox-publish)
+  (require 'ol-man)
+  (require 'ol-git-link)
+#+end_src
+
+To get syntax coloring on other mode than ~emacs-lisp~, we need to load them too[fn:1].
+
+#+begin_src emacs-lisp :tangle yes
+  (require 'go-mode)
+  (require 'css-mode)
+  (require 'python-mode)
+  (require 'nix-mode)
+  (require 'ob-http)
+  (require 'yaml-mode)
+#+end_src
+
+Now let's define variables to use later on. Those variables are where to find the project
+we want to publish and where to publish theme.
+
+#+begin_src emacs-lisp :tangle yes
+  (setq site-directory "~/desktop/sites/")
+
+  (setq org-default-publish-sbr (expand-file-name "sbr.pm" site-directory))
+  (setq org-default-publish-dotemacs (expand-file-name "dotemacs" org-default-publish-sbr))
+#+end_src
+
+We want to republish everything every time โ€” mainly to be used on CI. So we're telling
+=org-mode= to disable the timestamp-based cache.
+
+#+begin_src emacs-lisp :tangle yes
+  (setq org-publish-use-timestamps-flag nil)
+#+end_src
+
+Let's also customize a bit the /style/ of what =org-mode= will generate.
+
+- Set the default html coding system ๐Ÿ‘ผ
+  #+begin_src emacs-lisp :tangle yes
+    (setq org-html-coding-system 'utf-8-unix)
+  #+end_src
+- Let's disable the default script and style "includes".
+  #+begin_src emacs-lisp :tangle yes
+  (setq org-export-html-style-include-scripts nil
+        org-export-html-style-include-default nil)
+  #+end_src
+- Let's also make sure the =#+begin_src= blocks are colorized, *but* using the css instead
+  of inlude style.
+  #+begin_src emacs-lisp :tangle yes
+  (setq org-src-fontify-natively t)
+  ;; (setq org-html-htmlize-output-type 'inline-css) ;; default
+  (setq org-html-htmlize-output-type 'css)
+  ;; (setq org-html-htmlize-font-prefix "") ;; default
+  (setq org-html-htmlize-font-prefix "org-")
+  #+end_src
+- Customize how we export ~org-mode~ drawers
+  #+begin_src emacs-lisp :tangle yes
+    (defun my-org-export-format-drawer (name content)
+      (concat "<div class=\"drawer " (downcase name) "\">\n"
+              "<h6>" (capitalize name) "</h6>\n"
+              content
+              "\n</div>"))
+    (setq org-html-format-drawer-function 'my-org-export-format-drawer)
+  #+end_src
+- And disable ~org-babel~ from trying to evaluate on export
+  #+begin_src emacs-lisp :tangle yes
+    (setq org-export-use-babel nil)
+  #+end_src
+
+I want [[https://writepermission.com/org-blogging-clickable-headlines.html][clickable headlines]], so let's define a ~html-format-headline-function~ for the
+exporter to use. Not tangle currently as it doesn't work ๐Ÿ˜“.
+
+#+begin_src emacs-lisp :tangle no
+  (defun my-org-html-format-headline-function (todo todo-type priority text tags info)
+    "Format a headline with a link to itself."
+    (let* ((headline (get-text-property 0 :parent text))
+           (id (or (org-element-property :CUSTOM_ID headline)
+                   (org-export-get-reference headline info)
+                   (org-element-property :ID headline)))
+           (link (if id
+                     (format "<a href=\"#%s\">%s</a>" id text)
+                   text)))
+      (org-html-format-headline-default-function todo todo-type priority link tags info)))
+  (setq org-html-format-headline-function 'my-org-html-format-headline-function)
+#+end_src
+
+I also use some custom linksโ€ฆ They are define in my [[https://github.com/vdemeester/emacs-config][emacs configuration]] repository :
+[[https://github.com/vdemeester/emacs-config/blob/master/lisp/setup-org.el][~setup-org.el~]].
+
+#+begin_src emacs-lisp :tangle yes
+  (org-link-set-parameters "tag"
+                           :follow #'endless/follow-tag-link)
+  (defun endless/follow-tag-link (tag)
+    "Display a list of TODO headlines with tag TAG.
+  With prefix argument, also display headlines without a TODO keyword."
+    (org-tags-view (null current-prefix-arg) tag))
+
+  (org-link-set-parameters "grep"
+                           :follow #'vde/follow-grep-link
+                           :face '(:foreground "DarkRed" :underline t))
+  (defun vde/follow-grep-link (regexp)
+    "Run `rgrep' with REGEXP and FOLDER as argument,
+  like this : [[grep:REGEXP:FOLDER]]."
+    (setq expressions (split-string regexp ":"))
+    (setq exp (nth 0 expressions))
+    (grep-compute-defaults)
+    (if (= (length expressions) 1)
+        (progn
+          (rgrep exp "*" (expand-file-name "./")))
+      (progn
+        (setq folder (nth 1 expressions))
+        (rgrep exp "*" (expand-file-name folder))))
+    )
+
+  (org-link-set-parameters "rg"
+                           :follow #'vde/follow-rg-link
+                           :face '(:foreground "DarkGreen" :underline t))
+  (defun vde/follow-rg-link (regexp)
+    "Run `ripgrep-regexp` with REXEP and FOLDER as argument,
+  like this : [[pt:REGEXP:FOLDER]]"
+    (setq expressions (split-string regexp ":"))
+    (setq exp (nth 0 expressions))
+    (if (= (length expressions) 1)
+        (progn
+          (ripgrep-regexp exp (expand-file-name "./")))
+      (progn
+        (setq folder (nth 1 expressions))
+        (ripgrep-regexp exp (file-name-as-directory (expand-file-name folder)))))
+    )
+
+  (org-link-set-parameters "gh"
+                           :follow #'vde/follow-gh-link
+                           :export #'vde/org-gh-export
+                           :face '(:foreground "DimGrey" :underline t))
+  (defun vde/org-gh-export (link description format)
+    "Export a github page link from Org files."
+    (let ((path (vde/gh-get-url link))
+          (desc (or description link)))
+      (cond
+       ((eq format 'html) (format "<a hrefl=\"_blank\" href=\"%s\">%s</a>" path desc))
+       ((eq format 'latex) (format "\\href{%s}{%s}" path desc))
+       ((eq format 'texinfo) (format "@uref{%s,%s}" path desc))
+       ((eq format 'ascii) (format "%s (%s)" desc path))
+       (t path))))
+  (defun vde/follow-gh-link (issue)
+    "Browse github issue/pr specified"
+    (browse-url (vde/gh-get-url issue)))
+
+  (defun vde/gh-get-url (path)
+    "Translate org-mode link `gh:foo/bar#1' to github url."
+    (setq expressions (split-string path "#"))
+    (setq project (nth 0 expressions))
+    (setq issue (nth 1 expressions))
+    (format "https://github.com/%s/issues/%s" project issue))
+
+  (org-link-set-parameters
+   "org"
+   :complete (lambda () (+org-link-read-file "org" org-directory))
+   :follow   (lambda (link) (find-file (expand-file-name link org-directory)))
+   :face     (lambda (link)
+               (if (file-exists-p (expand-file-name link org-directory))
+                   'org-link
+                 'error)))
+  (defun +org-link-read-file (key dir)
+    (let ((file (read-file-name (format "%s: " (capitalize key)) dir)))
+      (format "%s:%s"
+              key
+              (file-relative-name file dir))))
+#+end_src
+
+Now, let's define projects.
+
+#+begin_src emacs-lisp :tangle yes
+  (setq org-publish-project-alist
+        `(("dotemacs-org"
+           :base-directory "."
+           :base-extension "org\\|txt"
+           :publishing-directory ,org-default-publish-dotemacs
+           :recursive t
+           :publishing-function org-html-publish-to-html
+           :headline-levels 4
+           :auto-preamble t
+           :auto-sitemap t
+           :with-footnotes t
+           :with-toc nil
+           :with-drawers t
+           :exclude "_setup.org\\|sbr.pm\\|.extension\\|elpa"
+           :html-checkbox-type 'html
+           :html-preamble "<div id=\"nav\">
+  <ul>
+  <li><a href=\"/\" class=\"home\">Home</a></li>
+  <li><a href=\"./\" class=\"index\">Index</a></li>
+  <li><a href=\"../\" class=\"up\">Up</a></li>
+  </ul>
+  </div>"
+           :html-postamble "<p class=\"creator\">%c</p><p class=\"postamble\">%a. Last Updated %C (exported %T).</p>")
+          ("dotemacs-static"
+           :base-directory "."
+           :base-extension "html\\|xml\\|css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|md\\|tar\\|gz\\|xz\\|zip\\|csv"
+           :exclude ".extension\\|elpa"
+           :publishing-directory ,org-default-publish-dotemacs
+           :recursive t
+           :publishing-function org-publish-attachment
+           )
+          ("dotemacs" :components ("dotemacs-org" "dotemacs-static"))
+          ))
+#+end_src
+
+I want the ~sites~ folder to be cleaned too, so let's define a function to be called that
+will clean a folder and publish.
+
+#+begin_src emacs-lisp :tangle yes
+  (defun clean-and-publish ()
+    "Clean the site folder and publish all projects"
+    (delete-directory org-default-publish-dotemacs t)
+    (org-publish-all))
+#+end_src
+
+Let's now create a ~Makefile~ so that I can just run ~make publish~ to automate that.
+
+#+INCLUDE: "Makefile" src makefile
+
+The rest is just /automation/ ๐Ÿ‘ผ. The ~~/desktop/sites/~ folder is synced across a bunch
+of my machines, including my servers (using [[https://syncthing.net/][syncthing]]). This means almost as soon as I run
+this publish script, it will be available.
+
+[fn:1] Otherwise, emacs doesn't apply any syntax coloring.
README.org
@@ -1,33 +0,0 @@
-#+TITLE: vdemeester's .emacs.d
-
-#+BEGIN_QUOTE
-My emacs setup is tested to work only with emacs 26.1 and newer versions. If you are on
-older versions, I would recommend that you upgrade to the [[https://www.gnu.org/software/emacs/download.html][latest available stable version]].
-#+END_QUOTE
-
-*Warning: this repository is being /transformed/ a bit: slowly migrating to literate programming ([[./emacs.org][emacs.org]]) and most likely moving into [[https://github.com/vdemeester/home][=home=]] at some point*
-
-* Few notes
-
-- This works best in =NixOS=, coupled with my [[https://github.com/vdemeester/home][=home=]] repository (especially with my
-  [[https://github.com/vdemeester/home/blob/master/modules/profiles/emacs.nix][emacs.nix]] file).
-- Almost all setup files have setup done as per my personal tastes and needs.
-- If you want to change the default theme, font size, etc, you would want to edit
-  =setup-files/setup-style.el=
-
-* Key points
-
-- Use of my minor mode =vde-mode= to enable my custom key-bindings. Doing so allows me to
-  force override my bindings in all major and minor modes. If I ever need to try out the
-  default emacs bindings, I can simply disable =vde-mode= by doing =M-x vde-mode=. /It
-  is enabled globally by default./
-- Use of =use-package= in load all packages for faster load times.
-- Use of =bind-keys= allows me to review my custom bindings in a single buffer by doing
-  =M-x describe-personal-keybindings=.
-- Certain packages will be loaded only if you have the associated applications installed.
-
-* Feedback
-
-Use at your own risk, but I am definitely looking forward to suggestions, corrections.
-
-Thanks!
README.org
@@ -0,0 +1,1 @@
+index.org
\ No newline at end of file