Commit f73ce49c444a

Vincent Demeester <vincent@sbr.pm>
2017-09-09 19:52:14
Basic configuration setup
- use-package management - custom dashboard - org-mode configuration Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 1b961a9
Changed files (85)
.emacs.d
config
elpa
all-the-icons-20170817.642
auto-compile-1.4.1
dashboard-1.2.3
doom-themes-1.2.5
font-lock+-20170222.1755
gnupg
htmlize-20161211.1019
memoize-20170720.1802
packed-20170819.942
page-break-lines-20170829.157
solaire-mode-1.0.2
images
lisp
.emacs.d/config/org-config.el
@@ -0,0 +1,521 @@
+
+(setq org-root-directory (expand-file-name "org" desktop-directory)
+      org-sites-directory-name "sites"
+      org-archive-directory-name "archive"
+      org-archive-file-pattern "/%s_archive::"
+      org-inbox-file "inbox.org"
+      org-main-file "personal.org"
+      org-todos-directory org-root-directory
+      org-notes-directory org-root-directory
+      org-sites-directory (expand-file-name org-sites-directory-name org-root-directory)
+      org-archive-directory (expand-file-name org-archive-directory-name org-root-directory)
+      org-docker-file "docker.org"
+      org-journal-file "journal.org"
+      org-publish-folder (substitute-env-in-file-name "$HOME/var/public_html")
+      sites-folder (substitute-env-in-file-name "$HOME/src/sites/"))
+
+(use-package org
+  :ensure t)
+(require 'find-lisp)
+(setq org-directory org-root-directory)
+(setq org-agenda-files (find-lisp-find-files org-todos-directory "\.org$"))
+(setq org-enforce-todo-dependencies t)
+(setq org-enforce-todo-checkbox-dependencies t)
+
+(setq org-log-redeadline (quote time))
+(setq org-log-reschedule (quote time))
+
+;;warn me of any deadlines in next 7 days
+(setq org-deadline-warning-days 7)
+;;show me tasks scheduled or due in next fortnight
+(setq org-agenda-span (quote fortnight))
+;;don't show tasks as scheduled if they are already shown as a deadline
+(setq org-agenda-skip-scheduled-if-deadline-is-shown t)
+;;don't give awarning colour to tasks with impending deadlines
+;;if they are scheduled to be done
+(setq org-agenda-skip-deadline-prewarning-if-scheduled (quote pre-scheduled))
+;;don't show tasks that are scheduled or have deadlines in the
+;;normal todo list
+(setq org-agenda-todo-ignore-deadlines (quote all))
+(setq org-agenda-todo-ignore-scheduled (quote all))
+;;sort tasks in order of when they are due and then by priority
+(setq org-agenda-sorting-strategy
+  (quote
+   ((agenda deadline-up priority-down)
+    (todo priority-down category-keep)
+    (tags priority-down category-keep)
+    (search category-keep))))
+
+(setq org-todo-keywords
+      (quote ((sequence "TODO(t)" "PROGRESS(p)" "PAUSED" "BLOCKED" "REVIEW" "|" "DONE(d!)" "ARCHIVED")
+              (sequence "REPORT(r!)" "BUG" "KNOWNCAUSE" "|" "FIXED(f!)")
+              (sequence "|" "CANCELLED(c@)"))))
+(setq org-todo-keyword-faces
+      (quote (("TODO" . org-todo)
+              ("PROGRESS" . "green")
+              ("PAUSED" . "cyan")
+              ("BLOCKED" . "red")
+              ("REVIEW" . "yellow")
+              ("DONE" . org-done)
+              ("ARCHIVED" . org-done)
+              ("CANCELLED" . "black")
+              ("REPORT" . org-todo)
+              ("BUG" . "red")
+              ("KNOWNCAUSE" . "yellow")
+              ("FIXED" . org-done))))
+
+(setq org-todo-state-tags-triggers
+      (quote (("CANCELLED" ("CANCELLED" . t)))))
+
+(defun org-summary-todo (n-done n-not-done)
+  "Switch entry to DONE when all subentries are done, to PROGRESS otherwise."
+  (let (org-log-done org-log-states)   ; turn off logging
+    (if (not (string-blank-p (org-get-todo-state)))
+        (org-todo (if (= n-not-done 0) "DONE" "PROGRESS")))
+    ))
+
+(add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
+
+(require 'org-archive)
+(setq org-archive-location (concat org-archive-directory org-archive-file-pattern))
+
+(defvar org-my-archive-expiry-days 9
+  "The number of days after which a completed task should be auto-archived.
+This can be 0 for immediate, or a floating point value.")
+
+(defun org-archive-done-tasks ()
+  (interactive)
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward "\* \\(DONE\\|CANCELED\\) " nil t)
+   (if (save-restriction
+            (save-excursion
+        (org-narrow-to-subtree)
+        (search-forward ":LOGBOOK:" nil t)))
+          (forward-line)
+        (org-archive-subtree)
+        (goto-char (line-beginning-position))))))
+
+(defalias 'archive-done-tasks 'org-archive-done-tasks)
+
+(defvar oc-capture-prmt-history nil
+  "History of prompt answers for org capture.")
+(defun oc/prmt (prompt variable)
+  "PROMPT for string, save it to VARIABLE and insert it."
+  (make-local-variable variable)
+  (set variable (read-string (concat prompt ": ") nil oc-capture-prmt-history)))
+(defun oc/inc (what text &rest fmtvars)
+  "Ask user to include WHAT.  If user agrees return TEXT."
+  (when (y-or-n-p (concat "Include " what "?"))
+    (apply 'format text fmtvars)))
+
+(setq org-capture-templates
+   '(;; other entries
+        ("t" "inbox"
+      entry (file (expand-file-name org-inbox-file org-todos-directory))
+         "* %?\n%i\n%a")
+        ("d" "task"
+      entry (file+headline (expand-file-name org-main-file org-todos-directory) "Tasks")
+         "* TODO %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n")
+        ("d" "docker task"
+      entry (file+headline (expand-file-name org-docker-file org-todos-directory) "Tasks")
+         "* TODO gh:docker/%(oc/prmt \"project\" 'd-prj)#%(oc/prmt \"issue/pr\" 'd-issue) %?%(oc/inc \"feature content\" \" [/]\n- [ ] Implementation\n- [ ] Tests\n- [ ] Docs\")")
+        ("j" "Journal entry"
+         entry (file+datetree+prompt (expand-file-name org-journal-file org-root-directory))
+         "* %?\n%i\nFrom: %a\n%U" :empty-lines 1)
+        ;; other entries
+        ))
+
+(org-add-link-type
+ "grep" 'my/follow-grep-link
+ )
+(defun my/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))))
+  )
+
+(use-package pt
+  :load-path "~/.emacs.d/lisp/pt/")
+
+;; pt-regexp (regexp directory &optional args)
+(org-add-link-type
+ "pt" 'my/follow-pt-link)
+(defun my/follow-pt-link (regexp)
+  "Run `pt-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
+        (pt-regexp exp (expand-file-name "./")))
+    (progn
+      (setq folder (nth 1 expressions))
+      (pt-regexp exp (file-name-as-directory (expand-file-name folder)))))
+  )
+
+(defvar yt-iframe-format
+  ;; You may want to change your width and height.
+  (concat "<iframe width=\"440\""
+          " height=\"335\""
+          " src=\"https://www.youtube.com/embed/%s\""
+          " frameborder=\"0\""
+          " allowfullscreen>%s</iframe>"))
+
+(org-add-link-type
+ "youtube"
+ (lambda (handle)
+   (browse-url
+    (concat "https://www.youtube.com/embed/"
+            handle)))
+ (lambda (path desc backend)
+   (cl-case backend
+     (html (format yt-iframe-format
+                   path (or desc "")))
+     (latex (format "\href{%s}{%s}"
+                    path (or desc "video"))))))
+
+(org-add-link-type
+ "gh" 'my/follow-gh-link)
+(defun my/follow-gh-link (issue)
+  "Browse github issue/pr specified"
+  (setq expressions (split-string issue "#"))
+  (setq project (nth 0 expressions))
+  (setq issue (nth 1 expressions))
+  (browse-url
+   (format "https://github.com/%s/issues/%s" project issue)))
+
+(setq org-link-abbrev-alist
+      '(("gmane" . "http://thread.gmane.org/%s")
+        ("google" . "https://www.google.com/search?q=%s")
+        ("github" . "http://github.com/%s")
+        ))
+
+;; from http://endlessparentheses.com/use-org-mode-links-for-absolutely-anything.html
+(org-add-link-type
+ "tag" '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))
+
+(setq org-src-fontify-natively t)
+(setq org-html-htmlize-output-type 'css)
+(setq org-html-htmlize-font-prefix "org-")
+(org-babel-do-load-languages
+ 'org-babel-load-languages
+ '( (perl . t)
+    (ruby . t)
+    (sh . t)
+    (python . t)
+    (emacs-lisp . t)
+    ;; (golang . t)
+    (haskell . t)
+    (ditaa . t)
+    ))
+
+(defun my/org-insert-src-block (src-code-type)
+  "Insert a `SRC-CODE-TYPE' type source code block in org-mode."
+  (interactive
+   (let ((src-code-types
+          '("emacs-lisp" "python" "C" "sh" "java" "js" "clojure" "C++" "css"
+            "calc" "dot" "gnuplot" "ledger" "R" "sass" "screen" "sql" "awk"
+            "ditaa" "haskell" "latex" "lisp" "matlab" "org" "perl" "ruby"
+            "sqlite" "rust" "scala" "golang" "restclient")))
+     (list (ido-completing-read "Source code type: " src-code-types))))
+  (progn
+    (newline-and-indent)
+    (insert (format "#+BEGIN_SRC %s\n" src-code-type))
+    (newline-and-indent)
+    (insert "#+END_SRC\n")
+    (previous-line 2)
+    (org-edit-src-code)))
+
+(defun my/org-insert-html-block ()
+  "Insert a `HTML-BLOCK` type in org-mode."
+  (interactive
+   (progn
+     (newline-and-indent)
+     (insert "#+BEGIN_HTML\n")
+     (newline-and-indent)
+     (insert "#+END_HTML\n")
+     (previous-line 2))))
+
+
+(defun my/org-insert-blockquote-block ()
+  "Insert a `BLOCKQUOTE-BLOCK` type in org-mode."
+  (interactive
+   (progn
+     (newline-and-indent)
+     (insert "#+BEGIN_BLOCKQUOTE\n")
+     (newline-and-indent)
+     (insert "#+END_BLOCKQUOTE\n")
+     (previous-line 2))))
+
+
+
+(add-hook 'org-mode-hook
+          '(lambda ()
+             (local-set-key (kbd "C-c s e") 'org-edit-src-code)
+             (local-set-key (kbd "C-c s i") 'my/org-insert-src-block)
+             (local-set-key (kbd "C-c s h") 'my/org-insert-html-block)
+             (local-set-key (kbd "C-c s b") 'my/org-insert-blockquote-block))
+          'append)
+
+(require 'org-archive)
+(setq org-archive-location (concat org-archive-directory org-archive-file-pattern))
+
+(defvar org-my-archive-expiry-days 9
+  "The number of days after which a completed task should be auto-archived.
+This can be 0 for immediate, or a floating point value.")
+
+(defun org-archive-done-tasks ()
+  (interactive)
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward "\* \\(DONE\\|CANCELED\\) " nil t)
+   (if (save-restriction
+            (save-excursion
+        (org-narrow-to-subtree)
+        (search-forward ":LOGBOOK:" nil t)))
+          (forward-line)
+        (org-archive-subtree)
+        (goto-char (line-beginning-position))))))
+
+(defalias 'archive-done-tasks 'org-archive-done-tasks)
+
+;; Wish I could use taggroup but it doesn't seem to work..
+(setq org-tag-alist '(
+                   ("important" . ?i)
+                   ("ongoing" . ?o)         ;; ongoing "project", use to filter big project that are on the go
+                   ("next" . ?n)            ;; next "project"/"task", use to filter next things to do
+                   ("@home" . ?h)           ;; needs to be done at home
+                   ("@work" . ?w)           ;; needs to be done at work
+                   ("dev" . ?e)             ;; this is a development task
+                   ("infra" . ?a)           ;; this is a sysadmin/infra task
+                   ("document" . ?d)        ;; needs to produce a document (article, post, ..)
+                   ("download" . ?D)        ;; needs to download something
+                   ("media" . ?m)           ;; this is a media (something to watch, listen, record, ..)
+                   ("mail" . ?M)            ;; mail-related (to write & send or to read)
+                   ("triage" . ?t)          ;; need "triage", tag it to easily find them
+                   ("task" . ?a)            ;; a simple task (no project), the name is kinda misleading
+                   ;; docker-related tags
+                   ("docker")
+                   ("kubernetes")
+                   ("compose")
+                   ("moby")
+                   ("linuxkit")
+                   ("docs")
+                   ;; languages
+                   ("golang")
+                   ("python")
+                   ("java")
+                   ("clojure")
+                   ("emacs-lisp")
+                   ;; sites tags
+                   ("sites")
+                   ("vdf")
+                   ;; configs tags
+                   ("configs")
+                   ("emacs")
+                   ("i3")
+                   ("shell")
+                   ;; services
+                   ("services")
+                   ))
+
+(defadvice org-clock-in (after sacha activate)
+  "Set this task's status to 'PROGRESS'."
+  (org-todo "PROGRESS"))
+
+(setq org-agenda-custom-commands
+      '(("d" "Daily agenda and all TODOs"
+         ((tags "urgent+PRIORITY=\"A\""
+                ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
+                 (org-agenda-overriding-header "High-priority unfinished tasks:")))
+          (agenda "" ((org-agenda-ndays 1)))
+          (tags "next"
+                ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
+                 (org-agenda-overriding-header "Today's tasks")))
+          (tags "PRIORITY=\"A\""
+                ((org-agenda-skip-function '(or (org-agenda-skip-entry-if 'tag 'urgent)
+                                                (org-agenda-skip-entry-if 'todo 'done)))
+                 (org-agenda-overriding-header "Kaizen tasks -improvement-")))
+          (alltodo ""
+                   ((org-agenda-sorting-strategy '(priority-down))
+                    (org-agenda-skip-function '(or (org-agenda-skip-entry-if 'todo 'progress)
+                                                   (org-agenda-skip-entry-if 'todo 'review)
+                                                   (org-agenda-skip-entry-if 'todo 'done)
+                                                   (vde/org-skip-subtree-if-habit)
+                                                   (vde/org-skip-subtree-if-priority ?A)
+                                                   (org-agenda-skip-if nil '(scheduled deadline))))
+                    (org-agenda-overriding-header "ALL normal priority tasks:"))))
+         ((org-agenda-compact-blocks t)))
+        ("t" todo "TODO"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("p" todo "PROGRESS"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("r" todo "REVIEW"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("u" todo "PAUSED"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("b" todo "BLOCKED"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("n" "Next tasks" tags-todo "next"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-tags-exclude-from-inheritance '("next"))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("i" "Triage tasks โ€” to look" tags-todo "triage"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ;; Timelines
+        ("d" "Timeline for today" ((agenda "" ))
+         ((org-agenda-ndays 1)
+          (org-agenda-show-log t)
+          (org-agenda-log-mode-items '(clock closed))
+          (org-agenda-clockreport-mode t)
+          (org-agenda-entry-types '())))
+        ("w" "Weekly review" agenda ""
+         ((org-agenda-span 7)
+          (org-agenda-log-mode 1)))
+        ("W" "Weekly review sans DAILY" agenda ""
+         ((org-agenda-span 7)
+          (org-agenda-log-mode 1)
+          (org-agenda-tag-filter-preset '("-DAILY"))))
+        ;; Panic tasks : urgent & important
+        ;; Probably the most important to do, but try not have to much of them..
+        ("P" "Panic -emergency-" tags-todo "urgent+PRIORITY=\"A\""
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ;; Kaizen tasks : important but not urgent
+        ("K" "Kaizen -improvement-" tags-todo "PRIORITY=\"A\"&-urgent"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ;; Social investment : urgent
+        ("S" "Social -investment-" tags-todo "-PRIORITY=\"A\"+urgent"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ;; Organics
+        ("O" "Organics -inspiration-" tags-todo "-PRIORITY=\"A\"&-urgent"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("N" search ""
+         ((org-agenda-text-search-extra-files nil)))))
+
+(defun vde/org-skip-subtree-if-priority (priority)
+  "Skip an agenda subtree if it has a priority of PRIORITY.
+
+PRIORITY may be one of the characters ?A, ?B, or ?C."
+  (let ((subtree-end (save-excursion (org-end-of-subtree t)))
+        (pri-value (* 1000 (- org-lowest-priority priority)))
+        (pri-current (org-get-priority (thing-at-point 'line t))))
+    (if (= pri-value pri-current)
+        subtree-end
+      nil)))
+
+(defun vde/org-skip-subtree-if-habit ()
+  "Skip an agenda entry if it has a STYLE property equal to \"habit\"."
+  (let ((subtree-end (save-excursion (org-end-of-subtree t))))
+    (if (string= (org-entry-get nil "STYLE") "habit")
+        subtree-end
+      nil)))
+
+(use-package htmlize
+  :ensure t
+  :defer t)
+;;      (setq org-html-head "<link rel=\"stylesheet\" type=\"text/css\" hrefl=\"css/stylesheet.css\" />")
+(setq org-html-include-timestamps nil)
+;; (setq org-html-htmlize-output-type 'css)
+(setq org-html-head-include-default-style nil)
+
+(use-package ox-publish)
+;; (use-package ox-rss)
+
+(setq org-html-html5-fancy t)
+
+;; Define some variables to write less :D
+(setq sbr-base-directory (expand-file-name "sbr" org-sites-directory)
+      sbr-publishing-directory (expand-file-name "sbr" org-publish-folder)
+      vdf-base-directory (expand-file-name "vdf" org-sites-directory)
+      vdf-site-directory (expand-file-name "blog" github-personal-folder)
+      vdf-publishing-directory (expand-file-name "posts" (expand-file-name "content" vdf-site-directory))
+      vdf-static-directory (expand-file-name "static" vdf-site-directory)
+      vdf-css-publishing-directory (expand-file-name "css" vdf-static-directory)
+      vdf-assets-publishing-directory vdf-static-directory)
+
+;; Project
+(setq org-publish-project-alist
+      `(("sbr-notes"
+         :base-directory ,sbr-base-directory
+         :base-extension "org"
+         :publishing-directory ,sbr-publishing-directory
+         :makeindex t
+         :exclude "FIXME"
+         :recursive t
+         :htmlized-source t
+         :publishing-function org-html-publish-to-html
+         :headline-levels 4
+         :auto-preamble t
+         :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />"
+         :html-preamble "<div id=\"nav\">
+<ul>
+<li><a href=\"/\" class=\"home\">Home</a></li>
+</ul>
+</div>"
+         :html-postamble "<div id=\"footer\">
+%a %C %c
+</div>")
+        ("sbr-static"
+         :base-directory ,sbr-base-directory
+         :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg"
+         :publishing-directory ,sbr-publishing-directory
+         :recursive t
+         :publishing-function org-publish-attachment
+         )
+        ("sbr" :components ("sbr-notes" "sbr-static"))
+        ("vdf-notes"
+         :base-directory ,vdf-base-directory
+         :base-extension "org"
+         :publishing-directory ,vdf-publishing-directory
+         :exclude "FIXME"
+         :section-numbers nil
+         :with-toc nil
+         :with-drawers t
+         :htmlized-source t
+         :org-html-htmlize-output-type 'css
+         :html-html5-fancy t
+         :publishing-function org-html-publish-to-html
+         :headline-levels 4
+         :body-only t)
+        ("vdf-static-css"
+         :base-directory ,vdf-base-directory
+         :base-extension "css"
+         :publishing-directory ,vdf-css-publishing-directory
+         :recursive t
+         :publishing-function org-publish-attachment
+         )
+        ("vdf-static-assets"
+         :base-directory ,vdf-base-directory
+         :base-extension "png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg"
+         :publishing-directory ,vdf-assets-publishing-directory
+         :recursive t
+         :publishing-function org-publish-attachment
+         )
+        ("vdf" :components ("vdf-notes" "vdf-static-css" "vdf-static-assets"))
+        ))
+
+(provide 'org-config)
.emacs.d/config/org-config.elc
Binary file
.emacs.d/config/org-config.org
@@ -0,0 +1,711 @@
+#+TITLE: org-mode configuration ๊™ฎ
+
+#+BEGIN_QUOTE
+Org-mode is a powerful system for organizing your complex life with
+simple plain-text files. It seamlessly integrates all your notes,
+mindmaps, TODO lists, calendar, day planner, and project schedules
+into a single system that can be easily searched (e.g. by grep),
+encrypted (e.g. by GnuPG), backed up and synced (e.g. by Dropbox),
+imported/exported, and accessed on the go (e.g. on an iPhone or
+Android smartphone). It can even be used for authoring web pages and
+documents.
+#+END_QUOTE
+
+Depending on how this section grows, org-mode might need its own
+litterate org configuration file.
+
+Let's define a bunch of variable name that will be useful later (like
+where are =org-mode= file stored, etc.)
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (setq org-root-directory (expand-file-name "org" desktop-directory)
+        org-sites-directory-name "sites"
+        org-archive-directory-name "archive"
+        org-archive-file-pattern "/%s_archive::"
+        org-inbox-file "inbox.org"
+        org-main-file "personal.org"
+        org-todos-directory org-root-directory
+        org-notes-directory org-root-directory
+        org-sites-directory (expand-file-name org-sites-directory-name org-root-directory)
+        org-archive-directory (expand-file-name org-archive-directory-name org-root-directory)
+        org-docker-file "docker.org"
+        org-journal-file "journal.org"
+        org-publish-folder (substitute-env-in-file-name "$HOME/var/public_html")
+        sites-folder (substitute-env-in-file-name "$HOME/src/sites/"))
+#+END_SRC
+
+* Standard configuration
+
+First let's define the default directory for the =org= files, the one
+to be added to the agenda and the archives.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (use-package org
+    :ensure t)
+  (require 'find-lisp)
+  (setq org-directory org-root-directory)
+  (setq org-agenda-files (find-lisp-find-files org-todos-directory "\.org$"))
+  (setq org-enforce-todo-dependencies t)
+  (setq org-enforce-todo-checkbox-dependencies t)
+
+  (setq org-log-redeadline (quote time))
+  (setq org-log-reschedule (quote time))
+
+  ;;warn me of any deadlines in next 7 days
+  (setq org-deadline-warning-days 7)
+  ;;show me tasks scheduled or due in next fortnight
+  (setq org-agenda-span (quote fortnight))
+  ;;don't show tasks as scheduled if they are already shown as a deadline
+  (setq org-agenda-skip-scheduled-if-deadline-is-shown t)
+  ;;don't give awarning colour to tasks with impending deadlines
+  ;;if they are scheduled to be done
+  (setq org-agenda-skip-deadline-prewarning-if-scheduled (quote pre-scheduled))
+  ;;don't show tasks that are scheduled or have deadlines in the
+  ;;normal todo list
+  (setq org-agenda-todo-ignore-deadlines (quote all))
+  (setq org-agenda-todo-ignore-scheduled (quote all))
+  ;;sort tasks in order of when they are due and then by priority
+  (setq org-agenda-sorting-strategy
+    (quote
+     ((agenda deadline-up priority-down)
+      (todo priority-down category-keep)
+      (tags priority-down category-keep)
+      (search category-keep))))
+#+END_SRC
+
+Let's also define the default /todo-keywords/ and the workflow between
+them.
+
+- =TODO= : task not started yet, part of the backlog :)
+- =PROGRESS= : task that are currently in progress, should be a minimum
+- =BLOCKED= : task that I start working on but cannot anymore (for
+  some reason), thus they are blocked
+- =REVIEW= : task that should be done, but I need or wait for a review
+  (by someone else or by me)
+- =DONE= : task that are completed.
+- =ARCHIVED= : same as done but keep it here (and not moving into
+  archive)
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (setq org-todo-keywords
+        (quote ((sequence "TODO(t)" "PROGRESS(p)" "PAUSED" "BLOCKED" "REVIEW" "|" "DONE(d!)" "ARCHIVED")
+                (sequence "REPORT(r!)" "BUG" "KNOWNCAUSE" "|" "FIXED(f!)")
+                (sequence "|" "CANCELLED(c@)"))))
+  (setq org-todo-keyword-faces
+        (quote (("TODO" . org-todo)
+                ("PROGRESS" . "green")
+                ("PAUSED" . "cyan")
+                ("BLOCKED" . "red")
+                ("REVIEW" . "yellow")
+                ("DONE" . org-done)
+                ("ARCHIVED" . org-done)
+                ("CANCELLED" . "black")
+                ("REPORT" . org-todo)
+                ("BUG" . "red")
+                ("KNOWNCAUSE" . "yellow")
+                ("FIXED" . org-done))))
+
+  (setq org-todo-state-tags-triggers
+        (quote (("CANCELLED" ("CANCELLED" . t)))))
+#+END_SRC
+
+If a parent has all it's children =DONE=, make it =DONE= too.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defun org-summary-todo (n-done n-not-done)
+    "Switch entry to DONE when all subentries are done, to PROGRESS otherwise."
+    (let (org-log-done org-log-states)   ; turn off logging
+      (if (not (string-blank-p (org-get-todo-state)))
+          (org-todo (if (= n-not-done 0) "DONE" "PROGRESS")))
+      ))
+
+  (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
+#+END_SRC
+
+* Archives
+
+We want to be able to archive some /done/ projects. Let's load
+org-archive and configure it.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (require 'org-archive)
+  (setq org-archive-location (concat org-archive-directory org-archive-file-pattern))
+#+END_SRC
+
+Let's also have some /auto-archive/ stuff, taken inspiration from [[http://article.gmane.org/gmane.emacs.orgmode/2963][john wiegley]].
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defvar org-my-archive-expiry-days 9
+    "The number of days after which a completed task should be auto-archived.
+  This can be 0 for immediate, or a floating point value.")
+
+  (defun org-archive-done-tasks ()
+    (interactive)
+    (save-excursion
+      (goto-char (point-min))
+      (while (re-search-forward "\* \\(DONE\\|CANCELED\\) " nil t)
+     (if (save-restriction
+              (save-excursion
+          (org-narrow-to-subtree)
+          (search-forward ":LOGBOOK:" nil t)))
+            (forward-line)
+          (org-archive-subtree)
+          (goto-char (line-beginning-position))))))
+
+  (defalias 'archive-done-tasks 'org-archive-done-tasks)
+#+END_SRC
+
+* Captures
+
+Let's define some useful functionโ€ฆ Mainly add support for allowing
+prompt input in templates (see [[http://storax.github.io/blog/2016/05/02/org-capture-tricks/][org-capture-tricks]]).
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defvar oc-capture-prmt-history nil
+    "History of prompt answers for org capture.")
+  (defun oc/prmt (prompt variable)
+    "PROMPT for string, save it to VARIABLE and insert it."
+    (make-local-variable variable)
+    (set variable (read-string (concat prompt ": ") nil oc-capture-prmt-history)))
+  (defun oc/inc (what text &rest fmtvars)
+    "Ask user to include WHAT.  If user agrees return TEXT."
+    (when (y-or-n-p (concat "Include " what "?"))
+      (apply 'format text fmtvars)))
+#+END_SRC
+
+Setup captures templates..
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (setq org-capture-templates
+     '(;; other entries
+          ("t" "inbox"
+        entry (file (expand-file-name org-inbox-file org-todos-directory))
+           "* %?\n%i\n%a")
+          ("d" "task"
+        entry (file+headline (expand-file-name org-main-file org-todos-directory) "Tasks")
+           "* TODO %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n")
+          ("d" "docker task"
+        entry (file+headline (expand-file-name org-docker-file org-todos-directory) "Tasks")
+           "* TODO gh:docker/%(oc/prmt \"project\" 'd-prj)#%(oc/prmt \"issue/pr\" 'd-issue) %?%(oc/inc \"feature content\" \" [/]\n- [ ] Implementation\n- [ ] Tests\n- [ ] Docs\")")
+          ("j" "Journal entry"
+           entry (file+datetree+prompt (expand-file-name org-journal-file org-root-directory))
+           "* %?\n%i\nFrom: %a\n%U" :empty-lines 1)
+          ;; other entries
+          ))
+#+END_SRC
+
+* Links
+
+#+BEGIN_QUOTE
+One little-know feature of org-mode is that you can define new types
+of links with the aptly named org-add-link-type. The applications of
+this virtue are many.
+#+END_QUOTE
+
+Let's define one for =grep= and =pt=.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (org-add-link-type
+   "grep" 'my/follow-grep-link
+   )
+  (defun my/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))))
+    )
+
+  (use-package pt
+    :load-path "~/.emacs.d/lisp/pt/")
+
+  ;; pt-regexp (regexp directory &optional args)
+  (org-add-link-type
+   "pt" 'my/follow-pt-link)
+  (defun my/follow-pt-link (regexp)
+    "Run `pt-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
+          (pt-regexp exp (expand-file-name "./")))
+      (progn
+        (setq folder (nth 1 expressions))
+        (pt-regexp exp (file-name-as-directory (expand-file-name folder)))))
+    )
+#+END_SRC
+
+Let's define some for youtube and other media websites.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defvar yt-iframe-format
+    ;; You may want to change your width and height.
+    (concat "<iframe width=\"440\""
+            " height=\"335\""
+            " src=\"https://www.youtube.com/embed/%s\""
+            " frameborder=\"0\""
+            " allowfullscreen>%s</iframe>"))
+
+  (org-add-link-type
+   "youtube"
+   (lambda (handle)
+     (browse-url
+      (concat "https://www.youtube.com/embed/"
+              handle)))
+   (lambda (path desc backend)
+     (cl-case backend
+       (html (format yt-iframe-format
+                     path (or desc "")))
+       (latex (format "\href{%s}{%s}"
+                      path (or desc "video"))))))
+#+END_SRC
+
+Let's define some for github.com sites.
+
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (org-add-link-type
+   "gh" 'my/follow-gh-link)
+  (defun my/follow-gh-link (issue)
+    "Browse github issue/pr specified"
+    (setq expressions (split-string issue "#"))
+    (setq project (nth 0 expressions))
+    (setq issue (nth 1 expressions))
+    (browse-url
+     (format "https://github.com/%s/issues/%s" project issue)))
+#+END_SRC
+
+
+Add some more abbreviation to links
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (setq org-link-abbrev-alist
+        '(("gmane" . "http://thread.gmane.org/%s")
+          ("google" . "https://www.google.com/search?q=%s")
+          ("github" . "http://github.com/%s")
+          ))
+#+END_SRC
+
+
+And some for =org-mode= itself.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  ;; from http://endlessparentheses.com/use-org-mode-links-for-absolutely-anything.html
+  (org-add-link-type
+   "tag" '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))
+#+END_SRC
+
+* Code blocks
+
+ We are using a lot of code block in org-mode, in this file for
+ example ; let's /fontify/ the code blocks first.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (setq org-src-fontify-natively t)
+  (setq org-html-htmlize-output-type 'css)
+  (setq org-html-htmlize-font-prefix "org-")
+  (org-babel-do-load-languages
+   'org-babel-load-languages
+   '( (perl . t)
+      (ruby . t)
+      (sh . t)
+      (python . t)
+      (emacs-lisp . t)
+      ;; (golang . t)
+      (haskell . t)
+      (ditaa . t)
+      ))
+#+END_SRC
+
+Add a function to easily add a code block and bind it.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defun my/org-insert-src-block (src-code-type)
+    "Insert a `SRC-CODE-TYPE' type source code block in org-mode."
+    (interactive
+     (let ((src-code-types
+            '("emacs-lisp" "python" "C" "sh" "java" "js" "clojure" "C++" "css"
+              "calc" "dot" "gnuplot" "ledger" "R" "sass" "screen" "sql" "awk"
+              "ditaa" "haskell" "latex" "lisp" "matlab" "org" "perl" "ruby"
+              "sqlite" "rust" "scala" "golang" "restclient")))
+       (list (ido-completing-read "Source code type: " src-code-types))))
+    (progn
+      (newline-and-indent)
+      (insert (format "#+BEGIN_SRC %s\n" src-code-type))
+      (newline-and-indent)
+      (insert "#+END_SRC\n")
+      (previous-line 2)
+      (org-edit-src-code)))
+
+  (defun my/org-insert-html-block ()
+    "Insert a `HTML-BLOCK` type in org-mode."
+    (interactive
+     (progn
+       (newline-and-indent)
+       (insert "#+BEGIN_HTML\n")
+       (newline-and-indent)
+       (insert "#+END_HTML\n")
+       (previous-line 2))))
+
+
+  (defun my/org-insert-blockquote-block ()
+    "Insert a `BLOCKQUOTE-BLOCK` type in org-mode."
+    (interactive
+     (progn
+       (newline-and-indent)
+       (insert "#+BEGIN_BLOCKQUOTE\n")
+       (newline-and-indent)
+       (insert "#+END_BLOCKQUOTE\n")
+       (previous-line 2))))
+
+
+
+  (add-hook 'org-mode-hook
+            '(lambda ()
+               (local-set-key (kbd "C-c s e") 'org-edit-src-code)
+               (local-set-key (kbd "C-c s i") 'my/org-insert-src-block)
+               (local-set-key (kbd "C-c s h") 'my/org-insert-html-block)
+               (local-set-key (kbd "C-c s b") 'my/org-insert-blockquote-block))
+            'append)
+#+END_SRC
+
+* Archives
+
+We want to be able to archive some /done/ projects. Let's load
+org-archive and configure it.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+     (require 'org-archive)
+     (setq org-archive-location (concat org-archive-directory org-archive-file-pattern))
+#+END_SRC
+
+Let's also have some /auto-archive/ stuff, taken inspiration from [[http://article.gmane.org/gmane.emacs.orgmode/2963][john
+wiegley]].
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defvar org-my-archive-expiry-days 9
+    "The number of days after which a completed task should be auto-archived.
+  This can be 0 for immediate, or a floating point value.")
+
+  (defun org-archive-done-tasks ()
+    (interactive)
+    (save-excursion
+      (goto-char (point-min))
+      (while (re-search-forward "\* \\(DONE\\|CANCELED\\) " nil t)
+     (if (save-restriction
+              (save-excursion
+          (org-narrow-to-subtree)
+          (search-forward ":LOGBOOK:" nil t)))
+            (forward-line)
+          (org-archive-subtree)
+          (goto-char (line-beginning-position))))))
+
+  (defalias 'archive-done-tasks 'org-archive-done-tasks)
+#+END_SRC
+
+* Tags
+
+Tags should be displayed from the 90 column.
+
+#+BEGIN_SRC emacs-lisp
+  (setq org-tags-column -90)
+#+END_SRC
+
+Define a list of default tags that should apply for all org-mode
+buffers.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  ;; Wish I could use taggroup but it doesn't seem to work..
+  (setq org-tag-alist '(
+                     ("important" . ?i)
+                     ("ongoing" . ?o)         ;; ongoing "project", use to filter big project that are on the go
+                     ("next" . ?n)            ;; next "project"/"task", use to filter next things to do
+                     ("@home" . ?h)           ;; needs to be done at home
+                     ("@work" . ?w)           ;; needs to be done at work
+                     ("dev" . ?e)             ;; this is a development task
+                     ("infra" . ?a)           ;; this is a sysadmin/infra task
+                     ("document" . ?d)        ;; needs to produce a document (article, post, ..)
+                     ("download" . ?D)        ;; needs to download something
+                     ("media" . ?m)           ;; this is a media (something to watch, listen, record, ..)
+                     ("mail" . ?M)            ;; mail-related (to write & send or to read)
+                     ("triage" . ?t)          ;; need "triage", tag it to easily find them
+                     ("task" . ?a)            ;; a simple task (no project), the name is kinda misleading
+                     ;; docker-related tags
+                     ("docker")
+                     ("kubernetes")
+                     ("compose")
+                     ("moby")
+                     ("linuxkit")
+                     ("docs")
+                     ;; languages
+                     ("golang")
+                     ("python")
+                     ("java")
+                     ("clojure")
+                     ("emacs-lisp")
+                     ;; sites tags
+                     ("sites")
+                     ("vdf")
+                     ;; configs tags
+                     ("configs")
+                     ("emacs")
+                     ("i3")
+                     ("shell")
+                     ;; services
+                     ("services")
+                     ))
+#+END_SRC
+
+Note that =important= and =urgent= helps me prioritize my /todos/, in
+a /quadrant fashion way/.
+
+| Important          | *Kaizen*        | *Panic*             |
+| /tag important/    | improvements    | emergency           |
+|--------------------+-----------------+---------------------|
+| Less Important     | *Organics*      | Social *investment* |
+| /no tag important/ | inspiration     | Social activities   |
+|--------------------+-----------------+---------------------|
+|                    | Less Urgent     | Urgent              |
+|                    | /no tag urgent/ | /tag urgent/        |
+
+* Clocks
+
+Let's configure org-mode clocks a little bit. Let's first setup some
+common things.
+
+#+BEGIN_SRC emacs-lisp :tange yes
+  ;; Sometimes I change tasks I'm clocking quickly
+  ;; this removes clocked tasks with 0:00 duration
+  (setq org-clock-out-remove-zero-time-clocks 1)
+  ;; Clock out when moving task to a done state
+  (setq org-clock-out-when-done 1)
+  ;; If idle for more than 15 minutes, resolve the things by asking what to do
+  ;; with the clock time
+  (setq org-clock-idle-time 15)
+#+END_SRC
+
+We also want to set the state to =PROGRESS= when we are clocking in.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (defadvice org-clock-in (after sacha activate)
+    "Set this task's status to 'PROGRESS'."
+    (org-todo "PROGRESS"))
+#+END_SRC
+
+* Agenda(s)
+
+Set custom agendas.. For the syntax, look in worg : [[http://orgmode.org/worg/org-tutorials/advanced-searching.html][Advanced searching]]
+and [[http://orgmode.org/worg/org-tutorials/org-custom-agenda-commands.html][Custom Agenda Commands]].
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (setq org-agenda-custom-commands
+        '(("d" "Daily agenda and all TODOs"
+           ((tags "urgent+PRIORITY=\"A\""
+                  ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
+                   (org-agenda-overriding-header "High-priority unfinished tasks:")))
+            (agenda "" ((org-agenda-ndays 1)))
+            (tags "next"
+                  ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
+                   (org-agenda-overriding-header "Today's tasks")))
+            (tags "PRIORITY=\"A\""
+                  ((org-agenda-skip-function '(or (org-agenda-skip-entry-if 'tag 'urgent)
+                                                  (org-agenda-skip-entry-if 'todo 'done)))
+                   (org-agenda-overriding-header "Kaizen tasks -improvement-")))
+            (alltodo ""
+                     ((org-agenda-sorting-strategy '(priority-down))
+                      (org-agenda-skip-function '(or (org-agenda-skip-entry-if 'todo 'progress)
+                                                     (org-agenda-skip-entry-if 'todo 'review)
+                                                     (org-agenda-skip-entry-if 'todo 'done)
+                                                     (vde/org-skip-subtree-if-habit)
+                                                     (vde/org-skip-subtree-if-priority ?A)
+                                                     (org-agenda-skip-if nil '(scheduled deadline))))
+                      (org-agenda-overriding-header "ALL normal priority tasks:"))))
+           ((org-agenda-compact-blocks t)))
+          ("t" todo "TODO"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("p" todo "PROGRESS"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("r" todo "REVIEW"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("u" todo "PAUSED"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("b" todo "BLOCKED"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("n" "Next tasks" tags-todo "next"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-tags-exclude-from-inheritance '("next"))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("i" "Triage tasks โ€” to look" tags-todo "triage"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ;; Timelines
+          ("d" "Timeline for today" ((agenda "" ))
+           ((org-agenda-ndays 1)
+            (org-agenda-show-log t)
+            (org-agenda-log-mode-items '(clock closed))
+            (org-agenda-clockreport-mode t)
+            (org-agenda-entry-types '())))
+          ("w" "Weekly review" agenda ""
+           ((org-agenda-span 7)
+            (org-agenda-log-mode 1)))
+          ("W" "Weekly review sans DAILY" agenda ""
+           ((org-agenda-span 7)
+            (org-agenda-log-mode 1)
+            (org-agenda-tag-filter-preset '("-DAILY"))))
+          ;; Panic tasks : urgent & important
+          ;; Probably the most important to do, but try not have to much of them..
+          ("P" "Panic -emergency-" tags-todo "urgent+PRIORITY=\"A\""
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ;; Kaizen tasks : important but not urgent
+          ("K" "Kaizen -improvement-" tags-todo "PRIORITY=\"A\"&-urgent"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ;; Social investment : urgent
+          ("S" "Social -investment-" tags-todo "-PRIORITY=\"A\"+urgent"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ;; Organics
+          ("O" "Organics -inspiration-" tags-todo "-PRIORITY=\"A\"&-urgent"
+           ((org-agenda-sorting-strategy '(priority-down))
+            (org-agenda-prefix-format "  Mixed: ")))
+          ("N" search ""
+           ((org-agenda-text-search-extra-files nil)))))
+
+  (defun vde/org-skip-subtree-if-priority (priority)
+    "Skip an agenda subtree if it has a priority of PRIORITY.
+
+  PRIORITY may be one of the characters ?A, ?B, or ?C."
+    (let ((subtree-end (save-excursion (org-end-of-subtree t)))
+          (pri-value (* 1000 (- org-lowest-priority priority)))
+          (pri-current (org-get-priority (thing-at-point 'line t))))
+      (if (= pri-value pri-current)
+          subtree-end
+        nil)))
+
+  (defun vde/org-skip-subtree-if-habit ()
+    "Skip an agenda entry if it has a STYLE property equal to \"habit\"."
+    (let ((subtree-end (save-excursion (org-end-of-subtree t))))
+      (if (string= (org-entry-get nil "STYLE") "habit")
+          subtree-end
+        nil)))
+#+END_SRC
+
+* Publishing
+
+Let's configure the publishing part of org-mode. The first org-mode
+files we want to publish are in =~/desktop/org/sites/{project}=, and
+we want to publish them in =~/var/public_html/{project}= for now.
+
+Few org-export and org-html configuration.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (use-package htmlize
+    :ensure t
+    :defer t)
+  ;;      (setq org-html-head "<link rel=\"stylesheet\" type=\"text/css\" hrefl=\"css/stylesheet.css\" />")
+  (setq org-html-include-timestamps nil)
+  ;; (setq org-html-htmlize-output-type 'css)
+  (setq org-html-head-include-default-style nil)
+#+END_SRC
+
+And the projects.
+
+#+BEGIN_SRC emacs-lisp :tangle yes
+  (use-package ox-publish)
+  ;; (use-package ox-rss)
+
+  (setq org-html-html5-fancy t)
+
+  ;; Define some variables to write less :D
+  (setq sbr-base-directory (expand-file-name "sbr" org-sites-directory)
+        sbr-publishing-directory (expand-file-name "sbr" org-publish-folder)
+        vdf-base-directory (expand-file-name "vdf" org-sites-directory)
+        vdf-site-directory (expand-file-name "blog" github-personal-folder)
+        vdf-publishing-directory (expand-file-name "posts" (expand-file-name "content" vdf-site-directory))
+        vdf-static-directory (expand-file-name "static" vdf-site-directory)
+        vdf-css-publishing-directory (expand-file-name "css" vdf-static-directory)
+        vdf-assets-publishing-directory vdf-static-directory)
+
+  ;; Project
+  (setq org-publish-project-alist
+        `(("sbr-notes"
+           :base-directory ,sbr-base-directory
+           :base-extension "org"
+           :publishing-directory ,sbr-publishing-directory
+           :makeindex t
+           :exclude "FIXME"
+           :recursive t
+           :htmlized-source t
+           :publishing-function org-html-publish-to-html
+           :headline-levels 4
+           :auto-preamble t
+           :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />"
+           :html-preamble "<div id=\"nav\">
+  <ul>
+  <li><a href=\"/\" class=\"home\">Home</a></li>
+  </ul>
+  </div>"
+           :html-postamble "<div id=\"footer\">
+  %a %C %c
+  </div>")
+          ("sbr-static"
+           :base-directory ,sbr-base-directory
+           :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg"
+           :publishing-directory ,sbr-publishing-directory
+           :recursive t
+           :publishing-function org-publish-attachment
+           )
+          ("sbr" :components ("sbr-notes" "sbr-static"))
+          ("vdf-notes"
+           :base-directory ,vdf-base-directory
+           :base-extension "org"
+           :publishing-directory ,vdf-publishing-directory
+           :exclude "FIXME"
+           :section-numbers nil
+           :with-toc nil
+           :with-drawers t
+           :htmlized-source t
+           :org-html-htmlize-output-type 'css
+           :html-html5-fancy t
+           :publishing-function org-html-publish-to-html
+           :headline-levels 4
+           :body-only t)
+          ("vdf-static-css"
+           :base-directory ,vdf-base-directory
+           :base-extension "css"
+           :publishing-directory ,vdf-css-publishing-directory
+           :recursive t
+           :publishing-function org-publish-attachment
+           )
+          ("vdf-static-assets"
+           :base-directory ,vdf-base-directory
+           :base-extension "png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg"
+           :publishing-directory ,vdf-assets-publishing-directory
+           :recursive t
+           :publishing-function org-publish-attachment
+           )
+          ("vdf" :components ("vdf-notes" "vdf-static-css" "vdf-static-assets"))
+          ))
+#+END_SRC
+* Provide configuration
+#+BEGIN_SRC emacs-lisp :tangle yes
+(provide 'org-config)
+#+END_SRC
.emacs.d/elpa/all-the-icons-20170817.642/data/data-alltheicons.el
@@ -0,0 +1,70 @@
+(defvar all-the-icons-data/alltheicons-alist
+  '(
+
+    ( "apache"             . "\xe909" )
+    ( "atom"               . "\xe917" )
+    ( "aws"                . "\xe90c" )
+    ( "bower"              . "\xe918" )
+    ( "c"                  . "\xe915" )
+    ( "c-line"             . "\xe90f" )
+    ( "clojure"            . "\xe919" )
+    ( "clojure-line"       . "\xe91a" )
+    ( "coffeescript"       . "\xe914" )
+    ( "cplusplus"          . "\xe913" )
+    ( "cplusplus-line"     . "\xe910" )
+    ( "csharp"             . "\xe911" )
+    ( "csharp-line"        . "\xe912" )
+    ( "css3"               . "\xe91b" )
+    ( "css3-alt"           . "\xe91c" )
+    ( "d3"                 . "\xe90e" )
+    ( "dlang"              . "\xe935" )
+    ( "elixir"             . "\xe936" )
+    ( "erlang"             . "\xe934" )
+    ( "git"                . "\xe907" )
+    ( "go"                 . "\xe91d" )
+    ( "google-drive"       . "\xe91e" )
+    ( "grunt"              . "\xe90d" )
+    ( "grunt-line"         . "\xe91f" )
+    ( "gulp"               . "\xe920" )
+    ( "haskell"            . "\xe921" )
+    ( "html5"              . "\xe932" )
+    ( "jasmine"            . "\xe904" )
+    ( "java"               . "\xe922" )
+    ( "javascript"         . "\xe906" )
+    ( "javascript-badge"   . "\xe923" )
+    ( "javascript-shield"  . "\xe924" )
+    ( "less"               . "\xe90b" )
+    ( "nginx"              . "\xe933" )
+    ( "nodejs"             . "\xe925" )
+    ( "perl"               . "\xe905" )
+    ( "perldocs"           . "\xe926" )
+    ( "postgresql"         . "\xe938" )
+    ( "prolog"             . "\xe927" )
+    ( "python"             . "\xe928" )
+    ( "react"              . "\xe929" )
+    ( "ruby"               . "\xe92a" )
+    ( "ruby-alt"           . "\xe92b" )
+    ( "rust"               . "\xe92c" )
+    ( "sass"               . "\xe92d" )
+    ( "scala"              . "\xe908" )
+    ( "script"             . "\xe90a" )
+    ( "spring"             . "\xe937" )
+    ( "stylus"             . "\xe92e" )
+    ( "svg"                . "\xe903" )
+    ( "swift"              . "\xe92f" )
+    ( "terminal"           . "\xe930" )
+    ( "terminal-alt"       . "\xe931" )
+    ( "battery-charging"   . "\xe939" )
+
+    ( "arrow-left"  . "\xe93a" )
+    ( "arrow-right" . "\xe93b" )
+    ( "cup-left"    . "\xe93c" )
+    ( "cup-right"   . "\xe93d" )
+    ( "slant-left"  . "\xe93e" )
+    ( "slant-right" . "\xe93f" )
+    ( "wave-left"   . "\xe940" )
+    ( "wave-right"  . "\xe941" )
+
+    ))
+
+(provide 'data-alltheicons)
.emacs.d/elpa/all-the-icons-20170817.642/data/data-alltheicons.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/data/data-faicons.el
@@ -0,0 +1,641 @@
+(defvar all-the-icons-data/fa-icon-alist
+  '(
+
+    ("500px" . "\xf26e")
+    ("adjust" . "\xf042")
+    ("adn" . "\xf170")
+    ("align-center" . "\xf037")
+    ("align-justify" . "\xf039")
+    ("align-left" . "\xf036")
+    ("align-right" . "\xf038")
+    ("amazon" . "\xf270")
+    ("ambulance" . "\xf0f9")
+    ("american-sign-language-interpreting" . "\xf2a3")
+    ("anchor" . "\xf13d")
+    ("android" . "\xf17b")
+    ("angellist" . "\xf209")
+    ("angle-double-down" . "\xf103")
+    ("angle-double-left" . "\xf100")
+    ("angle-double-right" . "\xf101")
+    ("angle-double-up" . "\xf102")
+    ("angle-down" . "\xf107")
+    ("angle-left" . "\xf104")
+    ("angle-right" . "\xf105")
+    ("angle-up" . "\xf106")
+    ("apple" . "\xf179")
+    ("archive" . "\xf187")
+    ("area-chart" . "\xf1fe")
+    ("arrow-circle-down" . "\xf0ab")
+    ("arrow-circle-left" . "\xf0a8")
+    ("arrow-circle-o-down" . "\xf01a")
+    ("arrow-circle-o-left" . "\xf190")
+    ("arrow-circle-o-right" . "\xf18e")
+    ("arrow-circle-o-up" . "\xf01b")
+    ("arrow-circle-right" . "\xf0a9")
+    ("arrow-circle-up" . "\xf0aa")
+    ("arrow-down" . "\xf063")
+    ("arrow-left" . "\xf060")
+    ("arrow-right" . "\xf061")
+    ("arrow-up" . "\xf062")
+    ("arrows" . "\xf047")
+    ("arrows-alt" . "\xf0b2")
+    ("arrows-h" . "\xf07e")
+    ("arrows-v" . "\xf07d")
+    ("assistive-listening-systems" . "\xf2a2")
+    ("asterisk" . "\xf069")
+    ("at" . "\xf1fa")
+    ("audio-description" . "\xf29e")
+    ("backward" . "\xf04a")
+    ("balance-scale" . "\xf24e")
+    ("ban" . "\xf05e")
+    ("bar-chart" . "\xf080")
+    ("barcode" . "\xf02a")
+    ("bars" . "\xf0c9")
+    ("battery-empty" . "\xf244")
+    ("battery-full" . "\xf240")
+    ("battery-half" . "\xf242")
+    ("battery-quarter" . "\xf243")
+    ("battery-three-quarters" . "\xf241")
+    ("bed" . "\xf236")
+    ("beer" . "\xf0fc")
+    ("behance" . "\xf1b4")
+    ("behance-square" . "\xf1b5")
+    ("bell" . "\xf0f3")
+    ("bell-o" . "\xf0a2")
+    ("bell-slash" . "\xf1f6")
+    ("bell-slash-o" . "\xf1f7")
+    ("bicycle" . "\xf206")
+    ("binoculars" . "\xf1e5")
+    ("birthday-cake" . "\xf1fd")
+    ("bitbucket" . "\xf171")
+    ("bitbucket-square" . "\xf172")
+    ("black-tie" . "\xf27e")
+    ("blind" . "\xf29d")
+    ("bluetooth" . "\xf293")
+    ("bluetooth-b" . "\xf294")
+    ("bold" . "\xf032")
+    ("bolt" . "\xf0e7")
+    ("bomb" . "\xf1e2")
+    ("book" . "\xf02d")
+    ("bookmark" . "\xf02e")
+    ("bookmark-o" . "\xf097")
+    ("braille" . "\xf2a1")
+    ("briefcase" . "\xf0b1")
+    ("btc" . "\xf15a")
+    ("bug" . "\xf188")
+    ("building" . "\xf1ad")
+    ("building-o" . "\xf0f7")
+    ("bullhorn" . "\xf0a1")
+    ("bullseye" . "\xf140")
+    ("bus" . "\xf207")
+    ("buysellads" . "\xf20d")
+    ("calculator" . "\xf1ec")
+    ("calendar" . "\xf073")
+    ("calendar-check-o" . "\xf274")
+    ("calendar-minus-o" . "\xf272")
+    ("calendar-o" . "\xf133")
+    ("calendar-plus-o" . "\xf271")
+    ("calendar-times-o" . "\xf273")
+    ("camera" . "\xf030")
+    ("camera-retro" . "\xf083")
+    ("car" . "\xf1b9")
+    ("caret-down" . "\xf0d7")
+    ("caret-left" . "\xf0d9")
+    ("caret-right" . "\xf0da")
+    ("caret-square-o-down" . "\xf150")
+    ("caret-square-o-left" . "\xf191")
+    ("caret-square-o-right" . "\xf152")
+    ("caret-square-o-up" . "\xf151")
+    ("caret-up" . "\xf0d8")
+    ("cart-arrow-down" . "\xf218")
+    ("cart-plus" . "\xf217")
+    ("cc" . "\xf20a")
+    ("cc-amex" . "\xf1f3")
+    ("cc-diners-club" . "\xf24c")
+    ("cc-discover" . "\xf1f2")
+    ("cc-jcb" . "\xf24b")
+    ("cc-mastercard" . "\xf1f1")
+    ("cc-paypal" . "\xf1f4")
+    ("cc-stripe" . "\xf1f5")
+    ("cc-visa" . "\xf1f0")
+    ("certificate" . "\xf0a3")
+    ("chain-broken" . "\xf127")
+    ("check" . "\xf00c")
+    ("check-circle" . "\xf058")
+    ("check-circle-o" . "\xf05d")
+    ("check-square" . "\xf14a")
+    ("check-square-o" . "\xf046")
+    ("chevron-circle-down" . "\xf13a")
+    ("chevron-circle-left" . "\xf137")
+    ("chevron-circle-right" . "\xf138")
+    ("chevron-circle-up" . "\xf139")
+    ("chevron-down" . "\xf078")
+    ("chevron-left" . "\xf053")
+    ("chevron-right" . "\xf054")
+    ("chevron-up" . "\xf077")
+    ("child" . "\xf1ae")
+    ("chrome" . "\xf268")
+    ("circle" . "\xf111")
+    ("circle-o" . "\xf10c")
+    ("circle-o-notch" . "\xf1ce")
+    ("circle-thin" . "\xf1db")
+    ("clipboard" . "\xf0ea")
+    ("clock-o" . "\xf017")
+    ("clone" . "\xf24d")
+    ("cloud" . "\xf0c2")
+    ("cloud-download" . "\xf0ed")
+    ("cloud-upload" . "\xf0ee")
+    ("code" . "\xf121")
+    ("code-fork" . "\xf126")
+    ("codepen" . "\xf1cb")
+    ("codiepie" . "\xf284")
+    ("coffee" . "\xf0f4")
+    ("cog" . "\xf013")
+    ("cogs" . "\xf085")
+    ("columns" . "\xf0db")
+    ("comment" . "\xf075")
+    ("comment-o" . "\xf0e5")
+    ("commenting" . "\xf27a")
+    ("commenting-o" . "\xf27b")
+    ("comments" . "\xf086")
+    ("comments-o" . "\xf0e6")
+    ("compass" . "\xf14e")
+    ("compress" . "\xf066")
+    ("connectdevelop" . "\xf20e")
+    ("contao" . "\xf26d")
+    ("copyright" . "\xf1f9")
+    ("creative-commons" . "\xf25e")
+    ("credit-card" . "\xf09d")
+    ("credit-card-alt" . "\xf283")
+    ("crop" . "\xf125")
+    ("crosshairs" . "\xf05b")
+    ("css3" . "\xf13c")
+    ("cube" . "\xf1b2")
+    ("cubes" . "\xf1b3")
+    ("cutlery" . "\xf0f5")
+    ("dashcube" . "\xf210")
+    ("database" . "\xf1c0")
+    ("deaf" . "\xf2a4")
+    ("delicious" . "\xf1a5")
+    ("desktop" . "\xf108")
+    ("deviantart" . "\xf1bd")
+    ("diamond" . "\xf219")
+    ("digg" . "\xf1a6")
+    ("dot-circle-o" . "\xf192")
+    ("download" . "\xf019")
+    ("dribbble" . "\xf17d")
+    ("dropbox" . "\xf16b")
+    ("drupal" . "\xf1a9")
+    ("edge" . "\xf282")
+    ("eject" . "\xf052")
+    ("ellipsis-h" . "\xf141")
+    ("ellipsis-v" . "\xf142")
+    ("empire" . "\xf1d1")
+    ("envelope" . "\xf0e0")
+    ("envelope-o" . "\xf003")
+    ("envelope-square" . "\xf199")
+    ("envira" . "\xf299")
+    ("eraser" . "\xf12d")
+    ("eur" . "\xf153")
+    ("exchange" . "\xf0ec")
+    ("exclamation" . "\xf12a")
+    ("exclamation-circle" . "\xf06a")
+    ("exclamation-triangle" . "\xf071")
+    ("expand" . "\xf065")
+    ("expeditedssl" . "\xf23e")
+    ("external-link" . "\xf08e")
+    ("external-link-square" . "\xf14c")
+    ("eye" . "\xf06e")
+    ("eye-slash" . "\xf070")
+    ("eyedropper" . "\xf1fb")
+    ("facebook" . "\xf09a")
+    ("facebook-official" . "\xf230")
+    ("facebook-square" . "\xf082")
+    ("fast-backward" . "\xf049")
+    ("fast-forward" . "\xf050")
+    ("fax" . "\xf1ac")
+    ("female" . "\xf182")
+    ("fighter-jet" . "\xf0fb")
+    ("file" . "\xf15b")
+    ("file-archive-o" . "\xf1c6")
+    ("file-audio-o" . "\xf1c7")
+    ("file-code-o" . "\xf1c9")
+    ("file-excel-o" . "\xf1c3")
+    ("file-image-o" . "\xf1c5")
+    ("file-o" . "\xf016")
+    ("file-pdf-o" . "\xf1c1")
+    ("file-powerpoint-o" . "\xf1c4")
+    ("file-text" . "\xf15c")
+    ("file-text-o" . "\xf0f6")
+    ("file-video-o" . "\xf1c8")
+    ("file-word-o" . "\xf1c2")
+    ("files-o" . "\xf0c5")
+    ("film" . "\xf008")
+    ("filter" . "\xf0b0")
+    ("fire" . "\xf06d")
+    ("fire-extinguisher" . "\xf134")
+    ("firefox" . "\xf269")
+    ("first-order" . "\xf2b0")
+    ("flag" . "\xf024")
+    ("flag-checkered" . "\xf11e")
+    ("flag-o" . "\xf11d")
+    ("flask" . "\xf0c3")
+    ("flickr" . "\xf16e")
+    ("floppy-o" . "\xf0c7")
+    ("folder" . "\xf07b")
+    ("folder-o" . "\xf114")
+    ("folder-open" . "\xf07c")
+    ("folder-open-o" . "\xf115")
+    ("font" . "\xf031")
+    ("font-awesome" . "\xf2b4")
+    ("fonticons" . "\xf280")
+    ("fort-awesome" . "\xf286")
+    ("forumbee" . "\xf211")
+    ("forward" . "\xf04e")
+    ("foursquare" . "\xf180")
+    ("frown-o" . "\xf119")
+    ("futbol-o" . "\xf1e3")
+    ("gamepad" . "\xf11b")
+    ("gavel" . "\xf0e3")
+    ("gbp" . "\xf154")
+    ("genderless" . "\xf22d")
+    ("get-pocket" . "\xf265")
+    ("gg" . "\xf260")
+    ("gg-circle" . "\xf261")
+    ("gift" . "\xf06b")
+    ("git" . "\xf1d3")
+    ("git-square" . "\xf1d2")
+    ("github" . "\xf09b")
+    ("github-alt" . "\xf113")
+    ("github-square" . "\xf092")
+    ("gitlab" . "\xf296")
+    ("glass" . "\xf000")
+    ("glide" . "\xf2a5")
+    ("glide-g" . "\xf2a6")
+    ("globe" . "\xf0ac")
+    ("google" . "\xf1a0")
+    ("google-plus" . "\xf0d5")
+    ("google-plus-official" . "\xf2b3")
+    ("google-plus-square" . "\xf0d4")
+    ("google-wallet" . "\xf1ee")
+    ("graduation-cap" . "\xf19d")
+    ("gratipay" . "\xf184")
+    ("h-square" . "\xf0fd")
+    ("hacker-news" . "\xf1d4")
+    ("hand-lizard-o" . "\xf258")
+    ("hand-o-down" . "\xf0a7")
+    ("hand-o-left" . "\xf0a5")
+    ("hand-o-right" . "\xf0a4")
+    ("hand-o-up" . "\xf0a6")
+    ("hand-paper-o" . "\xf256")
+    ("hand-peace-o" . "\xf25b")
+    ("hand-pointer-o" . "\xf25a")
+    ("hand-rock-o" . "\xf255")
+    ("hand-scissors-o" . "\xf257")
+    ("hand-spock-o" . "\xf259")
+    ("hashtag" . "\xf292")
+    ("hdd-o" . "\xf0a0")
+    ("header" . "\xf1dc")
+    ("headphones" . "\xf025")
+    ("heart" . "\xf004")
+    ("heart-o" . "\xf08a")
+    ("heartbeat" . "\xf21e")
+    ("history" . "\xf1da")
+    ("home" . "\xf015")
+    ("hospital-o" . "\xf0f8")
+    ("hourglass" . "\xf254")
+    ("hourglass-end" . "\xf253")
+    ("hourglass-half" . "\xf252")
+    ("hourglass-o" . "\xf250")
+    ("hourglass-start" . "\xf251")
+    ("houzz" . "\xf27c")
+    ("html5" . "\xf13b")
+    ("i-cursor" . "\xf246")
+    ("ils" . "\xf20b")
+    ("inbox" . "\xf01c")
+    ("indent" . "\xf03c")
+    ("industry" . "\xf275")
+    ("info" . "\xf129")
+    ("info-circle" . "\xf05a")
+    ("inr" . "\xf156")
+    ("instagram" . "\xf16d")
+    ("internet-explorer" . "\xf26b")
+    ("ioxhost" . "\xf208")
+    ("italic" . "\xf033")
+    ("joomla" . "\xf1aa")
+    ("jpy" . "\xf157")
+    ("jsfiddle" . "\xf1cc")
+    ("key" . "\xf084")
+    ("keyboard-o" . "\xf11c")
+    ("krw" . "\xf159")
+    ("language" . "\xf1ab")
+    ("laptop" . "\xf109")
+    ("lastfm" . "\xf202")
+    ("lastfm-square" . "\xf203")
+    ("leaf" . "\xf06c")
+    ("leanpub" . "\xf212")
+    ("lemon-o" . "\xf094")
+    ("level-down" . "\xf149")
+    ("level-up" . "\xf148")
+    ("life-ring" . "\xf1cd")
+    ("lightbulb-o" . "\xf0eb")
+    ("line-chart" . "\xf201")
+    ("link" . "\xf0c1")
+    ("linkedin" . "\xf0e1")
+    ("linkedin-square" . "\xf08c")
+    ("linux" . "\xf17c")
+    ("list" . "\xf03a")
+    ("list-alt" . "\xf022")
+    ("list-ol" . "\xf0cb")
+    ("list-ul" . "\xf0ca")
+    ("location-arrow" . "\xf124")
+    ("lock" . "\xf023")
+    ("long-arrow-down" . "\xf175")
+    ("long-arrow-left" . "\xf177")
+    ("long-arrow-right" . "\xf178")
+    ("long-arrow-up" . "\xf176")
+    ("low-vision" . "\xf2a8")
+    ("magic" . "\xf0d0")
+    ("magnet" . "\xf076")
+    ("male" . "\xf183")
+    ("map" . "\xf279")
+    ("map-marker" . "\xf041")
+    ("map-o" . "\xf278")
+    ("map-pin" . "\xf276")
+    ("map-signs" . "\xf277")
+    ("mars" . "\xf222")
+    ("mars-double" . "\xf227")
+    ("mars-stroke" . "\xf229")
+    ("mars-stroke-h" . "\xf22b")
+    ("mars-stroke-v" . "\xf22a")
+    ("maxcdn" . "\xf136")
+    ("meanpath" . "\xf20c")
+    ("medium" . "\xf23a")
+    ("medkit" . "\xf0fa")
+    ("meh-o" . "\xf11a")
+    ("mercury" . "\xf223")
+    ("microphone" . "\xf130")
+    ("microphone-slash" . "\xf131")
+    ("minus" . "\xf068")
+    ("minus-circle" . "\xf056")
+    ("minus-square" . "\xf146")
+    ("minus-square-o" . "\xf147")
+    ("mixcloud" . "\xf289")
+    ("mobile" . "\xf10b")
+    ("modx" . "\xf285")
+    ("money" . "\xf0d6")
+    ("moon-o" . "\xf186")
+    ("motorcycle" . "\xf21c")
+    ("mouse-pointer" . "\xf245")
+    ("music" . "\xf001")
+    ("neuter" . "\xf22c")
+    ("newspaper-o" . "\xf1ea")
+    ("object-group" . "\xf247")
+    ("object-ungroup" . "\xf248")
+    ("odnoklassniki" . "\xf263")
+    ("odnoklassniki-square" . "\xf264")
+    ("opencart" . "\xf23d")
+    ("openid" . "\xf19b")
+    ("opera" . "\xf26a")
+    ("optin-monster" . "\xf23c")
+    ("outdent" . "\xf03b")
+    ("pagelines" . "\xf18c")
+    ("paint-brush" . "\xf1fc")
+    ("paper-plane" . "\xf1d8")
+    ("paper-plane-o" . "\xf1d9")
+    ("paperclip" . "\xf0c6")
+    ("paragraph" . "\xf1dd")
+    ("pause" . "\xf04c")
+    ("pause-circle" . "\xf28b")
+    ("pause-circle-o" . "\xf28c")
+    ("paw" . "\xf1b0")
+    ("paypal" . "\xf1ed")
+    ("pencil" . "\xf040")
+    ("pencil-square" . "\xf14b")
+    ("pencil-square-o" . "\xf044")
+    ("percent" . "\xf295")
+    ("phone" . "\xf095")
+    ("phone-square" . "\xf098")
+    ("picture-o" . "\xf03e")
+    ("pie-chart" . "\xf200")
+    ("pied-piper" . "\xf2ae")
+    ("pied-piper-alt" . "\xf1a8")
+    ("pied-piper-pp" . "\xf1a7")
+    ("pinterest" . "\xf0d2")
+    ("pinterest-p" . "\xf231")
+    ("pinterest-square" . "\xf0d3")
+    ("plane" . "\xf072")
+    ("play" . "\xf04b")
+    ("play-circle" . "\xf144")
+    ("play-circle-o" . "\xf01d")
+    ("plug" . "\xf1e6")
+    ("plus" . "\xf067")
+    ("plus-circle" . "\xf055")
+    ("plus-square" . "\xf0fe")
+    ("plus-square-o" . "\xf196")
+    ("power-off" . "\xf011")
+    ("print" . "\xf02f")
+    ("product-hunt" . "\xf288")
+    ("puzzle-piece" . "\xf12e")
+    ("qq" . "\xf1d6")
+    ("qrcode" . "\xf029")
+    ("question" . "\xf128")
+    ("question-circle" . "\xf059")
+    ("question-circle-o" . "\xf29c")
+    ("quote-left" . "\xf10d")
+    ("quote-right" . "\xf10e")
+    ("random" . "\xf074")
+    ("rebel" . "\xf1d0")
+    ("recycle" . "\xf1b8")
+    ("reddit" . "\xf1a1")
+    ("reddit-alien" . "\xf281")
+    ("reddit-square" . "\xf1a2")
+    ("refresh" . "\xf021")
+    ("registered" . "\xf25d")
+    ("renren" . "\xf18b")
+    ("repeat" . "\xf01e")
+    ("reply" . "\xf112")
+    ("reply-all" . "\xf122")
+    ("retweet" . "\xf079")
+    ("road" . "\xf018")
+    ("rocket" . "\xf135")
+    ("rss" . "\xf09e")
+    ("rss-square" . "\xf143")
+    ("rub" . "\xf158")
+    ("safari" . "\xf267")
+    ("scissors" . "\xf0c4")
+    ("scribd" . "\xf28a")
+    ("search" . "\xf002")
+    ("search-minus" . "\xf010")
+    ("search-plus" . "\xf00e")
+    ("sellsy" . "\xf213")
+    ("server" . "\xf233")
+    ("share" . "\xf064")
+    ("share-alt" . "\xf1e0")
+    ("share-alt-square" . "\xf1e1")
+    ("share-square" . "\xf14d")
+    ("share-square-o" . "\xf045")
+    ("shield" . "\xf132")
+    ("ship" . "\xf21a")
+    ("shirtsinbulk" . "\xf214")
+    ("shopping-bag" . "\xf290")
+    ("shopping-basket" . "\xf291")
+    ("shopping-cart" . "\xf07a")
+    ("sign-in" . "\xf090")
+    ("sign-language" . "\xf2a7")
+    ("sign-out" . "\xf08b")
+    ("signal" . "\xf012")
+    ("simplybuilt" . "\xf215")
+    ("sitemap" . "\xf0e8")
+    ("skyatlas" . "\xf216")
+    ("skype" . "\xf17e")
+    ("slack" . "\xf198")
+    ("sliders" . "\xf1de")
+    ("slideshare" . "\xf1e7")
+    ("smile-o" . "\xf118")
+    ("snapchat" . "\xf2ab")
+    ("snapchat-ghost" . "\xf2ac")
+    ("snapchat-square" . "\xf2ad")
+    ("sort" . "\xf0dc")
+    ("sort-alpha-asc" . "\xf15d")
+    ("sort-alpha-desc" . "\xf15e")
+    ("sort-amount-asc" . "\xf160")
+    ("sort-amount-desc" . "\xf161")
+    ("sort-asc" . "\xf0de")
+    ("sort-desc" . "\xf0dd")
+    ("sort-numeric-asc" . "\xf162")
+    ("sort-numeric-desc" . "\xf163")
+    ("soundcloud" . "\xf1be")
+    ("space-shuttle" . "\xf197")
+    ("spinner" . "\xf110")
+    ("spoon" . "\xf1b1")
+    ("spotify" . "\xf1bc")
+    ("square" . "\xf0c8")
+    ("square-o" . "\xf096")
+    ("stack-exchange" . "\xf18d")
+    ("stack-overflow" . "\xf16c")
+    ("star" . "\xf005")
+    ("star-half" . "\xf089")
+    ("star-half-o" . "\xf123")
+    ("star-o" . "\xf006")
+    ("steam" . "\xf1b6")
+    ("steam-square" . "\xf1b7")
+    ("step-backward" . "\xf048")
+    ("step-forward" . "\xf051")
+    ("stethoscope" . "\xf0f1")
+    ("sticky-note" . "\xf249")
+    ("sticky-note-o" . "\xf24a")
+    ("stop" . "\xf04d")
+    ("stop-circle" . "\xf28d")
+    ("stop-circle-o" . "\xf28e")
+    ("street-view" . "\xf21d")
+    ("strikethrough" . "\xf0cc")
+    ("stumbleupon" . "\xf1a4")
+    ("stumbleupon-circle" . "\xf1a3")
+    ("subscript" . "\xf12c")
+    ("subway" . "\xf239")
+    ("suitcase" . "\xf0f2")
+    ("sun-o" . "\xf185")
+    ("superscript" . "\xf12b")
+    ("table" . "\xf0ce")
+    ("tablet" . "\xf10a")
+    ("tachometer" . "\xf0e4")
+    ("tag" . "\xf02b")
+    ("tags" . "\xf02c")
+    ("tasks" . "\xf0ae")
+    ("taxi" . "\xf1ba")
+    ("television" . "\xf26c")
+    ("tencent-weibo" . "\xf1d5")
+    ("terminal" . "\xf120")
+    ("text-height" . "\xf034")
+    ("text-width" . "\xf035")
+    ("th" . "\xf00a")
+    ("th-large" . "\xf009")
+    ("th-list" . "\xf00b")
+    ("themeisle" . "\xf2b2")
+    ("thumb-tack" . "\xf08d")
+    ("thumbs-down" . "\xf165")
+    ("thumbs-o-down" . "\xf088")
+    ("thumbs-o-up" . "\xf087")
+    ("thumbs-up" . "\xf164")
+    ("ticket" . "\xf145")
+    ("times" . "\xf00d")
+    ("times-circle" . "\xf057")
+    ("times-circle-o" . "\xf05c")
+    ("tint" . "\xf043")
+    ("toggle-off" . "\xf204")
+    ("toggle-on" . "\xf205")
+    ("trademark" . "\xf25c")
+    ("train" . "\xf238")
+    ("transgender" . "\xf224")
+    ("transgender-alt" . "\xf225")
+    ("trash" . "\xf1f8")
+    ("trash-o" . "\xf014")
+    ("tree" . "\xf1bb")
+    ("trello" . "\xf181")
+    ("tripadvisor" . "\xf262")
+    ("trophy" . "\xf091")
+    ("truck" . "\xf0d1")
+    ("try" . "\xf195")
+    ("tty" . "\xf1e4")
+    ("tumblr" . "\xf173")
+    ("tumblr-square" . "\xf174")
+    ("twitch" . "\xf1e8")
+    ("twitter" . "\xf099")
+    ("twitter-square" . "\xf081")
+    ("umbrella" . "\xf0e9")
+    ("underline" . "\xf0cd")
+    ("undo" . "\xf0e2")
+    ("universal-access" . "\xf29a")
+    ("university" . "\xf19c")
+    ("unlock" . "\xf09c")
+    ("unlock-alt" . "\xf13e")
+    ("upload" . "\xf093")
+    ("usb" . "\xf287")
+    ("usd" . "\xf155")
+    ("user" . "\xf007")
+    ("user-md" . "\xf0f0")
+    ("user-plus" . "\xf234")
+    ("user-secret" . "\xf21b")
+    ("user-times" . "\xf235")
+    ("users" . "\xf0c0")
+    ("venus" . "\xf221")
+    ("venus-double" . "\xf226")
+    ("venus-mars" . "\xf228")
+    ("viacoin" . "\xf237")
+    ("viadeo" . "\xf2a9")
+    ("viadeo-square" . "\xf2aa")
+    ("video-camera" . "\xf03d")
+    ("vimeo" . "\xf27d")
+    ("vimeo-square" . "\xf194")
+    ("vine" . "\xf1ca")
+    ("vk" . "\xf189")
+    ("volume-control-phone" . "\xf2a0")
+    ("volume-down" . "\xf027")
+    ("volume-off" . "\xf026")
+    ("volume-up" . "\xf028")
+    ("weibo" . "\xf18a")
+    ("weixin" . "\xf1d7")
+    ("whatsapp" . "\xf232")
+    ("wheelchair" . "\xf193")
+    ("wheelchair-alt" . "\xf29b")
+    ("wifi" . "\xf1eb")
+    ("wikipedia-w" . "\xf266")
+    ("windows" . "\xf17a")
+    ("wordpress" . "\xf19a")
+    ("wpbeginner" . "\xf297")
+    ("wpforms" . "\xf298")
+    ("wrench" . "\xf0ad")
+    ("xing" . "\xf168")
+    ("xing-square" . "\xf169")
+    ("y-combinator" . "\xf23b")
+    ("yahoo" . "\xf19e")
+    ("yelp" . "\xf1e9")
+    ("yoast" . "\xf2b1")
+    ("youtube" . "\xf167")
+    ("youtube-play" . "\xf16a")
+    ("youtube-square" . "\xf166")
+
+    ))
+
+(provide 'data-faicons)
.emacs.d/elpa/all-the-icons-20170817.642/data/data-faicons.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/data/data-fileicons.el
@@ -0,0 +1,487 @@
+(defvar all-the-icons-data/file-icon-alist
+  '(
+		
+    ( "1c" . "\xa5ea" )
+    ( "1c-alt" . "\xea28" )
+    ( "MJML" . "\xea6f" )
+    ( "R" . "\xe905" )
+    ( "abap" . "\xe92b" )
+    ( "abif" . "\xea4e" )
+    ( "access" . "\xe9ea" )
+    ( "actionscript" . "\xe92e" )
+    ( "ada" . "\xe90b" )
+    ( "ae" . "\xe9f3" )
+    ( "ai" . "\xe6b4" )
+    ( "akka" . "\xea0e" )
+    ( "alex" . "\x29cb" )
+    ( "alloy" . "\xe935" )
+    ( "alpine-linux" . "\xe9ff" )
+    ( "ampl" . "\xe94e" )
+    ( "amx" . "\xe99b" )
+    ( "angelscript" . "\xea5b" )
+    ( "ansible" . "\x24b6" )
+    ( "ansible-alt" . "\x61" )
+    ( "ant" . "\xe93e" )
+    ( "antlr" . "\xe92c" )
+    ( "antwar" . "\x2591" )
+    ( "api-blueprint" . "\xe92d" )
+    ( "apl" . "\x234b" )
+    ( "apl-old" . "\xe909" )
+    ( "apple" . "\xe925" )
+    ( "appveyor" . "\xe923" )
+    ( "arc" . "\xe92f" )
+    ( "arch-linux" . "\x41" )
+    ( "arduino" . "\xe930" )
+    ( "arttext" . "\x24d0" )
+    ( "asciidoc" . "\xe918" )
+    ( "ats" . "\xe934" )
+    ( "audacity" . "\xe9f9" )
+    ( "augeas" . "\xe931" )
+    ( "aurelia" . "\xea48" )
+    ( "auto-hotkey" . "\xe932" )
+    ( "autoit" . "\xe933" )
+    ( "babel" . "\xe91f" )
+    ( "bazel" . "\xea5a" )
+    ( "bem" . "\xea59" )
+    ( "bib" . "\xe601" )
+    ( "bintray" . "\xea6e" )
+    ( "bithound" . "\xea2a" )
+    ( "blender" . "\xe9fa" )
+    ( "bluespec" . "\xe93c" )
+    ( "boo" . "\xe939" )
+    ( "brain" . "\xe93a" )
+    ( "brakeman" . "\xe9d6" )
+    ( "bro" . "\xe93b" )
+    ( "broccoli" . "\xe922" )
+    ( "brotli" . "\xea6c" )
+    ( "browserslist" . "\xea80" )
+    ( "brunch" . "\xea47" )
+    ( "buck" . "\xea46" )
+    ( "build-boot" . "\xf103" )
+    ( "bundler" . "\xea45" )
+    ( "byond" . "\xe962" )
+    ( "cabal" . "\xe9c2" )
+    ( "caddy" . "\xea58" )
+    ( "cake" . "\xe9e3" )
+    ( "cakefile" . "\xe924" )
+    ( "cakephp" . "\xea43" )
+    ( "cakephp-old" . "\xe9d3" )
+    ( "cc" . "\xe9d5" )
+    ( "ceylon" . "\xe94f" )
+    ( "chai" . "\x63" )
+    ( "chapel" . "\xe950" )
+    ( "chartjs" . "\xea0b" )
+    ( "chef" . "\xea42" )
+    ( "chuck" . "\xe943" )
+    ( "circle-ci" . "\xea12" )
+    ( "cirru" . "\xe951" )
+    ( "ckeditor" . "\xea0c" )
+    ( "clarion" . "\xe952" )
+    ( "clean" . "\xe95b" )
+    ( "click" . "\xe95c" )
+    ( "clips" . "\xe940" )
+    ( "clj" . "\xf105" )
+    ( "cljs" . "\xf104" )
+    ( "closure-template" . "\xea82" )
+    ( "cmake" . "\xe93f" )
+    ( "cobol" . "\xea44" )
+    ( "codecov" . "\x2602" )
+    ( "codekit" . "\xea41" )
+    ( "codemirror" . "\xea0d" )
+    ( "codeship" . "\xea6a" )
+    ( "cold-fusion" . "\xe929" )
+    ( "clisp" . "\xe972" )
+    ( "composer" . "\xe683" )
+    ( "config" . "\xf07c" )
+    ( "coq" . "\xe95f" )
+    ( "cordova" . "\xea11" )
+    ( "cp" . "\xe942" )
+    ( "cpan" . "\xea87" )
+    ( "creole" . "\xe95e" )
+    ( "crystal" . "\xe902" )
+    ( "cs-script" . "\xe9e2" )
+    ( "csound" . "\xe9f0" )
+    ( "cucumber" . "\xf02b" )
+    ( "cython" . "\xe963" )
+    ( "d3" . "\xea10" )
+    ( "darcs" . "\xe964" )
+    ( "dashboard" . "\xf07d" )
+    ( "dbase" . "\xe9f1" )
+    ( "default" . "\x1f5cc" )
+    ( "delphi" . "\xea40" )
+    ( "devicetree" . "\xea57" )
+    ( "diff" . "\xe960" )
+    ( "dockerfile" . "\xf106" )
+    ( "doclets" . "\xea3f" )
+    ( "doge" . "\xe946" )
+    ( "dom" . "\xea71" )
+    ( "donejs" . "\x1f3c1" )
+    ( "doxygen" . "\xe928" )
+    ( "dragula" . "\x1f44c" )
+    ( "drone" . "\xea3d" )
+    ( "dyalog" . "\xe90c" )
+    ( "dylib" . "\xea15" )
+    ( "e" . "\x45" )
+    ( "eagle" . "\xe965" )
+    ( "easybuild" . "\xea85" )
+    ( "ec" . "\xe9c9" )
+    ( "ecere" . "\xe966" )
+    ( "edge" . "\xea78" )
+    ( "editorconfig" . "\xea1b" )
+    ( "eiffel" . "\xe967" )
+    ( "ejs" . "\xea4b" )
+    ( "electron" . "\xea27" )
+    ( "elm" . "\xf102" )
+    ( "emacs" . "\xe926" )
+    ( "elisp" . "\xe926" )
+    ( "ember" . "\xe61b" )
+    ( "emberscript" . "\xe968" )
+    ( "eq" . "\xea0a" )
+    ( "esdoc" . "\xea5c" )
+    ( "eslint" . "\xea0f" )
+    ( "eslint-old" . "\xe90e" )
+    ( "excel" . "\xe9ee" )
+    ( "fabfile" . "\xe94b" )
+    ( "factor" . "\xe96a" )
+    ( "fancy" . "\xe96b" )
+    ( "fantom" . "\xe96f" )
+    ( "fbx" . "\xe9fc" )
+    ( "ffmpeg" . "\xea22" )
+    ( "finder" . "\xe9e9" )
+    ( "firebase" . "\xea7f" )
+    ( "flow" . "\xe921" )
+    ( "flux" . "\xe969" )
+    ( "font" . "\xe90f" )
+    ( "fontforge" . "\xfb00" )
+    ( "fortran" . "\xe90a" )
+    ( "franca" . "\xea56" )
+    ( "freemarker" . "\xe970" )
+    ( "frege" . "\xe96e" )
+    ( "fuel-ux" . "\xea09" )
+    ( "gams" . "\xe973" )
+    ( "gap" . "\xe971" )
+    ( "gdb" . "\xea08" )
+    ( "genshi" . "\xe976" )
+    ( "gentoo" . "\xe96d" )
+    ( "gf" . "\xe978" )
+    ( "gitlab" . "\xea3c" )
+    ( "glade" . "\xe938" )
+    ( "glyphs" . "\x47" )
+    ( "gn" . "\xea25" )
+    ( "gnu" . "\xe679" )
+    ( "go" . "\xe624" )
+    ( "godot" . "\xe974" )
+    ( "golo" . "\xe979" )
+    ( "gosu" . "\xe97a" )
+    ( "gradle" . "\xe903" )
+    ( "graphql" . "\xe97c" )
+    ( "graphviz" . "\xe97d" )
+    ( "groovy" . "\xe904" )
+    ( "grunt" . "\xe611" )
+    ( "gulp" . "\xe610" )
+    ( "hack" . "\xe9ce" )
+    ( "haml" . "\xf15b" )
+    ( "harbour" . "\xe97b" )
+    ( "hashicorp" . "\xe97e" )
+    ( "haxe" . "\xe907" )
+    ( "haxedevelop" . "\xea3b" )
+    ( "hg" . "\x263f" )
+    ( "hoplon" . "\xea4d" )
+    ( "hy" . "\xe97f" )
+    ( "icu" . "\xea23" )
+    ( "id" . "\xe9f4" )
+    ( "idl" . "\xe947" )
+    ( "idris" . "\xe983" )
+    ( "igorpro" . "\xe980" )
+    ( "image" . "\xf012" )
+    ( "inform7" . "\xe984" )
+    ( "inno" . "\xe985" )
+    ( "io" . "\xe981" )
+    ( "ioke" . "\xe982" )
+    ( "ionic-project" . "\xf14b" )
+    ( "isabelle" . "\xe945" )
+    ( "j" . "\xe937" )
+    ( "jade" . "\xe90d" )
+    ( "jake" . "\xe948" )
+    ( "jasmine" . "\xea3a" )
+    ( "jenkins" . "\xe667" )
+    ( "jest" . "\xea39" )
+    ( "jinja" . "\xe944" )
+    ( "jison" . "\xea55" )
+    ( "jolie" . "\xea75" )
+    ( "jsonld" . "\xe958" )
+    ( "jsx" . "\xf100" )
+    ( "jsx-2" . "\xf101" )
+    ( "jsx2-alt" . "\xe9e6" )
+    ( "julia" . "\x26ec" )
+    ( "junos" . "\xea81" )
+    ( "jupyter" . "\xe987" )
+    ( "karma" . "\xe9cd" )
+    ( "keynote" . "\xe9e5" )
+    ( "khronos" . "\xe9f8" )
+    ( "kicad" . "\xea4c" )
+    ( "kitchenci" . "\xea38" )
+    ( "kivy" . "\xe901" )
+    ( "knockout" . "\x4b" )
+    ( "kotlin" . "\xe989" )
+    ( "krl" . "\xe988" )
+    ( "labview" . "\xe98a" )
+    ( "lasso" . "\xe98c" )
+    ( "leaflet" . "\xea07" )
+    ( "lean" . "\x4c" )
+    ( "lerna" . "\xea37" )
+    ( "lfe" . "\xe94c" )
+    ( "libuv" . "\xea21" )
+    ( "lightwave" . "\xe9fb" )
+    ( "lime" . "\xea36" )
+    ( "lisp" . "\xe908" )
+    ( "livescript" . "\xe914" )
+    ( "llvm" . "\xe91d" )
+    ( "logtalk" . "\xe98d" )
+    ( "lookml" . "\xe98e" )
+    ( "lsl" . "\xe98b" )
+    ( "lua" . "\xe91b" )
+    ( "mako" . "\xe98f" )
+    ( "man-page" . "\xe936" )
+    ( "mapbox" . "\xe941" )
+    ( "markdownlint" . "\xf0c9" )
+    ( "marko" . "\xe920" )
+    ( "mathematica" . "\xe990" )
+    ( "mathjax" . "\xea06" )
+    ( "matlab" . "\xe991" )
+    ( "max" . "\xe993" )
+    ( "maxscript" . "\xe900" )
+    ( "maya" . "\xe9f6" )
+    ( "mediawiki" . "\xe954" )
+    ( "mercury" . "\xe994" )
+    ( "meson" . "\xea54" )
+    ( "metal" . "\x4d" )
+    ( "meteor" . "\xe6a5" )
+    ( "microsoft-infopath" . "\xea35" )
+    ( "minecraft" . "\xe9dc" )
+    ( "minizinc" . "\xea53" )
+    ( "mirah" . "\xe995" )
+    ( "miranda" . "\xea52" )
+    ( "mocha" . "\x26fe" )
+    ( "modula-2" . "\xe996" )
+    ( "moment" . "\x1f558" )
+    ( "moment-tz" . "\x1f30d" )
+    ( "monkey" . "\xe997" )
+    ( "moustache" . "\xe60f" )
+    ( "mruby" . "\xea18" )
+    ( "mupad" . "\xe9ca" )
+    ( "nano" . "\xea76" )
+    ( "nanoc" . "\xea51" )
+    ( "nant" . "\xe9e1" )
+    ( "nasm" . "\xea72" )
+    ( "neko" . "\xea05" )
+    ( "netlogo" . "\xe99c" )
+    ( "new-relic" . "\xe9d7" )
+    ( "nginx" . "\xf146b" )
+    ( "nib" . "\x2712" )
+    ( "nimrod" . "\xe998" )
+    ( "nit" . "\xe999" )
+    ( "nix" . "\xe99a" )
+    ( "nmap" . "\xe94d" )
+    ( "nodemon" . "\xea26" )
+    ( "normalize" . "\xea04" )
+    ( "npm" . "\xe91c" )
+    ( "npm-old" . "\xf17b" )
+    ( "nsis" . "\xea1e" )
+    ( "nsis-old" . "\xe992" )
+    ( "nuclide" . "\xea34" )
+    ( "nuget" . "\xe9d9" )
+    ( "numpy" . "\xe99d" )
+    ( "nunjucks" . "\xe953" )
+    ( "nvidia" . "\xe95d" )
+    ( "nxc" . "\xea6b" )
+    ( "obj" . "\xe9e8" )
+    ( "objective-j" . "\xe99e" )
+    ( "ocaml" . "\xe91a" )
+    ( "octave" . "\xea33" )
+    ( "onenote" . "\xe9eb" )
+    ( "ooc" . "\xe9cb" )
+    ( "opa" . "\x2601" )
+    ( "opencl" . "\xe99f" )
+    ( "opengl" . "\xea7a" )
+    ( "openoffice" . "\xe9e4" )
+    ( "openscad" . "\xe911" )
+    ( "org" . "\xe917" )
+    ( "owl" . "\xe957" )
+    ( "ox" . "\xe9a1" )
+    ( "oxygene" . "\xe9bf" )
+    ( "oz" . "\xe9be" )
+    ( "p4" . "\xea50" )
+    ( "pan" . "\xe9bd" )
+    ( "papyrus" . "\xe9bc" )
+    ( "parrot" . "\xe9bb" )
+    ( "pascal" . "\xe92a" )
+    ( "patch" . "\xe961" )
+    ( "pawn" . "\x265f" )
+    ( "pb" . "\xea14" )
+    ( "pegjs" . "\xea74" )
+    ( "perl6" . "\xe96c" )
+    ( "phalcon" . "\xe94a" )
+    ( "phoenix" . "\xea5f" )
+    ( "php" . "\xf147" )
+    ( "phpunit" . "\xea32" )
+    ( "pickle" . "\xe9c4" )
+    ( "pike" . "\xe9b9" )
+    ( "platformio" . "\xea2c" )
+    ( "pm2" . "\x2630" )
+    ( "pod" . "\xea84" )
+    ( "pogo" . "\xe9b8" )
+    ( "pointwise" . "\xe977" )
+    ( "polymer" . "\xea2b" )
+    ( "pony" . "\xe9b7" )
+    ( "postcss" . "\xe910" )
+    ( "postscript" . "\xe955" )
+    ( "povray" . "\x50" )
+    ( "powerpoint" . "\xe9ec" )
+    ( "powershell" . "\xe9da" )
+    ( "precision" . "\x2295" )
+    ( "premiere" . "\xe9f5" )
+    ( "processing" . "\xe9a0" )
+    ( "progress" . "\xe9c0" )
+    ( "propeller" . "\xe9b5" )
+    ( "proselint" . "\xea6d" )
+    ( "protractor" . "\xe9de" )
+    ( "ps" . "\xe6b8" )
+    ( "pug" . "\xea13" )
+    ( "pug-alt" . "\xe9d0" )
+    ( "puppet" . "\xf0c3" )
+    ( "purebasic" . "\x1b5" )
+    ( "purescript" . "\xe9b2" )
+    ( "racket" . "\xe9b1" )
+    ( "raml" . "\xe913" )
+    ( "rascal" . "\xea24" )
+    ( "rdoc" . "\xe9b0" )
+    ( "realbasic" . "\xe9af" )
+    ( "reason" . "\xea1d" )
+    ( "rebol" . "\xe9ae" )
+    ( "red" . "\xe9ad" )
+    ( "redux" . "\xea30" )
+    ( "regex" . "\x2a" )
+    ( "rexx" . "\xea16" )
+    ( "rhino" . "\xea4a" )
+    ( "ring" . "\x1f48d" )
+    ( "riot" . "\xe919" )
+    ( "robot" . "\xe9ac" )
+    ( "rollup" . "\xea20" )
+    ( "rollup-old" . "\xe9fd" )
+    ( "rot" . "\x1f764" )
+    ( "rspec" . "\xea31" )
+    ( "rst" . "\xe9cc" )
+    ( "sage" . "\xe9ab" )
+    ( "saltstack" . "\xe915" )
+    ( "sas" . "\xe95a" )
+    ( "sbt" . "\xe9d2" )
+    ( "sc" . "\xe9a2" )
+    ( "scheme" . "\x3bb" )
+    ( "scilab" . "\xe9a9" )
+    ( "scrutinizer" . "\xe9d4" )
+    ( "self" . "\xe9a8" )
+    ( "sequelize" . "\xea2f" )
+    ( "sf" . "\xe9db" )
+    ( "shen" . "\xe9a7" )
+    ( "shipit" . "\x26f5" )
+    ( "shippable" . "\xea2d" )
+    ( "shopify" . "\xe9cf" )
+    ( "shuriken" . "\x272b" )
+    ( "silverstripe" . "\xe800" )
+    ( "sinatra" . "\xea03" )
+    ( "sketch" . "\xe927" )
+    ( "sketchup-layout" . "\xea7c" )
+    ( "sketchup-make" . "\xea7e" )
+    ( "sketchup-stylebuilder" . "\xea7d" )
+    ( "slash" . "\xe9a6" )
+    ( "snyk" . "\xea1c" )
+    ( "solidity" . "\xea86" )
+    ( "sparql" . "\xe959" )
+    ( "spray" . "\xea02" )
+    ( "sqf" . "\xe9a5" )
+    ( "sqlite" . "\xe9dd" )
+    ( "squarespace" . "\xea5e" )
+    ( "stan" . "\xe9a4" )
+    ( "stata" . "\xe9a3" )
+    ( "storyist" . "\xe9ef" )
+    ( "strings" . "\xe9e0" )
+    ( "stylelint" . "\xe93d" )
+    ( "stylus" . "\x73" )
+    ( "stylus-full" . "\xe9f7" )
+    ( "stylus-orb" . "\x53" )
+    ( "sublime" . "\xe986" )
+    ( "sv" . "\xe9c3" )
+    ( "svn" . "\xea17" )
+    ( "swagger" . "\xea29" )
+    ( "tag" . "\xf015" )
+    ( "tcl" . "\xe956" )
+    ( "telegram" . "\x2708" )
+    ( "terminal" . "\xf0c8" )
+    ( "tern" . "\x1f54a" )
+    ( "terraform" . "\xe916" )
+    ( "test-coffeescript" . "\xea62" )
+    ( "test-dir" . "\xea60" )
+    ( "test-generic" . "\xea63" )
+    ( "test-js" . "\xea64" )
+    ( "test-perl" . "\xea65" )
+    ( "test-python" . "\xea66" )
+    ( "test-react" . "\xea67" )
+    ( "test-ruby" . "\xea68" )
+    ( "test-typescript" . "\xea69" )
+    ( "tex" . "\xe600" )
+    ( "textile" . "\x74" )
+    ( "textmate" . "\x2122" )
+    ( "thor" . "\xe9d8" )
+    ( "tinymce" . "\xea01" )
+    ( "tsx" . "\xe9d1" )
+    ( "tsx-alt" . "\xe9e7" )
+    ( "tt" . "\x54" )
+    ( "turing" . "\xe9b6" )
+    ( "twig" . "\x2e19" )
+    ( "twine" . "\xea5d" )
+    ( "txl" . "\xe9c1" )
+    ( "typedoc" . "\xe9fe" )
+    ( "typescript" . "\xe912" )
+    ( "typescript-alt" . "\x2a6" )
+    ( "typings" . "\xe9df" )
+    ( "uno" . "\xe9b3" )
+    ( "unreal" . "\x75" )
+    ( "urweb" . "\xe9ba" )
+    ( "v8" . "\xea1f" )
+    ( "vagrant" . "\x56" )
+    ( "vcl" . "\xe9b4" )
+    ( "verilog" . "\xe949" )
+    ( "vertex-shader" . "\xea79" )
+    ( "vhdl" . "\xe9aa" )
+    ( "video" . "\xf057" )
+    ( "virtualbox" . "\xea3e" )
+    ( "virtualbox-alt" . "\xea2e" )
+    ( "visio" . "\xea83" )
+    ( "vmware" . "\xea49" )
+    ( "vue" . "\xe906" )
+    ( "wasm" . "\xea70" )
+    ( "watchman" . "\xea4f" )
+    ( "webgl" . "\xea7b" )
+    ( "webpack" . "\xea61" )
+    ( "webpack-old" . "\xe91e" )
+    ( "wercker" . "\xea19" )
+    ( "word" . "\xe9ed" )
+    ( "x10" . "\x2169" )
+    ( "xamarin" . "\xea77" )
+    ( "xmos" . "\x58" )
+    ( "xpages" . "\xe9c5" )
+    ( "xtend" . "\xe9c6" )
+    ( "yarn" . "\xea1a" )
+    ( "yasm" . "\xea73" )
+    ( "yin-yang" . "\x262f" )
+    ( "yoyo" . "\xe975" )
+    ( "yui" . "\xea00" )
+    ( "zbrush" . "\xe9f2" )
+    ( "zephir" . "\xe9c7" )
+    ( "zimpl" . "\xe9c8" )
+    
+    )
+  )
+
+(provide 'data-fileicons)
.emacs.d/elpa/all-the-icons-20170817.642/data/data-fileicons.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/data/data-material.el
@@ -0,0 +1,935 @@
+(defvar all-the-icons-data/material-icons-alist
+  '(("3d_rotation" . "\xe84d")
+    ("ac_unit" . "\xeb3b")
+    ("access_alarm" . "\xe190")
+    ("access_alarms" . "\xe191")
+    ("access_time" . "\xe192")
+    ("accessibility" . "\xe84e")
+    ("accessible" . "\xe914")
+    ("account_balance" . "\xe84f")
+    ("account_balance_wallet" . "\xe850")
+    ("account_box" . "\xe851")
+    ("account_circle" . "\xe853")
+    ("adb" . "\xe60e")
+    ("add" . "\xe145")
+    ("add_a_photo" . "\xe439")
+    ("add_alarm" . "\xe193")
+    ("add_alert" . "\xe003")
+    ("add_box" . "\xe146")
+    ("add_circle" . "\xe147")
+    ("add_circle_outline" . "\xe148")
+    ("add_location" . "\xe567")
+    ("add_shopping_cart" . "\xe854")
+    ("add_to_photos" . "\xe39d")
+    ("add_to_queue" . "\xe05c")
+    ("adjust" . "\xe39e")
+    ("airline_seat_flat" . "\xe630")
+    ("airline_seat_flat_angled" . "\xe631")
+    ("airline_seat_individual_suite" . "\xe632")
+    ("airline_seat_legroom_extra" . "\xe633")
+    ("airline_seat_legroom_normal" . "\xe634")
+    ("airline_seat_legroom_reduced" . "\xe635")
+    ("airline_seat_recline_extra" . "\xe636")
+    ("airline_seat_recline_normal" . "\xe637")
+    ("airplanemode_active" . "\xe195")
+    ("airplanemode_inactive" . "\xe194")
+    ("airplay" . "\xe055")
+    ("airport_shuttle" . "\xeb3c")
+    ("alarm" . "\xe855")
+    ("alarm_add" . "\xe856")
+    ("alarm_off" . "\xe857")
+    ("alarm_on" . "\xe858")
+    ("album" . "\xe019")
+    ("all_inclusive" . "\xeb3d")
+    ("all_out" . "\xe90b")
+    ("android" . "\xe859")
+    ("announcement" . "\xe85a")
+    ("apps" . "\xe5c3")
+    ("archive" . "\xe149")
+    ("arrow_back" . "\xe5c4")
+    ("arrow_downward" . "\xe5db")
+    ("arrow_drop_down" . "\xe5c5")
+    ("arrow_drop_down_circle" . "\xe5c6")
+    ("arrow_drop_up" . "\xe5c7")
+    ("arrow_forward" . "\xe5c8")
+    ("arrow_upward" . "\xe5d8")
+    ("art_track" . "\xe060")
+    ("aspect_ratio" . "\xe85b")
+    ("assessment" . "\xe85c")
+    ("assignment" . "\xe85d")
+    ("assignment_ind" . "\xe85e")
+    ("assignment_late" . "\xe85f")
+    ("assignment_return" . "\xe860")
+    ("assignment_returned" . "\xe861")
+    ("assignment_turned_in" . "\xe862")
+    ("assistant" . "\xe39f")
+    ("assistant_photo" . "\xe3a0")
+    ("attach_file" . "\xe226")
+    ("attach_money" . "\xe227")
+    ("attachment" . "\xe2bc")
+    ("audiotrack" . "\xe3a1")
+    ("autorenew" . "\xe863")
+    ("av_timer" . "\xe01b")
+    ("backspace" . "\xe14a")
+    ("backup" . "\xe864")
+    ("battery_alert" . "\xe19c")
+    ("battery_charging_full" . "\xe1a3")
+    ("battery_full" . "\xe1a4")
+    ("battery_std" . "\xe1a5")
+    ("battery_unknown" . "\xe1a6")
+    ("beach_access" . "\xeb3e")
+    ("beenhere" . "\xe52d")
+    ("block" . "\xe14b")
+    ("bluetooth" . "\xe1a7")
+    ("bluetooth_audio" . "\xe60f")
+    ("bluetooth_connected" . "\xe1a8")
+    ("bluetooth_disabled" . "\xe1a9")
+    ("bluetooth_searching" . "\xe1aa")
+    ("blur_circular" . "\xe3a2")
+    ("blur_linear" . "\xe3a3")
+    ("blur_off" . "\xe3a4")
+    ("blur_on" . "\xe3a5")
+    ("book" . "\xe865")
+    ("bookmark" . "\xe866")
+    ("bookmark_border" . "\xe867")
+    ("border_all" . "\xe228")
+    ("border_bottom" . "\xe229")
+    ("border_clear" . "\xe22a")
+    ("border_color" . "\xe22b")
+    ("border_horizontal" . "\xe22c")
+    ("border_inner" . "\xe22d")
+    ("border_left" . "\xe22e")
+    ("border_outer" . "\xe22f")
+    ("border_right" . "\xe230")
+    ("border_style" . "\xe231")
+    ("border_top" . "\xe232")
+    ("border_vertical" . "\xe233")
+    ("branding_watermark" . "\xe06b")
+    ("brightness_1" . "\xe3a6")
+    ("brightness_2" . "\xe3a7")
+    ("brightness_3" . "\xe3a8")
+    ("brightness_4" . "\xe3a9")
+    ("brightness_5" . "\xe3aa")
+    ("brightness_6" . "\xe3ab")
+    ("brightness_7" . "\xe3ac")
+    ("brightness_auto" . "\xe1ab")
+    ("brightness_high" . "\xe1ac")
+    ("brightness_low" . "\xe1ad")
+    ("brightness_medium" . "\xe1ae")
+    ("broken_image" . "\xe3ad")
+    ("brush" . "\xe3ae")
+    ("bubble_chart" . "\xe6dd")
+    ("bug_report" . "\xe868")
+    ("build" . "\xe869")
+    ("burst_mode" . "\xe43c")
+    ("business" . "\xe0af")
+    ("business_center" . "\xeb3f")
+    ("cached" . "\xe86a")
+    ("cake" . "\xe7e9")
+    ("call" . "\xe0b0")
+    ("call_end" . "\xe0b1")
+    ("call_made" . "\xe0b2")
+    ("call_merge" . "\xe0b3")
+    ("call_missed" . "\xe0b4")
+    ("call_missed_outgoing" . "\xe0e4")
+    ("call_received" . "\xe0b5")
+    ("call_split" . "\xe0b6")
+    ("call_to_action" . "\xe06c")
+    ("camera" . "\xe3af")
+    ("camera_alt" . "\xe3b0")
+    ("camera_enhance" . "\xe8fc")
+    ("camera_front" . "\xe3b1")
+    ("camera_rear" . "\xe3b2")
+    ("camera_roll" . "\xe3b3")
+    ("cancel" . "\xe5c9")
+    ("card_giftcard" . "\xe8f6")
+    ("card_membership" . "\xe8f7")
+    ("card_travel" . "\xe8f8")
+    ("casino" . "\xeb40")
+    ("cast" . "\xe307")
+    ("cast_connected" . "\xe308")
+    ("center_focus_strong" . "\xe3b4")
+    ("center_focus_weak" . "\xe3b5")
+    ("change_history" . "\xe86b")
+    ("chat" . "\xe0b7")
+    ("chat_bubble" . "\xe0ca")
+    ("chat_bubble_outline" . "\xe0cb")
+    ("check" . "\xe5ca")
+    ("check_box" . "\xe834")
+    ("check_box_outline_blank" . "\xe835")
+    ("check_circle" . "\xe86c")
+    ("chevron_left" . "\xe5cb")
+    ("chevron_right" . "\xe5cc")
+    ("child_care" . "\xeb41")
+    ("child_friendly" . "\xeb42")
+    ("chrome_reader_mode" . "\xe86d")
+    ("class" . "\xe86e")
+    ("clear" . "\xe14c")
+    ("clear_all" . "\xe0b8")
+    ("close" . "\xe5cd")
+    ("closed_caption" . "\xe01c")
+    ("cloud" . "\xe2bd")
+    ("cloud_circle" . "\xe2be")
+    ("cloud_done" . "\xe2bf")
+    ("cloud_download" . "\xe2c0")
+    ("cloud_off" . "\xe2c1")
+    ("cloud_queue" . "\xe2c2")
+    ("cloud_upload" . "\xe2c3")
+    ("code" . "\xe86f")
+    ("collections" . "\xe3b6")
+    ("collections_bookmark" . "\xe431")
+    ("color_lens" . "\xe3b7")
+    ("colorize" . "\xe3b8")
+    ("comment" . "\xe0b9")
+    ("compare" . "\xe3b9")
+    ("compare_arrows" . "\xe915")
+    ("computer" . "\xe30a")
+    ("confirmation_number" . "\xe638")
+    ("contact_mail" . "\xe0d0")
+    ("contact_phone" . "\xe0cf")
+    ("contacts" . "\xe0ba")
+    ("content_copy" . "\xe14d")
+    ("content_cut" . "\xe14e")
+    ("content_paste" . "\xe14f")
+    ("control_point" . "\xe3ba")
+    ("control_point_duplicate" . "\xe3bb")
+    ("copyright" . "\xe90c")
+    ("create" . "\xe150")
+    ("create_new_folder" . "\xe2cc")
+    ("credit_card" . "\xe870")
+    ("crop" . "\xe3be")
+    ("crop_16_9" . "\xe3bc")
+    ("crop_3_2" . "\xe3bd")
+    ("crop_5_4" . "\xe3bf")
+    ("crop_7_5" . "\xe3c0")
+    ("crop_din" . "\xe3c1")
+    ("crop_free" . "\xe3c2")
+    ("crop_landscape" . "\xe3c3")
+    ("crop_original" . "\xe3c4")
+    ("crop_portrait" . "\xe3c5")
+    ("crop_rotate" . "\xe437")
+    ("crop_square" . "\xe3c6")
+    ("dashboard" . "\xe871")
+    ("data_usage" . "\xe1af")
+    ("date_range" . "\xe916")
+    ("dehaze" . "\xe3c7")
+    ("delete" . "\xe872")
+    ("delete_forever" . "\xe92b")
+    ("delete_sweep" . "\xe16c")
+    ("description" . "\xe873")
+    ("desktop_mac" . "\xe30b")
+    ("desktop_windows" . "\xe30c")
+    ("details" . "\xe3c8")
+    ("developer_board" . "\xe30d")
+    ("developer_mode" . "\xe1b0")
+    ("device_hub" . "\xe335")
+    ("devices" . "\xe1b1")
+    ("devices_other" . "\xe337")
+    ("dialer_sip" . "\xe0bb")
+    ("dialpad" . "\xe0bc")
+    ("directions" . "\xe52e")
+    ("directions_bike" . "\xe52f")
+    ("directions_boat" . "\xe532")
+    ("directions_bus" . "\xe530")
+    ("directions_car" . "\xe531")
+    ("directions_railway" . "\xe534")
+    ("directions_run" . "\xe566")
+    ("directions_subway" . "\xe533")
+    ("directions_transit" . "\xe535")
+    ("directions_walk" . "\xe536")
+    ("disc_full" . "\xe610")
+    ("dns" . "\xe875")
+    ("do_not_disturb" . "\xe612")
+    ("do_not_disturb_alt" . "\xe611")
+    ("do_not_disturb_off" . "\xe643")
+    ("do_not_disturb_on" . "\xe644")
+    ("dock" . "\xe30e")
+    ("domain" . "\xe7ee")
+    ("done" . "\xe876")
+    ("done_all" . "\xe877")
+    ("donut_large" . "\xe917")
+    ("donut_small" . "\xe918")
+    ("drafts" . "\xe151")
+    ("drag_handle" . "\xe25d")
+    ("drive_eta" . "\xe613")
+    ("dvr" . "\xe1b2")
+    ("edit" . "\xe3c9")
+    ("edit_location" . "\xe568")
+    ("eject" . "\xe8fb")
+    ("email" . "\xe0be")
+    ("enhanced_encryption" . "\xe63f")
+    ("equalizer" . "\xe01d")
+    ("error" . "\xe000")
+    ("error_outline" . "\xe001")
+    ("euro_symbol" . "\xe926")
+    ("ev_station" . "\xe56d")
+    ("event" . "\xe878")
+    ("event_available" . "\xe614")
+    ("event_busy" . "\xe615")
+    ("event_note" . "\xe616")
+    ("event_seat" . "\xe903")
+    ("exit_to_app" . "\xe879")
+    ("expand_less" . "\xe5ce")
+    ("expand_more" . "\xe5cf")
+    ("explicit" . "\xe01e")
+    ("explore" . "\xe87a")
+    ("exposure" . "\xe3ca")
+    ("exposure_neg_1" . "\xe3cb")
+    ("exposure_neg_2" . "\xe3cc")
+    ("exposure_plus_1" . "\xe3cd")
+    ("exposure_plus_2" . "\xe3ce")
+    ("exposure_zero" . "\xe3cf")
+    ("extension" . "\xe87b")
+    ("face" . "\xe87c")
+    ("fast_forward" . "\xe01f")
+    ("fast_rewind" . "\xe020")
+    ("favorite" . "\xe87d")
+    ("favorite_border" . "\xe87e")
+    ("featured_play_list" . "\xe06d")
+    ("featured_video" . "\xe06e")
+    ("feedback" . "\xe87f")
+    ("fiber_dvr" . "\xe05d")
+    ("fiber_manual_record" . "\xe061")
+    ("fiber_new" . "\xe05e")
+    ("fiber_pin" . "\xe06a")
+    ("fiber_smart_record" . "\xe062")
+    ("file_download" . "\xe2c4")
+    ("file_upload" . "\xe2c6")
+    ("filter" . "\xe3d3")
+    ("filter_1" . "\xe3d0")
+    ("filter_2" . "\xe3d1")
+    ("filter_3" . "\xe3d2")
+    ("filter_4" . "\xe3d4")
+    ("filter_5" . "\xe3d5")
+    ("filter_6" . "\xe3d6")
+    ("filter_7" . "\xe3d7")
+    ("filter_8" . "\xe3d8")
+    ("filter_9" . "\xe3d9")
+    ("filter_9_plus" . "\xe3da")
+    ("filter_b_and_w" . "\xe3db")
+    ("filter_center_focus" . "\xe3dc")
+    ("filter_drama" . "\xe3dd")
+    ("filter_frames" . "\xe3de")
+    ("filter_hdr" . "\xe3df")
+    ("filter_list" . "\xe152")
+    ("filter_none" . "\xe3e0")
+    ("filter_tilt_shift" . "\xe3e2")
+    ("filter_vintage" . "\xe3e3")
+    ("find_in_page" . "\xe880")
+    ("find_replace" . "\xe881")
+    ("fingerprint" . "\xe90d")
+    ("first_page" . "\xe5dc")
+    ("fitness_center" . "\xeb43")
+    ("flag" . "\xe153")
+    ("flare" . "\xe3e4")
+    ("flash_auto" . "\xe3e5")
+    ("flash_off" . "\xe3e6")
+    ("flash_on" . "\xe3e7")
+    ("flight" . "\xe539")
+    ("flight_land" . "\xe904")
+    ("flight_takeoff" . "\xe905")
+    ("flip" . "\xe3e8")
+    ("flip_to_back" . "\xe882")
+    ("flip_to_front" . "\xe883")
+    ("folder" . "\xe2c7")
+    ("folder_open" . "\xe2c8")
+    ("folder_shared" . "\xe2c9")
+    ("folder_special" . "\xe617")
+    ("font_download" . "\xe167")
+    ("format_align_center" . "\xe234")
+    ("format_align_justify" . "\xe235")
+    ("format_align_left" . "\xe236")
+    ("format_align_right" . "\xe237")
+    ("format_bold" . "\xe238")
+    ("format_clear" . "\xe239")
+    ("format_color_fill" . "\xe23a")
+    ("format_color_reset" . "\xe23b")
+    ("format_color_text" . "\xe23c")
+    ("format_indent_decrease" . "\xe23d")
+    ("format_indent_increase" . "\xe23e")
+    ("format_italic" . "\xe23f")
+    ("format_line_spacing" . "\xe240")
+    ("format_list_bulleted" . "\xe241")
+    ("format_list_numbered" . "\xe242")
+    ("format_paint" . "\xe243")
+    ("format_quote" . "\xe244")
+    ("format_shapes" . "\xe25e")
+    ("format_size" . "\xe245")
+    ("format_strikethrough" . "\xe246")
+    ("format_textdirection_l_to_r" . "\xe247")
+    ("format_textdirection_r_to_l" . "\xe248")
+    ("format_underlined" . "\xe249")
+    ("forum" . "\xe0bf")
+    ("forward" . "\xe154")
+    ("forward_10" . "\xe056")
+    ("forward_30" . "\xe057")
+    ("forward_5" . "\xe058")
+    ("free_breakfast" . "\xeb44")
+    ("fullscreen" . "\xe5d0")
+    ("fullscreen_exit" . "\xe5d1")
+    ("functions" . "\xe24a")
+    ("g_translate" . "\xe927")
+    ("gamepad" . "\xe30f")
+    ("games" . "\xe021")
+    ("gavel" . "\xe90e")
+    ("gesture" . "\xe155")
+    ("get_app" . "\xe884")
+    ("gif" . "\xe908")
+    ("golf_course" . "\xeb45")
+    ("gps_fixed" . "\xe1b3")
+    ("gps_not_fixed" . "\xe1b4")
+    ("gps_off" . "\xe1b5")
+    ("grade" . "\xe885")
+    ("gradient" . "\xe3e9")
+    ("grain" . "\xe3ea")
+    ("graphic_eq" . "\xe1b8")
+    ("grid_off" . "\xe3eb")
+    ("grid_on" . "\xe3ec")
+    ("group" . "\xe7ef")
+    ("group_add" . "\xe7f0")
+    ("group_work" . "\xe886")
+    ("hd" . "\xe052")
+    ("hdr_off" . "\xe3ed")
+    ("hdr_on" . "\xe3ee")
+    ("hdr_strong" . "\xe3f1")
+    ("hdr_weak" . "\xe3f2")
+    ("headset" . "\xe310")
+    ("headset_mic" . "\xe311")
+    ("healing" . "\xe3f3")
+    ("hearing" . "\xe023")
+    ("help" . "\xe887")
+    ("help_outline" . "\xe8fd")
+    ("high_quality" . "\xe024")
+    ("highlight" . "\xe25f")
+    ("highlight_off" . "\xe888")
+    ("history" . "\xe889")
+    ("home" . "\xe88a")
+    ("hot_tub" . "\xeb46")
+    ("hotel" . "\xe53a")
+    ("hourglass_empty" . "\xe88b")
+    ("hourglass_full" . "\xe88c")
+    ("http" . "\xe902")
+    ("https" . "\xe88d")
+    ("image" . "\xe3f4")
+    ("image_aspect_ratio" . "\xe3f5")
+    ("import_contacts" . "\xe0e0")
+    ("import_export" . "\xe0c3")
+    ("important_devices" . "\xe912")
+    ("inbox" . "\xe156")
+    ("indeterminate_check_box" . "\xe909")
+    ("info" . "\xe88e")
+    ("info_outline" . "\xe88f")
+    ("input" . "\xe890")
+    ("insert_chart" . "\xe24b")
+    ("insert_comment" . "\xe24c")
+    ("insert_drive_file" . "\xe24d")
+    ("insert_emoticon" . "\xe24e")
+    ("insert_invitation" . "\xe24f")
+    ("insert_link" . "\xe250")
+    ("insert_photo" . "\xe251")
+    ("invert_colors" . "\xe891")
+    ("invert_colors_off" . "\xe0c4")
+    ("iso" . "\xe3f6")
+    ("keyboard" . "\xe312")
+    ("keyboard_arrow_down" . "\xe313")
+    ("keyboard_arrow_left" . "\xe314")
+    ("keyboard_arrow_right" . "\xe315")
+    ("keyboard_arrow_up" . "\xe316")
+    ("keyboard_backspace" . "\xe317")
+    ("keyboard_capslock" . "\xe318")
+    ("keyboard_hide" . "\xe31a")
+    ("keyboard_return" . "\xe31b")
+    ("keyboard_tab" . "\xe31c")
+    ("keyboard_voice" . "\xe31d")
+    ("kitchen" . "\xeb47")
+    ("label" . "\xe892")
+    ("label_outline" . "\xe893")
+    ("landscape" . "\xe3f7")
+    ("language" . "\xe894")
+    ("laptop" . "\xe31e")
+    ("laptop_chromebook" . "\xe31f")
+    ("laptop_mac" . "\xe320")
+    ("laptop_windows" . "\xe321")
+    ("last_page" . "\xe5dd")
+    ("launch" . "\xe895")
+    ("layers" . "\xe53b")
+    ("layers_clear" . "\xe53c")
+    ("leak_add" . "\xe3f8")
+    ("leak_remove" . "\xe3f9")
+    ("lens" . "\xe3fa")
+    ("library_add" . "\xe02e")
+    ("library_books" . "\xe02f")
+    ("library_music" . "\xe030")
+    ("lightbulb_outline" . "\xe90f")
+    ("line_style" . "\xe919")
+    ("line_weight" . "\xe91a")
+    ("linear_scale" . "\xe260")
+    ("link" . "\xe157")
+    ("linked_camera" . "\xe438")
+    ("list" . "\xe896")
+    ("live_help" . "\xe0c6")
+    ("live_tv" . "\xe639")
+    ("local_activity" . "\xe53f")
+    ("local_airport" . "\xe53d")
+    ("local_atm" . "\xe53e")
+    ("local_bar" . "\xe540")
+    ("local_cafe" . "\xe541")
+    ("local_car_wash" . "\xe542")
+    ("local_convenience_store" . "\xe543")
+    ("local_dining" . "\xe556")
+    ("local_drink" . "\xe544")
+    ("local_florist" . "\xe545")
+    ("local_gas_station" . "\xe546")
+    ("local_grocery_store" . "\xe547")
+    ("local_hospital" . "\xe548")
+    ("local_hotel" . "\xe549")
+    ("local_laundry_service" . "\xe54a")
+    ("local_library" . "\xe54b")
+    ("local_mall" . "\xe54c")
+    ("local_movies" . "\xe54d")
+    ("local_offer" . "\xe54e")
+    ("local_parking" . "\xe54f")
+    ("local_pharmacy" . "\xe550")
+    ("local_phone" . "\xe551")
+    ("local_pizza" . "\xe552")
+    ("local_play" . "\xe553")
+    ("local_post_office" . "\xe554")
+    ("local_printshop" . "\xe555")
+    ("local_see" . "\xe557")
+    ("local_shipping" . "\xe558")
+    ("local_taxi" . "\xe559")
+    ("location_city" . "\xe7f1")
+    ("location_disabled" . "\xe1b6")
+    ("location_off" . "\xe0c7")
+    ("location_on" . "\xe0c8")
+    ("location_searching" . "\xe1b7")
+    ("lock" . "\xe897")
+    ("lock_open" . "\xe898")
+    ("lock_outline" . "\xe899")
+    ("looks" . "\xe3fc")
+    ("looks_3" . "\xe3fb")
+    ("looks_4" . "\xe3fd")
+    ("looks_5" . "\xe3fe")
+    ("looks_6" . "\xe3ff")
+    ("looks_one" . "\xe400")
+    ("looks_two" . "\xe401")
+    ("loop" . "\xe028")
+    ("loupe" . "\xe402")
+    ("low_priority" . "\xe16d")
+    ("loyalty" . "\xe89a")
+    ("mail" . "\xe158")
+    ("mail_outline" . "\xe0e1")
+    ("map" . "\xe55b")
+    ("markunread" . "\xe159")
+    ("markunread_mailbox" . "\xe89b")
+    ("memory" . "\xe322")
+    ("menu" . "\xe5d2")
+    ("merge_type" . "\xe252")
+    ("message" . "\xe0c9")
+    ("mic" . "\xe029")
+    ("mic_none" . "\xe02a")
+    ("mic_off" . "\xe02b")
+    ("mms" . "\xe618")
+    ("mode_comment" . "\xe253")
+    ("mode_edit" . "\xe254")
+    ("monetization_on" . "\xe263")
+    ("money_off" . "\xe25c")
+    ("monochrome_photos" . "\xe403")
+    ("mood" . "\xe7f2")
+    ("mood_bad" . "\xe7f3")
+    ("more" . "\xe619")
+    ("more_horiz" . "\xe5d3")
+    ("more_vert" . "\xe5d4")
+    ("motorcycle" . "\xe91b")
+    ("mouse" . "\xe323")
+    ("move_to_inbox" . "\xe168")
+    ("movie" . "\xe02c")
+    ("movie_creation" . "\xe404")
+    ("movie_filter" . "\xe43a")
+    ("multiline_chart" . "\xe6df")
+    ("music_note" . "\xe405")
+    ("music_video" . "\xe063")
+    ("my_location" . "\xe55c")
+    ("nature" . "\xe406")
+    ("nature_people" . "\xe407")
+    ("navigate_before" . "\xe408")
+    ("navigate_next" . "\xe409")
+    ("navigation" . "\xe55d")
+    ("near_me" . "\xe569")
+    ("network_cell" . "\xe1b9")
+    ("network_check" . "\xe640")
+    ("network_locked" . "\xe61a")
+    ("network_wifi" . "\xe1ba")
+    ("new_releases" . "\xe031")
+    ("next_week" . "\xe16a")
+    ("nfc" . "\xe1bb")
+    ("no_encryption" . "\xe641")
+    ("no_sim" . "\xe0cc")
+    ("not_interested" . "\xe033")
+    ("note" . "\xe06f")
+    ("note_add" . "\xe89c")
+    ("notifications" . "\xe7f4")
+    ("notifications_active" . "\xe7f7")
+    ("notifications_none" . "\xe7f5")
+    ("notifications_off" . "\xe7f6")
+    ("notifications_paused" . "\xe7f8")
+    ("offline_pin" . "\xe90a")
+    ("ondemand_video" . "\xe63a")
+    ("opacity" . "\xe91c")
+    ("open_in_browser" . "\xe89d")
+    ("open_in_new" . "\xe89e")
+    ("open_with" . "\xe89f")
+    ("pages" . "\xe7f9")
+    ("pageview" . "\xe8a0")
+    ("palette" . "\xe40a")
+    ("pan_tool" . "\xe925")
+    ("panorama" . "\xe40b")
+    ("panorama_fish_eye" . "\xe40c")
+    ("panorama_horizontal" . "\xe40d")
+    ("panorama_vertical" . "\xe40e")
+    ("panorama_wide_angle" . "\xe40f")
+    ("party_mode" . "\xe7fa")
+    ("pause" . "\xe034")
+    ("pause_circle_filled" . "\xe035")
+    ("pause_circle_outline" . "\xe036")
+    ("payment" . "\xe8a1")
+    ("people" . "\xe7fb")
+    ("people_outline" . "\xe7fc")
+    ("perm_camera_mic" . "\xe8a2")
+    ("perm_contact_calendar" . "\xe8a3")
+    ("perm_data_setting" . "\xe8a4")
+    ("perm_device_information" . "\xe8a5")
+    ("perm_identity" . "\xe8a6")
+    ("perm_media" . "\xe8a7")
+    ("perm_phone_msg" . "\xe8a8")
+    ("perm_scan_wifi" . "\xe8a9")
+    ("person" . "\xe7fd")
+    ("person_add" . "\xe7fe")
+    ("person_outline" . "\xe7ff")
+    ("person_pin" . "\xe55a")
+    ("person_pin_circle" . "\xe56a")
+    ("personal_video" . "\xe63b")
+    ("pets" . "\xe91d")
+    ("phone" . "\xe0cd")
+    ("phone_android" . "\xe324")
+    ("phone_bluetooth_speaker" . "\xe61b")
+    ("phone_forwarded" . "\xe61c")
+    ("phone_in_talk" . "\xe61d")
+    ("phone_iphone" . "\xe325")
+    ("phone_locked" . "\xe61e")
+    ("phone_missed" . "\xe61f")
+    ("phone_paused" . "\xe620")
+    ("phonelink" . "\xe326")
+    ("phonelink_erase" . "\xe0db")
+    ("phonelink_lock" . "\xe0dc")
+    ("phonelink_off" . "\xe327")
+    ("phonelink_ring" . "\xe0dd")
+    ("phonelink_setup" . "\xe0de")
+    ("photo" . "\xe410")
+    ("photo_album" . "\xe411")
+    ("photo_camera" . "\xe412")
+    ("photo_filter" . "\xe43b")
+    ("photo_library" . "\xe413")
+    ("photo_size_select_actual" . "\xe432")
+    ("photo_size_select_large" . "\xe433")
+    ("photo_size_select_small" . "\xe434")
+    ("picture_as_pdf" . "\xe415")
+    ("picture_in_picture" . "\xe8aa")
+    ("picture_in_picture_alt" . "\xe911")
+    ("pie_chart" . "\xe6c4")
+    ("pie_chart_outlined" . "\xe6c5")
+    ("pin_drop" . "\xe55e")
+    ("place" . "\xe55f")
+    ("play_arrow" . "\xe037")
+    ("play_circle_filled" . "\xe038")
+    ("play_circle_outline" . "\xe039")
+    ("play_for_work" . "\xe906")
+    ("playlist_add" . "\xe03b")
+    ("playlist_add_check" . "\xe065")
+    ("playlist_play" . "\xe05f")
+    ("plus_one" . "\xe800")
+    ("poll" . "\xe801")
+    ("polymer" . "\xe8ab")
+    ("pool" . "\xeb48")
+    ("portable_wifi_off" . "\xe0ce")
+    ("portrait" . "\xe416")
+    ("power" . "\xe63c")
+    ("power_input" . "\xe336")
+    ("power_settings_new" . "\xe8ac")
+    ("pregnant_woman" . "\xe91e")
+    ("present_to_all" . "\xe0df")
+    ("print" . "\xe8ad")
+    ("priority_high" . "\xe645")
+    ("public" . "\xe80b")
+    ("publish" . "\xe255")
+    ("query_builder" . "\xe8ae")
+    ("question_answer" . "\xe8af")
+    ("queue" . "\xe03c")
+    ("queue_music" . "\xe03d")
+    ("queue_play_next" . "\xe066")
+    ("radio" . "\xe03e")
+    ("radio_button_checked" . "\xe837")
+    ("radio_button_unchecked" . "\xe836")
+    ("rate_review" . "\xe560")
+    ("receipt" . "\xe8b0")
+    ("recent_actors" . "\xe03f")
+    ("record_voice_over" . "\xe91f")
+    ("redeem" . "\xe8b1")
+    ("redo" . "\xe15a")
+    ("refresh" . "\xe5d5")
+    ("remove" . "\xe15b")
+    ("remove_circle" . "\xe15c")
+    ("remove_circle_outline" . "\xe15d")
+    ("remove_from_queue" . "\xe067")
+    ("remove_red_eye" . "\xe417")
+    ("remove_shopping_cart" . "\xe928")
+    ("reorder" . "\xe8fe")
+    ("repeat" . "\xe040")
+    ("repeat_one" . "\xe041")
+    ("replay" . "\xe042")
+    ("replay_10" . "\xe059")
+    ("replay_30" . "\xe05a")
+    ("replay_5" . "\xe05b")
+    ("reply" . "\xe15e")
+    ("reply_all" . "\xe15f")
+    ("report" . "\xe160")
+    ("report_problem" . "\xe8b2")
+    ("restaurant" . "\xe56c")
+    ("restaurant_menu" . "\xe561")
+    ("restore" . "\xe8b3")
+    ("restore_page" . "\xe929")
+    ("ring_volume" . "\xe0d1")
+    ("room" . "\xe8b4")
+    ("room_service" . "\xeb49")
+    ("rotate_90_degrees_ccw" . "\xe418")
+    ("rotate_left" . "\xe419")
+    ("rotate_right" . "\xe41a")
+    ("rounded_corner" . "\xe920")
+    ("router" . "\xe328")
+    ("rowing" . "\xe921")
+    ("rss_feed" . "\xe0e5")
+    ("rv_hookup" . "\xe642")
+    ("satellite" . "\xe562")
+    ("save" . "\xe161")
+    ("scanner" . "\xe329")
+    ("schedule" . "\xe8b5")
+    ("school" . "\xe80c")
+    ("screen_lock_landscape" . "\xe1be")
+    ("screen_lock_portrait" . "\xe1bf")
+    ("screen_lock_rotation" . "\xe1c0")
+    ("screen_rotation" . "\xe1c1")
+    ("screen_share" . "\xe0e2")
+    ("sd_card" . "\xe623")
+    ("sd_storage" . "\xe1c2")
+    ("search" . "\xe8b6")
+    ("security" . "\xe32a")
+    ("select_all" . "\xe162")
+    ("send" . "\xe163")
+    ("sentiment_dissatisfied" . "\xe811")
+    ("sentiment_neutral" . "\xe812")
+    ("sentiment_satisfied" . "\xe813")
+    ("sentiment_very_dissatisfied" . "\xe814")
+    ("sentiment_very_satisfied" . "\xe815")
+    ("settings" . "\xe8b8")
+    ("settings_applications" . "\xe8b9")
+    ("settings_backup_restore" . "\xe8ba")
+    ("settings_bluetooth" . "\xe8bb")
+    ("settings_brightness" . "\xe8bd")
+    ("settings_cell" . "\xe8bc")
+    ("settings_ethernet" . "\xe8be")
+    ("settings_input_antenna" . "\xe8bf")
+    ("settings_input_component" . "\xe8c0")
+    ("settings_input_composite" . "\xe8c1")
+    ("settings_input_hdmi" . "\xe8c2")
+    ("settings_input_svideo" . "\xe8c3")
+    ("settings_overscan" . "\xe8c4")
+    ("settings_phone" . "\xe8c5")
+    ("settings_power" . "\xe8c6")
+    ("settings_remote" . "\xe8c7")
+    ("settings_system_daydream" . "\xe1c3")
+    ("settings_voice" . "\xe8c8")
+    ("share" . "\xe80d")
+    ("shop" . "\xe8c9")
+    ("shop_two" . "\xe8ca")
+    ("shopping_basket" . "\xe8cb")
+    ("shopping_cart" . "\xe8cc")
+    ("short_text" . "\xe261")
+    ("show_chart" . "\xe6e1")
+    ("shuffle" . "\xe043")
+    ("signal_cellular_4_bar" . "\xe1c8")
+    ("signal_cellular_connected_no_internet_4_bar" . "\xe1cd")
+    ("signal_cellular_no_sim" . "\xe1ce")
+    ("signal_cellular_null" . "\xe1cf")
+    ("signal_cellular_off" . "\xe1d0")
+    ("signal_wifi_4_bar" . "\xe1d8")
+    ("signal_wifi_4_bar_lock" . "\xe1d9")
+    ("signal_wifi_off" . "\xe1da")
+    ("sim_card" . "\xe32b")
+    ("sim_card_alert" . "\xe624")
+    ("skip_next" . "\xe044")
+    ("skip_previous" . "\xe045")
+    ("slideshow" . "\xe41b")
+    ("slow_motion_video" . "\xe068")
+    ("smartphone" . "\xe32c")
+    ("smoke_free" . "\xeb4a")
+    ("smoking_rooms" . "\xeb4b")
+    ("sms" . "\xe625")
+    ("sms_failed" . "\xe626")
+    ("snooze" . "\xe046")
+    ("sort" . "\xe164")
+    ("sort_by_alpha" . "\xe053")
+    ("spa" . "\xeb4c")
+    ("space_bar" . "\xe256")
+    ("speaker" . "\xe32d")
+    ("speaker_group" . "\xe32e")
+    ("speaker_notes" . "\xe8cd")
+    ("speaker_notes_off" . "\xe92a")
+    ("speaker_phone" . "\xe0d2")
+    ("spellcheck" . "\xe8ce")
+    ("star" . "\xe838")
+    ("star_border" . "\xe83a")
+    ("star_half" . "\xe839")
+    ("stars" . "\xe8d0")
+    ("stay_current_landscape" . "\xe0d3")
+    ("stay_current_portrait" . "\xe0d4")
+    ("stay_primary_landscape" . "\xe0d5")
+    ("stay_primary_portrait" . "\xe0d6")
+    ("stop" . "\xe047")
+    ("stop_screen_share" . "\xe0e3")
+    ("storage" . "\xe1db")
+    ("store" . "\xe8d1")
+    ("store_mall_directory" . "\xe563")
+    ("straighten" . "\xe41c")
+    ("streetview" . "\xe56e")
+    ("strikethrough_s" . "\xe257")
+    ("style" . "\xe41d")
+    ("subdirectory_arrow_left" . "\xe5d9")
+    ("subdirectory_arrow_right" . "\xe5da")
+    ("subject" . "\xe8d2")
+    ("subscriptions" . "\xe064")
+    ("subtitles" . "\xe048")
+    ("subway" . "\xe56f")
+    ("supervisor_account" . "\xe8d3")
+    ("surround_sound" . "\xe049")
+    ("swap_calls" . "\xe0d7")
+    ("swap_horiz" . "\xe8d4")
+    ("swap_vert" . "\xe8d5")
+    ("swap_vertical_circle" . "\xe8d6")
+    ("switch_camera" . "\xe41e")
+    ("switch_video" . "\xe41f")
+    ("sync" . "\xe627")
+    ("sync_disabled" . "\xe628")
+    ("sync_problem" . "\xe629")
+    ("system_update" . "\xe62a")
+    ("system_update_alt" . "\xe8d7")
+    ("tab" . "\xe8d8")
+    ("tab_unselected" . "\xe8d9")
+    ("tablet" . "\xe32f")
+    ("tablet_android" . "\xe330")
+    ("tablet_mac" . "\xe331")
+    ("tag_faces" . "\xe420")
+    ("tap_and_play" . "\xe62b")
+    ("terrain" . "\xe564")
+    ("text_fields" . "\xe262")
+    ("text_format" . "\xe165")
+    ("textsms" . "\xe0d8")
+    ("texture" . "\xe421")
+    ("theaters" . "\xe8da")
+    ("thumb_down" . "\xe8db")
+    ("thumb_up" . "\xe8dc")
+    ("thumbs_up_down" . "\xe8dd")
+    ("time_to_leave" . "\xe62c")
+    ("timelapse" . "\xe422")
+    ("timeline" . "\xe922")
+    ("timer" . "\xe425")
+    ("timer_10" . "\xe423")
+    ("timer_3" . "\xe424")
+    ("timer_off" . "\xe426")
+    ("title" . "\xe264")
+    ("toc" . "\xe8de")
+    ("today" . "\xe8df")
+    ("toll" . "\xe8e0")
+    ("tonality" . "\xe427")
+    ("touch_app" . "\xe913")
+    ("toys" . "\xe332")
+    ("track_changes" . "\xe8e1")
+    ("traffic" . "\xe565")
+    ("train" . "\xe570")
+    ("tram" . "\xe571")
+    ("transfer_within_a_station" . "\xe572")
+    ("transform" . "\xe428")
+    ("translate" . "\xe8e2")
+    ("trending_down" . "\xe8e3")
+    ("trending_flat" . "\xe8e4")
+    ("trending_up" . "\xe8e5")
+    ("tune" . "\xe429")
+    ("turned_in" . "\xe8e6")
+    ("turned_in_not" . "\xe8e7")
+    ("tv" . "\xe333")
+    ("unarchive" . "\xe169")
+    ("undo" . "\xe166")
+    ("unfold_less" . "\xe5d6")
+    ("unfold_more" . "\xe5d7")
+    ("update" . "\xe923")
+    ("usb" . "\xe1e0")
+    ("verified_user" . "\xe8e8")
+    ("vertical_align_bottom" . "\xe258")
+    ("vertical_align_center" . "\xe259")
+    ("vertical_align_top" . "\xe25a")
+    ("vibration" . "\xe62d")
+    ("video_call" . "\xe070")
+    ("video_label" . "\xe071")
+    ("video_library" . "\xe04a")
+    ("videocam" . "\xe04b")
+    ("videocam_off" . "\xe04c")
+    ("videogame_asset" . "\xe338")
+    ("view_agenda" . "\xe8e9")
+    ("view_array" . "\xe8ea")
+    ("view_carousel" . "\xe8eb")
+    ("view_column" . "\xe8ec")
+    ("view_comfy" . "\xe42a")
+    ("view_compact" . "\xe42b")
+    ("view_day" . "\xe8ed")
+    ("view_headline" . "\xe8ee")
+    ("view_list" . "\xe8ef")
+    ("view_module" . "\xe8f0")
+    ("view_quilt" . "\xe8f1")
+    ("view_stream" . "\xe8f2")
+    ("view_week" . "\xe8f3")
+    ("vignette" . "\xe435")
+    ("visibility" . "\xe8f4")
+    ("visibility_off" . "\xe8f5")
+    ("voice_chat" . "\xe62e")
+    ("voicemail" . "\xe0d9")
+    ("volume_down" . "\xe04d")
+    ("volume_mute" . "\xe04e")
+    ("volume_off" . "\xe04f")
+    ("volume_up" . "\xe050")
+    ("vpn_key" . "\xe0da")
+    ("vpn_lock" . "\xe62f")
+    ("wallpaper" . "\xe1bc")
+    ("warning" . "\xe002")
+    ("watch" . "\xe334")
+    ("watch_later" . "\xe924")
+    ("wb_auto" . "\xe42c")
+    ("wb_cloudy" . "\xe42d")
+    ("wb_incandescent" . "\xe42e")
+    ("wb_iridescent" . "\xe436")
+    ("wb_sunny" . "\xe430")
+    ("wc" . "\xe63d")
+    ("web" . "\xe051")
+    ("web_asset" . "\xe069")
+    ("weekend" . "\xe16b")
+    ("whatshot" . "\xe80e")
+    ("widgets" . "\xe1bd")
+    ("wifi" . "\xe63e")
+    ("wifi_lock" . "\xe1e1")
+    ("wifi_tethering" . "\xe1e2")
+    ("work" . "\xe8f9")
+    ("wrap_text" . "\xe25b")
+    ("youtube_searched_for" . "\xe8fa")
+    ("zoom_in" . "\xe8ff")
+    ("zoom_out" . "\xe900")
+    ("zoom_out_map" . "\xe56b")))
+
+  (provide 'data-material)
.emacs.d/elpa/all-the-icons-20170817.642/data/data-material.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/data/data-octicons.el
@@ -0,0 +1,165 @@
+(defvar all-the-icons-data/octicons-alist
+  '(
+
+    ("alert" . "\xf02d")
+    ("arrow-down" . "\xf03f")
+    ("arrow-left" . "\xf040")
+    ("arrow-right" . "\xf03e")
+    ("arrow-small-down" . "\xf0a0")
+    ("arrow-small-left" . "\xf0a1")
+    ("arrow-small-right" . "\xf071")
+    ("arrow-small-up" . "\xf09f")
+    ("arrow-up" . "\xf03d")
+    ("book" . "\xf007")
+    ("bookmark" . "\xf07b")
+    ("briefcase" . "\xf0d3")
+    ("broadcast" . "\xf048")
+    ("browser" . "\xf0c5")
+    ("bug" . "\xf091")
+    ("calendar" . "\xf068")
+    ("check" . "\xf03a")
+    ("checklist" . "\xf076")
+    ("chevron-down" . "\xf0a3")
+    ("chevron-left" . "\xf0a4")
+    ("chevron-right" . "\xf078")
+    ("chevron-up" . "\xf0a2")
+    ("circle-slash" . "\xf084")
+    ("circuit-board" . "\xf0d6")
+    ("clippy" . "\xf035")
+    ("clock" . "\xf046")
+    ("cloud-download" . "\xf00b")
+    ("cloud-upload" . "\xf00c")
+    ("code" . "\xf05f")
+    ("comment" . "\xf02b")
+    ("comment-discussion" . "\xf04f")
+    ("credit-card" . "\xf045")
+    ("dash" . "\xf0ca")
+    ("dashboard" . "\xf07d")
+    ("database" . "\xf096")
+    ("device-camera" . "\xf056")
+    ("device-camera-video" . "\xf057")
+    ("device-desktop" . "\xf27c")
+    ("device-mobile" . "\xf038")
+    ("diff" . "\xf04d")
+    ("diff-added" . "\xf06b")
+    ("diff-ignored" . "\xf099")
+    ("diff-modified" . "\xf06d")
+    ("diff-removed" . "\xf06c")
+    ("diff-renamed" . "\xf06e")
+    ("ellipsis" . "\xf09a")
+    ("eye" . "\xf04e")
+    ("file-binary" . "\xf094")
+    ("file-code" . "\xf010")
+    ("file-directory" . "\xf016")
+    ("file-media" . "\xf012")
+    ("file-pdf" . "\xf014")
+    ("file-submodule" . "\xf017")
+    ("file-symlink-directory" . "\xf0b1")
+    ("file-symlink-file" . "\xf0b0")
+    ("file-text" . "\xf011")
+    ("file-zip" . "\xf013")
+    ("flame" . "\xf0d2")
+    ("fold" . "\xf0cc")
+    ("gear" . "\xf02f")
+    ("gift" . "\xf042")
+    ("gist" . "\xf00e")
+    ("gist-secret" . "\xf08c")
+    ("git-branch" . "\xf020")
+    ("git-commit" . "\xf01f")
+    ("git-compare" . "\xf0ac")
+    ("git-merge" . "\xf023")
+    ("git-pull-request" . "\xf009")
+    ("globe" . "\xf0b6")
+    ("graph" . "\xf043")
+    ("beaker" . "\xf0dd")
+    ("heart" . "\x2665")
+    ("history" . "\xf07e")
+    ("home" . "\xf08d")
+    ("horizontal-rule" . "\xf070")
+    ("hourglass" . "\xf09e")
+    ("hubot" . "\xf09d")
+    ("inbox" . "\xf0cf")
+    ("info" . "\xf059")
+    ("issue-closed" . "\xf028")
+    ("issue-opened" . "\xf026")
+    ("issue-reopened" . "\xf027")
+    ("jersey" . "\xf019")
+    ("key" . "\xf049")
+    ("keyboard" . "\xf00d")
+    ("law" . "\xf0d8")
+    ("light-bulb" . "\xf000")
+    ("link" . "\xf05c")
+    ("link-external" . "\xf07f")
+    ("list-ordered" . "\xf062")
+    ("list-unordered" . "\xf061")
+    ("location" . "\xf060")
+    ("lock" . "\xf06a")
+    ("logo-github" . "\xf092")
+    ("mail" . "\xf03b")
+    ("mail-read" . "\xf03c")
+    ("mail-reply" . "\xf051")
+    ("mark-github" . "\xf00a")
+    ("markdown" . "\xf0c9")
+    ("megaphone" . "\xf077")
+    ("mention" . "\xf0be")
+    ("milestone" . "\xf075")
+    ("mirror" . "\xf024")
+    ("mortar-board" . "\xf0d7")
+    ("mute" . "\xf080")
+    ("no-newline" . "\xf09c")
+    ("octoface" . "\xf008")
+    ("organization" . "\xf037")
+    ("package" . "\xf0c4")
+    ("paintcan" . "\xf0d1")
+    ("pencil" . "\xf058")
+    ("person" . "\xf018")
+    ("pin" . "\xf041")
+    ("plug" . "\xf0d4")
+    ("plus" . "\xf05d")
+    ("primitive-dot" . "\xf052")
+    ("primitive-square" . "\xf053")
+    ("pulse" . "\xf085")
+    ("puzzle" . "\xf0c0")
+    ("question" . "\xf02c")
+    ("quote" . "\xf063")
+    ("radio-tower" . "\xf030")
+    ("repo" . "\xf001")
+    ("repo-clone" . "\xf04c")
+    ("repo-force-push" . "\xf04a")
+    ("repo-forked" . "\xf002")
+    ("repo-pull" . "\xf006")
+    ("repo-push" . "\xf005")
+    ("rocket" . "\xf033")
+    ("rss" . "\xf034")
+    ("ruby" . "\xf047")
+    ("search" . "\xf02e")
+    ("server" . "\xf097")
+    ("settings" . "\xf07c")
+    ("sign-in" . "\xf036")
+    ("sign-out" . "\xf032")
+    ("squirrel" . "\xf0b2")
+    ("star" . "\xf02a")
+    ("steps" . "\xf0c7")
+    ("stop" . "\xf08f")
+    ("sync" . "\xf087")
+    ("tag" . "\xf015")
+    ("telescope" . "\xf088")
+    ("terminal" . "\xf0c8")
+    ("three-bars" . "\xf05e")
+    ("thumbsdown" . "\xf0db")
+    ("thumbsup" . "\xf0da")
+    ("tools" . "\xf031")
+    ("trashcan" . "\xf0d0")
+    ("triangle-down" . "\xf05b")
+    ("triangle-left" . "\xf044")
+    ("triangle-right" . "\xf05a")
+    ("triangle-up" . "\xf0aa")
+    ("unfold" . "\xf039")
+    ("unmute" . "\xf0ba")
+    ("versions" . "\xf064")
+    ("x" . "\xf081")
+    ("zap" . "\x26A1")
+
+    ))
+
+(provide 'data-octicons)
.emacs.d/elpa/all-the-icons-20170817.642/data/data-octicons.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/data/data-weathericons.el
@@ -0,0 +1,594 @@
+(defvar all-the-icons-data/weather-icons-alist
+  '(
+
+    ("alien"                           . "\xf075")
+    ("barometer"                       . "\xf079")
+    ("celsius"                         . "\xf03c")
+    ("cloud"                           . "\xf041")
+    ("cloud-down"                      . "\xf03d")
+    ("cloud-refresh"                   . "\xf03e")
+    ("cloud-up"                        . "\xf040")
+    ("cloudy"                          . "\xf013")
+    ("cloudy-gusts"                    . "\xf011")
+    ("cloudy-windy"                    . "\xf012")
+    ("day-cloudy"                      . "\xf002")
+    ("day-cloudy-gusts"                . "\xf000")
+    ("day-cloudy-high"                 . "\xf07d")
+    ("day-cloudy-windy"                . "\xf001")
+    ("day-fog"                         . "\xf003")
+    ("day-hail"                        . "\xf004")
+    ("day-haze"                        . "\xf0b6")
+    ("day-light-wind"                  . "\xf0c4")
+    ("day-lightning"                   . "\xf005")
+    ("day-rain"                        . "\xf008")
+    ("day-rain-mix"                    . "\xf006")
+    ("day-rain-wind"                   . "\xf007")
+    ("day-showers"                     . "\xf009")
+    ("day-sleet"                       . "\xf0b2")
+    ("day-sleet-storm"                 . "\xf068")
+    ("day-snow"                        . "\xf00a")
+    ("day-snow-thunderstorm"           . "\xf06b")
+    ("day-snow-wind"                   . "\xf065")
+    ("day-sprinkle"                    . "\xf00b")
+    ("day-storm-showers"               . "\xf00e")
+    ("day-sunny"                       . "\xf00d")
+    ("day-sunny-overcast"              . "\xf00c")
+    ("day-thunderstorm"                . "\xf010")
+    ("day-windy"                       . "\xf085")
+    ("degrees"                         . "\xf042")
+    ("direction-down"                  . "\xf044")
+    ("direction-down-left"             . "\xf043")
+    ("direction-down-right"            . "\xf088")
+    ("direction-left"                  . "\xf048")
+    ("direction-right"                 . "\xf04d")
+    ("direction-up"                    . "\xf058")
+    ("direction-up-left"               . "\xf087")
+    ("direction-up-right"              . "\xf057")
+    ("dust"                            . "\xf063")
+    ("earthquake"                      . "\xf0c6")
+    ("fahrenheit"                      . "\xf045")
+    ("fire"                            . "\xf0c7")
+    ("flood"                           . "\xf07c")
+    ("fog"                             . "\xf014")
+    ("forecast-io-clear-day"           . "\xf00d")
+    ("forecast-io-clear-night"         . "\xf02e")
+    ("forecast-io-cloudy"              . "\xf013")
+    ("forecast-io-fog"                 . "\xf014")
+    ("forecast-io-hail"                . "\xf015")
+    ("forecast-io-partly-cloudy-day"   . "\xf002")
+    ("forecast-io-partly-cloudy-night" . "\xf031")
+    ("forecast-io-rain"                . "\xf019")
+    ("forecast-io-sleet"               . "\xf0b5")
+    ("forecast-io-snow"                . "\xf01b")
+    ("forecast-io-thunderstorm"        . "\xf01e")
+    ("forecast-io-tornado"             . "\xf056")
+    ("forecast-io-wind"                . "\xf050")
+    ("gale-warning"                    . "\xf0cd")
+    ("hail"                            . "\xf015")
+    ("horizon"                         . "\xf047")
+    ("horizon-alt"                     . "\xf046")
+    ("hot"                             . "\xf072")
+    ("humidity"                        . "\xf07a")
+    ("hurricane"                       . "\xf073")
+    ("hurricane-warning"               . "\xf0cf")
+    ("lightning"                       . "\xf016")
+    ("lunar-eclipse"                   . "\xf070")
+    ("meteor"                          . "\xf071")
+    ("moon-0"                          . "\xf095")
+    ("moon-1"                          . "\xf096")
+    ("moon-10"                         . "\xf09f")
+    ("moon-11"                         . "\xf0a0")
+    ("moon-12"                         . "\xf0a1")
+    ("moon-13"                         . "\xf0a2")
+    ("moon-14"                         . "\xf0a3")
+    ("moon-15"                         . "\xf0a4")
+    ("moon-16"                         . "\xf0a5")
+    ("moon-17"                         . "\xf0a6")
+    ("moon-18"                         . "\xf0a7")
+    ("moon-19"                         . "\xf0a8")
+    ("moon-2"                          . "\xf097")
+    ("moon-20"                         . "\xf0a9")
+    ("moon-21"                         . "\xf0aa")
+    ("moon-22"                         . "\xf0ab")
+    ("moon-23"                         . "\xf0ac")
+    ("moon-24"                         . "\xf0ad")
+    ("moon-25"                         . "\xf0ae")
+    ("moon-26"                         . "\xf0af")
+    ("moon-27"                         . "\xf0b0")
+    ("moon-3"                          . "\xf098")
+    ("moon-4"                          . "\xf099")
+    ("moon-5"                          . "\xf09a")
+    ("moon-6"                          . "\xf09b")
+    ("moon-7"                          . "\xf09c")
+    ("moon-8"                          . "\xf09d")
+    ("moon-9"                          . "\xf09e")
+    ("moon-alt-first-quarter"          . "\xf0d6")
+    ("moon-alt-full"                   . "\xf0dd")
+    ("moon-alt-new"                    . "\xf0eb")
+    ("moon-alt-third-quarter"          . "\xf0e4")
+    ("moon-alt-waning-crescent-1"      . "\xf0e5")
+    ("moon-alt-waning-crescent-2"      . "\xf0e6")
+    ("moon-alt-waning-crescent-3"      . "\xf0e7")
+    ("moon-alt-waning-crescent-4"      . "\xf0e8")
+    ("moon-alt-waning-crescent-5"      . "\xf0e9")
+    ("moon-alt-waning-crescent-6"      . "\xf0ea")
+    ("moon-alt-waning-gibbous-1"       . "\xf0de")
+    ("moon-alt-waning-gibbous-2"       . "\xf0df")
+    ("moon-alt-waning-gibbous-3"       . "\xf0e0")
+    ("moon-alt-waning-gibbous-4"       . "\xf0e1")
+    ("moon-alt-waning-gibbous-5"       . "\xf0e2")
+    ("moon-alt-waning-gibbous-6"       . "\xf0e3")
+    ("moon-alt-waxing-crescent-1"      . "\xf0d0")
+    ("moon-alt-waxing-crescent-2"      . "\xf0d1")
+    ("moon-alt-waxing-crescent-3"      . "\xf0d2")
+    ("moon-alt-waxing-crescent-4"      . "\xf0d3")
+    ("moon-alt-waxing-crescent-5"      . "\xf0d4")
+    ("moon-alt-waxing-crescent-6"      . "\xf0d5")
+    ("moon-alt-waxing-gibbous-1"       . "\xf0d7")
+    ("moon-alt-waxing-gibbous-2"       . "\xf0d8")
+    ("moon-alt-waxing-gibbous-3"       . "\xf0d9")
+    ("moon-alt-waxing-gibbous-4"       . "\xf0da")
+    ("moon-alt-waxing-gibbous-5"       . "\xf0db")
+    ("moon-alt-waxing-gibbous-6"       . "\xf0dc")
+    ("moon-first-quarter"              . "\xf09c")
+    ("moon-full"                       . "\xf0a3")
+    ("moon-new"                        . "\xf095")
+    ("moon-third-quarter"              . "\xf0aa")
+    ("moon-waning-crescent-1"          . "\xf0ab")
+    ("moon-waning-crescent-2"          . "\xf0ac")
+    ("moon-waning-crescent-3"          . "\xf0ad")
+    ("moon-waning-crescent-4"          . "\xf0ae")
+    ("moon-waning-crescent-5"          . "\xf0af")
+    ("moon-waning-crescent-6"          . "\xf0b0")
+    ("moon-waning-gibbous-1"           . "\xf0a4")
+    ("moon-waning-gibbous-2"           . "\xf0a5")
+    ("moon-waning-gibbous-3"           . "\xf0a6")
+    ("moon-waning-gibbous-4"           . "\xf0a7")
+    ("moon-waning-gibbous-5"           . "\xf0a8")
+    ("moon-waning-gibbous-6"           . "\xf0a9")
+    ("moon-waxing-crescent-1"          . "\xf096")
+    ("moon-waxing-crescent-2"          . "\xf097")
+    ("moon-waxing-crescent-3"          . "\xf098")
+    ("moon-waxing-crescent-4"          . "\xf099")
+    ("moon-waxing-crescent-5"          . "\xf09a")
+    ("moon-waxing-crescent-6"          . "\xf09b")
+    ("moon-waxing-gibbous-1"           . "\xf09d")
+    ("moon-waxing-gibbous-2"           . "\xf09e")
+    ("moon-waxing-gibbous-3"           . "\xf09f")
+    ("moon-waxing-gibbous-4"           . "\xf0a0")
+    ("moon-waxing-gibbous-5"           . "\xf0a1")
+    ("moon-waxing-gibbous-6"           . "\xf0a2")
+    ("moonrise"                        . "\xf0c9")
+    ("moonset"                         . "\xf0ca")
+    ("na"                              . "\xf07b")
+    ("night-alt-cloudy"                . "\xf086")
+    ("night-alt-cloudy-gusts"          . "\xf022")
+    ("night-alt-cloudy-high"           . "\xf07e")
+    ("night-alt-cloudy-windy"          . "\xf023")
+    ("night-alt-hail"                  . "\xf024")
+    ("night-alt-lightning"             . "\xf025")
+    ("night-alt-partly-cloudy"         . "\xf081")
+    ("night-alt-rain"                  . "\xf028")
+    ("night-alt-rain-mix"              . "\xf026")
+    ("night-alt-rain-wind"             . "\xf027")
+    ("night-alt-showers"               . "\xf029")
+    ("night-alt-sleet"                 . "\xf0b4")
+    ("night-alt-sleet-storm"           . "\xf06a")
+    ("night-alt-snow"                  . "\xf02a")
+    ("night-alt-snow-thunderstorm"     . "\xf06d")
+    ("night-alt-snow-wind"             . "\xf067")
+    ("night-alt-sprinkle"              . "\xf02b")
+    ("night-alt-storm-showers"         . "\xf02c")
+    ("night-alt-thunderstorm"          . "\xf02d")
+    ("night-clear"                     . "\xf02e")
+    ("night-cloudy"                    . "\xf031")
+    ("night-cloudy-gusts"              . "\xf02f")
+    ("night-cloudy-high"               . "\xf080")
+    ("night-cloudy-windy"              . "\xf030")
+    ("night-fog"                       . "\xf04a")
+    ("night-hail"                      . "\xf032")
+    ("night-lightning"                 . "\xf033")
+    ("night-partly-cloudy"             . "\xf083")
+    ("night-rain"                      . "\xf036")
+    ("night-rain-mix"                  . "\xf034")
+    ("night-rain-wind"                 . "\xf035")
+    ("night-showers"                   . "\xf037")
+    ("night-sleet"                     . "\xf0b3")
+    ("night-sleet-storm"               . "\xf069")
+    ("night-snow"                      . "\xf038")
+    ("night-snow-thunderstorm"         . "\xf06c")
+    ("night-snow-wind"                 . "\xf066")
+    ("night-sprinkle"                  . "\xf039")
+    ("night-storm-showers"             . "\xf03a")
+    ("night-thunderstorm"              . "\xf03b")
+    ("owm-200"                         . "\xf01e")
+    ("owm-201"                         . "\xf01e")
+    ("owm-202"                         . "\xf01e")
+    ("owm-210"                         . "\xf016")
+    ("owm-211"                         . "\xf016")
+    ("owm-212"                         . "\xf016")
+    ("owm-221"                         . "\xf016")
+    ("owm-230"                         . "\xf01e")
+    ("owm-231"                         . "\xf01e")
+    ("owm-232"                         . "\xf01e")
+    ("owm-300"                         . "\xf01c")
+    ("owm-301"                         . "\xf01c")
+    ("owm-302"                         . "\xf019")
+    ("owm-310"                         . "\xf017")
+    ("owm-311"                         . "\xf019")
+    ("owm-312"                         . "\xf019")
+    ("owm-313"                         . "\xf01a")
+    ("owm-314"                         . "\xf019")
+    ("owm-321"                         . "\xf01c")
+    ("owm-500"                         . "\xf01c")
+    ("owm-501"                         . "\xf019")
+    ("owm-502"                         . "\xf019")
+    ("owm-503"                         . "\xf019")
+    ("owm-504"                         . "\xf019")
+    ("owm-511"                         . "\xf017")
+    ("owm-520"                         . "\xf01a")
+    ("owm-521"                         . "\xf01a")
+    ("owm-522"                         . "\xf01a")
+    ("owm-531"                         . "\xf01d")
+    ("owm-600"                         . "\xf01b")
+    ("owm-601"                         . "\xf01b")
+    ("owm-602"                         . "\xf0b5")
+    ("owm-611"                         . "\xf017")
+    ("owm-612"                         . "\xf017")
+    ("owm-615"                         . "\xf017")
+    ("owm-616"                         . "\xf017")
+    ("owm-620"                         . "\xf017")
+    ("owm-621"                         . "\xf01b")
+    ("owm-622"                         . "\xf01b")
+    ("owm-701"                         . "\xf01a")
+    ("owm-711"                         . "\xf062")
+    ("owm-721"                         . "\xf0b6")
+    ("owm-731"                         . "\xf063")
+    ("owm-741"                         . "\xf014")
+    ("owm-761"                         . "\xf063")
+    ("owm-762"                         . "\xf063")
+    ("owm-771"                         . "\xf011")
+    ("owm-781"                         . "\xf056")
+    ("owm-800"                         . "\xf00d")
+    ("owm-801"                         . "\xf011")
+    ("owm-802"                         . "\xf011")
+    ("owm-803"                         . "\xf012")
+    ("owm-804"                         . "\xf013")
+    ("owm-900"                         . "\xf056")
+    ("owm-901"                         . "\xf01d")
+    ("owm-902"                         . "\xf073")
+    ("owm-903"                         . "\xf076")
+    ("owm-904"                         . "\xf072")
+    ("owm-905"                         . "\xf021")
+    ("owm-906"                         . "\xf015")
+    ("owm-957"                         . "\xf050")
+    ("owm-day-200"                     . "\xf010")
+    ("owm-day-201"                     . "\xf010")
+    ("owm-day-202"                     . "\xf010")
+    ("owm-day-210"                     . "\xf005")
+    ("owm-day-211"                     . "\xf005")
+    ("owm-day-212"                     . "\xf005")
+    ("owm-day-221"                     . "\xf005")
+    ("owm-day-230"                     . "\xf010")
+    ("owm-day-231"                     . "\xf010")
+    ("owm-day-232"                     . "\xf010")
+    ("owm-day-300"                     . "\xf00b")
+    ("owm-day-301"                     . "\xf00b")
+    ("owm-day-302"                     . "\xf008")
+    ("owm-day-310"                     . "\xf008")
+    ("owm-day-311"                     . "\xf008")
+    ("owm-day-312"                     . "\xf008")
+    ("owm-day-313"                     . "\xf008")
+    ("owm-day-314"                     . "\xf008")
+    ("owm-day-321"                     . "\xf00b")
+    ("owm-day-500"                     . "\xf00b")
+    ("owm-day-501"                     . "\xf008")
+    ("owm-day-502"                     . "\xf008")
+    ("owm-day-503"                     . "\xf008")
+    ("owm-day-504"                     . "\xf008")
+    ("owm-day-511"                     . "\xf006")
+    ("owm-day-520"                     . "\xf009")
+    ("owm-day-521"                     . "\xf009")
+    ("owm-day-522"                     . "\xf009")
+    ("owm-day-531"                     . "\xf00e")
+    ("owm-day-600"                     . "\xf00a")
+    ("owm-day-601"                     . "\xf0b2")
+    ("owm-day-602"                     . "\xf00a")
+    ("owm-day-611"                     . "\xf006")
+    ("owm-day-612"                     . "\xf006")
+    ("owm-day-615"                     . "\xf006")
+    ("owm-day-616"                     . "\xf006")
+    ("owm-day-620"                     . "\xf006")
+    ("owm-day-621"                     . "\xf00a")
+    ("owm-day-622"                     . "\xf00a")
+    ("owm-day-701"                     . "\xf009")
+    ("owm-day-711"                     . "\xf062")
+    ("owm-day-721"                     . "\xf0b6")
+    ("owm-day-731"                     . "\xf063")
+    ("owm-day-741"                     . "\xf003")
+    ("owm-day-761"                     . "\xf063")
+    ("owm-day-762"                     . "\xf063")
+    ("owm-day-781"                     . "\xf056")
+    ("owm-day-800"                     . "\xf00d")
+    ("owm-day-801"                     . "\xf000")
+    ("owm-day-802"                     . "\xf000")
+    ("owm-day-803"                     . "\xf000")
+    ("owm-day-804"                     . "\xf00c")
+    ("owm-day-900"                     . "\xf056")
+    ("owm-day-902"                     . "\xf073")
+    ("owm-day-903"                     . "\xf076")
+    ("owm-day-904"                     . "\xf072")
+    ("owm-day-906"                     . "\xf004")
+    ("owm-day-957"                     . "\xf050")
+    ("owm-night-200"                   . "\xf02d")
+    ("owm-night-201"                   . "\xf02d")
+    ("owm-night-202"                   . "\xf02d")
+    ("owm-night-210"                   . "\xf025")
+    ("owm-night-211"                   . "\xf025")
+    ("owm-night-212"                   . "\xf025")
+    ("owm-night-221"                   . "\xf025")
+    ("owm-night-230"                   . "\xf02d")
+    ("owm-night-231"                   . "\xf02d")
+    ("owm-night-232"                   . "\xf02d")
+    ("owm-night-300"                   . "\xf02b")
+    ("owm-night-301"                   . "\xf02b")
+    ("owm-night-302"                   . "\xf028")
+    ("owm-night-310"                   . "\xf028")
+    ("owm-night-311"                   . "\xf028")
+    ("owm-night-312"                   . "\xf028")
+    ("owm-night-313"                   . "\xf028")
+    ("owm-night-314"                   . "\xf028")
+    ("owm-night-321"                   . "\xf02b")
+    ("owm-night-500"                   . "\xf02b")
+    ("owm-night-501"                   . "\xf028")
+    ("owm-night-502"                   . "\xf028")
+    ("owm-night-503"                   . "\xf028")
+    ("owm-night-504"                   . "\xf028")
+    ("owm-night-511"                   . "\xf026")
+    ("owm-night-520"                   . "\xf029")
+    ("owm-night-521"                   . "\xf029")
+    ("owm-night-522"                   . "\xf029")
+    ("owm-night-531"                   . "\xf02c")
+    ("owm-night-600"                   . "\xf02a")
+    ("owm-night-601"                   . "\xf0b4")
+    ("owm-night-602"                   . "\xf02a")
+    ("owm-night-611"                   . "\xf026")
+    ("owm-night-612"                   . "\xf026")
+    ("owm-night-615"                   . "\xf026")
+    ("owm-night-616"                   . "\xf026")
+    ("owm-night-620"                   . "\xf026")
+    ("owm-night-621"                   . "\xf02a")
+    ("owm-night-622"                   . "\xf02a")
+    ("owm-night-701"                   . "\xf029")
+    ("owm-night-711"                   . "\xf062")
+    ("owm-night-721"                   . "\xf0b6")
+    ("owm-night-731"                   . "\xf063")
+    ("owm-night-741"                   . "\xf04a")
+    ("owm-night-761"                   . "\xf063")
+    ("owm-night-762"                   . "\xf063")
+    ("owm-night-781"                   . "\xf056")
+    ("owm-night-800"                   . "\xf02e")
+    ("owm-night-801"                   . "\xf022")
+    ("owm-night-802"                   . "\xf022")
+    ("owm-night-803"                   . "\xf022")
+    ("owm-night-804"                   . "\xf086")
+    ("owm-night-900"                   . "\xf056")
+    ("owm-night-902"                   . "\xf073")
+    ("owm-night-903"                   . "\xf076")
+    ("owm-night-904"                   . "\xf072")
+    ("owm-night-906"                   . "\xf024")
+    ("owm-night-957"                   . "\xf050")
+    ("rain"                            . "\xf019")
+    ("rain-mix"                        . "\xf017")
+    ("rain-wind"                       . "\xf018")
+    ("raindrop"                        . "\xf078")
+    ("raindrops"                       . "\xf04e")
+    ("refresh"                         . "\xf04c")
+    ("refresh-alt"                     . "\xf04b")
+    ("sandstorm"                       . "\xf082")
+    ("showers"                         . "\xf01a")
+    ("sleet"                           . "\xf0b5")
+    ("small-craft-advisory"            . "\xf0cc")
+    ("smog"                            . "\xf074")
+    ("smoke"                           . "\xf062")
+    ("snow"                            . "\xf01b")
+    ("snow"                            . "\xf01b")
+    ("snow-wind"                       . "\xf064")
+    ("snowflake-cold"                  . "\xf076")
+    ("solar-eclipse"                   . "\xf06e")
+    ("sprinkle"                        . "\xf01c")
+    ("stars"                           . "\xf077")
+    ("storm-showers"                   . "\xf01d")
+    ("storm-showers"                   . "\xf01d")
+    ("storm-warning"                   . "\xf0ce")
+    ("strong-wind"                     . "\xf050")
+    ("sunrise"                         . "\xf051")
+    ("sunset"                          . "\xf052")
+    ("thermometer"                     . "\xf055")
+    ("thermometer-exterior"            . "\xf053")
+    ("thermometer-internal"            . "\xf054")
+    ("thunderstorm"                    . "\xf01e")
+    ("thunderstorm"                    . "\xf01e")
+    ("time-1"                          . "\xf08a")
+    ("time-10"                         . "\xf093")
+    ("time-11"                         . "\xf094")
+    ("time-12"                         . "\xf089")
+    ("time-2"                          . "\xf08b")
+    ("time-3"                          . "\xf08c")
+    ("time-4"                          . "\xf08d")
+    ("time-5"                          . "\xf08e")
+    ("time-6"                          . "\xf08f")
+    ("time-7"                          . "\xf090")
+    ("time-8"                          . "\xf091")
+    ("time-9"                          . "\xf092")
+    ("tornado"                         . "\xf056")
+    ("train"                           . "\xf0cb")
+    ("tsunami"                         . "\xf0c5")
+    ("umbrella"                        . "\xf084")
+    ("volcano"                         . "\xf0c8")
+    ("wind-beaufort-0"                 . "\xf0b7")
+    ("wind-beaufort-1"                 . "\xf0b8")
+    ("wind-beaufort-10"                . "\xf0c1")
+    ("wind-beaufort-11"                . "\xf0c2")
+    ("wind-beaufort-12"                . "\xf0c3")
+    ("wind-beaufort-2"                 . "\xf0b9")
+    ("wind-beaufort-3"                 . "\xf0ba")
+    ("wind-beaufort-4"                 . "\xf0bb")
+    ("wind-beaufort-5"                 . "\xf0bc")
+    ("wind-beaufort-6"                 . "\xf0bd")
+    ("wind-beaufort-7"                 . "\xf0be")
+    ("wind-beaufort-8"                 . "\xf0bf")
+    ("wind-beaufort-9"                 . "\xf0c0")
+    ("wind-direction"                  . "\xf0b1")
+    ("windy"                           . "\xf021")
+    ("wmo4680-00"                      . "\xf055")
+    ("wmo4680-01"                      . "\xf013")
+    ("wmo4680-02"                      . "\xf055")
+    ("wmo4680-03"                      . "\xf013")
+    ("wmo4680-04"                      . "\xf014")
+    ("wmo4680-05"                      . "\xf014")
+    ("wmo4680-10"                      . "\xf014")
+    ("wmo4680-11"                      . "\xf014")
+    ("wmo4680-12"                      . "\xf016")
+    ("wmo4680-18"                      . "\xf050")
+    ("wmo4680-20"                      . "\xf014")
+    ("wmo4680-21"                      . "\xf017")
+    ("wmo4680-22"                      . "\xf017")
+    ("wmo4680-23"                      . "\xf019")
+    ("wmo4680-24"                      . "\xf01b")
+    ("wmo4680-25"                      . "\xf015")
+    ("wmo4680-26"                      . "\xf01e")
+    ("wmo4680-27"                      . "\xf063")
+    ("wmo4680-28"                      . "\xf063")
+    ("wmo4680-29"                      . "\xf063")
+    ("wmo4680-30"                      . "\xf014")
+    ("wmo4680-31"                      . "\xf014")
+    ("wmo4680-32"                      . "\xf014")
+    ("wmo4680-33"                      . "\xf014")
+    ("wmo4680-34"                      . "\xf014")
+    ("wmo4680-35"                      . "\xf014")
+    ("wmo4680-40"                      . "\xf017")
+    ("wmo4680-41"                      . "\xf01c")
+    ("wmo4680-42"                      . "\xf019")
+    ("wmo4680-43"                      . "\xf01c")
+    ("wmo4680-44"                      . "\xf019")
+    ("wmo4680-45"                      . "\xf015")
+    ("wmo4680-46"                      . "\xf015")
+    ("wmo4680-47"                      . "\xf01b")
+    ("wmo4680-48"                      . "\xf01b")
+    ("wmo4680-50"                      . "\xf01c")
+    ("wmo4680-51"                      . "\xf01c")
+    ("wmo4680-52"                      . "\xf019")
+    ("wmo4680-53"                      . "\xf019")
+    ("wmo4680-54"                      . "\xf076")
+    ("wmo4680-55"                      . "\xf076")
+    ("wmo4680-56"                      . "\xf076")
+    ("wmo4680-57"                      . "\xf01c")
+    ("wmo4680-58"                      . "\xf019")
+    ("wmo4680-60"                      . "\xf01c")
+    ("wmo4680-61"                      . "\xf01c")
+    ("wmo4680-62"                      . "\xf019")
+    ("wmo4680-63"                      . "\xf019")
+    ("wmo4680-64"                      . "\xf015")
+    ("wmo4680-65"                      . "\xf015")
+    ("wmo4680-66"                      . "\xf015")
+    ("wmo4680-67"                      . "\xf017")
+    ("wmo4680-68"                      . "\xf017")
+    ("wmo4680-70"                      . "\xf01b")
+    ("wmo4680-71"                      . "\xf01b")
+    ("wmo4680-72"                      . "\xf01b")
+    ("wmo4680-73"                      . "\xf01b")
+    ("wmo4680-74"                      . "\xf076")
+    ("wmo4680-75"                      . "\xf076")
+    ("wmo4680-76"                      . "\xf076")
+    ("wmo4680-77"                      . "\xf01b")
+    ("wmo4680-78"                      . "\xf076")
+    ("wmo4680-80"                      . "\xf019")
+    ("wmo4680-81"                      . "\xf01c")
+    ("wmo4680-82"                      . "\xf019")
+    ("wmo4680-83"                      . "\xf019")
+    ("wmo4680-84"                      . "\xf01d")
+    ("wmo4680-85"                      . "\xf017")
+    ("wmo4680-86"                      . "\xf017")
+    ("wmo4680-87"                      . "\xf017")
+    ("wmo4680-89"                      . "\xf015")
+    ("wmo4680-90"                      . "\xf016")
+    ("wmo4680-91"                      . "\xf01d")
+    ("wmo4680-92"                      . "\xf01e")
+    ("wmo4680-93"                      . "\xf01e")
+    ("wmo4680-94"                      . "\xf016")
+    ("wmo4680-95"                      . "\xf01e")
+    ("wmo4680-96"                      . "\xf01e")
+    ("wmo4680-99"                      . "\xf056")
+    ("wu-chanceflurries"               . "\xf064")
+    ("wu-chancerain"                   . "\xf019")
+    ("wu-chancesleat"                  . "\xf0b5")
+    ("wu-chancesnow"                   . "\xf01b")
+    ("wu-chancetstorms"                . "\xf01e")
+    ("wu-clear"                        . "\xf00d")
+    ("wu-cloudy"                       . "\xf002")
+    ("wu-flurries"                     . "\xf064")
+    ("wu-hazy"                         . "\xf0b6")
+    ("wu-mostlycloudy"                 . "\xf002")
+    ("wu-mostlysunny"                  . "\xf00d")
+    ("wu-partlycloudy"                 . "\xf002")
+    ("wu-partlysunny"                  . "\xf00d")
+    ("wu-rain"                         . "\xf01a")
+    ("wu-sleat"                        . "\xf0b5")
+    ("wu-snow"                         . "\xf01b")
+    ("wu-sunny"                        . "\xf00d")
+    ("wu-tstorms"                      . "\xf01e")
+    ("wu-unknown"                      . "\xf00d")
+    ("yahoo-0"                         . "\xf056")
+    ("yahoo-1"                         . "\xf00e")
+    ("yahoo-10"                        . "\xf015")
+    ("yahoo-11"                        . "\xf01a")
+    ("yahoo-12"                        . "\xf01a")
+    ("yahoo-13"                        . "\xf01b")
+    ("yahoo-14"                        . "\xf00a")
+    ("yahoo-15"                        . "\xf064")
+    ("yahoo-16"                        . "\xf01b")
+    ("yahoo-17"                        . "\xf015")
+    ("yahoo-18"                        . "\xf017")
+    ("yahoo-19"                        . "\xf063")
+    ("yahoo-2"                         . "\xf073")
+    ("yahoo-20"                        . "\xf014")
+    ("yahoo-21"                        . "\xf021")
+    ("yahoo-22"                        . "\xf062")
+    ("yahoo-23"                        . "\xf050")
+    ("yahoo-24"                        . "\xf050")
+    ("yahoo-25"                        . "\xf076")
+    ("yahoo-26"                        . "\xf013")
+    ("yahoo-27"                        . "\xf031")
+    ("yahoo-28"                        . "\xf002")
+    ("yahoo-29"                        . "\xf031")
+    ("yahoo-3"                         . "\xf01e")
+    ("yahoo-30"                        . "\xf002")
+    ("yahoo-31"                        . "\xf02e")
+    ("yahoo-32"                        . "\xf00d")
+    ("yahoo-3200"                      . "\xf077")
+    ("yahoo-33"                        . "\xf083")
+    ("yahoo-34"                        . "\xf00c")
+    ("yahoo-35"                        . "\xf017")
+    ("yahoo-36"                        . "\xf072")
+    ("yahoo-37"                        . "\xf00e")
+    ("yahoo-38"                        . "\xf00e")
+    ("yahoo-39"                        . "\xf00e")
+    ("yahoo-4"                         . "\xf01e")
+    ("yahoo-40"                        . "\xf01a")
+    ("yahoo-41"                        . "\xf064")
+    ("yahoo-42"                        . "\xf01b")
+    ("yahoo-43"                        . "\xf064")
+    ("yahoo-44"                        . "\xf00c")
+    ("yahoo-45"                        . "\xf00e")
+    ("yahoo-46"                        . "\xf01b")
+    ("yahoo-47"                        . "\xf00e")
+    ("yahoo-5"                         . "\xf017")
+    ("yahoo-6"                         . "\xf017")
+    ("yahoo-7"                         . "\xf017")
+    ("yahoo-8"                         . "\xf015")
+    ("yahoo-9"                         . "\xf01a")
+
+    ))
+
+(provide 'data-weathericons)
.emacs.d/elpa/all-the-icons-20170817.642/data/data-weathericons.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/all-the-icons-autoloads.el
@@ -0,0 +1,59 @@
+;;; all-the-icons-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "all-the-icons" "all-the-icons.el" (22964 3867
+;;;;;;  256660 856000))
+;;; Generated autoloads from all-the-icons.el
+
+(autoload 'all-the-icons-icon-for-file "all-the-icons" "\
+Get the formatted icon for FILE.
+ARG-OVERRIDES should be a plist containining `:height',
+`:v-adjust' or `:face' properties like in the normal icon
+inserting functions.
+
+\(fn FILE &rest ARG-OVERRIDES)" nil nil)
+
+(autoload 'all-the-icons-icon-for-mode "all-the-icons" "\
+Get the formatted icon for MODE.
+ARG-OVERRIDES should be a plist containining `:height',
+`:v-adjust' or `:face' properties like in the normal icon
+inserting functions.
+
+\(fn MODE &rest ARG-OVERRIDES)" nil nil)
+
+(autoload 'all-the-icons--icon-info-for-buffer "all-the-icons" "\
+Get icon info for the current buffer.
+
+When F is provided, the info function is calculated with the format
+`all-the-icons-icon-%s-for-file' or `all-the-icons-icon-%s-for-mode'.
+
+\(fn &optional F)" nil nil)
+
+(autoload 'all-the-icons-install-fonts "all-the-icons" "\
+Helper function to download and install the latests fonts based on OS.
+When PFX is non-nil, ignore the prompt and just install
+
+\(fn &optional PFX)" t nil)
+
+(autoload 'all-the-icons-insert "all-the-icons" "\
+Interactive icon insertion function.
+When Prefix ARG is non-nil, insert the propertized icon.
+When FAMILY is non-nil, limit the candidates to the icon set matching it.
+
+\(fn &optional ARG FAMILY)" t nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("all-the-icons-faces.el" "all-the-icons-pkg.el")
+;;;;;;  (22964 3867 257660 856000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; all-the-icons-autoloads.el ends here
.emacs.d/elpa/all-the-icons-20170817.642/all-the-icons-faces.el
@@ -0,0 +1,225 @@
+;;; all-the-icons-faces.el --- A module of faces for all-the-icons
+
+;; Copyright (C) 2016  Dominic Charlesworth <dgc336@gmail.com>
+
+;; Author: Dominic Charlesworth <dgc336@gmail.com>
+;; Version: 1.0.0
+;; Package-Requires: ((emacs "24.3"))
+;; URL: https://github.com/domtronn/all-the-icons.el
+;; Keywords: convenient, lisp
+
+;; 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:
+
+;; This file contains all of the faces used by the package for
+;; colouring icons
+
+;;; Code:
+
+(defgroup all-the-icons-faces nil
+  "Manage how All The Icons icons are coloured and themed."
+  :prefix "all-the-icons-"
+  :group 'tools
+  :group 'all-the-icons)
+
+
+;; red
+(defface all-the-icons-red
+  '((((background dark)) :foreground "#AC4142")
+    (((background light)) :foreground "#AC4142"))
+  "Face for red icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lred
+  '((((background dark)) :foreground "#EB595A")
+    (((background light)) :foreground "#EB595A"))
+  "Face for lred icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dred
+  '((((background dark)) :foreground "#843031")
+    (((background light)) :foreground "#843031"))
+  "Face for dred icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-red-alt
+  '((((background dark)) :foreground "#ce5643")
+    (((background light)) :foreground "#843031"))
+  "Face for dred icons"
+  :group 'all-the-icons-faces)
+
+;; green
+(defface all-the-icons-green
+  '((((background dark)) :foreground "#90A959")
+    (((background light)) :foreground "#90A959"))
+  "Face for green icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lgreen
+  '((((background dark)) :foreground "#C6E87A")
+    (((background light)) :foreground "#3D6837"))
+  "Face for lgreen icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dgreen
+  '((((background dark)) :foreground "#6D8143")
+    (((background light)) :foreground "#6D8143"))
+  "Face for dgreen icons"
+  :group 'all-the-icons-faces)
+
+;; yellow
+(defface all-the-icons-yellow
+  '((((background dark)) :foreground "#FFD446")
+    (((background light)) :foreground "#FFCC0E"))
+  "Face for yellow icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lyellow
+  '((((background dark)) :foreground "#FFC16D")
+    (((background light)) :foreground "#FF9300"))
+  "Face for lyellow icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dyellow
+  '((((background dark)) :foreground "#B48D56")
+    (((background light)) :foreground "#B48D56"))
+  "Face for dyellow icons"
+  :group 'all-the-icons-faces)
+
+;; blue
+(defface all-the-icons-blue
+  '((((background dark)) :foreground "#6A9FB5")
+    (((background light)) :foreground "#6A9FB5"))
+  "Face for blue icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-blue-alt
+  '((((background dark)) :foreground "#2188b6")
+    (((background light)) :foreground "#2188b6"))
+  "Face for blue icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lblue
+  '((((background dark)) :foreground "#8FD7F4")
+    (((background light)) :foreground "#677174"))
+  "Face for lblue icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dblue
+  '((((background dark)) :foreground "#446674")
+    (((background light)) :foreground "#446674"))
+  "Face for dblue icons"
+  :group 'all-the-icons-faces)
+
+;; maroon
+(defface all-the-icons-maroon
+  '((((background dark)) :foreground "#8F5536")
+    (((background light)) :foreground "#8F5536"))
+  "Face for maroon icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lmaroon
+  '((((background dark)) :foreground "#CE7A4E")
+    (((background light)) :foreground "#CE7A4E"))
+  "Face for lmaroon icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dmaroon
+  '((((background dark)) :foreground "#72584B")
+    (((background light)) :foreground "#72584B"))
+  "Face for dmaroon icons"
+  :group 'all-the-icons-faces)
+
+;; purple
+(defface all-the-icons-purple
+  '((((background dark)) :foreground "#AA759F")
+    (((background light)) :foreground "#68295B"))
+  "Face for purple icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lpurple
+  '((((background dark)) :foreground "#E69DD6")
+    (((background light)) :foreground "#E69DD6"))
+  "Face for lpurple icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dpurple
+  '((((background dark)) :foreground "#694863")
+    (((background light)) :foreground "#694863"))
+  "Face for dpurple icons"
+  :group 'all-the-icons-faces)
+
+;; orange
+(defface all-the-icons-orange
+  '((((background dark)) :foreground "#D4843E")
+    (((background light)) :foreground "#D4843E"))
+  "Face for orange icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lorange
+  '((((background dark)) :foreground "#FFA500")
+    (((background light)) :foreground "#FFA500"))
+  "Face for lorange icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dorange
+  '((((background dark)) :foreground "#915B2D")
+    (((background light)) :foreground "#915B2D"))
+  "Face for dorange icons"
+  :group 'all-the-icons-faces)
+
+;; cyan
+(defface all-the-icons-cyan
+  '((((background dark)) :foreground "#75B5AA")
+    (((background light)) :foreground "#75B5AA"))
+  "Face for cyan icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-cyan-alt
+  '((((background dark)) :foreground "#61dafb")
+    (((background light)) :foreground "#0595bd"))
+  "Face for cyan icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lcyan
+  '((((background dark)) :foreground "#A5FDEC")
+    (((background light)) :foreground "#2C7D6E"))
+  "Face for lcyan icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dcyan
+  '((((background dark)) :foreground "#48746D")
+    (((background light)) :foreground "#48746D"))
+  "Face for dcyan icons"
+  :group 'all-the-icons-faces)
+
+;; pink
+(defface all-the-icons-pink
+  '((((background dark)) :foreground "#F2B4B8")
+    (((background light)) :foreground "#FC505B"))
+  "Face for pink icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lpink
+  '((((background dark)) :foreground "#FFBDC1")
+    (((background light)) :foreground "#FF505B"))
+  "Face for lpink icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dpink
+  '((((background dark)) :foreground "#B18286")
+    (((background light)) :foreground "#7E5D5F"))
+  "Face for dpink icons"
+  :group 'all-the-icons-faces)
+
+;; silver
+(defface all-the-icons-silver
+  '((((background dark)) :foreground "#716E68")
+    (((background light)) :foreground "#716E68"))
+  "Face for silver icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-lsilver
+  '((((background dark)) :foreground "#B9B6AA")
+    (((background light)) :foreground "#7F7869"))
+  "Face for lsilver icons"
+  :group 'all-the-icons-faces)
+(defface all-the-icons-dsilver
+  '((((background dark)) :foreground "#838484")
+    (((background light)) :foreground "#838484"))
+  "Face for dsilver icons"
+  :group 'all-the-icons-faces)
+
+
+(provide 'all-the-icons-faces)
+;;; all-the-icons-faces.el ends here
.emacs.d/elpa/all-the-icons-20170817.642/all-the-icons-faces.elc
Binary file
.emacs.d/elpa/all-the-icons-20170817.642/all-the-icons-pkg.el
@@ -0,0 +1,9 @@
+(define-package "all-the-icons" "20170817.642" "A library for inserting Developer icons"
+  '((emacs "24.3")
+    (font-lock+ "0")
+    (memoize "1.0.1"))
+  :url "https://github.com/domtronn/all-the-icons.el" :keywords
+  '("convenient" "lisp"))
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
.emacs.d/elpa/all-the-icons-20170817.642/all-the-icons.el
@@ -0,0 +1,831 @@
+;;; all-the-icons.el --- A library for inserting Developer icons
+
+;; Copyright (C) 2016  Dominic Charlesworth <dgc336@gmail.com>
+
+;; Author: Dominic Charlesworth <dgc336@gmail.com>
+;; Version: 2.6.4
+;; Package-Requires: ((emacs "24.3") (font-lock+ "0") (memoize "1.0.1"))
+;; URL: https://github.com/domtronn/all-the-icons.el
+;; Keywords: convenient, lisp
+
+;; 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:
+
+;; This package is a utility for using and formatting various Icon
+;; fonts within Emacs.  Icon Fonts allow you to propertize and format
+;; icons the same way you would normal text.  This enables things such
+;; as better scaling of and anti aliasing of the icons.
+
+;; This package was inspired by
+
+;; - `mode-icons' for Emacs, found at https://github.com/ryuslash/mode-icons
+;; - `file-icons' for Atom, found at https://atom.io/packages/file-icons
+
+;; Currently, this package provides an interface to the following Icon Fonts
+
+;; - Atom File Icons,       found at https://atom.io/packages/file-icons
+;; - FontAwesome Icons,     found at http://fontawesome.io/
+;; - GitHub Octicons,       found at http://octicons.github.com
+;; - Material Design Icons, found at http://google.github.io/material-design-icons/
+;; - Weather Icons,         found at https://erikflowers.github.io/weather-icons/
+;; - AllTheIcons,           a custom Icon Font maintained as part of this package
+
+;; Requests for new icons will be accepted and added to the AllTheIcons Icon Font
+
+;;; Usage:
+
+;; The simplest usage for this package is to use the following functions;
+
+;;   `all-the-icons-icon-for-buffer'
+;;   `all-the-icons-icon-for-file'
+;;   `all-the-icons-icon-for-mode'
+
+;; Which can be used to get a formatted icon for the current buffer, a
+;; file name or a major mode respectively.  e.g.
+
+;;   (insert (all-the-icons-icon-for-file "foo.js"))
+
+;; Inserts a JavaScript icon formatted like this
+
+;;   #("some-icon" 0 1 (display (raise -0.24)
+;;              face (:family "dev-icons" :height 1.08 :foreground "#FFD446")))
+
+;; You can also insert icons directly using the individual icon family
+;; functions
+
+;;   `all-the-icons-alltheicon'     // Custom font with fewest icons
+;;   `all-the-icons-devicon'        // Developer Icons
+;;   `all-the-icons-faicon'         // Font Awesome Icons
+;;   `all-the-icons-fileicon'       // File Icons from the Atom File Icons package
+;;   `all-the-icons-octicon'        // GitHub Octicons
+;;   `all-the-icons-material'       // Material Design Icons
+;;   `all-the-icons-wicon'          // Weather Icons
+
+;; You can call these functions with the icon name you want to insert, e.g.
+
+;;   (all-the-icons-octicon "file-binary")  // GitHub Octicon for Binary File
+;;   (all-the-icons-faicon  "cogs")         // FontAwesome icon for cogs
+;;   (all-the-icons-wicon   "tornado")      // Weather Icon for tornado
+
+;; A list of all the icon names for the different font families can be
+;; found in the data directory, or by inspecting the alist variables.
+;; All the alist variables are prefixed with `all-the-icons-data/'
+
+;;; Code:
+(require 'font-lock+)
+(require 'memoize)
+(require 'cl-lib)
+
+(require 'data-alltheicons  "./data/data-alltheicons.el")
+(require 'data-faicons      "./data/data-faicons.el")
+(require 'data-fileicons    "./data/data-fileicons.el")
+(require 'data-octicons     "./data/data-octicons.el")
+(require 'data-weathericons "./data/data-weathericons.el")
+(require 'data-material     "./data/data-material.el")
+
+(require 'all-the-icons-faces)
+
+;;; Custom Variables
+(defgroup all-the-icons nil
+  "Manage how All The Icons formats icons."
+  :prefix "all-the-icons-"
+  :group 'appearance
+  :group 'convenience)
+
+(defcustom all-the-icons-color-icons t
+  "Whether or not to include a foreground colour when formatting the icon."
+  :group 'all-the-icons
+  :type 'boolean)
+
+(defcustom all-the-icons-scale-factor 1.2
+  "The base Scale Factor for the `height' face property of an icon."
+  :group 'all-the-icons
+  :type 'number)
+
+(defcustom all-the-icons-default-adjust -0.2
+  "The default adjustment to be made to the `raise' display property of an icon."
+  :group 'all-the-icons
+  :type 'number)
+
+(defvar all-the-icons-font-families '() "List of defined icon font families.")
+(defvar all-the-icons-font-names '() "List of defined font file names this package was built with.")
+
+(defvar all-the-icons-icon-alist
+  '(
+    ;; Meta
+    ("\\.tags"          all-the-icons-octicon "tag"                     :height 1.0 :v-adjust 0.0 :face all-the-icons-blue)
+    ("^TAGS$"           all-the-icons-octicon "tag"                     :height 1.0 :v-adjust 0.0 :face all-the-icons-blue)
+    ("\\.log"           all-the-icons-octicon "bug"                     :height 1.0 :v-adjust 0.0 :face all-the-icons-maroon)
+
+    ;;
+    ("\\.key$"          all-the-icons-octicon "key"                     :v-adjust 0.0 :face all-the-icons-lblue)
+    ("\\.pem$"          all-the-icons-octicon "key"                     :v-adjust 0.0 :face all-the-icons-orange)
+    ("\\.p12$"          all-the-icons-octicon "key"                     :v-adjust 0.0 :face all-the-icons-dorange)
+    ("\\.crt$"          all-the-icons-octicon "key"                     :v-adjust 0.0 :face all-the-icons-lblue)
+    ("\\.pub$"          all-the-icons-octicon "key"                     :v-adjust 0.0 :face all-the-icons-blue)
+    ("\\.gpg$"          all-the-icons-octicon "key"                     :v-adjust 0.0 :face all-the-icons-lblue)
+
+    ("^TODO$"           all-the-icons-octicon "checklist"               :v-adjust 0.0 :face all-the-icons-lyellow)
+    ("^LICENSE$"        all-the-icons-octicon "book"                    :height 1.0 :v-adjust 0.0 :face all-the-icons-blue)
+    ("^readme"          all-the-icons-octicon "book"                    :height 1.0 :v-adjust 0.0 :face all-the-icons-lcyan)
+
+    ("\\.fish"          all-the-icons-alltheicon "terminal"             :face all-the-icons-lpink)
+    ("\\.zsh"           all-the-icons-alltheicon "terminal"             :face all-the-icons-lcyan)
+    ("\\.sh"            all-the-icons-alltheicon "terminal"             :face all-the-icons-purple)
+
+    ;; Config
+    ("\\.node"          all-the-icons-alltheicon "nodejs"               :height 1.0  :face all-the-icons-green)
+    ("\\.babelrc$"      all-the-icons-fileicon "babel"                  :face all-the-icons-yellow)
+    ("\\.bashrc$"       all-the-icons-alltheicon "script"               :height 0.9  :face all-the-icons-dpink)
+    ("\\.bowerrc$"      all-the-icons-alltheicon "bower"                :height 1.0 :v-adjust 0.0 :face all-the-icons-silver)
+    ("^bower.json$"     all-the-icons-alltheicon "bower"                :height 1.0 :v-adjust 0.0 :face all-the-icons-lorange)
+    ("\\.ini$"          all-the-icons-octicon "settings"                :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.eslintignore"  all-the-icons-fileicon "eslint"                 :height 0.9  :face all-the-icons-purple)
+    ("\\.eslint"        all-the-icons-fileicon "eslint"                 :height 0.9  :face all-the-icons-lpurple)
+    ("\\.git"           all-the-icons-alltheicon "git"                  :height 1.0  :face all-the-icons-lred)
+    ("nginx"            all-the-icons-fileicon "nginx"                  :height 0.9  :face all-the-icons-dgreen)
+    ("apache"           all-the-icons-alltheicon "apache"               :height 0.9  :face all-the-icons-dgreen)
+    ("^Makefile$"       all-the-icons-fileicon "gnu"                    :face all-the-icons-dorange)
+    ("\\.mk$"           all-the-icons-fileicon "gnu"                    :face all-the-icons-dorange)
+
+    ("\\.dockerignore$" all-the-icons-fileicon "dockerfile"             :height 1.2  :face all-the-icons-dblue)
+    ("^\\.?Dockerfile"  all-the-icons-fileicon "dockerfile"             :face all-the-icons-blue)
+    ("^Brewfile$"       all-the-icons-faicon "beer"                     :face all-the-icons-lsilver)
+    ("\\.npmignore"     all-the-icons-fileicon "npm"                    :face all-the-icons-dred)
+    ("^package.json$"   all-the-icons-fileicon "npm"                    :face all-the-icons-red)
+    ("^package.lock.json$" all-the-icons-fileicon "npm"                 :face all-the-icons-dred)
+    ("^yarn\.lock"      all-the-icons-fileicon "yarn"                   :face all-the-icons-blue-alt)
+
+    ("\.xml$"           all-the-icons-faicon "file-code-o"              :height 0.95 :face all-the-icons-lorange)
+
+    ;; ;; AWS
+    ("^stack.*.json$"   all-the-icons-alltheicon "aws"                  :face all-the-icons-orange)
+
+    
+    ("^serverless\\.yml$" all-the-icons-faicon "bolt"                   :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.[jc]son$"      all-the-icons-octicon "settings"                :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.ya?ml$"        all-the-icons-octicon "settings"                :v-adjust 0.0 :face all-the-icons-dyellow)
+
+    ("\\.pkg$"          all-the-icons-octicon "package"                 :v-adjust 0.0 :face all-the-icons-dsilver)
+    ("\\.rpm$"          all-the-icons-octicon "package"                 :v-adjust 0.0 :face all-the-icons-dsilver)
+
+    ("\\.elc$"          all-the-icons-octicon "file-binary"             :v-adjust 0.0 :face all-the-icons-dsilver)
+
+    ("\\.gz$"           all-the-icons-octicon "file-binary"             :v-adjust 0.0 :face all-the-icons-lmaroon)
+    ("\\.zip$"          all-the-icons-octicon "file-zip"                :v-adjust 0.0 :face all-the-icons-lmaroon)
+    ("\\.7z$"           all-the-icons-octicon "file-zip"                :v-adjust 0.0 :face all-the-icons-lmaroon)
+
+    ("\\.dat$"          all-the-icons-faicon "bar-chart"                :face all-the-icons-cyan :height 0.9)
+    ;; lock files
+    ("~$"               all-the-icons-octicon "lock"                    :v-adjust 0.0 :face all-the-icons-maroon)
+
+    ("\\.dmg$"          all-the-icons-octicon "tools"                   :v-adjust 0.0 :face all-the-icons-lsilver)
+    ("\\.dll$"          all-the-icons-faicon "cogs"                     :face all-the-icons-silver)
+    ("\\.DS_STORE$"     all-the-icons-faicon "cogs"                     :face all-the-icons-silver)
+
+    ;; Source Codes
+    ("\\.scpt$"         all-the-icons-fileicon "apple"                  :face all-the-icons-pink)
+    ("\\.aup$"          all-the-icons-fileicon "audacity"               :face all-the-icons-yellow)
+
+    ("\\.elm"           all-the-icons-fileicon "elm"                    :face all-the-icons-blue)
+
+    ("\\.erl$"          all-the-icons-alltheicon "erlang"               :face all-the-icons-red :v-adjust -0.1 :height 0.9)
+    ("\\.hrl$"          all-the-icons-alltheicon "erlang"               :face all-the-icons-dred :v-adjust -0.1 :height 0.9)
+
+    ("\\.eex$"          all-the-icons-alltheicon "elixir"               :face all-the-icons-lorange :v-adjust -0.1 :height 0.9)
+    ("\\.ex$"           all-the-icons-alltheicon "elixir"               :face all-the-icons-lpurple :v-adjust -0.1 :height 0.9)
+    ("\\.exs$"          all-the-icons-alltheicon "elixir"               :face all-the-icons-lred :v-adjust -0.1 :height 0.9)
+    ("^mix.lock$"       all-the-icons-alltheicon "elixir"               :face all-the-icons-lyellow :v-adjust -0.1 :height 0.9)
+
+    ("\\.java$"         all-the-icons-alltheicon "java"                 :height 1.0  :face all-the-icons-purple)
+
+    ("\\.go$"           all-the-icons-alltheicon "go"                   :height 1.0  :face all-the-icons-blue)
+
+    ("\\.mp3$"          all-the-icons-faicon "volume-up"                :face all-the-icons-dred)
+    ("\\.wav$"          all-the-icons-faicon "volume-up"                :face all-the-icons-dred)
+    ("\\.m4a$"          all-the-icons-faicon "volume-up"                :face all-the-icons-dred)
+
+    ("\\.jl$"           all-the-icons-fileicon "julia"                  :v-adjust 0.0 :face all-the-icons-purple)
+    ("\\.matlab$"       all-the-icons-fileicon "matlab"                 :face all-the-icons-orange)
+
+    ("\\.p[ml]$"        all-the-icons-alltheicon "perl"                 :face all-the-icons-lorange)
+    ("\\.pl6$"          all-the-icons-fileicon "perl6"                  :face all-the-icons-cyan)
+    ("\\.pod$"          all-the-icons-alltheicon "perldocs"             :height 1.2  :face all-the-icons-lgreen)
+
+    ("\\.php$"          all-the-icons-fileicon "php"                    :face all-the-icons-lsilver)
+    ("\\.pony$"         all-the-icons-fileicon "pony"                   :face all-the-icons-maroon)
+    ("\\.prol?o?g?$"    all-the-icons-alltheicon "prolog"               :height 1.1  :face all-the-icons-lmaroon)
+    ("\\.py$"           all-the-icons-alltheicon "python"               :height 1.0  :face all-the-icons-dblue)
+
+    ("\\.rkt$"          all-the-icons-fileicon "racket"                 :height 1.2 :face all-the-icons-red)
+    ("\\.gem$"          all-the-icons-alltheicon "ruby-alt"             :face all-the-icons-red)
+    ("_?test\\.rb$"        all-the-icons-fileicon "test-ruby"            :height 1.0 :v-adjust 0.0 :face all-the-icons-red)
+    ("_?test_helper\\.rb$" all-the-icons-fileicon "test-ruby"            :height 1.0 :v-adjust 0.0 :face all-the-icons-dred)
+    ("\\.rb$"           all-the-icons-octicon "ruby"                    :v-adjust 0.0 :face all-the-icons-lred)
+    ("\\.rs$"           all-the-icons-alltheicon "rust"                 :height 1.2  :face all-the-icons-maroon)
+    ("\\.rlib$"         all-the-icons-alltheicon "rust"                 :height 1.2  :face all-the-icons-dmaroon)
+    ("\\.r[ds]?x?$"     all-the-icons-fileicon "R"                      :face all-the-icons-lblue)
+
+    ("\\.scala$"        all-the-icons-alltheicon "scala"                :face all-the-icons-red)
+    ("\\.scm$"          all-the-icons-fileicon   "scheme"               :height 1.2 :face all-the-icons-red)
+    ("\\.swift$"        all-the-icons-alltheicon "swift"                :height 1.0 :v-adjust -0.1 :face all-the-icons-green)
+
+    ("-?spec\\.ts$"     all-the-icons-fileicon "test-typescript"        :height 1.0 :v-adjust 0.0 :face all-the-icons-blue)
+    ("-?test\\.ts$"     all-the-icons-fileicon "test-typescript"        :height 1.0 :v-adjust 0.0 :face all-the-icons-blue)
+    ("-?spec\\.js$"     all-the-icons-fileicon "test-js"                :height 1.0 :v-adjust 0.0 :face all-the-icons-lpurple)
+    ("-?test\\.js$"     all-the-icons-fileicon "test-js"                :height 1.0 :v-adjust 0.0 :face all-the-icons-lpurple)
+    ("-?spec\\.jsx$"    all-the-icons-fileicon "test-react"             :height 1.0 :v-adjust 0.0 :face all-the-icons-blue-alt)
+    ("-?test\\.jsx$"    all-the-icons-fileicon "test-react"             :height 1.0 :v-adjust 0.0 :face all-the-icons-blue-alt)
+
+    ("-?spec\\."        all-the-icons-fileicon "test-generic"           :height 1.0 :v-adjust 0.0 :face all-the-icons-dgreen)
+    ("-?test\\."        all-the-icons-fileicon "test-generic"           :height 1.0 :v-adjust 0.0 :face all-the-icons-dgreen)
+
+    ;; There seems to be a a bug with this font icon which does not
+    ;; let you propertise it without it reverting to being a lower
+    ;; case phi
+    ("\\.c$"            all-the-icons-alltheicon "c-line"               :face all-the-icons-blue)
+    ("\\.h$"            all-the-icons-alltheicon "c-line"               :face all-the-icons-purple)
+    ("\\.m$"            all-the-icons-fileicon "apple"                  :v-adjust 0.0 :height 1.0)
+    ("\\.mm$"           all-the-icons-fileicon "apple"                  :v-adjust 0.0 :height 1.0)
+
+    ("\\.c\\(c\\|pp\\|xx\\)$"   all-the-icons-alltheicon "cplusplus-line"       :v-adjust -0.2 :face all-the-icons-blue)
+    ("\\.h\\(h\\|pp\\|xx\\)$"   all-the-icons-alltheicon "cplusplus-line"       :v-adjust -0.2 :face all-the-icons-purple)
+
+    ("\\.csx?$"         all-the-icons-alltheicon "csharp-line"          :face all-the-icons-dblue)
+
+    ("\\.cljc?$"        all-the-icons-alltheicon "clojure-line"         :height 1.0 :face all-the-icons-blue :v-adjust 0.0)
+    ("\\.cljs$"         all-the-icons-fileicon "cljs"                   :height 1.0 :face all-the-icons-dblue :v-adjust 0.0)
+
+    ("\\.coffee$"       all-the-icons-alltheicon "coffeescript"         :height 1.0  :face all-the-icons-maroon)
+    ("\\.iced$"         all-the-icons-alltheicon "coffeescript"         :height 1.0  :face all-the-icons-lmaroon)
+
+    ;; Git
+    ("^MERGE_"          all-the-icons-octicon "git-merge"               :v-adjust 0.0 :face all-the-icons-red)
+    ("^COMMIT_EDITMSG"  all-the-icons-octicon "git-commit"              :v-adjust 0.0 :face all-the-icons-red)
+
+    ;; Lisps
+    ("\\.cl$"           all-the-icons-fileicon "clisp"                  :face all-the-icons-lorange)
+    ("\\.l$"            all-the-icons-fileicon "lisp"                   :face all-the-icons-orange)
+    ("\\.el$"           all-the-icons-fileicon "elisp"                  :height 1.0 :v-adjust -0.2 :face all-the-icons-purple)
+
+    ;; Stylesheeting
+    ("\\.css$"          all-the-icons-alltheicon "css3"                 :face all-the-icons-yellow)
+    ("\\.scss$"         all-the-icons-alltheicon "sass"                 :face all-the-icons-pink)
+    ("\\.sass$"         all-the-icons-alltheicon "sass"                 :face all-the-icons-dpink)
+    ("\\.less$"         all-the-icons-alltheicon "less"                 :height 0.8  :face all-the-icons-dyellow)
+    ("\\.postcss$"      all-the-icons-fileicon "postcss"                :face all-the-icons-dred)
+    ("\\.sss$"          all-the-icons-fileicon "postcss"                :face all-the-icons-dred)
+    ("\\.styl$"         all-the-icons-alltheicon "stylus"               :face all-the-icons-lgreen)
+    ("stylelint"        all-the-icons-fileicon "stylelint"              :face all-the-icons-lyellow)
+    ("\\.csv$"          all-the-icons-octicon "graph"                   :v-adjust 0.0 :face all-the-icons-dblue)
+
+    ("\\.hs$"           all-the-icons-alltheicon "haskell"              :height 1.0  :face all-the-icons-red)
+
+    ;; Web modes
+    ("\\.inky-haml$"    all-the-icons-fileicon "haml"                   :face all-the-icons-lyellow)
+    ("\\.haml$"         all-the-icons-fileicon "haml"                   :face all-the-icons-lyellow)
+    ("\\.html?$"        all-the-icons-alltheicon "html5"                :face all-the-icons-orange)
+    ("\\.inky-erb?$"    all-the-icons-alltheicon "html5"                :face all-the-icons-lred)
+    ("\\.erb$"          all-the-icons-alltheicon "html5"                :face all-the-icons-lred)
+    ("\\.hbs$"          all-the-icons-fileicon "moustache"              :face all-the-icons-green)
+    ("\\.inky-slim$"    all-the-icons-octicon "dashboard"               :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.slim$"         all-the-icons-octicon "dashboard"               :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.jade$"         all-the-icons-fileicon "jade"                   :face all-the-icons-red)
+    ("\\.pug$"          all-the-icons-fileicon "pug-alt"                :face all-the-icons-red)
+
+    ;; JavaScript
+    ("^gulpfile"        all-the-icons-alltheicon "gulp"                 :height 1.0  :face all-the-icons-lred)
+    ("^gruntfile"       all-the-icons-alltheicon "grunt"                :height 1.0 :v-adjust -0.1 :face all-the-icons-lyellow)
+    ("^webpack"         all-the-icons-fileicon "webpack"                :face all-the-icons-lblue)
+
+    ("\\.d3\\.?js"      all-the-icons-alltheicon "d3"                   :height 0.8  :face all-the-icons-lgreen)
+
+    ("\\.re$"            all-the-icons-fileicon "reason"                :height 1.0  :face all-the-icons-red-alt)
+    ("\\.rei$"           all-the-icons-fileicon "reason"                :height 1.0  :face all-the-icons-dred)
+    ("\\.ml$"            all-the-icons-fileicon "ocaml"                 :height 1.0  :face all-the-icons-lpink)
+    ("\\.mli$"           all-the-icons-fileicon "ocaml"                 :height 1.0  :face all-the-icons-dpink)
+
+    ("\\.react"         all-the-icons-alltheicon "react"                :height 1.1  :face all-the-icons-lblue)
+    ("\\.d\\.ts$"       all-the-icons-fileicon "typescript"             :height 1.0 :v-adjust -0.1 :face all-the-icons-cyan-alt)
+    ("\\.ts$"           all-the-icons-fileicon "typescript"             :height 1.0 :v-adjust -0.1 :face all-the-icons-blue-alt)
+    ("\\.js$"           all-the-icons-alltheicon "javascript"           :height 1.0 :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.es[0-9]$"      all-the-icons-alltheicon "javascript"           :height 1.0 :v-adjust 0.0 :face all-the-icons-yellow)
+    ("\\.jsx$"          all-the-icons-fileicon "jsx-2"                  :height 1.0 :v-adjust -0.1 :face all-the-icons-cyan-alt)
+    ("\\.njs$"          all-the-icons-alltheicon "nodejs"               :height 1.2  :face all-the-icons-lgreen)
+    ("\\.vue$"          all-the-icons-fileicon "vue"                    :face all-the-icons-lgreen)
+
+    ;; File Types
+    ("\\.ico$"          all-the-icons-octicon "file-media"              :v-adjust 0.0 :face all-the-icons-blue)
+    ("\\.png$"          all-the-icons-octicon "file-media"              :v-adjust 0.0 :face all-the-icons-orange)
+    ("\\.gif$"          all-the-icons-octicon "file-media"              :v-adjust 0.0 :face all-the-icons-green)
+    ("\\.jpe?g$"        all-the-icons-octicon "file-media"              :v-adjust 0.0 :face all-the-icons-dblue)
+    ("\\.svg$"          all-the-icons-alltheicon "svg"                  :height 0.9  :face all-the-icons-lgreen)
+
+    ;; Video
+    ("\\.mov"           all-the-icons-faicon "film"                     :face all-the-icons-blue)
+    ("\\.mp4"           all-the-icons-faicon "film"                     :face all-the-icons-blue)
+    ("\\.ogv"           all-the-icons-faicon "film"                     :face all-the-icons-dblue)
+
+    ;; Fonts
+    ("\\.ttf$"          all-the-icons-fileicon "font"                   :v-adjust 0.0 :face all-the-icons-dcyan)
+    ("\\.woff2?$"       all-the-icons-fileicon "font"                   :v-adjust 0.0 :face all-the-icons-cyan)
+
+    ;; Doc
+    ("\\.pdf"           all-the-icons-octicon "file-pdf"                :v-adjust 0.0 :face all-the-icons-dred)
+    ("\\.te?xt"         all-the-icons-octicon "file-text"               :v-adjust 0.0 :face all-the-icons-cyan)
+    ("\\.doc[xm]?$"     all-the-icons-fileicon "word"                   :face all-the-icons-blue)
+    ("\\.texi?$"        all-the-icons-fileicon "tex"                    :face all-the-icons-lred)
+    ("\\.md$"           all-the-icons-octicon "markdown"                :v-adjust 0.0 :face all-the-icons-lblue)
+    ("\\.bib$"          all-the-icons-fileicon "bib"                    :face all-the-icons-maroon)
+    ("\\.org$"          all-the-icons-fileicon "org"                    :face all-the-icons-lgreen)
+
+    ("\\.pp[st]$"       all-the-icons-fileicon "powerpoint"             :face all-the-icons-orange)
+    ("\\.pp[st]x$"      all-the-icons-fileicon "powerpoint"             :face all-the-icons-red)
+    ("\\.knt$"          all-the-icons-fileicon "powerpoint"             :face all-the-icons-cyan)
+
+    ("bookmark"         all-the-icons-octicon "bookmark"                :height 1.1 :v-adjust 0.0 :face all-the-icons-lpink)
+    ("\\.cache$"        all-the-icons-octicon "database"                :height 1.0 :v-adjust 0.0 :face all-the-icons-green)
+
+    ("^\\*scratch\\*$"  all-the-icons-faicon "sticky-note"              :face all-the-icons-lyellow)
+    ("^\\*scratch.*"    all-the-icons-faicon "sticky-note"              :face all-the-icons-yellow)
+    ("^\\*new-tab\\*$"  all-the-icons-material "star"                     :face all-the-icons-cyan)
+
+    ("^\\."             all-the-icons-octicon "gear"                    :v-adjust 0.0)
+    ("."                all-the-icons-faicon "file-o"                   :height 0.8 :v-adjust 0.0 :face all-the-icons-dsilver)))
+
+(defvar all-the-icons-dir-icon-alist
+  '(
+    ("trash"            all-the-icons-faicon "trash-o"          :height 1.2 :v-adjust -0.1)
+    ("dropbox"          all-the-icons-faicon "dropbox"          :height 1.0 :v-adjust -0.1)
+    ("google[ _-]drive" all-the-icons-alltheicon "google-drive" :height 1.3 :v-adjust -0.1)
+    ("^atom$"           all-the-icons-alltheicon "atom"         :height 1.2 :v-adjust -0.1)
+    ("documents"        all-the-icons-faicon "book"             :height 1.0 :v-adjust -0.1)
+    ("download"         all-the-icons-faicon "cloud-download"   :height 0.9 :v-adjust -0.2)
+    ("desktop"          all-the-icons-octicon "device-desktop"  :height 1.0 :v-adjust -0.1)
+    ("pictures"         all-the-icons-faicon "picture-o"        :height 0.9 :v-adjust -0.2)
+    ("photos"           all-the-icons-faicon "camera-retro"     :height 1.0 :v-adjust -0.1)
+    ("music"            all-the-icons-faicon "music"            :height 1.0 :v-adjust -0.1)
+    ("movies"           all-the-icons-faicon "film"             :height 0.9 :v-adjust -0.1)
+    ("code"             all-the-icons-octicon "code"            :height 1.1 :v-adjust -0.1)
+    ("workspace"        all-the-icons-octicon "code"            :height 1.1 :v-adjust -0.1)
+    ("test"             all-the-icons-fileicon "test-dir"       :height 0.9)
+    ("\\.git"           all-the-icons-alltheicon "git"          :height 1.0)
+    ("."                all-the-icons-octicon "file-directory"  :height 1.0 :v-adjust -0.1)
+    ))
+
+(defvar all-the-icons-weather-icon-alist
+  '(
+    ("tornado"               all-the-icons-wicon "tornado")
+    ("hurricane"             all-the-icons-wicon "hurricane")
+    ("thunderstorms"         all-the-icons-wicon "thunderstorm")
+    ("sunny"                 all-the-icons-wicon "day-sunny")
+    ("rain.*snow"            all-the-icons-wicon "rain-mix")
+    ("rain.*hail"            all-the-icons-wicon "rain-mix")
+    ("sleet"                 all-the-icons-wicon "sleet")
+    ("hail"                  all-the-icons-wicon "hail")
+    ("drizzle"               all-the-icons-wicon "sprinkle")
+    ("rain"                  all-the-icons-wicon "showers" :height 1.1 :v-adjust 0.0)
+    ("showers"               all-the-icons-wicon "showers")
+    ("blowing.*snow"         all-the-icons-wicon "snow-wind")
+    ("snow"                  all-the-icons-wicon "snow")
+    ("dust"                  all-the-icons-wicon "dust")
+    ("fog"                   all-the-icons-wicon "fog")
+    ("haze"                  all-the-icons-wicon "day-haze")
+    ("smoky"                 all-the-icons-wicon "smoke")
+    ("blustery"              all-the-icons-wicon "cloudy-windy")
+    ("windy"                 all-the-icons-wicon "cloudy-gusts")
+    ("cold"                  all-the-icons-wicon "snowflake-cold")
+    ("partly.*cloudy.*night" all-the-icons-wicon "night-alt-partly-cloudy")
+    ("partly.*cloudy"        all-the-icons-wicon "day-cloudy-high")
+    ("cloudy.*night"         all-the-icons-wicon "night-alt-cloudy")
+    ("cxloudy.*day"          all-the-icons-wicon "day-cloudy")
+    ("cloudy"                all-the-icons-wicon "cloudy")
+    ("clear.*night"          all-the-icons-wicon "night-clear")
+    ("fair.*night"           all-the-icons-wicon "stars")
+    ("fair.*day"             all-the-icons-wicon "horizon")
+    ("hot"                   all-the-icons-wicon "hot")
+    ("not.*available"        all-the-icons-wicon "na")
+    ))
+
+(defvar all-the-icons-mode-icon-alist
+  '(
+    (emacs-lisp-mode           all-the-icons-fileicon "elisp"              :height 1.0 :v-adjust -0.2 :face all-the-icons-purple)
+    (inferior-emacs-lisp-mode  all-the-icons-fileicon "elisp"              :height 1.0 :v-adjust -0.2 :face all-the-icons-lblue)
+    (dired-mode                all-the-icons-octicon "file-directory"      :v-adjust 0.0)
+    (lisp-interaction-mode     all-the-icons-fileicon "lisp"               :v-adjust -0.1 :face all-the-icons-orange)
+    (org-mode                  all-the-icons-fileicon "org"                :v-adjust 0.0 :face all-the-icons-lgreen)
+    (typescript-mode           all-the-icons-fileicon "typescript"         :v-adjust -0.1 :face all-the-icons-blue-alt)
+    (js-mode                   all-the-icons-alltheicon "javascript"       :v-adjust -0.1 :face all-the-icons-yellow)
+    (js-jsx-mode               all-the-icons-alltheicon "javascript"       :v-adjust -0.1 :face all-the-icons-yellow)
+    (js2-mode                  all-the-icons-alltheicon "javascript"       :v-adjust -0.1 :face all-the-icons-yellow)
+    (js3-mode                  all-the-icons-alltheicon "javascript"       :v-adjust -0.1 :face all-the-icons-yellow)
+    (rjsx-mode                 all-the-icons-fileicon "jsx-2"              :v-adjust -0.1 :face all-the-icons-cyan-alt)
+    (term-mode                 all-the-icons-octicon "terminal"            :v-adjust 0.2)
+    (eshell-mode               all-the-icons-octicon "terminal"            :v-adjust 0.0 :face all-the-icons-purple)
+    (magit-refs-mode           all-the-icons-octicon "git-branch"          :v-adjust 0.0 :face all-the-icons-red)
+    (magit-process-mode        all-the-icons-octicon "mark-github"         :v-adjust 0.0)
+    (magit-diff-mode           all-the-icons-octicon "git-compare"         :v-adjust 0.0 :face all-the-icons-lblue)
+    (ediff-mode                all-the-icons-octicon "git-compare"         :v-adjust 0.0 :Face all-the-icons-red)
+    (comint-mode               all-the-icons-faicon "terminal"             :v-adjust 0.0 :face all-the-icons-lblue)
+    (eww-mode                  all-the-icons-faicon "firefox"              :v-adjust -0.1 :face all-the-icons-red)
+    (org-agenda-mode           all-the-icons-octicon "checklist"           :v-adjust 0.0 :face all-the-icons-lgreen)
+    (cfw:calendar-mode         all-the-icons-octicon "calendar"            :v-adjust 0.0)
+    (ibuffer-mode              all-the-icons-faicon "files-o"              :v-adjust 0.0 :face all-the-icons-dsilver)
+    (messages-buffer-mode      all-the-icons-faicon "stack-overflow"       :v-adjust -0.1)
+    (help-mode                 all-the-icons-faicon "info"                 :v-adjust -0.1 :face all-the-icons-purple)
+    (benchmark-init/tree-mode  all-the-icons-octicon "dashboard"           :v-adjust 0.0)
+    (jenkins-mode              all-the-icons-fileicon "jenkins"            :face all-the-icons-blue)
+    (magit-popup-mode          all-the-icons-alltheicon "git"              :face all-the-icons-red)
+    (magit-status-mode         all-the-icons-alltheicon "git"              :face all-the-icons-lred)
+    (magit-log-mode            all-the-icons-alltheicon "git"              :face all-the-icons-green)
+    (Custom-mode               all-the-icons-octicon "settings")
+
+    ;; Special matcher for Web Mode based on the `web-mode-content-type' of the current buffer
+    (web-mode             all-the-icons--web-mode-icon)
+
+    (fundamental-mode                   all-the-icons-fileicon "elisp"            :height 1.0 :v-adjust -0.2 :face all-the-icons-dsilver)
+    (special-mode                       all-the-icons-fileicon "elisp"            :height 1.0 :v-adjust -0.2 :face all-the-icons-yellow)
+    (text-mode                          all-the-icons-octicon "file-text"         :v-adjust 0.0 :face all-the-icons-cyan)
+    (ruby-mode                          all-the-icons-alltheicon "ruby-alt"       :face all-the-icons-lred)
+    (inf-ruby-mode                      all-the-icons-alltheicon "ruby-alt"       :face all-the-icons-red)
+    (projectile-rails-compilation-mode  all-the-icons-alltheicon "ruby-alt"       :face all-the-icons-red)
+    (rspec-compilation-mode             all-the-icons-alltheicon "ruby-alt"       :face all-the-icons-red)
+    (rake-compilation-mode              all-the-icons-alltheicon "ruby-alt"       :face all-the-icons-red)
+    (shell-mode                         all-the-icons-alltheicon "terminal"       :face all-the-icons-purple)
+    (fish-mode                          all-the-icons-alltheicon "terminal"       :face all-the-icons-lpink)
+    (nginx-mode                         all-the-icons-fileicon "nginx"            :height 0.9  :face all-the-icons-dgreen)
+    (apache-mode                        all-the-icons-alltheicon "apache"         :height 0.9  :face all-the-icons-dgreen)
+    (makefile-mode                      all-the-icons-fileicon "gnu"              :face all-the-icons-dorange)
+    (dockerfile-mode                    all-the-icons-fileicon "dockerfile"       :face all-the-icons-blue)
+    (docker-compose-mode                all-the-icons-fileicon "dockerfile"       :face all-the-icons-lblue)
+    (xml-mode                           all-the-icons-faicon "file-code-o"        :height 0.95 :face all-the-icons-lorange)
+    (json-mode                          all-the-icons-octicon "settings"          :face all-the-icons-yellow)
+    (yaml-mode                          all-the-icons-octicon "settings"          :v-adjust 0.0 :face all-the-icons-dyellow)
+    (elisp-byte-code-mode               all-the-icons-octicon "file-binary"       :v-adjust 0.0 :face all-the-icons-dsilver)
+    (archive-mode                       all-the-icons-octicon "file-zip"          :v-adjust 0.0 :face all-the-icons-lmaroon)
+    (elm-mode                           all-the-icons-fileicon "elm"              :face all-the-icons-blue)
+    (erlang-mode                        all-the-icons-alltheicon "erlang"         :face all-the-icons-red :v-adjust -0.1 :height 0.9)
+    (elixir-mode                        all-the-icons-alltheicon "elixir"         :face all-the-icons-lorange :v-adjust -0.1 :height 0.9)
+    (java-mode                          all-the-icons-alltheicon "java"           :height 1.0  :face all-the-icons-purple)
+    (go-mode                            all-the-icons-alltheicon "go"             :height 1.0  :face all-the-icons-blue)
+    (matlab-mode                        all-the-icons-fileicon "matlab"           :face all-the-icons-orange)
+    (perl-mode                          all-the-icons-alltheicon "perl"           :face all-the-icons-lorange)
+    (cperl-mode                         all-the-icons-alltheicon "perl"           :face all-the-icons-lorange)
+    (php-mode                           all-the-icons-fileicon "php"              :face all-the-icons-lsilver)
+    (prolog-mode                        all-the-icons-alltheicon "prolog"         :height 1.1  :face all-the-icons-lmaroon)
+    (python-mode                        all-the-icons-alltheicon "python"         :height 1.0  :face all-the-icons-dblue)
+    (racket-mode                        all-the-icons-fileicon "racket"           :height 1.2 :face all-the-icons-red)
+    (rust-mode                          all-the-icons-alltheicon "rust"           :height 1.2  :face all-the-icons-maroon)
+    (scala-mode                         all-the-icons-alltheicon "scala"          :face all-the-icons-red)
+    (scheme-mode                        all-the-icons-fileicon   "scheme"         :height 1.2 :face all-the-icons-red)
+    (swift-mode                         all-the-icons-alltheicon "swift"          :height 1.0 :v-adjust -0.1 :face all-the-icons-green)
+    (c-mode                             all-the-icons-alltheicon "c-line"         :face all-the-icons-blue)
+    (c++-mode                           all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-blue)
+    (csharp-mode                        all-the-icons-alltheicon "csharp-line"    :face all-the-icons-dblue)
+    (clojure-mode                       all-the-icons-alltheicon "clojure-line"   :height 1.0  :face all-the-icons-blue)
+    (cider-repl-mode                    all-the-icons-alltheicon "clojure-line"   :height 1.0  :face all-the-icons-dblue)
+    (clojurescript-mode                 all-the-icons-fileicon "cljs"             :height 1.0  :face all-the-icons-dblue)
+    (coffee-mode                        all-the-icons-alltheicon "coffeescript"   :height 1.0  :face all-the-icons-maroon)
+    (lisp-mode                          all-the-icons-fileicon "lisp"             :face all-the-icons-orange)
+    (css-mode                           all-the-icons-alltheicon "css3"           :face all-the-icons-yellow)
+    (scss-mode                          all-the-icons-alltheicon "sass"           :face all-the-icons-pink)
+    (sass-mode                          all-the-icons-alltheicon "sass"           :face all-the-icons-dpink)
+    (less-css-mode                      all-the-icons-alltheicon "less"           :height 0.8  :face all-the-icons-dyellow)
+    (stylus-mode                        all-the-icons-alltheicon "stylus"         :face all-the-icons-lgreen)
+    (csv-mode                           all-the-icons-octicon "graph"             :v-adjust 0.0 :face all-the-icons-dblue)
+    (haskell-mode                       all-the-icons-alltheicon "haskell"        :height 1.0  :face all-the-icons-red)
+    (haml-mode                          all-the-icons-fileicon "haml"             :face all-the-icons-lyellow)
+    (html-mode                          all-the-icons-alltheicon "html5"          :face all-the-icons-orange)
+    (rhtml-mode                         all-the-icons-alltheicon "html5"          :face all-the-icons-lred)
+    (mustache-mode                      all-the-icons-fileicon "moustache"        :face all-the-icons-green)
+    (slim-mode                          all-the-icons-octicon "dashboard"         :v-adjust 0.0 :face all-the-icons-yellow)
+    (jade-mode                          all-the-icons-fileicon "jade"             :face all-the-icons-red)
+    (pug-mode                           all-the-icons-fileicon "pug"              :face all-the-icons-red)
+    (react-mode                         all-the-icons-alltheicon "react"          :height 1.1  :face all-the-icons-lblue)
+    (image-mode                         all-the-icons-octicon "file-media"        :v-adjust 0.0 :face all-the-icons-blue)
+    (texinfo-mode                       all-the-icons-fileicon "tex"              :face all-the-icons-lred)
+    (markdown-mode                      all-the-icons-octicon "markdown"          :v-adjust 0.0 :face all-the-icons-lblue)
+    (bibtex-mode                        all-the-icons-fileicon "bib"              :face all-the-icons-maroon)
+    (org-mode                           all-the-icons-fileicon "org"              :face all-the-icons-lgreen)
+    (compilation-mode                   all-the-icons-faicon "cogs"               :v-adjust 0.0 :height 1.0)
+    (objc-mode                          all-the-icons-faicon "apple"              :v-adjust 0.0 :height 1.0)
+    ))
+
+;; ====================
+;;   Functions Start
+;; ====================
+
+(defun all-the-icons-auto-mode-match? (&optional file)
+  "Whether or not FILE's `major-mode' match against its `auto-mode-alist'."
+  (let* ((file (or file (buffer-file-name) (buffer-name)))
+         (auto-mode (all-the-icons-match-to-alist file auto-mode-alist)))
+    (eq major-mode auto-mode)))
+
+(defun all-the-icons-match-to-alist (file alist)
+  "Match FILE against an entry in ALIST using `string-match'."
+  (cdr (cl-find-if (lambda (it) (string-match (car it) file)) alist)))
+
+(defun all-the-icons-dir-is-submodule (dir)
+  "Checker whether or not DIR is a git submodule."
+  (let* ((gitmodule-dir (locate-dominating-file dir ".gitmodules"))
+         (modules-file  (expand-file-name (format "%s.gitmodules" gitmodule-dir)))
+         (module-search (format "submodule \".*?%s\"" (file-name-base dir))))
+
+    (when (and gitmodule-dir (file-exists-p (format "%s/.git" dir)))
+      (with-temp-buffer
+        (insert-file-contents modules-file)
+        (search-forward-regexp module-search (point-max) t)))))
+
+;; Icon functions
+(defun all-the-icons-icon-for-dir (dir &optional chevron padding)
+  "Format an icon for DIR with CHEVRON similar to tree based directories.
+
+If PADDING is provided, it will prepend and separate the chevron
+and directory with PADDING.
+
+Produces different symbols by inspecting DIR to distinguish
+symlinks and git repositories which do not depend on the
+directory contents"
+  (let* ((matcher (all-the-icons-match-to-alist (file-name-base dir) all-the-icons-dir-icon-alist))
+         (path (expand-file-name dir))
+         (chevron (if chevron (all-the-icons-octicon (format "chevron-%s" chevron) :height 0.8 :v-adjust -0.1) ""))
+         (padding (or padding "\t"))
+         (icon (cond
+                ((file-symlink-p path)
+                 (all-the-icons-octicon "file-symlink-directory" :height 1.0))
+                ((all-the-icons-dir-is-submodule path)
+                 (all-the-icons-octicon "file-submodule" :height 1.0))
+                ((file-exists-p (format "%s/.git" path))
+                 (format "%s" (all-the-icons-octicon "repo" :height 1.1)))
+                (t (apply (car matcher) (cdr matcher))))))
+    (format "%s%s%s%s%s" padding chevron padding icon padding)))
+
+(defun all-the-icons-icon-for-buffer ()
+  "Get the formatted icon for the current buffer.
+
+This function prioritises the use of the buffers file extension to
+discern the icon when its `major-mode' matches its auto mode,
+otherwise it will use the buffers `major-mode' to decide its
+icon."
+  (all-the-icons--icon-info-for-buffer))
+
+(defun all-the-icons-icon-family-for-buffer ()
+  "Get the icon font family for the current buffer."
+  (all-the-icons--icon-info-for-buffer "family"))
+
+(defun all-the-icons--web-mode-icon () "Get icon for a `web-mode' buffer." (all-the-icons--web-mode))
+(defun all-the-icons--web-mode-icon-family () "Get icon family for a `web-mode' buffer." (all-the-icons--web-mode t))
+(defun all-the-icons--web-mode (&optional family)
+  "Return icon or FAMILY for `web-mode' based on `web-mode-content-type'."
+  (cond
+   ((equal web-mode-content-type "jsx")
+    (if family (all-the-icons-fileicon-family) (all-the-icons-fileicon "jsx-2")))
+   ((equal web-mode-content-type "javascript")
+    (if family (all-the-icons-alltheicon-family) (all-the-icons-alltheicon "javascript")))
+   ((equal web-mode-content-type "json")
+    (if family (all-the-icons-alltheicon-family) (all-the-icons-alltheicon "less")))
+   ((equal web-mode-content-type "xml")
+    (if family (all-the-icons-faicon-family) (all-the-icons-faicon "file-code-o")))
+   ((equal web-mode-content-type "css")
+    (if family (all-the-icons-alltheicon-family) (all-the-icons-alltheicon "css3")))
+   (t
+    (if family (all-the-icons-alltheicon-family) (all-the-icons-alltheicon "html5")))))
+
+;; Icon Functions
+
+;;;###autoload
+(defun all-the-icons-icon-for-file (file &rest arg-overrides)
+  "Get the formatted icon for FILE.
+ARG-OVERRIDES should be a plist containining `:height',
+`:v-adjust' or `:face' properties like in the normal icon
+inserting functions."
+  (let* ((icon (all-the-icons-match-to-alist file all-the-icons-icon-alist))
+         (args (cdr icon)))
+    (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args))))
+    (apply (car icon) args)))
+
+;;;###autoload
+(defun all-the-icons-icon-for-mode (mode &rest arg-overrides)
+  "Get the formatted icon for MODE.
+ARG-OVERRIDES should be a plist containining `:height',
+`:v-adjust' or `:face' properties like in the normal icon
+inserting functions."
+  (let* ((icon (cdr (assoc mode all-the-icons-mode-icon-alist)))
+         (args (cdr icon)))
+    (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args))))
+    (if icon (apply (car icon) args) mode)))
+
+(memoize 'all-the-icons-icon-for-file)
+(memoize 'all-the-icons-icon-for-mode)
+
+;; Family Face Functions
+(defun all-the-icons-icon-family-for-file (file)
+  "Get the icons font family for FILE."
+  (let ((icon (all-the-icons-match-to-alist file all-the-icons-icon-alist)))
+    (funcall (intern (format "%s-family" (car icon))))))
+
+(defun all-the-icons-icon-family-for-mode (mode)
+  "Get the icons font family for MODE."
+  (let ((icon (cdr (assoc mode all-the-icons-mode-icon-alist))))
+    (if icon (funcall (intern (format "%s-family" (car icon)))) nil)))
+
+(defun all-the-icons-icon-family (icon)
+  "Get a propertized ICON family programatically."
+  (plist-get (get-text-property 0 'face icon) :family))
+
+(memoize 'all-the-icons-icon-family-for-file)
+(memoize 'all-the-icons-icon-family-for-mode)
+(memoize 'all-the-icons-icon-family)
+
+;;;###autoload
+(defun all-the-icons--icon-info-for-buffer (&optional f)
+  "Get icon info for the current buffer.
+
+When F is provided, the info function is calculated with the format
+`all-the-icons-icon-%s-for-file' or `all-the-icons-icon-%s-for-mode'."
+  (let* ((base-f (concat "all-the-icons-icon" (when f (format "-%s" f))))
+         (file-f (intern (concat base-f "-for-file")))
+         (mode-f (intern (concat base-f "-for-mode"))))
+    (if (and (buffer-file-name)
+             (all-the-icons-auto-mode-match?))
+        (funcall file-f (file-name-nondirectory (buffer-file-name)))
+      (funcall mode-f major-mode))))
+
+;; Weather icons
+(defun all-the-icons-icon-for-weather (weather)
+  "Get an icon for a WEATHER status."
+  (let ((icon (all-the-icons-match-to-alist weather all-the-icons-weather-icon-alist)))
+    (if icon (apply (car icon) (cdr icon)) weather)))
+
+;; Definitions
+
+(eval-and-compile
+  (defun all-the-icons--function-name (name)
+    "Get the symbol for an icon function name for icon set NAME."
+    (intern (concat "all-the-icons-" (downcase (symbol-name name)))))
+
+  (defun all-the-icons--family-name (name)
+    "Get the symbol for an icon family function for icon set NAME."
+    (intern (concat "all-the-icons-" (downcase (symbol-name name)) "-family")))
+
+  (defun all-the-icons--data-name (name)
+    "Get the symbol for an icon family function for icon set NAME."
+    (intern (concat "all-the-icons-" (downcase (symbol-name name)) "-data")))
+
+  (defun all-the-icons--insert-function-name (name)
+    "Get the symbol for an icon insert function for icon set NAME."
+    (intern (concat "all-the-icons-insert-" (downcase (symbol-name name))))))
+
+;; Icon insertion functions
+
+(defun all-the-icons--read-candidates ()
+  "Helper to build a list of candidates for all families."
+  (cl-reduce 'append (mapcar (lambda (it) (all-the-icons--read-candidates-for-family it t)) all-the-icons-font-families)))
+
+(defun all-the-icons--read-candidates-for-family (family &optional show-family)
+  "Helper to build read candidates for FAMILY.
+If SHOW-FAMILY is non-nil, displays the icons family in the candidate string."
+  (let ((data   (funcall (all-the-icons--data-name family)))
+        (icon-f (all-the-icons--function-name family)))
+    (mapcar
+     (lambda (it)
+       (let* ((icon-name (car it))
+              (icon-name-head (substring icon-name 0 1))
+              (icon-name-tail (substring icon-name 1))
+
+              (icon-display (propertize icon-name-head 'display (format "%s\t%s" (funcall icon-f icon-name) icon-name-head)))
+              (icon-family (if show-family (format "\t[%s]" family) ""))
+
+              (candidate-name (format "%s%s%s" icon-display icon-name-tail icon-family))
+              (candidate-icon (funcall (all-the-icons--function-name family) icon-name)))
+
+         (cons candidate-name candidate-icon)))
+     data)))
+
+;;;###autoload
+(defun all-the-icons-install-fonts (&optional pfx)
+  "Helper function to download and install the latests fonts based on OS.
+When PFX is non-nil, ignore the prompt and just install"
+  (interactive "P")
+  (when (or pfx (yes-or-no-p "This will download and install fonts, are you sure you want to do this?"))
+    (let* ((url-format "https://github.com/domtronn/all-the-icons.el/blob/master/fonts/%s?raw=true")
+           (font-dest (cl-case window-system
+                        (x  (concat (or (getenv "XDG_DATA_HOME")            ;; Default Linux install directories
+                                        (concat (getenv "HOME") "/.local/share"))
+                                    "/fonts/"))
+                        (mac (concat (getenv "HOME") "/Library/Fonts/" ))
+                        (ns (concat (getenv "HOME") "/Library/Fonts/" ))))  ;; Default MacOS install directory
+           (known-dest? (stringp font-dest))
+           (font-dest (or font-dest (read-directory-name "Font installation directory: " "~/"))))
+
+      (unless (file-directory-p font-dest) (mkdir font-dest t))
+
+      (mapc (lambda (font)
+              (url-copy-file (format url-format font) (expand-file-name font font-dest) t))
+            all-the-icons-font-names)
+      (when known-dest?
+        (message "Fonts downloaded, updating font cache... <fc-cache -f -v> ")
+        (shell-command-to-string (format "fc-cache -f -v")))
+      (message "%s Successfully %s `all-the-icons' fonts to `%s'!"
+               (all-the-icons-wicon "stars" :v-adjust 0.0)
+               (if known-dest? "installed" "downloaded")
+               font-dest))))
+
+;;;###autoload
+(defun all-the-icons-insert (&optional arg family)
+  "Interactive icon insertion function.
+When Prefix ARG is non-nil, insert the propertized icon.
+When FAMILY is non-nil, limit the candidates to the icon set matching it."
+  (interactive "P")
+  (let* ((standard-output (current-buffer))
+         (candidates (if family
+                         (all-the-icons--read-candidates-for-family family)
+                       (all-the-icons--read-candidates)))
+         (prompt     (if family
+                         (format "%s Icon: " (funcall (all-the-icons--family-name family)))
+                       "Icon : "))
+
+         (selection (completing-read prompt candidates nil t))
+         (result    (cdr (assoc selection candidates))))
+
+    (if arg (prin1 result) (insert result))))
+
+;; Debug Helpers
+
+(defun all-the-icons-insert-icons-for (family &optional height duration)
+  "Insert all of the available icons associated with FAMILY.
+If a HEIGHT is provided it will render the icons at this height.
+This is useful both to see the icons more clearly and to test
+different height rendering.  If DURATION is provided, it will
+pause for DURATION seconds between printing each character."
+  (let* ((data-f    (all-the-icons--data-name family))
+         (insert-f  (all-the-icons--function-name family))
+
+         (height (or height 2.0))
+         (data (funcall data-f)))
+    (mapc
+     (lambda (it)
+       (insert (format "%s - %s\n" (funcall insert-f (car it) :height height) (car it)))
+       (when duration (sit-for duration 0)))
+     data)))
+
+(defmacro define-icon (name alist family &optional font-name)
+  "Macro to generate functions for inserting icons for icon set NAME.
+
+NAME defines is the name of the iconset and will produce a
+function of the for `all-the-icons-NAME'.
+
+ALIST is the alist containing maps between icon names and the
+UniCode for the character.  All of these can be found in the data
+directory of this package.
+
+FAMILY is the font family to use for the icons.
+FONT-NAME is the name of the .ttf file providing the font, defaults to FAMILY."
+  `(progn
+     (add-to-list 'all-the-icons-font-families (quote ,name))
+     (add-to-list 'all-the-icons-font-names (quote ,(downcase (format "%s.ttf" (or font-name family)))))
+
+     (defun ,(all-the-icons--family-name name) () ,family)
+     (defun ,(all-the-icons--data-name name) () ,alist)
+     (defun ,(all-the-icons--function-name name) (icon-name &rest args)
+       (let ((icon (cdr (assoc icon-name ,alist)))
+             (other-face (when all-the-icons-color-icons (plist-get args :face)))
+             (height  (* all-the-icons-scale-factor (or (plist-get args :height) 1.0)))
+             (v-adjust (* all-the-icons-scale-factor (or (plist-get args :v-adjust) all-the-icons-default-adjust)))
+             (family ,family))
+         (unless icon
+           (error (format "Unable to find icon with name `%s' in icon set `%s'" icon-name (quote ,name))))
+         (propertize icon
+                     'face (if other-face
+                               `(:family ,family :height ,height :inherit ,other-face)
+                             `(:family ,family :height ,height))
+                     'display `(raise ,v-adjust)
+                     'rear-nonsticky t
+                     'font-lock-ignore t)))
+     (defun ,(all-the-icons--insert-function-name name) (&optional arg)
+       ,(format "Insert a %s icon at point." family)
+       (interactive "P")
+       (all-the-icons-insert arg (quote ,name)))))
+
+(define-icon alltheicon all-the-icons-data/alltheicons-alist    "all-the-icons")
+(define-icon fileicon   all-the-icons-data/file-icon-alist      "file-icons")
+(define-icon faicon     all-the-icons-data/fa-icon-alist        "FontAwesome")
+(define-icon octicon    all-the-icons-data/octicons-alist       "github-octicons" "octicons")
+(define-icon wicon      all-the-icons-data/weather-icons-alist  "Weather Icons"   "weathericons")
+(define-icon material   all-the-icons-data/material-icons-alist "Material Icons"  "material-design-icons")
+
+(provide 'all-the-icons)
+
+;;; all-the-icons.el ends here
.emacs.d/elpa/all-the-icons-20170817.642/all-the-icons.elc
Binary file
.emacs.d/elpa/auto-compile-1.4.1/auto-compile-autoloads.el
@@ -0,0 +1,125 @@
+;;; auto-compile-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "auto-compile" "auto-compile.el" (22964 2141
+;;;;;;  731199 518000))
+;;; Generated autoloads from auto-compile.el
+
+(autoload 'auto-compile-mode "auto-compile" "\
+Compile Emacs Lisp source files after the visiting buffers are saved.
+
+After a buffer containing Emacs Lisp code is saved to its source
+file update the respective byte code file.  If the latter does
+not exist do nothing.  Therefore to disable automatic compilation
+remove the byte code file.  See command `toggle-auto-compile' for
+a convenient way to do so.
+
+This mode should be enabled globally, using it's globalized
+variant `auto-compile-on-save-mode'.  Also see the related
+`auto-compile-on-load-mode'.
+
+\(fn &optional ARG)" t nil)
+
+(defvar auto-compile-on-save-mode nil "\
+Non-nil if Auto-Compile-On-Save mode is enabled.
+See the `auto-compile-on-save-mode' command
+for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `auto-compile-on-save-mode'.")
+
+(custom-autoload 'auto-compile-on-save-mode "auto-compile" nil)
+
+(autoload 'auto-compile-on-save-mode "auto-compile" "\
+Toggle Auto-Compile mode in all buffers.
+With prefix ARG, enable Auto-Compile-On-Save mode if ARG is positive;
+otherwise, disable it.  If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
+Auto-Compile mode is enabled in all buffers where
+`turn-on-auto-compile-mode' would do it.
+See `auto-compile-mode' for more information on Auto-Compile mode.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'toggle-auto-compile "auto-compile" "\
+Toggle automatic compilation of an Emacs Lisp source file or files.
+
+Read a file or directory name from the minibuffer defaulting to
+the visited Emacs Lisp source file or `default-directory' if no
+such file is being visited in the current buffer.
+
+If the user selects a file then automatic compilation of only
+that file is toggled.  Since both `auto-compile-on-save' and
+`auto-compile-on-save' only ever _recompile_ byte code files,
+toggling automatic compilation is done simply by creating or
+removing the respective byte code file.
+
+If the user selects a directory then automatic compilation for
+multiple files is toggled as follows:
+
+* With a positive prefix argument always compile source files;
+  with a negative prefix argument always remove byte code files.
+
+* Otherwise the existence or absence of the byte code file of
+  the source file that was current when this command was invoked
+  determines whether byte code files should be created or removed.
+
+* If no Emacs Lisp source file is being visited in the buffer
+  that was current when the command was invoked ask the user what
+  to do.
+
+* When _removing_ byte code files then all byte code files are
+  removed.  If `auto-compile-deletes-stray-dest' is non-nil this
+  even includes byte code files for which no source file exists.
+
+* When _creating_ byte code files only do so for source files
+  that are actual libraries.  Source files that provide the
+  correct feature are considered to be libraries; see
+  `packed-library-p'.
+
+* Note that non-libraries can still be automatically compiled,
+  you just cannot _recursively_ turn on automatic compilation
+  using this command.
+
+* When `auto-compile-toggle-recompiles' is non-nil recompile all
+  affected source files even when the respective source files are
+  up-to-date.  Do so even for non-library source files.
+
+* Only enter subdirectories for which `packed-ignore-directory-p'
+  returns nil; i.e. don't enter hidden directories or directories
+  containing a file named \".nosearch\".
+
+\(fn FILE ACTION)" t nil)
+
+(defvar auto-compile-on-load-mode nil "\
+Non-nil if Auto-Compile-On-Load mode is enabled.
+See the `auto-compile-on-load-mode' command
+for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `auto-compile-on-load-mode'.")
+
+(custom-autoload 'auto-compile-on-load-mode "auto-compile" nil)
+
+(autoload 'auto-compile-on-load-mode "auto-compile" "\
+Before loading a library recompile it if it needs recompilation.
+
+A library needs to be recompiled if the source file is newer than
+it's byte-compile destination.  Without this advice the outdated
+byte code file would be loaded instead.
+
+Also see the related `auto-compile-on-save-mode'.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; auto-compile-autoloads.el ends here
.emacs.d/elpa/auto-compile-1.4.1/auto-compile-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "auto-compile" "1.4.1" "automatically compile Emacs Lisp libraries" '((emacs "24.3") (packed "2.0.0")) :commit "a31819a1b75a2320edb0f7f25d6c6faf528bf41a" :url "https://github.com/emacscollective/auto-compile" :keywords '("compile" "convenience" "lisp"))
.emacs.d/elpa/auto-compile-1.4.1/auto-compile.el
@@ -0,0 +1,786 @@
+;;; auto-compile.el --- automatically compile Emacs Lisp libraries
+
+;; Copyright (C) 2008-2017  Jonas Bernoulli
+
+;; Author: Jonas Bernoulli <jonas@bernoul.li>
+;; Created: 20080830
+;; Package-Requires: ((emacs "24.3") (packed "2.0.0"))
+;; Package-Version: 1.4.1
+;; Homepage: https://github.com/emacscollective/auto-compile
+;; Keywords: compile, convenience, lisp
+
+;; This file is not part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file 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.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides two minor modes which automatically recompile
+;; Emacs Lisp source files.  Together these modes guarantee that Emacs
+;; never loads outdated byte code files.
+
+;; `auto-compile-on-save-mode' re-compiles source files when they are
+;; being saved and `auto-compile-on-load-mode' does so before they are
+;; being loaded (by advising `load' and `require').  Both modes only
+;; ever _re-compile_ a source file when the respective byte code file
+;; already exists but is outdated.  Otherwise they do _not_ compile
+;; the source file.
+
+;; Even when using `auto-compile-on-save-mode' it can happen that some
+;; source file is newer than the respective byte code file, which is a
+;; problem because by default Emacs load the byte code file even when
+;; the respective source file has been modified more recently.
+
+;; Starting with Emacs version 24.4, setting `load-prefer-newer' to t
+;; prevents outdated byte code files from being loaded.  However this
+;; does not cause re-compilation of the source file, to actually do
+;; that `auto-compile-on-load-mode' is still required.
+
+;; Setup
+;; -----
+
+;; To reduce the risk of loading outdated byte code files, you should
+;; set `load-prefer-newer' and enable `auto-compile-on-load-mode' as
+;; early as possible.  Then also enable `auto-compile-on-save-mode'.
+;; You should also consider not byte-compiling your personal init
+;; file, or setting `load-prefer-newer' in a system-wide init file.
+
+;; If you use `package.el' then use something like this:
+;;
+;;     ;;; init.el --- user init file      -*- no-byte-compile: t -*-
+;;     (setq load-prefer-newer t)
+;;     (package-initialize)
+;;     (require 'auto-compile)
+;;     (auto-compile-on-load-mode)
+;;     (auto-compile-on-save-mode)
+
+;; otherwise:
+;;
+;;     ;;; init.el --- user init file      -*- no-byte-compile: t -*-
+;;     (setq load-prefer-newer t)
+;;     (add-to-list 'load-path "/path/to/dash")
+;;     (add-to-list 'load-path "/path/to/packed")
+;;     (add-to-list 'load-path "/path/to/auto-compile")
+;;     (require 'auto-compile)
+;;     (auto-compile-on-load-mode)
+;;     (auto-compile-on-save-mode)
+
+;; Usage
+;; -----
+
+;; Take note of the compile warnings and fix them.
+
+;; To permanently or temporarily toggle automatic compilation of some
+;; source file use the command `toggle-auto-compile'.  Since the modes
+;; only ever _update_ byte code files, toggling automatic compilation
+;; is done simply by either creating the byte code file or by removing
+;; it.  `toggle-auto-compile' can also toggle automatic compilation of
+;; multiple files at once; see its doc-string for more information.
+
+;; Customization
+;; -------------
+
+;; Constantly having the *Compile-Log* buffer pop up when a file is
+;; being saved can quickly become annoying.  Obviously the first thing
+;; you should do to about that is to actually fix outstanding issues.
+
+;; Once you have done that you might also want to keep that buffer
+;; from being automatically displayed and instead only show the number
+;; of compile warnings for the current file in the mode-line.
+
+;;     (setq auto-compile-display-buffer nil)
+;;     (setq auto-compile-mode-line-counter t)
+
+;; To display the buffer use `M-x auto-compile-display-log' or click
+;; on the counter in the mode-line.
+
+;; Using `auto-compile-inhibit-compile-hook' it is possible to inhibit
+;; automatic compilation under certain circumstances; e.g. when HEAD
+;; is detached inside a Git repository (useful during rebase sessions).
+
+;;; Code:
+
+(require 'bytecomp)
+(require 'cl-lib)
+(require 'packed)
+
+(declare-function autoload-rubric "autoload")
+(declare-function autoload-find-destination "autoload")
+(declare-function autoload-file-load-name "autoload")
+(declare-function autoload-generate-file-autoloads "autoload")
+
+(defvar autoload-modified-buffers)
+
+(defvar auto-compile-update-autoloads)
+(defvar auto-compile-use-mode-line)
+
+(defgroup auto-compile nil
+  "Automatically compile Emacs Lisp source libraries."
+  :group 'convenience
+  :prefix 'auto-compile
+  :link '(function-link toggle-auto-compile)
+  :link '(function-link auto-compile-mode))
+
+;;; Auto-Compile-On-Save Mode
+
+;;;###autoload
+(define-minor-mode auto-compile-mode
+  "Compile Emacs Lisp source files after the visiting buffers are saved.
+
+After a buffer containing Emacs Lisp code is saved to its source
+file update the respective byte code file.  If the latter does
+not exist do nothing.  Therefore to disable automatic compilation
+remove the byte code file.  See command `toggle-auto-compile' for
+a convenient way to do so.
+
+This mode should be enabled globally, using it's globalized
+variant `auto-compile-on-save-mode'.  Also see the related
+`auto-compile-on-load-mode'."
+  :lighter auto-compile-mode-lighter
+  :group 'auto-compile
+  (unless (derived-mode-p 'emacs-lisp-mode)
+    (user-error "This mode only makes sense with emacs-lisp-mode"))
+  (if auto-compile-mode
+      (add-hook  'after-save-hook 'auto-compile-byte-compile nil t)
+    (remove-hook 'after-save-hook 'auto-compile-byte-compile t))
+  (auto-compile-modify-mode-line auto-compile-use-mode-line))
+
+;;;###autoload
+(define-globalized-minor-mode auto-compile-on-save-mode
+  auto-compile-mode turn-on-auto-compile-mode)
+
+(defun turn-on-auto-compile-mode ()
+  (when (eq major-mode 'emacs-lisp-mode)
+    (auto-compile-mode 1)))
+
+(defvar auto-compile-mode-lighter ""
+  "Mode lighter for Auto-Compile Mode.")
+
+;;; Options
+
+(defcustom auto-compile-visit-failed t
+  "Whether to visit source files which failed to compile.
+
+If this is non-nil visit but don't select a source file if it
+isn't being visited in a buffer already.  Also set the buffer
+local value of variable `auto-compile-pretend-byte-compiled'
+\(which see) to t and mark the buffer as modified if the value
+of variable `auto-compile-mark-failed-modified' is non-nil."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-mark-failed-modified nil
+  "Whether to mark buffers which failed to compile as modified.
+
+This serves as a reminder to fix fatal errors.  While useful this
+can get annoying so this variable can be quickly toggled with the
+command `auto-compile-toggle-mark-failed-modified'."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-ding t
+  "Whether to beep (or flash the screen) when an error occurs.
+
+Expected errors (such as compile error, unmatched parens, or
+failure to remove a file) are caught and execution continues so
+that failure to process one file does not prevent other files
+from being processed.
+
+To inform users of such errors Auto-Compile instead beeps or
+flashes the screen; set this variable to nil to disable even
+that."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-check-parens t
+  "Whether to check for unbalanced parentheses before compiling.
+
+This only has as an effect on files which are currently being
+visited in a buffer.  Other files are compiled without performing
+this check first.  If unbalanced parentheses are found no attempt
+is made to compile the file as that would obviously fail also."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-update-autoloads nil
+  "Whether to update autoloads after compiling.
+
+If no autoload file as specified by `packed-loaddefs-filename' can be
+found quietly skip this step."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-inhibit-compile-hook nil
+  "Hook used to inhibit automatic compilation.
+
+This hook is run before automatic compilation takes place, if
+any of the hook functions returns non-nil, then do not compile."
+  :group 'auto-compile
+  :options '(auto-compile-inhibit-compile-detached-git-head)
+  :type 'hook)
+
+(defcustom auto-compile-verbose nil
+  "Whether to print messages describing progress of byte-compiler.
+
+This overrides `byte-compile-verbose' but unlike that does not
+default to t, and thus avoids unnecessary echo-area messages."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-display-buffer t
+  "Whether to automatically display the *Compile-Log* buffer.
+
+When there are errors then the buffer is always displayed,
+when there are no warnings or errors it is never displayed."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-mode-line-counter nil
+  "Whether to display the number of warnings in the mode line.
+
+This assumes that `auto-compile-use-mode-line' (which see) is
+non-nil."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defun auto-compile-modify-mode-line (after)
+  (let ((format (delete 'mode-line-auto-compile
+                        (default-value 'mode-line-format)))
+        cell)
+    (when (and after auto-compile-mode
+               (setq cell (member after format)))
+      (push 'mode-line-auto-compile (cdr cell)))
+    (set-default 'mode-line-format format)))
+
+(defcustom auto-compile-use-mode-line
+  (car (memq 'mode-line-modified (default-value 'mode-line-format)))
+  "Whether to show information about the byte code file in the mode line.
+
+This works by inserting `mode-line-auto-compile' into the default
+value of `mode-line-format' after the construct (usually a symbol)
+specified here.  This happens every time local Auto-Compile mode
+is turned on so the specified construct does not have to a member
+of `mode-line-format' when this is set (this allows loading that
+package after `auto-compile-on-load-mode' has been activated, so
+that it can ensures the respective byte code file is up-to-date).
+
+If you want to add `mode-line-auto-compile' as a member of a
+variable that is itself a member of `mode-line-format' then you
+have to set this option to nil and manually modify that variable
+to include `mode-line-auto-compile'."
+  :group 'auto-compile
+  :set (lambda (symbol value)
+         (set-default symbol value)
+         (auto-compile-modify-mode-line value))
+  :type '(choice (const :tag "don't insert" nil)
+                 (const :tag "after mode-line-modified" mode-line-modified)
+                 (const :tag "after mode-line-remote" mode-line-remote)
+                 (sexp  :tag "after construct")))
+
+(defcustom auto-compile-toggle-recompiles t
+  "Whether to recompile all source files when turning on compilation.
+
+When turning on auto compilation for multiple files at once
+recompile source files even if their byte code file already
+exist and are up-to-date.  It's advisable to keep this enabled
+to ensure changes to macros are picked up."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-delete-stray-dest t
+  "Whether to remove stray byte code files.
+
+If this is non-nil byte code files without a corresponding source
+file are removed as they are encountered.  This happens in the
+functions `auto-compile-on-save' and `toggle-auto-compile'.  The
+main purpose of this functionality is to prevent leftover byte
+code files from shadowing a source or byte code file in a
+directory that comes later in the `load-path'."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-toggle-deletes-nonlib-dest nil
+  "Whether to delete non-library byte code files when toggling compilation."
+  :group 'auto-compile
+  :type 'boolean)
+
+(defcustom auto-compile-source-recreate-deletes-dest nil
+  "Whether to delete leftover byte code file when creating source file.
+
+When this is non-nil and saving a source buffer causes the file
+to be created (as opposed to being overwritten) while its byte
+code file already exists (because the source already existed and
+was compiled in the past), then remove the latter (instead of
+updating it by recompiling the source).  This can e.g. happen
+when switching git branches."
+  :group 'auto-compile
+  :type 'boolean)
+
+;;; Toggle and Perform Compilation
+
+;;;###autoload
+(defun toggle-auto-compile (file action)
+  "Toggle automatic compilation of an Emacs Lisp source file or files.
+
+Read a file or directory name from the minibuffer defaulting to
+the visited Emacs Lisp source file or `default-directory' if no
+such file is being visited in the current buffer.
+
+If the user selects a file then automatic compilation of only
+that file is toggled.  Since both `auto-compile-on-save' and
+`auto-compile-on-save' only ever _recompile_ byte code files,
+toggling automatic compilation is done simply by creating or
+removing the respective byte code file.
+
+If the user selects a directory then automatic compilation for
+multiple files is toggled as follows:
+
+* With a positive prefix argument always compile source files;
+  with a negative prefix argument always remove byte code files.
+
+* Otherwise the existence or absence of the byte code file of
+  the source file that was current when this command was invoked
+  determines whether byte code files should be created or removed.
+
+* If no Emacs Lisp source file is being visited in the buffer
+  that was current when the command was invoked ask the user what
+  to do.
+
+* When _removing_ byte code files then all byte code files are
+  removed.  If `auto-compile-deletes-stray-dest' is non-nil this
+  even includes byte code files for which no source file exists.
+
+* When _creating_ byte code files only do so for source files
+  that are actual libraries.  Source files that provide the
+  correct feature are considered to be libraries; see
+  `packed-library-p'.
+
+* Note that non-libraries can still be automatically compiled,
+  you just cannot _recursively_ turn on automatic compilation
+  using this command.
+
+* When `auto-compile-toggle-recompiles' is non-nil recompile all
+  affected source files even when the respective source files are
+  up-to-date.  Do so even for non-library source files.
+
+* Only enter subdirectories for which `packed-ignore-directory-p'
+  returns nil; i.e. don't enter hidden directories or directories
+  containing a file named \".nosearch\"."
+  (interactive
+   (let* ((buf  (current-buffer))
+          (file (and (eq major-mode 'emacs-lisp-mode)
+                     (buffer-file-name)))
+          (action
+           (cond
+            (current-prefix-arg
+             (if (> (prefix-numeric-value current-prefix-arg) 0)
+                 'start
+               'quit))
+            (file
+             (if (file-exists-p (byte-compile-dest-file file))
+                 'quit
+               'start))
+            (t
+             (pcase (read-char-choice
+                     "Toggle automatic compilation (s=tart, q=uit, C-g)? "
+                     '(?s ?q))
+               (?s 'start)
+               (?q 'quit))))))
+     (list (read-file-name (concat (capitalize (symbol-name action))
+                                   " auto-compiling: ")
+                           (and file (file-name-directory file))
+                           nil t
+                           (and file (file-name-nondirectory file)))
+           action)))
+  (if (file-regular-p file)
+      (pcase action
+        (`start (auto-compile-byte-compile file t))
+        (`quit  (auto-compile-delete-dest (byte-compile-dest-file file))))
+    (when (called-interactively-p 'any)
+      (let ((buffer (get-buffer byte-compile-log-buffer)))
+        (when buffer
+          (kill-buffer buffer))))
+    (dolist (f (directory-files file t))
+      (cond
+       ((file-directory-p f)
+        (unless (packed-ignore-directory-p f)
+          (toggle-auto-compile f action)))
+       ((packed-library-p f)
+        (let ((dest (byte-compile-dest-file f)))
+          (if (eq action 'start)
+              (and (file-exists-p f)
+                   (or auto-compile-toggle-recompiles
+                       (file-newer-than-file-p f dest))
+                   (or (not (string-match "^\\.?#" (file-name-nondirectory f)))
+                       (file-exists-p dest))
+                   (auto-compile-byte-compile f t))
+            (auto-compile-delete-dest dest))))
+       ((and auto-compile-toggle-deletes-nonlib-dest
+             (eq action 'quit)
+             (string-match (packed-el-regexp) f))
+        (auto-compile-delete-dest (byte-compile-dest-file f)))
+       ((and auto-compile-delete-stray-dest
+             (string-match "\\.elc$" f)
+             (not (file-exists-p (packed-el-file f))))
+        (auto-compile-delete-dest f))))))
+
+(defalias 'auto-compile-toggle 'toggle-auto-compile)
+
+(defun auto-compile-toggle-mark-failed-modified ()
+  "Toggle whether buffers which failed to compile are marked as modified."
+  (interactive)
+  (message (concat (if (setq auto-compile-mark-failed-modified
+                             (not auto-compile-mark-failed-modified))
+                       "Mark "
+                     "Don't mark ")
+                   "files that failed to compile as modified")))
+
+(defvar-local auto-compile-pretend-byte-compiled nil
+  "Whether to try again to compile this file after a failed attempt.
+
+Command `auto-compile-byte-compile' sets this buffer local
+variable to t after failing to compile a source file being
+visited in a buffer (or when variable `auto-compile-visit-failed'
+is non-nil for all files being compiled) causing it to try again
+when being called again. Command `toggle-auto-compile' will also
+pretend the byte code file exists.")
+
+(defvar auto-compile-file-buffer nil)
+(defvar-local auto-compile-warnings 0)
+
+(defadvice byte-compile-log-warning
+  (before auto-compile-count-warnings activate)
+  ;; (STRING &optional FILL LEVEL)
+  (when auto-compile-file-buffer
+    (with-current-buffer auto-compile-file-buffer
+      (cl-incf auto-compile-warnings))))
+
+(cl-defun auto-compile-byte-compile (&optional file start)
+  "Perform byte compilation for Auto-Compile mode."
+  (when (run-hook-with-args-until-success 'auto-compile-inhibit-compile-hook)
+    (cl-return-from auto-compile-byte-compile))
+  (let ((default-directory default-directory)
+        dest buf auto-compile-file-buffer success loaddefs)
+    (when (and file
+               (setq buf (get-file-buffer file))
+               (buffer-modified-p buf)
+               (y-or-n-p (format "Save buffer %s first? " (buffer-name buf))))
+      (with-current-buffer buf (save-buffer)))
+    (unless file
+      (setq file (buffer-file-name))
+      (setq buf  (get-file-buffer file)))
+    (setq default-directory (file-name-directory file))
+    (setq auto-compile-file-buffer buf)
+    (with-current-buffer buf
+      (setq auto-compile-warnings 0))
+    (catch 'auto-compile
+      (when (and auto-compile-check-parens buf)
+        (condition-case check-parens
+            (save-restriction
+              (widen)
+              (check-parens))
+          (error
+           (message (error-message-string check-parens))
+           (auto-compile-handle-compile-error file buf start)
+           (throw 'auto-compile nil))))
+      (setq dest (byte-compile-dest-file file))
+      (when (or start
+                (and (file-exists-p dest)
+                     (or (file-exists-p file)
+                         (not auto-compile-source-recreate-deletes-dest)
+                         (prog1 nil
+                           (auto-compile-delete-dest dest))))
+                (and buf (with-current-buffer buf
+                           auto-compile-pretend-byte-compiled)))
+        (condition-case byte-compile
+            (let ((byte-compile-verbose auto-compile-verbose)
+                  (warning-minimum-level
+                   (if auto-compile-display-buffer :warning :error)))
+              (setq success (packed-byte-compile-file file))
+              (when buf
+                (with-current-buffer buf
+                  (kill-local-variable auto-compile-pretend-byte-compiled))))
+          (file-error
+           (message "Byte-compiling %s failed" file)
+           (auto-compile-handle-compile-error file buf start)
+           (setq success nil)))
+        (when (and auto-compile-update-autoloads
+                   (setq loaddefs (packed-loaddefs-file)))
+          (require 'autoload)
+          (condition-case autoload
+              (packed-with-loaddefs loaddefs
+                (let ((autoload-modified-buffers
+                       (list (find-buffer-visiting file))))
+                  (autoload-generate-file-autoloads file)))
+            (error
+             (message "Generating loaddefs for %s failed" file)
+             (setq loaddefs nil))))
+        (pcase success
+          (`no-byte-compile)
+          (`t (message "Wrote %s.{%s,%s}%s"
+                        (file-name-sans-extension
+                         (file-name-sans-extension file))
+                        (progn (string-match "\\(\\.[^./]+\\)+$" file)
+                               (substring (match-string 0 file) 1))
+                        (file-name-extension dest)
+                        (if loaddefs " (+)" "")))
+          (_  (message "Wrote %s (byte-compiling failed)" file))))
+      success)))
+
+(defun auto-compile-delete-dest (dest &optional failurep)
+  (unless failurep
+    (let ((buffer (get-file-buffer (packed-el-file dest))))
+      (when buffer
+        (with-current-buffer buffer
+          (kill-local-variable 'auto-compile-pretend-byte-compiled)))))
+  (condition-case nil
+      (when (file-exists-p dest)
+        (message "Deleting %s..." dest)
+        (delete-file dest)
+        (message "Deleting %s...done" dest))
+    (file-error
+     (auto-compile-ding)
+     (message "Deleting %s...failed" dest))))
+
+(defun auto-compile-handle-compile-error (file buf &optional start)
+  (auto-compile-ding)
+  (let (update)
+    (let ((dest (byte-compile-dest-file file)))
+      (when (file-exists-p dest)
+        (setq update t)
+        (auto-compile-delete-dest dest t)))
+    (when (or buf
+              (and auto-compile-visit-failed
+                   (setq buf (find-file-noselect file))))
+      (with-current-buffer buf
+        (when (or update start)
+          (setq auto-compile-pretend-byte-compiled t))
+        (when auto-compile-mark-failed-modified
+          (set-buffer-modified-p t))))))
+
+(defun auto-compile-handle-autoloads-error (dest)
+  (auto-compile-ding)
+  (packed-remove-autoloads dest nil))
+
+(defun auto-compile-ding ()
+  (when auto-compile-ding
+    (ding)))
+
+(defadvice save-buffers-kill-emacs
+  (around auto-compile-dont-mark-failed-modified disable)
+  "Set `auto-compile-mark-failed-modified' to nil when killing Emacs.
+If the regular value of this variable is non-nil the user might
+still be asked whether she wants to save modified buffers, which
+she actually did already safe.  This advice ensures she at least
+is only asked once about each such file."
+  (let ((auto-compile-mark-failed-modified nil))
+    ad-do-it))
+
+(defadvice save-buffers-kill-terminal
+  (around auto-compile-dont-mark-failed-modified disable)
+  "Set `auto-compile-mark-failed-modified' to nil when killing Emacs.
+If the regular value of this variable is non-nil the user might
+still be asked whether she wants to save modified buffers, which
+she actually did already safe.  This advice ensures she at least
+is only asked once about each such file."
+  (let ((auto-compile-mark-failed-modified nil))
+    ad-do-it))
+
+;; REDEFINE autoload-save-buffers defined in autoload.el
+;; - verify buffers are still live before killing them
+(eval-after-load 'autoload
+  '(defun autoload-save-buffers ()
+     (while autoload-modified-buffers
+       (let ((buf (pop autoload-modified-buffers)))
+         (when (buffer-live-p buf)
+           (with-current-buffer buf
+             (let ((version-control 'never))
+               (save-buffer))))))))
+
+(defun auto-compile-inhibit-compile-detached-git-head ()
+  "Inhibit compiling in Git repositories when `HEAD' is detached.
+This is especially useful during rebase sessions."
+  (with-temp-buffer
+    (call-process "git" nil t nil "symbolic-ref" "HEAD")
+    (equal (buffer-string) "fatal: ref HEAD is not a symbolic ref\n")))
+
+;;; Mode-Line
+
+(defvar-local mode-line-auto-compile
+  '(auto-compile-mode (:eval (mode-line-auto-compile-control))))
+(put 'mode-line-auto-compile 'risky-local-variable t)
+
+(defun mode-line-auto-compile-control ()
+  (let ((src (buffer-file-name))
+        dst)
+    (when (and src (setq dst (byte-compile-dest-file src)))
+      (list
+       (when (and auto-compile-mode-line-counter
+                  (> auto-compile-warnings 0))
+         (propertize
+          (format "%s" auto-compile-warnings)
+          'help-echo (format "%s compile warnings\nmouse-1 display compile log"
+                             auto-compile-warnings)
+          'face 'error
+          'mouse-face 'mode-line-highlight
+          'local-map (purecopy (make-mode-line-mouse-map
+                                'mouse-1
+                                #'auto-compile-display-log))))
+       (cond
+        ((file-writable-p dst)
+         (propertize
+          "-"
+          'help-echo "Byte-compile destination is writable"
+          'mouse-face 'mode-line))
+        (t
+         (propertize
+          "%%"
+          'help-echo "Byte-compile destination is read-only"
+          'mouse-face 'mode-line)))
+       (cond
+        ((and auto-compile-pretend-byte-compiled
+              (not (file-exists-p dst)))
+         (propertize
+          "!"
+          'help-echo "Failed to byte-compile updating\nmouse-1 retry"
+          'mouse-face 'mode-line-highlight
+          'local-map (purecopy (make-mode-line-mouse-map
+                                'mouse-1
+                                #'auto-compile-mode-line-byte-compile))))
+        ((not (file-exists-p dst))
+         (propertize
+          "%%"
+          'help-echo "Byte-compiled file doesn't exist\nmouse-1 create"
+          'mouse-face 'mode-line-highlight
+          'local-map (purecopy (make-mode-line-mouse-map
+                                'mouse-1
+                                #'mode-line-toggle-auto-compile))))
+        ((file-newer-than-file-p src dst)
+         (propertize
+          "*"
+          'help-echo "Byte-compiled file needs updating\nmouse-1 update"
+          'mouse-face 'mode-line-highlight
+          'local-map (purecopy (make-mode-line-mouse-map
+                                'mouse-1
+                                #'auto-compile-mode-line-byte-compile))))
+        (t
+         (propertize
+          "-"
+          'help-echo "Byte-compiled file is up-to-date\nmouse-1 remove"
+          'mouse-face 'mode-line-highlight
+          'local-map (purecopy (make-mode-line-mouse-map
+                                'mouse-1
+                                #'mode-line-toggle-auto-compile)))))))))
+
+(defun auto-compile-display-log ()
+  "Display the *Compile-Log* buffer."
+  (interactive)
+  (let ((buffer (get-buffer byte-compile-log-buffer)))
+    (if buffer
+        (pop-to-buffer buffer)
+      (user-error "Buffer %s doesn't exist" byte-compile-log-buffer))))
+
+(defun mode-line-toggle-auto-compile (event)
+  "Toggle automatic compilation from the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (toggle-auto-compile
+     (buffer-file-name)
+     (if (file-exists-p (byte-compile-dest-file (buffer-file-name)))
+         'quit
+       'start))
+    (force-mode-line-update)))
+
+(defun auto-compile-mode-line-byte-compile (event)
+  "Recompile visited file from the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (auto-compile-byte-compile (buffer-file-name) t)
+    (force-mode-line-update)))
+
+;;; Auto-Compile-On-Load Mode
+
+;;;###autoload
+(define-minor-mode auto-compile-on-load-mode
+  "Before loading a library recompile it if it needs recompilation.
+
+A library needs to be recompiled if the source file is newer than
+it's byte-compile destination.  Without this advice the outdated
+byte code file would be loaded instead.
+
+Also see the related `auto-compile-on-save-mode'."
+  :lighter auto-compile-on-load-mode-lighter
+  :group 'auto-compile
+  :global t
+  (cond (auto-compile-on-load-mode
+         (ad-enable-advice  'load    'before 'auto-compile-on-load)
+         (ad-enable-advice  'require 'before 'auto-compile-on-load)
+         (ad-activate 'load)
+         (ad-activate 'require))
+        (t
+         (ad-disable-advice 'load    'before 'auto-compile-on-load)
+         (ad-disable-advice 'require 'before 'auto-compile-on-load))))
+
+(defvar auto-compile-on-load-mode-lighter ""
+  "Mode lighter for Auto-Compile-On-Load Mode.")
+
+(defadvice load (before auto-compile-on-load disable)
+  ;; (file &optional noerror nomessage nosuffix must-suffix)
+  "Before loading the library recompile it if it needs recompilation.
+It needs recompilation if it is newer than the byte-compile
+destination.  Without this advice the outdated byte-compiled
+file would get loaded."
+  (auto-compile-on-load file nosuffix))
+
+(defadvice require (before auto-compile-on-load disable)
+  ;; (feature &optional FILENAME NOERROR)
+  "Before loading the library recompile it if it needs recompilation.
+It needs recompilation if it is newer than the byte-compile
+destination.  Without this advice the outdated byte-compiled
+file would get loaded."
+  (unless (featurep feature)
+    (auto-compile-on-load (or filename (symbol-name feature)))))
+
+(defvar auto-compile--loading nil)
+
+(defun auto-compile-on-load (file &optional nosuffix)
+  (unless (member file auto-compile--loading)
+    (let ((auto-compile--loading (cons file auto-compile--loading))
+          byte-compile-verbose el elc el*)
+      (condition-case nil
+          (when (setq el (packed-locate-library file nosuffix))
+            (setq elc (byte-compile-dest-file el))
+            (when (and (file-exists-p elc)
+                       (file-writable-p elc)
+                       (file-newer-than-file-p el elc))
+              (message "Recompiling %s..." el)
+              (packed-byte-compile-file el)
+              (message "Recompiling %s...done" el))
+            (when auto-compile-delete-stray-dest
+              (setq el* (locate-library file))
+              (unless (equal (file-name-directory el)
+                             (file-name-directory el*))
+                (auto-compile-delete-dest el* t))))
+        (error
+         (message "Recompiling %s...failed" el)
+         (when elc
+           (auto-compile-delete-dest elc t)))))))
+
+(provide 'auto-compile)
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+;;; auto-compile.el ends here
.emacs.d/elpa/auto-compile-1.4.1/auto-compile.elc
Binary file
.emacs.d/elpa/dashboard-1.2.3/banners/1.txt
@@ -0,0 +1,8 @@
+
+######## ##     ##    ###     ######   ######
+##       ###   ###   ## ##   ##    ## ##    ##
+##       #### ####  ##   ##  ##       ##
+######   ## ### ## ##     ## ##        ######
+##       ##     ## ######### ##             ##
+##       ##     ## ##     ## ##    ## ##    ##
+######## ##     ## ##     ##  ######   ######
.emacs.d/elpa/dashboard-1.2.3/banners/2.txt
@@ -0,0 +1,6 @@
+ _______ .___  ___.      ___       ______     _______.
+|   ____||   \/   |     /   \     /      |   /       |
+|  |__   |  \  /  |    /  ^  \   |  ,----'  |   (----`
+|   __|  |  |\/|  |   /  /_\  \  |  |        \   \
+|  |____ |  |  |  |  /  _____  \ |  `----.----)   |
+|_______||__|  |__| /__/     \__\ \______|_______/
.emacs.d/elpa/dashboard-1.2.3/banners/3.txt
@@ -0,0 +1,8 @@
+ _______   _____ ______   ________  ________  ________
+|\  ___ \ |\   _ \  _   \|\   __  \|\   ____\|\   ____\
+\ \   __/|\ \  \\\__\ \  \ \  \|\  \ \  \___|\ \  \___|_
+ \ \  \_|/_\ \  \\|__| \  \ \   __  \ \  \    \ \_____  \
+  \ \  \_|\ \ \  \    \ \  \ \  \ \  \ \  \____\|____|\  \
+   \ \_______\ \__\    \ \__\ \__\ \__\ \_______\____\_\  \
+    \|_______|\|__|     \|__|\|__|\|__|\|_______|\_________\
+                                                \|_________|
.emacs.d/elpa/dashboard-1.2.3/banners/emacs.png
Binary file
.emacs.d/elpa/dashboard-1.2.3/banners/logo.png
Binary file
.emacs.d/elpa/dashboard-1.2.3/dashboard-autoloads.el
@@ -0,0 +1,28 @@
+;;; dashboard-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "dashboard" "dashboard.el" (22964 2891 208736
+;;;;;;  834000))
+;;; Generated autoloads from dashboard.el
+
+(autoload 'dashboard-setup-startup-hook "dashboard" "\
+Setup post initialization hooks.
+If a command line argument is provided, assume a filename and skip displaying Dashboard
+
+\(fn)" nil nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("dashboard-pkg.el" "dashboard-widgets.el")
+;;;;;;  (22964 2891 207736 809000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; dashboard-autoloads.el ends here
.emacs.d/elpa/dashboard-1.2.3/dashboard-pkg.el
@@ -0,0 +1,8 @@
+(define-package "dashboard" "1.2.3" "A startup screen extracted from Spacemacs"
+  '((emacs "24.4")
+    (page-break-lines "0.11"))
+  :url "https://github.com/rakanalh/emacs-dashboard" :keywords
+  '("startup" "screen" "tools"))
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
.emacs.d/elpa/dashboard-1.2.3/dashboard-widgets.el
@@ -0,0 +1,372 @@
+;;; dashboard.el --- A startup screen extracted from Spacemacs
+
+;; Copyright (c) 2016 Rakan Al-Hneiti & Contributors
+;;
+;; Author: Rakan Al-Hneiti
+;; URL: https://github.com/rakanalh/emacs-dashboard
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; License: GPLv3
+;;
+;;; Commentary:
+
+;;; Code:
+
+;;
+;; Customs
+;;
+(defcustom dashboard-page-separator "\n\f\n"
+  "Separator to use between the different pages."
+  :type 'string
+  :group 'dashboard)
+
+(defconst dashboard-banners-directory
+  (concat (file-name-directory
+	   (locate-library "dashboard"))
+	   "/banners/"))
+
+(defconst dashboard-banner-official-png
+  (expand-file-name (concat dashboard-banners-directory "emacs.png"))
+  "Emacs banner image.")
+
+(defconst dashboard-banner-logo-png
+  (expand-file-name (concat dashboard-banners-directory "logo.png"))
+  "Emacs banner image.")
+
+(defconst dashboard-banner-length 75
+  "Width of a banner.")
+
+(defvar dashboard-banner-logo-title "Welcome to Emacs!"
+   "Specify the startup banner.")
+
+(defvar dashboard-startup-banner 'official
+   "Specify the startup banner.
+Default value is `official', it displays
+the Emacs logo.  `logo' displays Emacs alternative logo.
+An integer value is the index of text
+banner.  A string value must be a path to a .PNG file.
+If the value is nil then no banner is displayed.")
+
+(defvar dashboard-buffer-last-width nil
+  "Previous width of dashboard-buffer.")
+
+(defvar dashboard-item-generators  '((recents   . dashboard-insert-recents)
+                                     (bookmarks . dashboard-insert-bookmarks)
+                                     (projects  . dashboard-insert-projects)
+                                     (agenda    . dashboard-insert-agenda)))
+
+(defvar dashboard-items '((recents   . 5)
+                          (bookmarks . 5)
+                          (agenda    . 5))
+  "Association list of items to show in the startup buffer.
+Will be of the form `(list-type . list-size)`.
+If nil it is disabled.  Possible values for list-type are:
+`recents' `bookmarks' `projects'")
+
+(defvar dashboard-items-default-length 20
+  "Length used for startup lists with otherwise unspecified bounds.
+Set to nil for unbounded.")
+
+;;
+;; Generic widget helpers
+;;
+(defun dashboard-subseq (seq start end)
+  "Return the subsequence of SEQ from START to END..
+Uses `cl-subseq`, but accounts for end points greater than the size of the
+list.
+Return entire list if `END' is omitted."
+  (let ((len (length seq)))
+    (cl-subseq seq start (and (number-or-marker-p end)
+                              (min len end)))))
+
+(defmacro dashboard-insert-shortcut (shortcut-char
+				      search-label
+				      &optional no-next-line)
+  "Insert a shortcut SHORTCUT-CHAR for a given SEARCH-LABEL.
+Optionally, provide NO-NEXT-LINE to move the cursor forward a line."
+  `(define-key dashboard-mode-map ,shortcut-char (lambda ()
+			       (interactive)
+			       (unless (search-forward ,search-label (point-max) t)
+				 (search-backward ,search-label (point-min) t))
+			       ,@(unless no-next-line
+				   '((forward-line 1)))
+			       (back-to-indentation))))
+
+(defun dashboard-append (msg &optional messagebuf)
+  "Append MSG to dashboard buffer.
+If MESSAGEBUF is not nil then MSG is also written in message buffer."
+  (with-current-buffer (get-buffer-create "*dashboard*")
+    (goto-char (point-max))
+    (let ((buffer-read-only nil))
+      (insert msg))))
+
+(defun dashboard-insert-page-break ()
+  "Insert a page break line in dashboard buffer."
+  (dashboard-append dashboard-page-separator))
+
+;;
+;; BANNER
+;;
+(defun dashboard-insert-ascii-banner-centered (file)
+  "Insert banner from FILE."
+  (insert
+   (with-temp-buffer
+     (insert-file-contents file)
+     (let ((banner-width 0))
+       (while (not (eobp))
+         (let ((line-length (- (line-end-position) (line-beginning-position))))
+           (if (< banner-width line-length)
+               (setq banner-width line-length)))
+         (forward-line 1))
+       (goto-char 0)
+       (let ((margin (max 0 (floor (/ (- dashboard-banner-length banner-width) 2)))))
+         (while (not (eobp))
+	   (insert (make-string margin ?\ ))
+           (forward-line 1))))
+     (buffer-string))))
+
+(defun dashboard-insert-image-banner (banner)
+  "Display an image BANNER."
+  (when (file-exists-p banner)
+    (let* ((title dashboard-banner-logo-title)
+           (spec (create-image banner))
+           (size (image-size spec))
+           (width (car size))
+           (left-margin (max 0 (floor (- dashboard-banner-length width) 2))))
+      (goto-char (point-min))
+      (insert "\n")
+      (insert (make-string left-margin ?\ ))
+      (insert-image spec)
+      (insert "\n\n")
+      (insert (make-string (max 0 (floor (/ (- dashboard-banner-length
+                                        (+ (length title) 1)) 2))) ?\ ))
+      (insert (format "%s\n\n" title)))))
+
+(defun dashboard-get-banner-path (index)
+  "Return the full path to banner with index INDEX."
+  (concat dashboard-banners-directory (format "%d.txt" index)))
+
+(defun dashboard-choose-banner ()
+  "Return the full path of a banner based on the dotfile value."
+  (when dashboard-startup-banner
+    (cond ((eq 'official dashboard-startup-banner)
+           (if (and (display-graphic-p) (image-type-available-p 'png))
+               dashboard-banner-official-png
+             (dashboard-get-banner-path 1)))
+	  ((eq 'logo dashboard-startup-banner)
+           (if (and (display-graphic-p) (image-type-available-p 'png))
+               dashboard-banner-logo-png
+             (dashboard-get-banner-path 1)))
+          ((integerp dashboard-startup-banner)
+           (dashboard-get-banner-path dashboard-startup-banner))
+          ((and dashboard-startup-banner
+                (image-type-available-p (intern (file-name-extension
+                                                 dashboard-startup-banner)))
+                (display-graphic-p))
+           (if (file-exists-p dashboard-startup-banner)
+               dashboard-startup-banner
+             (spacemacs-buffer/warning (format "could not find banner %s"
+                                               dashboard-startup-banner))
+             (dashboard-get-banner-path 1)))
+          (t (dashboard-get-banner-path 1)))))
+
+(defun dashboard-insert-banner ()
+  "Insert Banner at the top of the dashboard."
+  (goto-char (point-max))
+  (let ((banner (dashboard-choose-banner))
+        (buffer-read-only nil))
+    (progn
+      (when banner
+	(if (image-type-available-p (intern (file-name-extension banner)))
+            (dashboard-insert-image-banner banner)
+          (dashboard-insert-ascii-banner-centered banner))))))
+
+;;
+;; Recentf
+;;
+(defun dashboard-insert-recentf-list (list-display-name list)
+  "Render LIST-DISPLAY-NAME title and items of LIST."
+  (when (car list)
+    (insert list-display-name)
+    (mapc (lambda (el)
+            (insert "\n    ")
+            (widget-create 'push-button
+                           :action `(lambda (&rest ignore) (find-file-existing ,el))
+                           :mouse-face 'highlight
+                           :follow-link "\C-m"
+                           :button-prefix ""
+                           :button-suffix ""
+                           :format "%[%t%]"
+                           (abbreviate-file-name el)))
+          list)))
+
+(defun dashboard-insert-recents (list-size)
+  "Add the list of LIST-SIZE items from recently edited files."
+  (recentf-mode)
+  (when (dashboard-insert-recentf-list
+	 "Recent Files:"
+	 (dashboard-subseq recentf-list 0 list-size))
+    (dashboard-insert-shortcut "r" "Recent Files:")))
+
+
+;;
+;; Bookmarks
+;;
+(defun dashboard-insert-bookmark-list (list-display-name list)
+  "Render LIST-DISPLAY-NAME title and bookmarks items of LIST."
+  (when (car list)
+    (insert list-display-name)
+    (mapc (lambda (el)
+            (insert "\n    ")
+            (widget-create 'push-button
+                           :action `(lambda (&rest ignore) (bookmark-jump ,el))
+                           :mouse-face 'highlight
+                           :follow-link "\C-m"
+                           :button-prefix ""
+                           :button-suffix ""
+                           :format "%[%t%]"
+                           (format "%s - %s" el (abbreviate-file-name
+                                                 (bookmark-get-filename el)))))
+          list)))
+
+(defun dashboard-insert-bookmarks (list-size)
+  "Add the list of LIST-SIZE items of bookmarks."
+  (require 'bookmark)
+  (when (dashboard-insert-bookmark-list
+	 "Bookmarks:"
+	 (dashboard-subseq (bookmark-all-names)
+			   0 list-size))
+    (dashboard-insert-shortcut "m" "Bookmarks:")))
+
+;;
+;; Projectile
+;;
+(defun dashboard-insert-project-list (list-display-name list)
+  "Render LIST-DISPLAY-NAME title and project items of LIST."
+  (when (car list)
+    (insert list-display-name)
+    (mapc (lambda (el)
+            (insert "\n    ")
+            (widget-create 'push-button
+                           :action `(lambda (&rest ignore)
+				      (projectile-switch-project-by-name ,el))
+                           :mouse-face 'highlight
+                           :follow-link "\C-m"
+                           :button-prefix ""
+                           :button-suffix ""
+                           :format "%[%t%]"
+                           (abbreviate-file-name el)))
+          list)))
+
+(defun dashboard-insert-projects (list-size)
+  "Add the list of LIST-SIZE items of projects."
+  ;; For some reason, projectile has to be loaded here
+  ;; before trying to load projects list
+  (projectile-mode)
+  (if (bound-and-true-p projectile-mode)
+      (progn
+	(projectile-load-known-projects)
+	(when (dashboard-insert-project-list
+	       "Projects:"
+	       (dashboard-subseq (projectile-relevant-known-projects)
+				 0 list-size))
+	  (dashboard-insert-shortcut "p" "Projects:")))
+    (message "Failed to load projects list")))
+
+;;
+;; Org Agenda
+;;
+(defun dashboard-insert-agenda-list (list-display-name list)
+  "Render LIST-DISPLAY-NAME title and agenda items from LIST."
+  (insert list-display-name)
+  (if (car list)
+      (mapc (lambda (el)
+              (insert "\n    ")
+              (let ((filename (nth 4 el))
+                    (lineno (nth 3 el))
+                    (title (nth 0 el)))
+                (widget-create 'push-button
+                               :action `(lambda (&rest ignore)
+                                          (let ((buffer (find-file-other-window ,filename)))
+                                            (with-current-buffer buffer
+                                              (goto-char ,lineno)
+                                              )
+                                            (switch-to-buffer buffer)))
+                               :mouse-face 'highlight
+                               :follow-link "\C-m"
+                               :button-prefix ""
+                               :button-suffix ""
+                               :format "%[%t%]"
+                               (format "%s" title)))
+              )
+            list)
+    (insert (propertize "\n    --- No items ---" 'face 'widget-button))))
+
+(defun dashboard-timestamp-to-gregorian-date (timestamp)
+  "Convert TIMESTAMP to a gregorian date.
+
+The result can be used with functions like
+`calendar-date-compare'."
+  (let ((decoded-timestamp (decode-time timestamp)))
+    (list (nth 4 decoded-timestamp)
+          (nth 3 decoded-timestamp)
+          (nth 5 decoded-timestamp))))
+
+(defun dashboard-date-due-p (timestamp &optional due-date)
+  "Check if TIMESTAMP is today or in the past.
+
+If DUE-DATE is nil, compare TIMESTAMP to today; otherwise,
+compare to the date in DUE-DATE.
+
+The time part of both TIMESTAMP and DUE-DATE is ignored, only the
+date part is considered."
+  (unless due-date
+    (setq due-date (current-time)))
+  (setq due-date (time-add due-date 86400))
+  (let* ((gregorian-date (dashboard-timestamp-to-gregorian-date timestamp))
+         (gregorian-due-date (dashboard-timestamp-to-gregorian-date due-date)))
+    (calendar-date-compare (list gregorian-date)
+                           (list gregorian-due-date))))
+
+(defun dashboard-get-agenda ()
+  "Get agenda items for today."
+  (org-compile-prefix-format 'agenda)
+  (let* ((filtered-entries nil))
+    (org-map-entries
+     (lambda ()
+       (let* ((schedule-time (org-get-scheduled-time (point)))
+             (deadline-time (org-get-deadline-time (point)))
+             (item (org-agenda-format-item
+		    (format-time-string "%Y-%m-%d" deadline-time)
+                    (org-get-heading t t)
+                    (org-outline-level)
+                    (org-get-category)
+                    (org-get-tags)
+                    t))
+             (loc (point))
+             (file (buffer-file-name)))
+         (when (and (not (org-entry-is-done-p))
+                    (or (and schedule-time (dashboard-date-due-p schedule-time))
+                        (and deadline-time (dashboard-date-due-p deadline-time))))
+           (setq filtered-entries
+                 (append filtered-entries
+                         (list (list item schedule-time deadline-time loc file)))))))
+     nil
+     'agenda)
+    filtered-entries))
+
+(defun dashboard-insert-agenda (list-size)
+  "Add the list of LIST-SIZE items of agenda."
+  (when (dashboard-insert-agenda-list "Agenda for today:"
+                                      (dashboard-get-agenda))
+    (dashboard-insert-shortcut "a" "Agenda for today:")))
+
+;; Forward declartions for optional dependency to keep check-declare happy.
+(declare-function bookmark-get-filename "ext:bookmark.el")
+(declare-function bookmark-all-names "ext:bookmark.el")
+(declare-function projectile-load-known-projects "ext:projectile.el")
+(declare-function projectile-relevant-known-projects "ext:projectile.el")
+
+(provide 'dashboard-widgets)
+;;; widgets.el ends here
.emacs.d/elpa/dashboard-1.2.3/dashboard-widgets.elc
Binary file
.emacs.d/elpa/dashboard-1.2.3/dashboard.el
@@ -0,0 +1,163 @@
+;;; dashboard.el --- A startup screen extracted from Spacemacs
+
+;; Copyright (c) 2016 Rakan Al-Hneiti & Contributors
+;;
+;; Author: Rakan Al-Hneiti
+;; URL: https://github.com/rakanalh/emacs-dashboard
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; License: GPLv3
+;;
+;; Created: October 05, 2016
+;; Modified: December 30, 2016
+;; Version: 1.2.3
+;; Keywords: startup screen tools
+;; Package-Requires: ((emacs "24.4") (page-break-lines "0.11"))
+;;; Commentary:
+
+;; An extensible Emacs dashboard, with sections for
+;; bookmarks, projectil projects, org-agenda and more.
+
+;;; Code:
+
+(require 'bookmark)
+(require 'calendar)
+(require 'org-agenda)
+(require 'page-break-lines)
+(require 'recentf)
+
+(require 'dashboard-widgets)
+
+;; Custom splash screen
+(defvar dashboard-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [tab] 'widget-forward)
+    (define-key map (kbd "C-i") 'widget-forward)
+    (define-key map [backtab] 'widget-backward)
+    (define-key map (kbd "RET") 'widget-button-press)
+    (define-key map [down-mouse-1] 'widget-button-click)
+    (define-key map (kbd "g") #'dashboard-refresh-buffer)
+    (define-key map (kbd "}") #'dashboard-next-section)
+    (define-key map (kbd "{") #'dashboard-previous-section)
+    map)
+  "Keymap for dashboard mode.")
+
+(define-derived-mode dashboard-mode special-mode "Dashboard"
+  "Dashboard major mode for startup screen.
+\\<dashboard-mode-map>
+"
+  :group 'dashboard
+  :syntax-table nil
+  :abbrev-table nil
+  (whitespace-mode -1)
+  (linum-mode -1)
+  (page-break-lines-mode 1)
+  (setq inhibit-startup-screen t)
+  (setq buffer-read-only t
+        truncate-lines t))
+
+(defgroup dashboard nil
+  "Settings that are used in the Dashboard"
+  :group 'dashboard)
+
+(defconst dashboard-buffer-name "*dashboard*"
+	  "Dashboard's buffer name.")
+
+(defvar dashboard--section-starts nil
+  "List of section starting positions")
+
+(defun dashboard-previous-section ()
+  (interactive)
+  (let ((current-section-start nil)
+        (current-position (point))
+        (previous-section-start nil))
+    (dolist (elt dashboard--section-starts)
+      (when (and current-section-start
+                 (not previous-section-start))
+        (setq previous-section-start elt))
+      (when (and (not current-section-start)
+                 (< elt current-position))
+        (setq current-section-start elt)))
+    (goto-char (if (eq current-position current-section-start)
+                   previous-section-start
+                 current-section-start))))
+
+(defun dashboard-next-section ()
+  (interactive
+   (let ((current-position (point))
+         (next-section-start nil)
+         (section-starts (reverse dashboard--section-starts)))
+     (dolist (elt section-starts)
+       (when (and (not next-section-start)
+                  (> elt current-position))
+         (setq next-section-start elt)))
+     (when next-section-start
+       (goto-char next-section-start)))))
+
+(defun dashboard-insert-startupify-lists ()
+  "Insert the list of widgets into the buffer."
+  (interactive)
+  (let ((buffer-exists (buffer-live-p (get-buffer dashboard-buffer-name)))
+        (save-line nil))
+    (when (or (not (eq dashboard-buffer-last-width (window-width)))
+              (not buffer-exists))
+      (setq dashboard-banner-length (window-width)
+            dashboard-buffer-last-width dashboard-banner-length)
+      (with-current-buffer (get-buffer-create dashboard-buffer-name)
+        (let ((buffer-read-only nil)
+              (list-separator "\n\n"))
+          (erase-buffer)
+          (dashboard-insert-banner)
+          (dashboard-insert-page-break)
+          (setq dashboard--section-starts nil)
+          (mapc (lambda (els)
+                  (let* ((el (or (car-safe els) els))
+                         (list-size
+                          (or (cdr-safe els)
+                              dashboard-items-default-length))
+                         (item-generator
+                          (cdr-safe (assoc el dashboard-item-generators))))
+                    (add-to-list 'dashboard--section-starts (point))
+                    (funcall item-generator list-size)
+                    (dashboard-insert-page-break)))
+                dashboard-items))
+        (dashboard-mode)
+        (goto-char (point-min))))))
+
+(add-hook 'window-setup-hook
+          (lambda ()
+            (add-hook 'window-configuration-change-hook 'dashboard-resize-on-hook)
+            (dashboard-resize-on-hook)))
+
+(defun dashboard-refresh-buffer ()
+  "Refresh buffer."
+  (interactive)
+  (kill-buffer dashboard-buffer-name)
+  (dashboard-insert-startupify-lists)
+  (switch-to-buffer dashboard-buffer-name))
+
+(defun dashboard-resize-on-hook ()
+  (let ((space-win (get-buffer-window dashboard-buffer-name))
+        (frame-win (frame-selected-window)))
+    (when (and space-win
+               (not (window-minibuffer-p frame-win)))
+      (with-selected-window space-win
+        (dashboard-insert-startupify-lists)))))
+
+;;;###autoload
+(defun dashboard-setup-startup-hook ()
+  "Setup post initialization hooks.
+If a command line argument is provided, assume a filename and skip displaying Dashboard"
+  (if (< (length command-line-args) 2 )
+      (progn
+	(add-hook 'after-init-hook (lambda ()
+				     ;; Display useful lists of items
+				     (dashboard-insert-startupify-lists)))
+	(add-hook 'emacs-startup-hook '(lambda ()
+					 (switch-to-buffer "*dashboard*")
+					 (goto-char (point-min))
+					 (redisplay))))))
+
+(provide 'dashboard)
+;;; dashboard.el ends here
.emacs.d/elpa/dashboard-1.2.3/dashboard.elc
Binary file
.emacs.d/elpa/doom-themes-1.2.5/doom-molokai-theme.el
@@ -0,0 +1,417 @@
+;; DOOM Molokai (inspired by molokai)
+
+(require 'doom-themes)
+
+(deftheme doom-molokai
+  "A dark theme inspired by molokai")
+
+(let ((c '((class color) (min-colors 89)))
+      (bold   doom-enable-bold)
+      (italic doom-enable-italic)
+
+      (bg             "#1D1F20")
+      (bg-l           "#222425")
+      (fg             "#D6D6D4")
+      (subtle         "#aab6c7")
+      (vsubtle        "#556172")
+
+      (black          "#000000")
+      (grey           "#C0C5CF")
+      (grey-.5        "#828284")
+      (grey-1         "#525254")
+      (grey-2         "#39393D")
+      (white          "#FFFFFF")
+      (yellow         "#E2C770")
+      (orange         "#FD971F")
+      (red            "#E74C3C")
+      (magenta        "#F92672")
+      (violet         "#9C91E4")
+      (blue           "#268BD2")
+      (blue+2         "#727280")
+      (cyan           "#66D9EF")
+      (green          "#B6E63E")
+      (green-3        "#86B20E")
+      (dark-cyan      "#8FA1B3"))
+
+  (let* ((search-bg      green)
+         (search-fg      black)
+         (search-rest-bg violet)
+         (search-rest-fg black)
+         (highlight      orange)
+         (vertical-bar   grey-2)
+         (current-line   "#1F1F1F")
+         (selection      "#535556")
+         (builtin        orange)
+         (comments       grey-1)
+         (constants      green)
+         (delimiters     "#c0c5ce")
+         (functions      cyan)
+         (keywords       magenta)
+         (methods        dark-cyan)
+         (operators      violet)
+         (type           cyan)
+         (strings        green)
+         (variables      orange)
+
+         (error-highlight red)
+
+         (linum-bg       current-line)
+         (linum-fg       "#3F3F48")
+         (linum-hl-fg    orange)
+         (linum-hl-bg    current-line)
+
+         (active-minibuffer "#404046")
+         (modeline-fg    white)
+         (modeline-fg-2  orange)
+         (modeline-fg-3  orange)
+         (modeline-fg-inactive  "#80858F")
+         (modeline-bg    grey-2)
+         (modeline-bg-2  grey-2)
+         (modeline-bg-3  grey-2)
+         (modeline-bg-inactive  current-line)
+
+         (vc-modified    grey-2)
+         (vc-added       green-3)
+         (vc-deleted     red))
+
+    (custom-theme-set-faces
+     'doom-molokai
+     ;; Doom faces
+     `(doom-default
+       ((((type graphic)) :inherit default :background ,bg-l)
+        (t                :inherit default)))
+     `(doom-hl-line
+       ((((type graphic)) :background ,bg)
+        (t                :inherit hl-line)))
+     `(doom-linum
+       ((((type graphic)) :inherit linum :background ,bg-l)
+        (t                :inherit linum)))
+     `(doom-minibuffer-active ((,c (:background ,bg-l))))
+     `(doom-nlinum-highlight  ((,c (:foreground ,linum-hl-fg :bold nil))))
+     `(doom-flycheck-error    ((,c (:underline nil :foreground ,black :background ,red))))
+     `(doom-flycheck-warning  ((,c (:underline nil :foreground ,black :background ,yellow))))
+     `(doom-flycheck-info     ((,c (:underline nil :foreground ,black :background ,green))))
+     ;; Text
+     `(default                             ((,c (:foreground ,fg :background ,bg))))
+     `(fringe                              ((,c (:background ,bg-l :foreground ,grey-1))))
+     `(cursor                              ((,c (:background ,orange))))
+     `(hl-line                             ((,c (:background ,bg-l))))
+     `(region                              ((,c (:background ,grey-2 :foreground ,white))))
+     `(highlight                           ((,c (:foreground ,yellow :inverse-video t))))
+     `(shadow                              ((,c (:foreground ,orange))))
+     `(minibuffer-prompt                   ((,c (:foreground ,orange))))
+     `(tooltip                             ((,c (:background ,grey-2 :foreground ,orange))))
+     `(error                               ((,c (:foreground ,red   ))))
+     `(warning                             ((,c (:foreground ,yellow))))
+     `(success                             ((,c (:foreground ,green ))))
+     ;; `(secondary-selection              ((,c (:background ,orange))))
+     ;; `(lazy-highlight                   ((,c (:background ,orange))))
+     ;; `(match                            ((,c (:background ,magenta))))
+     `(bold                                ((,c (:weight bold  :foreground ,white))))
+     `(italic                              ((,c (:slant italic :foreground ,subtle))))
+     `(bold-italic                         ((,c (:weight bold  :slant italic :foreground ,white))))
+     `(trailing-whitespace                 ((,c (:background "#884444"))))
+     `(whitespace-tab                      ((,c (:foreground ,grey-2))))
+     `(whitespace-newline                  ((,c (:foreground ,grey-2))))
+     `(whitespace-trailing                 ((,c (:background ,grey-2))))
+     `(vertical-border                     ((,c (:foreground ,vertical-bar :background ,vertical-bar))))
+     `(linum                               ((,c (:foreground ,linum-fg :background ,bg :bold nil))))
+     `(font-lock-builtin-face              ((,c (:foreground ,builtin))))
+     `(font-lock-comment-face              ((,c (:foreground ,comments))))
+     `(font-lock-comment-delimiter-face    ((,c (:foreground ,comments))))
+     `(font-lock-doc-face                  ((,c (:foreground ,blue+2))))
+     `(font-lock-doc-string-face           ((,c (:foreground ,blue+2))))
+     `(font-lock-constant-face             ((,c (:foreground ,constants))))
+     `(font-lock-function-name-face        ((,c (:foreground ,functions))))
+     `(font-lock-keyword-face              ((,c (:foreground ,keywords))))
+     `(font-lock-string-face               ((,c (:foreground ,strings))))
+     `(font-lock-type-face                 ((,c (:foreground ,type))))
+     `(font-lock-variable-name-face        ((,c (:foreground ,variables))))
+     `(font-lock-warning-face              ((,c (:foreground ,red))))
+     `(font-lock-negation-char-face        ((,c (:foreground ,operators :bold t))))
+     `(font-lock-preprocessor-char-face    ((,c (:foreground ,operators :bold t))))
+     `(font-lock-regexp-grouping-backslash ((,c (:foreground ,operators :bold t))))
+     `(font-lock-regexp-grouping-construct ((,c (:foreground ,operators :bold t))))
+     `(show-paren-match                    ((,c (:foreground ,magenta :inverse-video t))))
+     ;; Modeline
+     `(mode-line                           ((,c (:foreground ,modeline-fg          :background ,modeline-bg))))
+     `(mode-line-inactive                  ((,c (:foreground ,modeline-fg-inactive :background ,modeline-bg-inactive))))
+     `(mode-line-is-modified               ((,c (:foreground ,magenta :background nil :bold t))))
+     `(mode-line-buffer-file               ((,c (:foreground ,white :bold t))))
+     `(mode-line-buffer-path               ((,c (:foreground ,grey))))
+     `(mode-line-count-face                ((,c (:foreground ,black :background ,magenta))))
+     `(spaceline-flycheck-error            ((,c (:underline nil :foreground ,black :background ,red))))
+     `(spaceline-flycheck-warning          ((,c (:underline nil :foreground ,black :background ,yellow))))
+     `(spaceline-flycheck-info             ((,c (:underline nil :foreground ,black :background ,green))))
+     `(spaceline-highlight-face            ((,c (:foreground ,black :background ,highlight))))
+     `(powerline-active1                   ((,c (:foreground ,modeline-fg-2 :background ,modeline-bg-2))))
+     `(powerline-active2                   ((,c (:foreground ,modeline-fg-3 :background ,modeline-bg-3))))
+     `(powerline-inactive1                 ((,c (:foreground ,modeline-fg-inactive :background ,modeline-bg-inactive))))
+     `(powerline-inactive2                 ((,c (:foreground ,modeline-fg-inactive :background ,modeline-bg-inactive))))
+     ;; Custom (doom)
+     `(doom-modeline-buffer-path       ((,c (:foreground ,(if bold white yellow) :bold ,bold))))
+     `(doom-modeline-buffer-project    ((,c (:foreground ,fg))))
+     `(doom-modeline-buffer-modified   ((,c (:foreground ,orange))))
+     `(doom-modeline-buffer-major-mode ((,c (:foreground ,white :bold ,bold))))
+
+     `(doom-modeline-highlight     ((,c (:foreground ,orange))))
+     `(doom-modeline-panel         ((,c (:foreground ,black :background ,orange))))
+     `(doom-modeline-bar           ((,c (:background ,yellow))))
+     `(doom-modeline-eldoc-bar     ((,c (:background ,red))))
+
+     `(doom-modeline-info         ((,c (:foreground ,yellow))))
+     `(doom-modeline-warning      ((,c (:background ,green))))
+     `(doom-modeline-urgent       ((,c (:background ,red))))
+     ;; Search
+     `(isearch                             ((,c (:foreground ,search-fg :background ,search-bg))))
+     `(isearch-lazy-highlight-face         ((,c (:foreground ,search-rest-fg :background ,search-rest-bg))))
+     ;; Terminal colors
+     `(term-color-black            ((,c (:foreground ,black :background ,black))))
+     `(term-color-red              ((,c (:foreground ,red :background ,red))))
+     `(term-color-green            ((,c (:foreground ,green :background ,green))))
+     `(term-color-yellow           ((,c (:foreground ,yellow :background ,yellow))))
+     `(term-color-blue             ((,c (:foreground ,blue :background ,blue))))
+     `(term-color-magenta          ((,c (:foreground ,magenta :background ,magenta))))
+     `(term-color-cyan             ((,c (:foreground ,cyan :background ,cyan))))
+     `(term-color-white            ((,c (:foreground ,white :background ,white))))
+     ;; `window-divider'
+     `(window-divider              ((,c (:foreground ,vertical-bar))))
+     `(window-divider-first-pixel  ((,c (:foreground ,vertical-bar))))
+     `(window-divider-last-pixel   ((,c (:foreground ,vertical-bar))))
+
+     ;;
+     ;; Plugins
+     ;;
+
+     ;; Avy
+     `(avy-lead-face-0    ((,c (:background ,orange :foreground ,black))))
+     `(avy-lead-face-1    ((,c (:background ,orange :foreground ,black))))
+     `(avy-lead-face-2    ((,c (:background ,orange :foreground ,black))))
+     `(avy-lead-face      ((,c (:background ,orange :foreground ,black))))
+     ;; company-mode
+     `(company-tooltip             ((,c (:background ,black :foreground ,fg))))
+     `(company-tooltip-common      ((,c (:foreground ,orange))))
+     `(company-tooltip-search      ((,c (:foreground ,search-fg :background ,highlight))))
+     `(company-tooltip-selection   ((,c (:background ,selection))))
+     `(company-tooltip-mouse       ((,c (:background ,magenta :foreground ,bg))))
+     `(company-scrollbar-bg        ((,c (:background ,black))))
+     `(company-scrollbar-fg        ((,c (:background ,orange))))
+     `(company-preview             ((,c (:foreground ,orange))))
+     `(company-preview-common      ((,c (:foreground ,magenta :background ,grey-1))))
+     `(company-preview-search      ((,c (:inherit company-tooltip-search))))
+     ;; diff-hl
+     `(diff-hl-change              ((,c (:foreground ,vc-modified))))
+     `(diff-hl-delete              ((,c (:foreground ,vc-deleted))))
+     `(diff-hl-insert              ((,c (:foreground ,vc-added))))
+     ;; evil-mode
+     `(evil-ex-substitute-replacement ((,c (:foreground ,magenta :background ,black :bold ,bold))))
+     `(evil-search-highlight-persist-highlight-face ((,c (:background ,search-rest-bg))))
+     ;; evil-snipe
+     `(evil-snipe-first-match-face ((,c (:foreground ,search-fg :background ,search-bg))))
+     `(evil-snipe-matches-face     ((,c (:foreground ,search-bg :underline t))))
+     ;; flycheck
+     `(flycheck-error              ((,c (:underline (:style wave :color ,red)    :background ,grey-2))))
+     `(flycheck-warning            ((,c (:underline (:style wave :color ,yellow) :background ,grey-2))))
+     `(flycheck-info               ((,c (:underline (:style wave :color ,green)  :background ,grey-2))))
+     `(flyspell-incorrect          ((,c (:underline (:style wave :color ,error-highlight) :inherit unspecified))))
+     ;; jabber
+     `(jabber-activity-face ((,c (:inherit bold :foreground ,red))))
+     `(jabber-activity-personal-face ((,c (:inherit bold :foreground ,blue))))
+     `(jabber-chat-error ((,c (:inherit bold :foreground ,red))))
+     `(jabber-chat-prompt-foreign ((,c (:inherit bold :foreground ,red))))
+     `(jabber-chat-prompt-local ((,c (:inherit bold :foreground ,blue))))
+     `(jabber-chat-prompt-system ((,c (:inherit bold :foreground ,green))))
+     `(jabber-chat-text-foreign ((,c (:foreground ,fg))))
+     `(jabber-chat-text-local ((,c (:foreground ,fg))))
+     `(jabber-rare-time-face ((,c (:foreground ,green))))
+     `(jabber-roster-user-away ((,c (:foreground ,yellow))))
+     `(jabber-roster-user-chatty ((,c (:inherit bold :foreground ,green))))
+     `(jabber-roster-user-dnd ((,c (:foreground ,red))))
+     `(jabber-roster-user-error ((,c (:foreground ,red))))
+     `(jabber-roster-user-offline ((,c (:foreground ,fg))))
+     `(jabber-roster-user-online ((,c (:inherit bold :foreground ,green))))
+     `(jabber-roster-user-xa ((,c (:foreground ,cyan))))
+     ;; git-gutter
+     `(git-gutter:modified         ((,c (:foreground ,vc-modified))))
+     `(git-gutter:added            ((,c (:foreground ,vc-added))))
+     `(git-gutter:deleted          ((,c (:foreground ,vc-deleted))))
+     `(git-gutter-fr:modified      ((,c (:foreground ,vc-modified))))
+     `(git-gutter-fr:added         ((,c (:foreground ,vc-added))))
+     `(git-gutter-fr:deleted       ((,c (:foreground ,vc-deleted))))
+     `(git-gutter+-modified        ((,c (:foreground ,vc-modified :background nil))))
+     `(git-gutter+-added           ((,c (:foreground ,vc-added :background nil))))
+     `(git-gutter+-deleted         ((,c (:foreground ,vc-deleted :background nil))))
+     ;; Helm
+     `(helm-selection              ((,c (:background ,selection))))
+     `(helm-match                  ((,c (:foreground ,magenta))))
+     `(helm-source-header          ((,c (:background ,current-line :foreground ,grey-1))))
+     `(helm-swoop-target-line-face ((,c (:foreground ,highlight :inverse-video t))))
+     `(helm-ff-file              ((,c (:foreground ,grey))))
+     `(helm-ff-prefix            ((,c (:foreground ,magenta))))
+     `(helm-ff-dotted-directory  ((,c (:foreground ,grey-1))))
+     `(helm-ff-directory         ((,c (:foreground ,orange))))
+     `(helm-ff-executable        ((,c (:foreground ,white :slant italic))))
+     ;; hide-show
+     `(hs-face                     ((,c (:foreground ,comments :background ,black))))
+     `(hs-fringe-face              ((,c (:foreground ,orange))))
+     ;; highlight-{quoted,numbers,indentation}-mode
+     `(highlight-indentation-face                 ((,c (:background ,current-line))))
+     `(highlight-indentation-current-column-face  ((,c (:background ,current-line))))
+     `(highlight-quoted-symbol     ((,c (:foreground ,yellow))))
+     `(highlight-quoted-quote      ((,c (:foreground ,magenta))))
+     `(highlight-numbers-number    ((,c (:foreground ,constants))))
+     ;; indent-guide,
+     `(indent-guide-face           ((,c (:foreground "#2F2F38"))))
+     ;; ivy
+     `(ivy-current-match           ((,c (:background ,grey-2))))
+     `(ivy-minibuffer-match-face-1 ((,c (:foreground ,yellow))))
+     `(ivy-minibuffer-match-face-2 ((,c (:background ,black :foreground ,red :bold ,bold))))
+     `(ivy-minibuffer-match-face-3 ((,c (:background ,black :foreground ,red :bold ,bold))))
+     `(ivy-minibuffer-match-face-4 ((,c (:background ,black :foreground ,red :bold ,bold))))
+     `(ivy-virtual                 ((,c (:foreground ,fg))))
+     ;; neotree
+     `(neo-root-dir-face           ((,c (:foreground ,green))))
+     `(neo-file-link-face          ((,c (:foreground ,white))))
+     `(neo-dir-link-face           ((,c (:foreground ,cyan))))
+     `(neo-expand-btn-face         ((,c (:foreground ,magenta))))
+     ;; pop-tip
+     `(popup                       ((,c (:inherit tooltip))))
+     `(popup-tip-face              ((,c (:inherit tooltip))))
+     ;; rainbow-delimiters
+     `(rainbow-delimiters-depth-1-face   ((,c (:foreground ,magenta))))
+     `(rainbow-delimiters-depth-2-face   ((,c (:foreground ,orange))))
+     `(rainbow-delimiters-depth-3-face   ((,c (:foreground ,yellow))))
+     `(rainbow-delimiters-depth-4-face   ((,c (:foreground ,green))))
+     `(rainbow-delimiters-depth-5-face   ((,c (:foreground ,cyan))))
+     `(rainbow-delimiters-unmatched-face ((,c (:foreground ,red :inverse-video t))))
+     ;; re-builder
+     `(reb-match-0                 ((,c (:foreground ,orange   :inverse-video t))))
+     `(reb-match-1                 ((,c (:foreground ,magenta  :inverse-video t))))
+     `(reb-match-2                 ((,c (:foreground ,green    :inverse-video t))))
+     `(reb-match-3                 ((,c (:foreground ,yellow   :inverse-video t))))
+     ;; swiper
+     `(swiper-line-face            ((,c (:background ,blue    :foreground ,black))))
+     `(swiper-match-face-1         ((,c (:background ,black   :foreground ,grey))))
+     `(swiper-match-face-2         ((,c (:background ,orange  :foreground ,black :bold ,bold))))
+     `(swiper-match-face-3         ((,c (:background ,magenta :foreground ,black :bold ,bold))))
+     `(swiper-match-face-4         ((,c (:background ,green   :foreground ,black :bold ,bold))))
+     ;; stripe-buffer
+     `(stripe-highlight            ((,c (:inherit doom-default))))
+     ;; volatile highlights
+     `(vhl/default-face            ((,c (:background ,grey-2))))
+     ;; workgroups2
+     `(wg-current-workgroup-face   ((,c (:foreground ,black   :background ,orange))))
+     `(wg-other-workgroup-face     ((,c (:foreground ,grey-.5 :background ,current-line))))
+
+     ;;
+     ;; Language-specific
+     ;;
+
+     ;; (css|scss)-mode
+     `(css-proprietary-property ((,c (:foreground ,keywords))))
+     ;; js2-mode
+     `(js2-function-param  ((,c (:foreground ,variables))))
+     `(js2-function-call   ((,c (:foreground ,functions))))
+     `(js2-object-property ((,c (:foreground ,methods))))
+     `(js2-jsdoc-tag       ((,c (:foreground ,comments))))
+     ;; web-mode
+     `(web-mode-doctype-face           ((,c (:foreground ,comments))))
+     `(web-mode-html-tag-face          ((,c (:foreground ,methods))))
+     `(web-mode-html-tag-bracket-face  ((,c (:foreground ,methods))))
+     `(web-mode-html-attr-name-face    ((,c (:foreground ,type))))
+     `(web-mode-html-entity-face       ((,c (:foreground ,cyan :italic t))))
+     `(web-mode-block-control-face     ((,c (:foreground ,orange))))
+     ;;`(web-mode-html-tag-bracket-face  ((,c (:foreground ,operators))))
+     ;; markdown-mode
+     `(markdown-header-face           ((,c (:foreground ,orange))))
+     `(markdown-header-delimiter-face ((,c (:foreground ,orange))))
+     `(markdown-blockquote-face       ((,c (:foreground ,blue+2))))
+     `(markdown-markup-face           ((,c (:foreground ,cyan))))
+     `(markdown-inline-face           ((,c (:foreground ,cyan))))
+     `(markdown-list-face             ((,c (:foreground ,magenta))))
+     `(markdown-pre-face              ((,c (:foreground ,cyan))))
+     `(markdown-header-face-1         ((,c (:inherit markdown-header-face))))
+     `(markdown-header-face-2         ((,c (:inherit markdown-header-face))))
+     `(markdown-header-face-3         ((,c (:inherit markdown-header-face))))
+     `(markdown-header-face-4         ((,c (:inherit markdown-header-face))))
+     `(markdown-header-face-5         ((,c (:inherit markdown-header-face))))
+     `(markdown-header-face-6         ((,c (:inherit markdown-header-face))))
+     ;;`(markdown-header-rule-face       (:inherit shadow))
+     ;;`(markdown-italic-face            (:inherit italic))
+     ;;`(markdown-link-face              (:inherit shadow))
+     ;;`(markdown-link-title-face        (:inherit link))
+     ;;`(markdown-url-face               (:inherit link))
+     ;; org-mode
+     `(org-tag                      ((,c (:foreground ,yellow :bold nil))))
+     ;;`(org-ellipsis               ((,c (:inherit hs-face))))
+     `(org-hide                     ((,c (:foreground ,bg))))
+     `(org-table                    ((,c (:foreground ,cyan))))
+     `(org-quote                    ((,c (:slant italic :foreground ,grey :background ,current-line))))
+     `(org-document-info            ((,c (:foreground ,orange))))
+     `(org-document-info-keyword    ((,c (:foreground ,grey-1))))
+     `(org-meta-line                ((,c (:foreground ,vsubtle))))
+     `(org-block-begin-line         ((,c (:background ,current-line :foreground ,vsubtle))))
+     `(org-block-end-line           ((,c (:inherit org-block-begin-line))))
+     `(org-block-background         ((,c (:background ,current-line))))
+     `(org-archived                 ((,c (:foreground ,grey-.5))))
+     `(org-document-title           ((,c (:foreground ,cyan))))
+     `(org-level-1                  ((,c (:background ,current-line :foreground ,magenta   :bold ,bold))))
+     `(org-level-2                  ((,c (                          :foreground ,dark-cyan :bold ,bold))))
+     `(org-level-3                  ((,c (                          :foreground ,violet    :bold ,bold))))
+     `(org-level-4                  ((,c (                          :foreground ,green     :bold ,bold))))
+     `(org-level-5                  ((,c (                          :foreground ,yellow))))
+     `(org-level-6                  ((,c (                          :foreground ,blue+2))))
+     `(org-code                     ((,c (:foreground ,orange))))
+     `(org-verbatim                 ((,c (:foreground ,green))))
+     `(org-formula                  ((,c (:foreground ,cyan))))
+     `(org-list-dt                  ((,c (:foreground ,cyan))))
+     `(org-footnote                 ((,c (:foreground ,orange))))
+     `(org-link                     ((,c (:underline t :foreground ,cyan :bold inherit))))
+     `(org-date                     ((,c (:foreground ,violet))))
+     `(org-todo                     ((,c (:foreground ,yellow :bold inherit))))
+     `(org-done                     ((,c (:foreground ,green :bold inherit))))
+     `(org-headline-done            ((,c (:foreground ,grey-.5 :strike-through t :bold nil))))
+     `(org-special-keyword          ((,c (:foreground ,magenta))))
+     `(org-checkbox-statistics-todo ((,c (:inherit org-todo))))
+     `(org-checkbox-statistics-done ((,c (:inherit org-done))))
+     ;;; rpm-spec-mode
+     `(rpm-spec-macro-face        ((,c (:foreground ,yellow))))
+     `(rpm-spec-var-face          ((,c (:foreground ,violet))))
+     `(rpm-spec-tag-face          ((,c (:foreground ,blue))))
+     `(rpm-spec-obsolete-tag-face ((,c (:foreground ,red))))
+     `(rpm-spec-package-face      ((,c (:foreground ,orange))))
+     `(rpm-spec-dir-face          ((,c (:foreground ,green))))
+     `(rpm-spec-doc-face          ((,c (:foreground ,orange))))
+     `(rpm-spec-ghost-face        ((,c (:foreground ,(doom-lighten grey-1 0.2)))))
+     `(rpm-spec-section-face      ((,c (:foreground ,magenta))))
+     )
+
+    (custom-theme-set-variables
+     'doom-molokai
+     `(vc-annotate-color-map
+       '((20 .  ,green)
+         (40 .  ,(doom-blend yellow green (/ 1.0 3)))
+         (60 .  ,(doom-blend yellow green (/ 2.0 3)))
+         (80 .  ,yellow)
+         (100 . ,(doom-blend orange yellow (/ 1.0 3)))
+         (120 . ,(doom-blend orange yellow (/ 2.0 3)))
+         (140 . ,orange)
+         (160 . ,(doom-blend magenta orange (/ 1.0 3)))
+         (180 . ,(doom-blend magenta orange (/ 2.0 3)))
+         (200 . ,magenta)
+         (220 . ,(doom-blend red magenta (/ 1.0 3)))
+         (240 . ,(doom-blend red magenta (/ 2.0 3)))
+         (260 . ,red)
+         (280 . ,(doom-blend grey red (/ 1.0 4)))
+         (300 . ,(doom-blend grey red (/ 2.0 4)))
+         (320 . ,(doom-blend grey red (/ 3.0 4)))
+         (340 . ,grey)
+         (360 . ,grey)))
+     `(vc-annotate-very-old-color nil)
+     `(vc-annotate-background ,black))))
+
+(provide-theme 'doom-molokai)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
.emacs.d/elpa/doom-themes-1.2.5/doom-neotree.el
@@ -0,0 +1,312 @@
+;;; doom-neotree.el
+
+(unless doom--inhibit-warning
+  (message "doom-themes: loading `doom-neotree' directly is obsolete, call `doom-themes-nlinum-config' instead"))
+
+(defgroup doom-neotree nil
+  "Options for doom's neotree theme"
+  :group 'doom-themes)
+
+;;
+(defface doom-neotree-dir-face  '((t (:inherit neo-dir-link-face)))
+  "Face for directory labels."
+  :group 'doom-neotree)
+
+(defface doom-neotree-file-face '((t (:inherit neo-file-link-face)))
+  "Face for file name labels."
+  :group 'doom-neotree)
+
+;; file type faces
+(defface doom-neotree-hidden-file-face '((t (:inherit font-lock-comment-face)))
+  "Face for labels of hidden files. See `doom-neotree-file-face-re-alist'."
+  :group 'doom-neotree)
+
+(defface doom-neotree-text-file-face '((t (:inherit neo-file-link-face)))
+  "Face for labels of text/documentation files (readmes, org files, etc). See
+`doom-neotree-file-face-re-alist'."
+  :group 'doom-neotree)
+
+(defface doom-neotree-media-file-face '((t (:inherit neo-file-link-face)))
+  "Face for labels of media files. See `doom-neotree-file-face-re-alist'."
+  :group 'doom-neotree)
+
+(defface doom-neotree-data-file-face '((t (:inherit neo-file-link-face)))
+  "Face for labels of data files (json, yaml, xml, etc). See
+`doom-neotree-file-face-re-alist'."
+  :group 'doom-neotree)
+
+
+;;
+(defcustom doom-neotree-project-size 1.4
+  "What :height to display the project icon at the top at."
+  :type 'float
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-folder-size 1.05
+  "What :height to display the folder icons at."
+  :type 'float
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-chevron-size 0.8
+  "What :height to display the chevron icons at."
+  :type 'float
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-line-spacing 2
+  "Line-spacing for neotree buffer."
+  :type 'symbol
+  :group 'doom-neotree)
+
+(define-obsolete-variable-alias 'doom-neotree-enable-file-icons 'doom-neotree-file-icons)
+(defcustom doom-neotree-file-icons 'simple
+  "The style to use for the file icons. Can be nil (disabled), non-nil (for a
+diverse iconset), or 'simple, which is closest's to Atom's style as it only
+distinguishes text, source, pdfs, images and binary files."
+  :type '(choice
+          (const :tag "A diverse array of file icons based on file type" t)
+          (const :tag "Minimalistic file icons (like Atom's)" 'simple)
+          (const :tag "Disable file icons" nil))
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-enable-folder-icons t
+  "If non-nil, display folder icons next to each file. Different icons are used
+depending on whether the folder is a repo, symlink or regular folder."
+  :type 'boolean
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-enable-open-chevron-icons t
+  "If non-nil, display the chevron-down icon next to each expanded folder."
+  :type 'boolean
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-enable-closed-chevron-icons t
+  "If non-nil, display the chevron-right icon next to each collapsed folder."
+  :type 'boolean
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-enable-variable-pitch nil
+  "If non-nil, labels will use the `doom-neotree-dir-face' and
+`doom-neotree-dir-face' faces, which inherit from the `variable-pitch' face."
+  :type 'boolean
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-enable-type-colors t
+  "If non-nil, color each file/folder based on the categories determined by
+`doom-neotree-file-face-re-alist'."
+  :type 'boolean
+  :group 'doom-neotree)
+
+(defcustom doom-neotree-file-face-re-alist
+  '(("\\(/\\.[^$/]+\\|\\.\\(lock\\|resolved\\|o\\|pyc\\|elc\\)$\\|/\\(node_modules\\|vendor\\)[/$]\\)"
+     . doom-neotree-hidden-file-face)
+    ("\\(\\.\\(md\\|org\\|rst\\|log\\)\\|/[A-Z_-]+\\(\\.[a-z]+\\)?\\)$"
+     . doom-neotree-text-file-face)
+    ("\\.\\(png\\|jpe?g\\|gif\\|tiff\\|svg\\|bmp\\|mov\\|avi\\|mp[34]\\|webm\\|zip\\|tar\\(\\.gz\\)?\\|7z\\|rar\\)$"
+     . doom-neotree-media-file-face)
+    ("\\.\\([jc]son\\|\\(ya?\\|x\\|to\\)ml\\|xml\\)"
+     . doom-neotree-data-file-face))
+  "Regexps used to determine what category each file/folder belongs to, and what
+face to assign them."
+  :type '(repeat (cons (regexp :tag "Pattern")
+                       (symbol :tag "Face")))
+  :group 'doom-neotree)
+
+(defvar doom--neotree-file-re
+  `((code    . ,(concat "\\.\\(p?html?\\|xml\\|ya?ml\\|json\\|tpl\\|conf\\|erb\\|mustache\\|twig\\|ejs\\|haml\\|pug\\|jade\\)$"))
+    (media   . ,(concat "\\.\\("
+                        "png\\|jpe?g\\|gif\\|tiff\\|svg\\|bmp" ; images
+                        "\\|mov\\|avi\\|mp[34]\\|webm"         ; media
+                        "\\)$"
+                        ))
+    (archive . "\\.\\(zip\\|rar\\|7z\\|tar\\(\\.gz\\)?\\)$"))
+  "An alist mapping file type to regular expressions, used to determine what
+type of icon to display for the file if `doom-neotree-file-icons' is set to
+`simple'.")
+
+
+;;
+(defun doom--neotree-no-fringes ()
+  "Remove fringes in neotree. They get reset each time you select the neotree
+pane and are highlighted incorrectly."
+  (set-window-fringes neo-global--window 1 0))
+
+(defun doom--neotree-setup (&rest _)
+  (setq line-spacing doom-neotree-line-spacing
+        tab-width 1)
+  (when (featurep 'hl-line)
+    (set (make-local-variable 'hl-line-sticky-flag) t)
+    (hl-line-mode +1)))
+
+(defun doom--neotree-folder-icon-for (dir chevron &optional faces)
+  (let* ((path (expand-file-name dir))
+         (chevron
+          (if chevron
+              (all-the-icons-octicon
+               (format "chevron-%s" chevron)
+               :v-adjust 0.1
+               :face `(:inherit (,@faces)
+                       :family ,(all-the-icons-octicon-family)
+                       :height ,doom-neotree-chevron-size))
+            spc))
+         (icon
+          (when doom-neotree-enable-folder-icons
+            (all-the-icons-octicon
+             (cond ((file-symlink-p path) "file-symlink-directory")
+                   ((file-exists-p (format "%s/.git" path)) "file-submodule")
+                   ((all-the-icons-dir-is-submodule path) "file-submodule")
+                   (t "file-directory"))
+             :v-adjust 0
+             :face `(:inherit (,@faces)
+                     :family ,(all-the-icons-octicon-family)
+                     :height ,doom-neotree-folder-size)))))
+    (concat chevron "\t" icon)))
+
+(defun doom--neotree-file-icon-for (file-name &optional faces)
+  (cond ((eq doom-neotree-file-icons 'simple)
+         (if file-name
+             (propertize
+               (cond ((string-match-p (cdr (assq 'code doom--neotree-file-re)) file-name)
+                      (all-the-icons-octicon "file-code"))
+                     ((string-match-p (cdr (assq 'media doom--neotree-file-re)) file-name)
+                      (all-the-icons-octicon "file-media"))
+                     ((string-match-p (cdr (assq 'archive doom--neotree-file-re)) file-name)
+                      (all-the-icons-octicon "file-zip"))
+                     ((string= (or (file-name-extension file-name) "") "pdf")
+                      (all-the-icons-octicon "file-pdf"))
+                     ((file-symlink-p file-name)
+                      (all-the-icons-octicon "file-symlink-file"))
+                     ((file-executable-p file-name)
+                      (all-the-icons-octicon "file-binary"))
+                     (t
+                      (all-the-icons-octicon "file-text")))
+               'face `(:inherit (,@faces)
+                       :family ,(all-the-icons-octicon-family)
+                       :height 1.3)
+               'display '(raise 0))
+           (all-the-icons-fileicon "default")))
+        (t (all-the-icons-icon-for-file file-name))))
+
+(defun doom--neo-insert-fold-symbol (type file-name &optional faces)
+  "Custom hybrid unicode theme with leading whitespace."
+  (let ((spc "\t")
+        (vspc (propertize "  " 'face 'variable-pitch)))
+    (or (and (eq type 'open)
+             (insert
+              (concat spc
+                      (doom--neotree-folder-icon-for
+                       file-name
+                       (if doom-neotree-enable-open-chevron-icons "down")
+                       faces)
+                      vspc)))
+        (and (eq type 'close)
+             (insert
+              (concat spc
+                      (doom--neotree-folder-icon-for
+                       file-name
+                       (if doom-neotree-enable-closed-chevron-icons "right")
+                       faces)
+                      vspc)))
+        (and (eq type 'leaf)
+             (insert
+              (concat (when (or doom-neotree-enable-open-chevron-icons
+                                doom-neotree-enable-closed-chevron-icons)
+                        spc)
+                      (when doom-neotree-enable-folder-icons spc)
+                      (when doom-neotree-file-icons
+                        (concat spc (doom--neotree-file-icon-for file-name faces)))
+                      vspc))))))
+
+(defun doom--neo-get-file-face (name)
+  (when doom-neotree-enable-type-colors
+    (let ((name (concat "/" (file-relative-name name neo-buffer--start-node)))
+          case-fold-search)
+      (cdr-safe
+       (cl-find-if (lambda (re) (string-match-p (car re) name))
+                   doom-neotree-file-face-re-alist)))))
+
+(defun doom--neo-buffer--insert-root-entry (node)
+  "Pretty-print pwd in neotree"
+  (let ((project-name (file-name-nondirectory (substring node 0 (1- (length node)))))
+        (faces '(neo-root-dir-face)))
+    (when doom-neotree-enable-variable-pitch
+      (push 'variable-pitch faces))
+    (if (display-graphic-p)
+        (insert
+         (concat (propertize " " 'face `(:inherit (,@faces)))
+                 (all-the-icons-octicon "repo"
+                                        :height doom-neotree-project-size
+                                        :face 'neo-root-dir-face
+                                        :v-adjust -0.1)
+                 (propertize " " 'face 'neo-root-dir-face))))
+    (insert (propertize (concat project-name "\n") 'face `(:inherit (,@faces))))))
+
+(defun doom--neo-buffer--insert-dir-entry (node depth expanded)
+  (let ((node-short-name (neo-path--file-short-name node))
+        (faces '(doom-neotree-dir-face))
+        (add-face (doom--neo-get-file-face node)))
+    (insert-char ?\s (* (- depth 1) 2)) ; indent
+    ;; (when (memq 'char neo-vc-integration)
+    ;;   (insert-char ?\s 2))
+    (when add-face (setq faces (list add-face)))
+    ;; (when (memq 'face neo-vc-integration)
+    ;;   (push (cdr vc) faces))
+    (if (display-graphic-p)
+        (doom--neo-insert-fold-symbol (if expanded 'open 'close) node faces)
+      (neo-buffer--insert-fold-symbol (if expanded 'open 'close) node))
+    (when doom-neotree-enable-variable-pitch
+      (push 'variable-pitch faces))
+    ;;
+    (insert-button node-short-name
+                   'follow-link t
+                   'face `(:inherit (,@faces))
+                   'neo-full-path node
+                   'keymap neotree-dir-button-keymap)
+    (neo-buffer--node-list-set nil node)
+    (neo-buffer--newline-and-begin)))
+
+(defun doom--neo-buffer--insert-file-entry (node depth)
+  (let ((node-short-name (neo-path--file-short-name node))
+        ;; (vc (when neo-vc-integration (neo-vc-for-node node)))
+        (faces '(doom-neotree-file-face))
+        (add-face (doom--neo-get-file-face node)))
+    (insert-char ?\s (* (- depth 1) 2)) ; indent
+    ;; (when (memq 'char neo-vc-integration)
+    ;;   (insert-char (car vc))
+    ;;   (insert-char ?\s))
+    (when add-face (setq faces (list add-face)))
+    ;; (when (memq 'face neo-vc-integration)
+    ;;   (push (cdr vc) faces))
+    (if (display-graphic-p)
+        (doom--neo-insert-fold-symbol 'leaf node faces)
+      (neo-buffer--insert-fold-symbol 'leaf node))
+    (when doom-neotree-enable-variable-pitch
+      (push 'variable-pitch faces))
+    ;;
+    (insert-button node-short-name
+                   'follow-link t
+                   'face `(:inherit (,@faces))
+                   'neo-full-path node
+                   'keymap neotree-file-button-keymap)
+    (neo-buffer--node-list-set nil node)
+    (neo-buffer--newline-and-begin)))
+
+
+;;
+(eval-after-load "neotree"
+  (lambda ()
+    (require 'all-the-icons)
+
+    ;; Enable buffer-local hl-line and adjust line-spacing
+    (add-hook 'neo-after-create-hook 'doom--neotree-setup)
+    ;; Incompatible
+    (setq neo-vc-integration nil)
+    ;; Remove fringes in Neotree pane
+    (advice-add 'neo-global--select-window :after 'doom--neotree-no-fringes)
+    ;; Patch neotree to use `doom--neo-insert-fold-symbol'
+    (advice-add 'neo-buffer--insert-file-entry :override 'doom--neo-buffer--insert-file-entry)
+    (advice-add 'neo-buffer--insert-dir-entry  :override 'doom--neo-buffer--insert-dir-entry)
+    ;; Shorter pwd in neotree
+    (advice-add 'neo-buffer--insert-root-entry :override 'doom--neo-buffer--insert-root-entry)))
+
+(provide 'doom-neotree)
+;;; doom-neotree.el ends here
.emacs.d/elpa/doom-themes-1.2.5/doom-neotree.elc
Binary file
.emacs.d/elpa/doom-themes-1.2.5/doom-nlinum.el
@@ -0,0 +1,56 @@
+;;; doom-nlinum.el
+
+(unless doom--inhibit-warning
+  (message "doom-themes: loading doom-nlinum directly is obsolete, call `doom-themes-nlinum-config' instead"))
+
+(defvar doom--nlinum-hl-overlay nil)
+(defvar doom--nlinum-hl-line 0)
+
+(defun doom-nlinum-hl-hook ()
+  (if nlinum-mode
+      (add-hook 'post-command-hook 'doom-nlinum-hl-line nil t)
+    (remove-hook 'post-command-hook 'doom-nlinum-hl-line t)))
+
+(defun doom-nlinum-hl-line (&rest _)
+  "Highlight current line number."
+  (while-no-input
+    (let* ((pbol (line-beginning-position))
+           (peol (1+ pbol))
+           (max (point-max))
+           (lineno (string-to-number (format-mode-line "%l"))))
+      (unless (= doom--nlinum-hl-line lineno)
+        (setq doom--nlinum-hl-line lineno)
+        ;; Handle EOF case
+        (when (>= peol max)
+          (setq peol max))
+        (jit-lock-fontify-now pbol peol)
+        ;; Unhighlight previous highlight
+        (when doom--nlinum-hl-overlay
+          (let* ((disp (get-text-property 0 'display (overlay-get doom--nlinum-hl-overlay 'before-string)))
+                 (str (nth 1 disp)))
+            (put-text-property 0 (length str) 'face 'linum str)
+            (setq doom--nlinum-hl-overlay nil)
+            disp))
+        (let ((ov (cl-find-if (lambda (ov) (overlay-get ov 'nlinum))
+                              (overlays-in pbol peol))))
+          (when ov
+            (let ((str (nth 1 (get-text-property 0 'display (overlay-get ov 'before-string)))))
+              (put-text-property 0 (length str) 'face 'doom-nlinum-highlight str)
+              (setq doom--nlinum-hl-overlay ov))))))))
+
+(defun doom-nlinum-unhl-first-line ()
+  "Removes the hanging overlay hl-line sometimes leaves on the first line."
+  (ignore-errors
+    (dolist (overlay (overlays-at (point-min)))
+      (when (eq (overlay-get overlay 'face) 'hl-line)
+        (delete-overlay overlay)))))
+
+(eval-after-load "nlinum"
+  (lambda ()
+    (add-hook 'nlinum-mode-hook 'doom-nlinum-hl-hook)
+    (add-hook 'nlinum-mode-hook 'doom-nlinum-unhl-first-line)
+    (unless (bound-and-true-p global-hl-line-mode)
+      (add-hook 'nlinum-mode-hook 'hl-line-mode))))
+
+(provide 'doom-nlinum)
+;;; doom-nlinum.el ends here
.emacs.d/elpa/doom-themes-1.2.5/doom-nlinum.elc
Binary file
.emacs.d/elpa/doom-themes-1.2.5/doom-one-light-theme.el
@@ -0,0 +1,14 @@
+;; DOOM One Light (inspired by Atom One Light)
+
+(require 'doom-themes)
+
+;; (doom-init 'doom-one-light)
+
+;; TODO
+;; Nothing here yet!
+
+(provide-theme 'doom-one-light)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
.emacs.d/elpa/doom-themes-1.2.5/doom-one-theme.el
@@ -0,0 +1,108 @@
+;; DOOM One Dark (inspired by Atom One Dark)
+(require 'doom-themes)
+
+;;
+(defgroup doom-one-theme nil
+  "Options for doom-themes"
+  :group 'doom-themes)
+
+(defcustom doom-one-brighter-modeline nil
+  "If non-nil, more vivid colors will be used to style the mode-line."
+  :group 'doom-one-theme
+  :type 'boolean)
+
+(defcustom doom-one-brighter-comments nil
+  "If non-nil, comments will be highlighted in more vivid colors."
+  :group 'doom-one-theme
+  :type 'boolean)
+
+(defcustom doom-one-linum-height 1.0
+  "The :height to render line numbers with."
+  :group 'doom-one-theme
+  :type 'boolean)
+
+;;
+(def-doom-theme doom-one
+  "A dark theme inspired by Atom One Dark"
+
+  ;; name      gui       term (256)
+  ((bg         "#282c34" nil      )
+   (bg-alt     "#21242b" nil      )
+   (fg         "#bbc2cf" "#bfbfbf")
+   (fg-alt     "#5B6268" "#3d3d3d")
+   (black      "#1B2229" "black"  )
+   (light-grey fg-alt    "#525252")
+   (grey       "#3B3F46" fg-alt   )
+   (dark-grey  "#23272e" "#262626")
+   (white      "#DFDFDF" "#dfdfdf")
+   (red        "#ff6c6b" "#ff6655")
+   (orange     "#da8548" "#dd8844")
+   (green      "#98be65" "#99bb66")
+   (teal       "#4db5bd" "#44b9b1")
+   (yellow     "#ECBE7B"          )
+   (blue       "#51afef"          )
+   (dark-blue  "#1f5572"          )
+   (magenta    "#c678dd"          )
+   (violet     "#a9a1e1"          )
+   (cyan       "#46D9FF"          )
+   (dark-cyan  "#5699AF"          )
+
+   ;; face categories
+   (highlight      blue)
+   (vertical-bar   black)
+   (current-line   dark-grey "black")
+   (selection      dark-blue)
+   (builtin        magenta)
+   (comments       (if doom-one-brighter-comments dark-cyan light-grey))
+   (doc-comments   (if doom-one-brighter-comments (doom-lighten dark-cyan 0.1) (doom-lighten light-grey 0.2)))
+   (constants      violet)
+   (functions      magenta)
+   (keywords       blue)
+   (methods        cyan)
+   (operators      blue)
+   (type           yellow)
+   (strings        green)
+   (variables      white)
+   (numbers        orange)
+   (region         (doom-lighten bg 0.075))
+   (error          red)
+   (warning        yellow)
+   (success        green)
+   (vc-modified    yellow)
+   (vc-added       green)
+   (vc-deleted     red)
+
+   ;; custom categories
+   (modeline-bg     (if doom-one-brighter-modeline bg bg-alt)        "brightblack")
+   (modeline-bg-alt (if doom-one-brighter-modeline bg-alt dark-grey) "black")
+   (modeline-fg     nil)
+   (modeline-fg-alt light-grey grey))
+
+
+  ;; --- extra faces ------------------------
+  ((elscreen-tab-other-screen-face :background "#353a42" :foreground "#1e2022")
+
+   (linum :foreground (if gui (doom-lighten grey 0.1) light-grey)
+          :background bg-alt
+          :bold nil
+          :height doom-one-linum-height)
+   (doom-nlinum-highlight :foreground (doom-darken white 0.25)
+                          :distant-foreground nil
+                          :bold nil
+                          :height doom-one-linum-height)
+
+   (mode-line          :background modeline-bg     :foreground modeline-fg)
+   (mode-line-inactive :background modeline-bg-alt :foreground modeline-fg-alt)
+
+   ;; --- major-mode faces -------------------
+   ;; css-mode / scss-mode
+   (css-proprietary-property :foreground orange)
+   (css-property             :foreground green)
+   (css-selector             :foreground blue))
+
+
+  ;; --- extra variables --------------------
+  ;; ()
+  )
+
+;;; doom-one-theme.el ends here
.emacs.d/elpa/doom-themes-1.2.5/doom-one-theme.elc
Binary file
.emacs.d/elpa/doom-themes-1.2.5/doom-themes-autoloads.el
@@ -0,0 +1,58 @@
+;;; doom-themes-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "doom-themes" "doom-themes.el" (22964 3868
+;;;;;;  350661 333000))
+;;; Generated autoloads from doom-themes.el
+
+(autoload 'doom-color "doom-themes" "\
+Retrieve a specific color named NAME (a symbol) from the current DOOM theme.
+
+\(fn NAME)" nil nil)
+
+(autoload 'doom-brighten-minibuffer "doom-themes" "\
+Highlight the minibuffer whenever it is in use.
+
+\(fn)" nil nil)
+
+(autoload 'doom-buffer-mode "doom-themes" "\
+Brighten source buffers by remapping common faces (like default, hl-line and
+linum) to their doom-theme variants.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'doom-themes-neotree-config "doom-themes" "\
+Install DOOM neotree configuration.
+
+\(fn)" nil nil)
+
+(autoload 'doom-themes-nlinum-config "doom-themes" "\
+Install DOOM nlinum configuration.
+
+\(fn)" nil nil)
+
+(autoload 'doom-buffer-mode-maybe "doom-themes" "\
+Enable `doom-buffer-mode' in the current buffer, if it isn't already and the
+buffer represents a real file.
+
+\(fn)" nil nil)
+
+(when (and (boundp 'custom-theme-load-path) load-file-name) (add-to-list 'custom-theme-load-path (file-name-as-directory (file-name-directory load-file-name))))
+
+;;;***
+
+;;;### (autoloads nil nil ("doom-molokai-theme.el" "doom-neotree.el"
+;;;;;;  "doom-nlinum.el" "doom-one-light-theme.el" "doom-one-theme.el"
+;;;;;;  "doom-themes-common.el" "doom-themes-pkg.el") (22964 3868
+;;;;;;  359661 337000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; doom-themes-autoloads.el ends here
.emacs.d/elpa/doom-themes-1.2.5/doom-themes-common.el
@@ -0,0 +1,625 @@
+;;; doom-themes-common.el
+
+(defun doom-common-faces (&optional extra-faces)
+  (mapcar
+   (lambda (spec)
+     (let ((spec (or (assq (car spec) extra-faces) spec)))
+       `(list ',(car spec)
+              ,(if (listp (cadr spec))
+                   (cadr spec)
+                 `(list (list '((class color) (min-colors 89)) (list ,@(cdr spec))))))))
+   '(;; --- custom faces -----------------------
+     (doom-default           :inherit 'default :background bg)
+     (doom-minibuffer-active :background bg)
+     ;; mode-line
+     (doom-modeline-buffer-path
+      `((((background dark))  (:foreground ,(if bold white cyan) :bold ,bold))
+        (((background light)) (:foreground ,(if bold black blue) :bold ,bold))))
+     (doom-modeline-buffer-project    :foreground fg)
+     (doom-modeline-buffer-modified   :foreground error)
+     (doom-modeline-buffer-major-mode :inherit 'doom-modeline-buffer-path)
+     (doom-modeline-highlight         :foreground highlight)
+     (doom-modeline-panel             :foreground black :distant-foreground white :background highlight)
+     (doom-modeline-bar               :background highlight)
+     (doom-modeline-eldoc-bar         :background yellow)
+
+     ;; --- base faces -------------------------
+     (bold        :weight (if bold 'bold 'normal) :color white)
+     (italic      :slant  (if italic 'italic 'normal))
+     (bold-italic :inherit '(bold italic))
+
+     (default              :background bg-alt     :foreground fg)
+     (fringe               :inherit 'default      :foreground comments)
+     (region               :background region     :foreground nil :distant-foreground nil)
+     (highlight            :background highlight  :foreground black)
+     (cursor               :background highlight)
+     (shadow               :foreground light-grey)
+     (minibuffer-prompt    :foreground highlight)
+     (tooltip              :inherit 'doom-default :background bg-alt)
+     (secondary-selection  :background highlight  :foreground fg :distant-foreground bg)
+     (lazy-highlight       :background dark-blue  :foreground white)
+     (match                :foreground green      :background black :bold bold)
+     (trailing-whitespace  :background red)
+     (vertical-border
+      `((((background dark))  (:background ,black      :foreground ,black))
+        (((background light)) (:background ,light-grey :foreground ,light-grey))))
+
+     (error   :foreground error)
+     (warning :foreground warning)
+     (success :foreground success)
+
+     (font-lock-builtin-face                :foreground builtin)
+     (font-lock-comment-face                :foreground comments)
+     (font-lock-comment-delimiter-face      :foreground comments)
+     (font-lock-doc-face                    :foreground doc-comments)
+     (font-lock-doc-string-face             :foreground doc-comments)
+     (font-lock-constant-face               :foreground constants)
+     (font-lock-function-name-face          :foreground functions)
+     (font-lock-keyword-face                :foreground keywords)
+     (font-lock-string-face                 :foreground strings)
+     (font-lock-type-face                   :foreground type)
+     (font-lock-variable-name-face          :foreground variables)
+     (font-lock-warning-face                :inherit 'warning)
+     (font-lock-negation-char-face          :inherit 'bold :foreground operators)
+     (font-lock-preprocessor-face           :inherit 'bold :foreground operators)
+     (font-lock-preprocessor-char-face      :inherit 'bold :foreground operators)
+     (font-lock-regexp-grouping-backslash   :inherit 'bold :foreground operators)
+     (font-lock-regexp-grouping-construct   :inherit 'bold :foreground operators)
+
+     (mode-line          :background bg-alt :foreground fg)
+     (mode-line-inactive :background bg     :foreground fg-alt)
+     (header-line :inherit 'mode-line)
+
+
+     ;; --- built-in plugin faces --------------
+     ;; dired
+     (dired-directory :foreground builtin)
+     (dired-ignored   :foreground comments)
+
+     ;; ediff
+     (ediff-fine-diff-A    :background dark-grey :inherit 'bold)
+     (ediff-fine-diff-B    :background dark-grey :inherit 'bold)
+     (ediff-fine-diff-C    :background dark-grey :inherit 'bold)
+     (ediff-current-diff-A :background black)
+     (ediff-current-diff-B :background black)
+     (ediff-current-diff-C :background black)
+     (ediff-even-diff-A    :inherit 'hl-line)
+     (ediff-even-diff-B    :inherit 'hl-line)
+     (ediff-even-diff-C    :inherit 'hl-line)
+     (ediff-odd-diff-A     :inherit 'hl-line)
+     (ediff-odd-diff-B     :inherit 'hl-line)
+     (ediff-odd-diff-C     :inherit 'hl-line)
+
+     ;; isearch
+     (isearch :background highlight :foreground black :bold bold)
+     (isearch-lazy-highlight-face :background dark-grey)
+
+     ;; hl-line
+     (hl-line `((((background dark))  (:background ,black))
+                (((background light)) (:background ,bg-alt))))
+     (doom-hl-line :background current-line)
+
+     ;; linum
+     (linum :foreground fg-alt :background bg-alt :bold nil :distant-foreground nil)
+     (doom-linum :inherit 'linum :background bg)
+
+     ;; term
+     (term-color-black   :background black   :foreground black)
+     (term-color-red     :background red     :foreground red)
+     (term-color-green   :background green   :foreground green)
+     (term-color-yellow  :background yellow  :foreground yellow)
+     (term-color-blue    :background blue    :foreground blue)
+     (term-color-magenta :background magenta :foreground magenta)
+     (term-color-cyan    :background cyan    :foreground cyan)
+     (term-color-white   :background white   :foreground white)
+
+     ;; window-divider
+     (window-divider :foreground vertical-bar)
+     (window-divider-first-pixel  :inherit 'window-divider)
+     (window-divider-last-pixel   :inherit 'window-divider)
+
+
+     ;; --- plugin faces -----------------------
+     ;; avy
+     (avy-lead-face
+      `((((background dark))  (:background ,highlight :foreground ,black :distant-foreground ,white))
+        (((background light)) (:background ,highlight :foreground ,white :distant-foreground ,black))))
+     (avy-lead-face-0 :inherit 'avy-lead-face)
+     (avy-lead-face-1 :inherit 'avy-lead-face)
+     (avy-lead-face-2 :inherit 'avy-lead-face)
+
+     ;; company
+     (company-tooltip            :inherit 'tooltip)
+     (company-tooltip-common                           :foreground highlight)
+     (company-tooltip-search     :background highlight :foreground bg :distant-foreground fg)
+     (company-tooltip-selection  :background selection)
+     (company-tooltip-mouse      :background magenta   :foreground bg :distant-foreground fg)
+     (company-tooltip-annotation                       :foreground violet)
+     (company-scrollbar-bg       :inherit 'tooltip)
+     (company-scrollbar-fg       :background highlight)
+     (company-preview                                  :foreground highlight)
+     (company-preview-common     :background dark-grey :foreground magenta)
+     (company-preview-search     :inherit 'company-tooltip-search)
+
+     ;; diff-hl
+     (diff-hl-change :foreground vc-modified)
+     (diff-hl-delete :foreground vc-deleted)
+     (diff-hl-insert :foreground vc-added)
+
+     ;; dired+
+     (diredp-file-name              :foreground white)
+     (diredp-dir-name               :foreground white :inherit 'bold)
+     (diredp-ignored-file-name      :foreground light-grey)
+     (diredp-compressed-file-suffix :foreground light-grey)
+     (diredp-symlink                :foreground violet)
+     (diredp-dir-heading            :foreground blue  :inherit 'bold)
+     (diredp-file-suffix            :foreground violet)
+     (diredp-read-priv              :foreground magenta)
+     (diredp-write-priv             :foreground green)
+     (diredp-exec-priv              :foreground yellow)
+     (diredp-rare-priv              :foreground red   :inherit 'bold)
+     (diredp-dir-priv               :foreground blue  :inherit 'bold)
+     (diredp-no-priv                :foreground light-grey)
+     (diredp-number                 :foreground magenta)
+     (diredp-date-time              :foreground blue)
+
+     ;; dired-k
+     (dired-k-directory :foreground blue)
+
+     ;; elscreen
+     (elscreen-tab-background-face     :background bg-alt)
+     (elscreen-tab-control-face        :background bg-alt :foreground bg-alt)
+     (elscreen-tab-current-screen-face :background bg     :foreground fg)
+     (elscreen-tab-other-screen-face   :background bg-alt :foreground fg-alt)
+
+     ;; evil
+     (evil-ex-substitute-matches     :background black :foreground red   :strike-through t :bold bold)
+     (evil-ex-substitute-replacement :background black :foreground green :bold bold)
+     (evil-search-highlight-persist-highlight-face :inherit 'isearch-lazy-highlight-face)
+
+     ;; evil-mc
+     (evil-mc-cursor-default-face :background magenta :foreground black :inverse-video nil)
+     (evil-mc-region-face :inherit 'region)
+     (evil-mc-cursor-bar-face :height 1 :background magenta :foreground black)
+     (evil-mc-cursor-hbar-face :underline `(:color ,highlight))
+
+     ;; evil-snipe
+     (evil-snipe-first-match-face :foreground highlight :background dark-blue)
+     (evil-snipe-matches-face     :foreground highlight :underline t :bold bold)
+
+     ;; flycheck
+     (flycheck-error     :underline `(:style wave :color ,red))
+     (flycheck-warning   :underline `(:style wave :color ,yellow))
+     (flycheck-info      :underline `(:style wave :color ,green))
+     (flyspell-incorrect :underline `(:style wave :color ,error) :inherit 'unspecified)
+
+     ;; git-gutter
+     (git-gutter:modified :foreground vc-modified)
+     (git-gutter:added    :foreground vc-added)
+     (git-gutter:deleted  :foreground vc-deleted)
+
+     ;; git-gutter+
+     (git-gutter+-modified :foreground vc-modified :background nil)
+     (git-gutter+-added    :foreground vc-added :background nil)
+     (git-gutter+-deleted  :foreground vc-deleted :background nil)
+
+     ;; git-gutter-fringe
+     (git-gutter-fr:modified :foreground vc-modified)
+     (git-gutter-fr:added    :foreground vc-added)
+     (git-gutter-fr:deleted  :foreground vc-deleted)
+
+     ;; gnus
+     (gnus-group-mail-1           :bold bold :foreground fg)
+     (gnus-group-mail-2           :inherit 'gnus-group-mail-1)
+     (gnus-group-mail-3           :inherit 'gnus-group-mail-1)
+     (gnus-group-mail-1-empty     :foreground light-grey)
+     (gnus-group-mail-2-empty     :inherit 'gnus-group-mail-1-empty)
+     (gnus-group-mail-3-empty     :inherit 'gnus-group-mail-1-empty)
+     (gnus-group-news-1           :inherit 'gnus-group-mail-1)
+     (gnus-group-news-2           :inherit 'gnus-group-news-1)
+     (gnus-group-news-3           :inherit 'gnus-group-news-1)
+     (gnus-group-news-4           :inherit 'gnus-group-news-1)
+     (gnus-group-news-5           :inherit 'gnus-group-news-1)
+     (gnus-group-news-6           :inherit 'gnus-group-news-1)
+     (gnus-group-news-1-empty     :inherit 'gnus-group-mail-1-empty)
+     (gnus-group-news-2-empty     :inherit 'gnus-groupnews-1-empty)
+     (gnus-group-news-3-empty     :inherit 'gnus-groupnews-1-empty)
+     (gnus-group-news-4-empty     :inherit 'gnus-groupnews-1-empty)
+     (gnus-group-news-5-empty     :inherit 'gnus-groupnews-1-empty)
+     (gnus-group-news-6-empty     :inherit 'gnus-groupnews-1-empty)
+     (gnus-group-mail-low         :inherit 'gnus-group-mail-1 :bold nil)
+     (gnus-group-mail-low-empty   :inherit 'gnus-group-mail-1-empty)
+     (gnus-group-news-low         :inherit 'gnus-group-mail-1 :foreground light-grey)
+     (gnus-group-news-low-empty   :inherit 'gnus-group-news-low :bold nil)
+     (gnus-header-content         :inherit 'message-header-other)
+     (gnus-header-from            :inherit 'message-header-other)
+     (gnus-header-name            :inherit 'message-header-name)
+     (gnus-header-newsgroups      :inherit 'message-header-other)
+     (gnus-header-subject         :inherit 'message-header-subject)
+     (gnus-summary-cancelled      :foreground red :strike-through t)
+     (gnus-summary-high-ancient   :foreground (doom-lighten light-grey 0.2) :inherit 'italic)
+     (gnus-summary-high-read      :foreground (doom-lighten fg 0.2))
+     (gnus-summary-high-ticked    :foreground (doom-lighten magenta 0.2))
+     (gnus-summary-high-unread    :foreground (doom-lighten green 0.2))
+     (gnus-summary-low-ancient    :foreground (doom-darken light-grey 0.2) :inherit 'italic)
+     (gnus-summary-low-read       :foreground (doom-darken fg 0.2))
+     (gnus-summary-low-ticked     :foreground (doom-darken magenta 0.2))
+     (gnus-summary-low-unread     :foreground (doom-darken green 0.2))
+     (gnus-summary-normal-ancient :foreground light-grey :inherit 'italic)
+     (gnus-summary-normal-read    :foreground fg)
+     (gnus-summary-normal-ticked  :foreground magenta)
+     (gnus-summary-normal-unread  :foreground green :inherit 'bold)
+     (gnus-summary-selected       :foreground blue :bold bold)
+     (gnus-cite-1                 :foreground violet)
+     (gnus-cite-2                 :foreground violet)
+     (gnus-cite-3                 :foreground violet)
+     (gnus-cite-4                 :foreground green)
+     (gnus-cite-5                 :foreground green)
+     (gnus-cite-6                 :foreground green)
+     (gnus-cite-7                 :foreground magenta)
+     (gnus-cite-8                 :foreground magenta)
+     (gnus-cite-9                 :foreground magenta)
+     (gnus-cite-10                :foreground yellow)
+     (gnus-cite-11                :foreground yellow)
+     (gnus-signature              :foreground yellow)
+     (gnus-x-face                 :background light-grey :foreground fg)
+
+     ;; helm
+     (helm-selection              :background selection)
+     (helm-match                  :foreground blue :underline t)
+     (helm-source-header          :background current-line :foreground light-grey)
+     (helm-swoop-target-line-face :foreground highlight :inverse-video t)
+     (helm-ff-file                :foreground fg)
+     (helm-ff-prefix              :foreground magenta)
+     (helm-ff-dotted-directory    :foreground grey)
+     (helm-ff-directory           :foreground orange)
+     (helm-ff-executable          :foreground white :inherit 'italic)
+
+     ;; indent-guide
+     (indent-guide-face :foreground (doom-lighten bg 0.1))
+
+     ;; highlight-indentation-mode
+     (highlight-indentation-face                :background (doom-darken bg 0.1))
+     (highlight-indentation-current-column-face :background (doom-darken bg 0.1))
+     (highlight-indentation-guides-odd-face     :background bg)
+     (highlight-indentation-guides-even-face    :background (doom-darken bg 0.1))
+
+     ;; highlight-quoted-mode
+     (highlight-quoted-symbol :foreground type)
+     (highlight-quoted-quote  :foreground operators)
+
+     ;; highlight-numbers-mode
+     (highlight-numbers-number :foreground numbers)
+
+     ;; iedit
+     (iedit-occurrence :foreground magenta :bold bold :inverse-video t)
+     (iedit-read-only-occurrence :inherit 'region)
+
+     ;; ivy
+     (ivy-current-match :background (if gui dark-blue "brightblack"))
+     (ivy-minibuffer-match-face-1
+      :background black
+      :foreground (if gui (doom-lighten grey 0.1) "brightblack")
+      :bold bold)
+     (ivy-minibuffer-match-face-2 :inherit 'ivy-minibuffer-match-face-1 :foreground magenta)
+     (ivy-minibuffer-match-face-3 :inherit 'ivy-minibuffer-match-face-1 :foreground green)
+     (ivy-minibuffer-match-face-4 :inherit 'ivy-minibuffer-match-face-1 :foreground yellow)
+     (ivy-virtual :foreground fg)
+
+     ;; jabber
+     (jabber-activity-face          :foreground red   :bold bold)
+     (jabber-activity-personal-face :foreground blue  :bold bold)
+     (jabber-chat-error             :foreground red   :bold bold)
+     (jabber-chat-prompt-foreign    :foreground red   :bold bold)
+     (jabber-chat-prompt-local      :foreground blue  :bold bold)
+     (jabber-chat-prompt-system     :foreground green :bold bold)
+     (jabber-chat-text-foreign      :foreground fg)
+     (jabber-chat-text-local        :foreground fg)
+     (jabber-rare-time-face         :foreground green)
+     (jabber-roster-user-away       :foreground yellow)
+     (jabber-roster-user-chatty     :foreground green :bold bold)
+     (jabber-roster-user-dnd        :foreground red)
+     (jabber-roster-user-error      :foreground red)
+     (jabber-roster-user-offline    :foreground fg)
+     (jabber-roster-user-online     :foreground green :bold bold)
+     (jabber-roster-user-xa         :foreground cyan)
+
+     ;; multiple cursors
+     (mc/cursor-face :inherit 'cursor)
+
+     ;; neotree
+     (neo-root-dir-face   :foreground green :background bg :box `(:line-width 4 :color ,bg))
+     (neo-file-link-face  :foreground fg)
+     (neo-dir-link-face   :foreground blue)
+     (neo-expand-btn-face :foreground blue)
+     (doom-neotree-dir-face :foreground highlight)
+     (doom-neotree-file-face
+      `((((background dark))  (:foreground ,white))
+        (((background light)) (:foreground ,black))))
+     (doom-neotree-hidden-file-face
+      `((((background dark))  (:foreground ,light-grey))
+        (((background light)) (:foreground ,dark-grey))))
+     (doom-neotree-text-file-face :foreground fg)
+     (doom-neotree-data-file-face :foreground violet)
+     (doom-neotree-media-file-face :inherit 'doom-neotree-hidden-file-face)
+
+     ;; nlinum
+     (doom-nlinum-highlight :foreground fg :background bg-alt :bold nil :distant-foreground nil)
+
+     ;; popup
+     (popup-face :inherit 'tooltip)
+     (popup-selection-face :background selection)
+
+     ;; pos-tip
+     (popup          :inherit 'tooltip)
+     (popup-tip-face :inherit 'tooltip)
+
+     ;; powerline
+     (powerline-active1   :inherit 'mode-line)
+     (powerline-active2   :inherit 'mode-line)
+     (powerline-inactive1 :inherit 'mode-line-inactive)
+     (powerline-inactive2 :inherit 'mode-line-inactive)
+
+     ;; rainbow-delimiters
+     (rainbow-delimiters-depth-1-face :foreground blue)
+     (rainbow-delimiters-depth-2-face :foreground magenta)
+     (rainbow-delimiters-depth-3-face :foreground green)
+     (rainbow-delimiters-depth-4-face :foreground orange)
+     (rainbow-delimiters-depth-5-face :foreground violet)
+     (rainbow-delimiters-depth-6-face :foreground yellow)
+     (rainbow-delimiters-depth-7-face :foreground teal)
+     (rainbow-delimiters-unmatched-face  :foreground red :bold bold :inverse-video t)
+     (rainbow-delimiters-mismatched-face :inherit 'rainbow-delimiters-unmatched-face)
+
+     ;; re-builder
+     (reb-match-0 :foreground orange  :inverse-video t)
+     (reb-match-1 :foreground magenta :inverse-video t)
+     (reb-match-2 :foreground green   :inverse-video t)
+     (reb-match-3 :foreground yellow  :inverse-video t)
+
+     ;; smartparens
+     (sp-pair-overlay-face :background region)
+
+     ;; show-paren
+     (show-paren-match    :foreground red   :background black :bold bold)
+     (show-paren-mismatch :foreground black :background red   :bold bold)
+
+     ;; spaceline
+     (spaceline-highlight-face :foreground blue)
+
+     ;; stripe-buffer
+     (stripe-highlight :background bg-alt)
+
+     ;; swiper
+     (swiper-line-face    :background blue    :foreground black)
+     (swiper-match-face-1 :background black   :foreground light-grey)
+     (swiper-match-face-2 :background orange  :foreground black :bold bold)
+     (swiper-match-face-3 :background magenta :foreground black :bold bold)
+     (swiper-match-face-4 :background green   :foreground black :bold bold)
+
+     ;; tabbar
+     (tabbar-default           :foreground bg-alt :background bg-alt :height 0.9)
+     (tabbar-modified          :inherit 'tabbar-default  :foreground red :bold bold)
+     (tabbar-unselected        :inherit 'tabbar-default  :foreground grey)
+     (tabbar-selected          :inherit 'tabbar-default  :foreground fg :background bg :bold bold)
+     (tabbar-selected-modified :inherit 'tabbar-selected :foreground green)
+     (tabbar-highlight         :foreground fg :background bg-alt :inverse-video t)
+     (tabbar-button            :background (if gui bg-alt dark-grey) :foreground fg)
+     (tabbar-button-highlight  :inherit 'tabbar-button :inverse-video t)
+
+     ;; volatile-highlights
+     (vhl/default-face :background grey)
+
+     ;; wgrep
+     (wgrep-face
+      `((((background dark))  (:background ,black      :bold ,bold :foreground ,green))
+        (((background light)) (:background ,light-grey :bold ,bold :foreground ,green))))
+
+     ;; which-func
+     (which-func :foreground blue)
+
+     ;; which-key
+     (which-key-key-face                   :foreground green)
+     (which-key-group-description-face     :foreground violet)
+     (which-key-command-description-face   :foreground blue)
+     (which-key-local-map-description-face :foreground magenta)
+
+     ;; whitespace
+     (whitespace-tab      :foreground light-grey)
+     (whitespace-newline  :foreground light-grey)
+     (whitespace-trailing :inherit 'trailing-whitespace)
+     (whitespace-line     :background black :foreground red :bold bold)
+
+     ;; workgroups2
+     (wg-current-workgroup-face :foreground black      :background blue)
+     (wg-other-workgroup-face   :foreground light-grey :background current-line)
+     (wg-divider-face           :foreground grey)
+     (wg-brace-face             :foreground blue)
+
+     ;; yasnippet
+     (yas-field-highlight-face :inherit 'match)
+
+
+     ;; --- major-mode faces -------------------
+     ;; auctex (latex-mode)
+     (font-latex-bold-face         :inherit 'bold)
+     (font-latex-italic-face       :inherit 'italic)
+     (font-latex-math-face         :foreground blue)
+     (font-latex-sectioning-0-face
+      ;; org-level-1
+      `((((background dark))  (:background ,dark-grey  :bold ,bold :foreground ,blue :height 1.2))
+        (((background light)) (:background ,light-grey :bold ,bold :foreground ,blue :height 1.2))))
+     (font-latex-sectioning-1-face
+      ;; org-level-2
+      :inherit 'font-latex-sectioning-0-face :foreground violet :height 1.0)
+     (font-latex-sectioning-2-face
+      ;; org-level-3
+      `((((background dark))  (:bold ,bold :foreground ,white))
+        (((background light)) (:bold ,bold :foreground ,black))))
+     (font-latex-sectioning-3-face :inherit 'font-latex-sectioning-2-face)
+     (font-latex-sectioning-4-face :inherit 'font-latex-sectioning-2-face)
+     (font-latex-sectioning-5-face :inherit 'font-latex-sectioning-2-face)
+     (font-latex-script-char-face  :foreground dark-blue)
+     (font-latex-string-face       :inherit 'font-lock-string-face)
+     (font-latex-warning-face      :inherit 'font-lock-warning-face)
+
+     ;; jdee-mode
+     (jdee-font-lock-number-face :foreground numbers)
+     (jdee-font-lock-operator-face :foreground operators)
+     (jdee-font-lock-constant-face :inherit 'font-lock-constant-face)
+     (jdee-font-lock-constructor-face :foreground methods)
+     (jdee-font-lock-public-face :inherit 'font-lock-keyword-face)
+     (jdee-font-lock-protected-face :inherit 'font-lock-keyword-face)
+     (jdee-font-lock-private-face :inherit 'font-lock-keyword-face)
+     (jdee-font-lock-modifier-face :inherit 'font-lock-type-face)
+     (jdee-font-lock-doc-tag-face :foreground violet)
+     (jdee-font-lock-italic-face :inherit 'italic)
+     (jdee-font-lock-bold-face :inherit 'bold)
+     (jdee-font-lock-link-face :foreground blue :italic nil :underline t)
+
+     ;; js2-mode
+     (js2-function-param  :foreground variables)
+     (js2-function-call   :foreground functions)
+     (js2-object-property :foreground violet)
+     (js2-jsdoc-tag       :foreground comments)
+
+     ;; makefile-*-mode
+     (makefile-targets :foreground blue)
+
+     ;; markdown-mode
+     (markdown-header-face           :foreground red)
+     (markdown-header-delimiter-face :inherit 'markdown-header-face)
+     (markdown-metadata-key-face     :foreground red)
+     (markdown-markup-face           :foreground light-grey)
+     (markdown-pre-face              :foreground green)
+     (markdown-inline-face           :foreground cyan)
+     (markdown-list-face             :foreground red)
+     (markdown-link-face             :foreground blue    :bold nil)
+     (markdown-url-face              :foreground magenta :bold nil)
+     (markdown-header-face-1         :inherit 'markdown-header-face)
+     (markdown-header-face-2         :inherit 'markdown-header-face)
+     (markdown-header-face-3         :inherit 'markdown-header-face)
+     (markdown-header-face-4         :inherit 'markdown-header-face)
+     (markdown-header-face-5         :inherit 'markdown-header-face)
+     (markdown-header-face-6         :inherit 'markdown-header-face)
+     (markdown-italic-face           :inherit 'italic :foreground violet)
+     (markdown-bold-face             :inherit 'bold   :foreground orange)
+     ;; (markdown-header-rule-face      :inherit 'shadow)
+     ;; (markdown-markup-face           :foreground operators)
+     ;; (markdown-link-face             :inherit 'shadow)
+     ;; (markdown-link-title-face       :inherit 'link)
+     ;; (markdown-url-face              :inherit 'link)
+     ;; (markdown-blockquote-face       :foreground violet)
+
+     ;; org-mode
+     (org-level-1
+      `((((background dark))  (:background ,dark-grey  :bold ,bold :foreground ,blue :height 1.2))
+        (((background light)) (:background ,light-grey :bold ,bold :foreground ,blue :height 1.2))))
+     (org-level-2 :inherit 'org-level-1 :foreground violet :height 1.0)
+     (org-level-3
+      `((((background dark))  (:bold ,bold :foreground ,white))
+        (((background light)) (:bold ,bold :foreground ,black))))
+     (org-level-4 :inherit 'org-level-3)
+     (org-level-5 :inherit 'org-level-3)
+     (org-level-6 :inherit 'org-level-3)
+     (org-tag :foreground green :bold nil)
+     (org-priority :foreground red)
+     (org-ellipsis
+      `((((background dark))
+         (:background ,dark-grey :foreground ,light-grey :underline nil))
+        (((background light))
+         (:background ,light-grey :foreground ,dark-grey :underline nil))))
+     (org-hide :foreground bg-alt)
+     (org-table :foreground violet)
+     (org-quote
+      `((((background dark)) (:inherit 'italic :background ,dark-grey))
+        (((background light)) (:inherit 'italic :background ,light-grey))))
+     (org-document-info         :foreground builtin)
+     (org-document-title        :foreground builtin :bold bold)
+     (org-default               :inherit 'variable-pitch)
+     (org-meta-line             :foreground doc-comments)
+     (org-block-begin-line      :foreground comments :background current-line)
+     (org-block-end-line        :inherit 'org-block-begin-line)
+     (org-block-background      :background current-line)
+     (org-block                 :background current-line)
+     (org-archived              :foreground light-grey)
+     (org-code                  :foreground orange)
+     (org-verbatim              :foreground green)
+     (org-formula               :foreground cyan)
+     (org-list-dt               :foreground blue)
+     (org-footnote              :foreground orange)
+     (org-link                  :foreground green :underline t :bold 'inherit)
+     (org-date                  :foreground violet)
+     (org-todo                  :foreground blue :bold 'inherit)
+     (org-done
+      `((((background dark))  (:bold 'inherit :foreground ,light-grey))
+        (((background light)) (:bold 'inherit :foreground ,dark-grey))))
+     (org-headline-done         :foreground light-grey :bold nil)
+     (org-special-keyword       :foreground magenta)
+     (org-checkbox :inherit 'org-todo)
+     (org-checkbox-statistics-todo :inherit 'org-todo)
+     (org-checkbox-statistics-done :inherit 'org-done)
+     (message-header-name :foreground green)
+
+     ;; typescript-mode
+     (ts-object-property :inherit 'js2-object-property)
+
+     ;; rpm-spec-mode
+     (rpm-spec-macro-face        :foreground yellow)
+     (rpm-spec-var-face          :foreground violet)
+     (rpm-spec-tag-face          :foreground blue)
+     (rpm-spec-obsolete-tag-face :foreground red)
+     (rpm-spec-package-face      :foreground orange)
+     (rpm-spec-dir-face          :foreground green)
+     (rpm-spec-doc-face          :foreground orange)
+     (rpm-spec-ghost-face        :foreground comments)
+     (rpm-spec-section-face      :foreground magenta)
+
+     ;; web-mode
+     (web-mode-doctype-face           :foreground comments)
+     (web-mode-html-tag-face          :foreground methods)
+     (web-mode-html-tag-bracket-face  :foreground methods)
+     (web-mode-html-attr-name-face    :foreground type)
+     (web-mode-html-entity-face       :foreground cyan :inherit 'italic)
+     (web-mode-block-control-face     :foreground orange)
+     ;; (web-mode-html-tag-bracket-face :foreground operators)))
+     )))
+
+(defun doom-common-variables (&optional extra-vars)
+  (mapcar
+   (lambda (var)
+     (let ((var (or (assq (car var) extra-vars) var)))
+       `(list ',(car var) ,(cadr var))))
+   '((vc-annotate-color-map
+      `(list (cons 20  ,green)
+             (cons 40  ,(doom-blend yellow green (/ 1.0 3)))
+             (cons 60  ,(doom-blend yellow green (/ 2.0 3)))
+             (cons 80  ,yellow)
+             (cons 100 ,(doom-blend orange yellow (/ 1.0 3)))
+             (cons 120 ,(doom-blend orange yellow (/ 2.0 3)))
+             (cons 140 ,orange)
+             (cons 160 ,(doom-blend magenta orange (/ 1.0 3)))
+             (cons 180 ,(doom-blend magenta orange (/ 2.0 3)))
+             (cons 200 ,magenta)
+             (cons 220 ,(doom-blend red magenta (/ 1.0 3)))
+             (cons 240 ,(doom-blend red magenta (/ 2.0 3)))
+             (cons 260 ,red)
+             (cons 280 ,(doom-blend grey red (/ 1.0 4)))
+             (cons 300 ,(doom-blend grey red (/ 2.0 4)))
+             (cons 320 ,(doom-blend grey red (/ 3.0 4)))
+             (cons 340 ,light-grey)
+             (cons 360 ,light-grey)))
+     (vc-annotate-very-old-color nil)
+     (vc-annotate-background black)
+
+     (org-ellipsis " ๏„‡ ")
+
+     (jdee-db-spec-breakpoint-face-colors (cons black grey))
+     (jdee-db-requested-breakpoint-face-colors (cons black green))
+     (jdee-db-active-breakpoint-face-colors (cons black highlight))
+
+     (ansi-color-names-vector
+      (vector black red green yellow blue magenta cyan white)))))
+
+(provide 'doom-themes-common)
+;;; doom-themes-common.el ends here
.emacs.d/elpa/doom-themes-1.2.5/doom-themes-common.elc
Binary file
.emacs.d/elpa/doom-themes-1.2.5/doom-themes-pkg.el
@@ -0,0 +1,9 @@
+(define-package "doom-themes" "1.2.5" "a pack of themes inspired by Atom One"
+  '((emacs "24.4")
+    (all-the-icons "1.0.0")
+    (cl-lib "0.5"))
+  :url "https://github.com/hlissner/emacs-doom-theme" :keywords
+  '("dark" "blue" "atom" "one" "theme" "neotree" "nlinum" "icons"))
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
.emacs.d/elpa/doom-themes-1.2.5/doom-themes.el
@@ -0,0 +1,247 @@
+;;; doom-themes.el --- a pack of themes inspired by Atom One
+;;
+;; Copyright (C) 2016 Henrik Lissner
+;;
+;; Author: Henrik Lissner <http://github/hlissner>
+;; Maintainer: Henrik Lissner <henrik@lissner.net>
+;; Created: May 22, 2016
+;; Modified: May 10, 2017
+;; Version: 1.2.5
+;; Keywords: dark blue atom one theme neotree nlinum icons
+;; Homepage: https://github.com/hlissner/emacs-doom-theme
+;; Package-Requires: ((emacs "24.4") (all-the-icons "1.0.0") (cl-lib "0.5"))
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; Commentary:
+;;
+;; An opinionated UI plugin/pack of themes extracted from my emacs.d, inspired
+;; by the One Dark/Light UI and syntax themes in Atom.
+;;
+;; Includes optional dimming of non-source buffers, a neotree theme with font
+;; icons, and (soon) a mode-line config.
+;;
+;; Currently available colorschemes:
+;; + doom-one: inspired by Atom One Dark
+;; + doom-dark: based on Molokai
+;;
+;; Soon to come:
+;; + doom-one-light: inspired by Atom One Light
+;; + doom-tron: doom-one, but with daylerees' Tron Legacy colorscheme
+;; + doom-peacock: doom-one, but with daylerees' Peacock colorscheme
+;;
+;;
+;; ## Configuration
+;;
+;; + global
+;;     + `doom-enable-bold` (default: `t`): if nil, bolding will be disabled
+;;     across all faces.
+;;     + `doom-enable-italic` (default: `t`): if nil, italicization will be
+;;     disabled across all faces.
+;; + doom-one
+;;     + `doom-one-brighter-modeline` (default: `nil`): If non-nil, the
+;;     mode-line background is slightly brighter.
+;;     + `doom-one-brighter-comments` (default: `nil`): If non-nil, comments
+;;     are brighter and easier to see.
+;;
+;;
+;; ## Installation
+;;
+;; 1. Install from MELPA `M-x package-install RET doom-themes`, or clone
+;;    the repo somewhere in your `load-path`.
+;;
+;; 2. If you want the neotree theme, download and install the fonts included
+;;    with all-the-icons.
+;;
+;; 3. `(require 'doom-themes)` and then load the theme you want.
+;;
+;; Example configuration:
+;;
+;;   (require 'doom-themes)
+;;   (load-theme 'doom-one t) ;; or doom-molokai, etc.
+;;
+;;   ;;; OPTIONAL
+;;   ;; brighter source buffers
+;;   (add-hook 'find-file-hook 'doom-buffer-mode)
+;;   ;; brighter minibuffer when active
+;;   (add-hook 'minibuffer-setup-hook 'doom-brighten-minibuffer)
+;;   ;; Custom neotree theme
+;;   (doom-themes-neotree-config)
+;;
+;;; Code:
+
+(require 'cl-lib)
+
+(defgroup doom-themes nil
+  "Options for doom-themes"
+  :group 'faces)
+
+(defface doom-default '((t (:inherit default)))
+  "Background face for source code windows."
+  :group 'doom-themes)
+
+(defface doom-minibuffer-active '((t (:inherit mode-line)))
+  "Face for active minibuffer. See `doom-enable-bright-minibuffer'."
+  :group 'doom-themes)
+
+(defface doom-linum '((t (:inherit linum)))
+  "Another linum face for darker windows (like popups)."
+  :group 'doom-themes)
+
+(defface doom-nlinum-highlight '((t (:inherit linum)))
+  "A face for the nlinum overlay on the current line."
+  :group 'doom-themes)
+
+(defface doom-hl-line '((t (:inherit hl-line)))
+  "A face for the current line highlight."
+  :group 'doom-themes)
+
+(defface doom-org-hide '((t (:inherit org-hide)))
+  "A face for hidden elements in org-mode. Only active if `doom-buffer-mode' is
+active."
+  :group 'doom-themes)
+
+;;
+(defcustom doom-enable-bold t
+  "If nil, bold will be disabled across all faces."
+  :group 'doom-themes
+  :type 'boolean)
+
+(defcustom doom-enable-italic t
+  "If nil, italics will be disabled across all faces."
+  :group 'doom-themes
+  :type 'boolean)
+
+;;
+(defvar doom--colors nil)
+(defvar doom--inhibit-warning nil)
+
+
+;; Color helper functions
+;; Shamelessly *borrowed* from solarized
+(defun doom-name-to-rgb (color &optional frame)
+  "Retrieves the hexidecimal string repesented the named COLOR (e.g. \"red\")
+for FRAME (defaults to the current frame)."
+  (mapcar (lambda (x) (/ x (float (car (color-values "#ffffff")))))
+          (color-values color frame)))
+
+(defun doom-blend (color1 color2 alpha)
+  "Blend two colors (hexidecimal strings) together by a coefficient ALPHA (a
+float between 0 and 1)"
+  (when (and color1 color2)
+    (apply (lambda (r g b) (format "#%02x%02x%02x" (* r 255) (* g 255) (* b 255)))
+           (cl-mapcar (lambda (it other) (+ (* alpha it) (* other (- 1 alpha))))
+                      (doom-name-to-rgb color1)
+                      (doom-name-to-rgb color2)))))
+
+(defun doom-darken (color alpha)
+  "Darken a COLOR (a hexidecimal string) by a coefficient ALPHA (a float between
+0 and 1)."
+  (doom-blend color "#000000" (- 1 alpha)))
+
+(defun doom-lighten (color alpha)
+  "Brighten a COLOR (a hexidecimal string) by a coefficient ALPHA (a float
+between 0 and 1)."
+  (doom-blend color "#FFFFFF" (- 1 alpha)))
+
+(defun doom--face-remap-add-relative (orig-fn &rest args)
+  "Ensure that other themes, functions or packages that use
+`face-remap-add-relative' (like `text-scale-set') don't undo doom's overriden
+faces."
+  (when (and (display-graphic-p) doom-buffer-mode)
+    (let ((remap (assq (nth 0 args) face-remapping-alist)))
+      (when remap (setf (nth 0 args) (cadr remap)))))
+  (apply orig-fn args))
+(advice-add 'face-remap-add-relative :around 'doom--face-remap-add-relative)
+
+(defmacro def-doom-theme (name docstring defs &optional extra-faces extra-vars)
+  "Define a DOOM theme."
+  (declare (doc-string 2))
+  (load "doom-themes-common" nil t)
+  (let ((faces (doom-common-faces extra-faces))
+        (vars (doom-common-variables extra-vars))
+        (defs (mapcar (lambda (cl)
+                        (if (> (length cl) 2)
+                            (list (car cl) `(if gui ,(nth 1 cl) ,(nth 2 cl)))
+                          cl))
+                      defs)))
+    `(let* ((gui (or (display-graphic-p) (= (tty-display-color-cells) 16777216)))
+            (bold   doom-enable-bold)
+            (italic doom-enable-italic)
+            ,@defs)
+       (setq doom--colors
+             (mapcar (lambda (x) (list (car x) (eval (cadr x)))) ',defs))
+       (deftheme ,name ,docstring)
+       (custom-theme-set-faces ',name ,@faces)
+       ,(if vars `(custom-theme-set-variables ',name ,@vars))
+       (provide-theme ',name))))
+
+;;;###autoload
+(defun doom-color (name)
+  "Retrieve a specific color named NAME (a symbol) from the current DOOM theme."
+  (nth 1 (assq name doom--colors)))
+
+;;;###autoload
+(defun doom-brighten-minibuffer ()
+  "Highlight the minibuffer whenever it is in use."
+  (with-selected-window (minibuffer-window)
+    (setq-local face-remapping-alist
+                (append face-remapping-alist '((default doom-minibuffer-active))))))
+
+(defun doom-themes-current-bg (orig-fn &rest args)
+  (if doom-buffer-mode
+      (face-background 'doom-default)
+    (apply orig-fn args)))
+(advice-add #'org-find-invisible-foreground :around #'doom-themes-current-bg)
+
+;;;###autoload
+(define-minor-mode doom-buffer-mode
+  "Brighten source buffers by remapping common faces (like default, hl-line and
+linum) to their doom-theme variants."
+  :lighter " doom"
+  :init-value nil
+  (let ((bg (face-background (if doom-buffer-mode 'doom-default 'default))))
+    ;; Don't reset remapped faces on `kill-all-local-variables'
+    (put (make-variable-buffer-local 'face-remapping-alist)
+         'permanent-local doom-buffer-mode)
+    (set-face-background 'fringe bg)
+    (when (derived-mode-p 'org-mode)
+      (set-face-foreground 'org-hide bg))
+    (if doom-buffer-mode
+        (setq face-remapping-alist
+              (append face-remapping-alist
+                      '((default doom-default)
+                        (hl-line doom-hl-line)
+                        (linum doom-linum))))
+      (mapc (lambda (key)
+              (setq face-remapping-alist
+                    (assq-delete-all key face-remapping-alist)))
+            '(default hl-line linum)))))
+
+;;;###autoload
+(defun doom-themes-neotree-config ()
+  "Install DOOM neotree configuration."
+  (let ((doom--inhibit-warning t))
+    (require 'doom-neotree)))
+
+;;;###autoload
+(defun doom-themes-nlinum-config ()
+  "Install DOOM nlinum configuration."
+  (let ((doom--inhibit-warning t))
+    (require 'doom-nlinum)))
+
+;;;###autoload
+(defun doom-buffer-mode-maybe ()
+  "Enable `doom-buffer-mode' in the current buffer, if it isn't already and the
+buffer represents a real file."
+  (when (and (not doom-buffer-mode)
+             buffer-file-name)
+    (doom-buffer-mode +1)))
+
+;;;###autoload
+(when (and (boundp 'custom-theme-load-path) load-file-name)
+  (add-to-list 'custom-theme-load-path
+               (file-name-as-directory (file-name-directory load-file-name))))
+
+(provide 'doom-themes)
+;;; doom-themes.el ends here
.emacs.d/elpa/doom-themes-1.2.5/doom-themes.elc
Binary file
.emacs.d/elpa/font-lock+-20170222.1755/font-lock+-autoloads.el
@@ -0,0 +1,15 @@
+;;; font-lock+-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil nil ("font-lock+.el") (22964 3865 757660 190000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; font-lock+-autoloads.el ends here
.emacs.d/elpa/font-lock+-20170222.1755/font-lock+-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "font-lock+" "20170222.1755" "Enhancements to standard library `font-lock.el'." 'nil :url "https://www.emacswiki.org/emacs/download/font-lock%2b.el" :keywords '("languages" "faces" "highlighting"))
.emacs.d/elpa/font-lock+-20170222.1755/font-lock+.el
@@ -0,0 +1,425 @@
+;;; font-lock+.el --- Enhancements to standard library `font-lock.el'.
+;;
+;; Filename: font-lock+.el
+;; Description: Enhancements to standard library `font-lock.el'.
+;; Author: Drew Adams
+;; Maintainer: Drew Adams (concat "drew.adams" "@" "oracle" ".com")
+;; Copyright (C) 2007-2017, Drew Adams, all rights reserved.
+;; Created: Sun Mar 25 15:21:07 2007
+;; Version: 0
+;; Package-Version: 20170222.1755
+;; Package-Requires: ()
+;; Last-Updated: Wed Feb 22 17:55:28 2017 (-0800)
+;;           By: dradams
+;;     Update #: 216
+;; URL: https://www.emacswiki.org/emacs/download/font-lock%2b.el
+;; Doc URL: http://www.emacswiki.org/HighlightLibrary
+;; Keywords: languages, faces, highlighting
+;; Compatibility: GNU Emacs: 22.x, 23.x, 24.x, 25.x
+;;
+;; Features that might be required by this library:
+;;
+;;   `font-lock', `syntax'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;    Enhancements to standard library `font-lock.el'.
+;;
+;;  This library tells font lock to ignore any text that has the text
+;;  property `font-lock-ignore'.  This means, in particular, that font
+;;  lock will not erase or otherwise interfere with highlighting that
+;;  you apply using library `highlight.el'.
+;;
+;;  Load this library after standard library `font-lock.el' (which
+;;  should be preloaded).  Put this in your Emacs init file (~/.emacs):
+;;
+;;    (require 'font-lock+)
+;;
+;;
+;;  Non-interactive functions defined here:
+;;
+;;    `put-text-property-unless-ignore'.
+;;
+;;
+;;  ***** NOTE: The following functions defined in `font-lock.el'
+;;              have been REDEFINED HERE:
+;;
+;;    `font-lock-append-text-property', `font-lock-apply-highlight',
+;;    `font-lock-apply-syntactic-highlight',
+;;    `font-lock-default-unfontify-region',
+;;    `font-lock-fillin-text-property',
+;;    `font-lock-fontify-anchored-keywords',
+;;    `font-lock-fontify-keywords-region',
+;;    `font-lock-fontify-syntactically-region',
+;;    `font-lock-prepend-text-property'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change Log:
+;;
+;; 2014/08/30 dadams
+;;     Require cl.el when compile, for incf.
+;;     Load font-lock.el[c] when compile, for macro save-buffer-state.
+;;     font-lock-(prepend|append)-text-property:
+;;       Update for Emacs 24: Canonicalize old forms.
+;;     font-lock-fontify-syntactically-region: Updated for Emacs 24.
+;; 2014/08/28 dadams
+;;     put-text-property-unless-ignore: Use next-single-property-change.
+;; 2007/03/25 dadams
+;;     Created.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(require 'font-lock)
+
+(eval-when-compile
+  (require 'cl) ;; incf
+  (load-library "font-lock")) ;; Macro save-buffer-state
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun put-text-property-unless-ignore (start end property value &optional object)
+  "`put-text-property', but ignore text with property `font-lock-ignore'."
+  (let ((here  (min start end))
+        (end1  (max start end))
+        chg)
+    (while (< here end1)
+      (setq chg  (next-single-property-change here 'font-lock-ignore object end1))
+      (unless (get-text-property here 'font-lock-ignore object)
+        (put-text-property here chg property value object))
+      (setq here  chg))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Don't unfontify any text that has property `font-lock-ignore'.
+;;
+(defun font-lock-default-unfontify-region (beg end)
+  "Unfontify from BEG to END, except text with property `font-lock-ignore'."
+  (let ((here  (min beg end))
+        (end1  (max beg end))
+        chg)
+    (while (< here end1)
+      (setq chg  (next-single-property-change here 'font-lock-ignore nil end1))
+      (unless (get-text-property here 'font-lock-ignore)
+        (remove-list-of-text-properties
+         here chg (append font-lock-extra-managed-props
+                          (if font-lock-syntactic-keywords
+                              '(syntax-table face font-lock-multiline)
+                            '(face font-lock-multiline)))))
+      (setq here  chg))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;;
+(defun font-lock-prepend-text-property (start end prop value &optional object)
+  "Prepend to one property of the text from START to END.
+Arguments PROP and VALUE specify the property and value to prepend to the value
+already in place.  The resulting property values are always lists.
+Optional argument OBJECT is the string or buffer containing the text."
+  (let ((val  (if (listp value) value (list value)))
+        next prev)
+    (while (/= start end)
+      (setq next  (next-single-property-change start prop object end)
+            prev  (get-text-property start prop object))
+      ;; Canonicalize old forms of face property.
+      (and (memq prop '(face font-lock-face))  (listp prev)
+	   (or (keywordp (car prev))  (memq (car prev)
+                                            '(foreground-color background-color)))
+	   (setq prev  (list prev)))
+      (put-text-property-unless-ignore start next prop
+                                       (append val (if (listp prev) prev (list prev)))
+                                       object)
+      (setq start  next))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;;
+(defun font-lock-append-text-property (start end prop value &optional object)
+  "Append to one property of the text from START to END.
+Arguments PROP and VALUE specify the property and value to append to the value
+already in place.  The resulting property values are always lists.
+Optional argument OBJECT is the string or buffer containing the text."
+  (let ((val  (if (listp value) value (list value)))
+        next prev)
+    (while (/= start end)
+      (setq next  (next-single-property-change start prop object end)
+            prev  (get-text-property start prop object))
+      ;; Canonicalize old forms of face property.
+      (and (memq prop '(face font-lock-face))  (listp prev)
+	   (or (keywordp (car prev))  (memq (car prev)
+                                            '(foreground-color background-color)))
+	   (setq prev (list prev)))
+      (put-text-property-unless-ignore start next prop
+                                       (append (if (listp prev) prev (list prev)) val)
+                                       object)
+      (setq start  next))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;;
+(defun font-lock-fillin-text-property (start end prop value &optional object)
+  "Fill in one property of the text from START to END.
+Arguments PROP and VALUE specify the property and value to put where none are
+already in place.  Therefore existing property values are not overwritten.
+Optional argument OBJECT is the string or buffer containing the text."
+  (let ((start  (text-property-any start end prop nil object))
+        next)
+    (while start
+      (setq next  (next-single-property-change start prop object end))
+      (put-text-property-unless-ignore start next prop value object)
+      (setq start  (text-property-any next end prop nil object)))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;;
+(defun font-lock-apply-syntactic-highlight (highlight)
+  "Apply HIGHLIGHT following a match.
+HIGHLIGHT should be of the form MATCH-HIGHLIGHT,
+see `font-lock-syntactic-keywords'."
+  (let* ((match     (nth 0 highlight))
+         (start     (match-beginning match)) (end (match-end match))
+         (value     (nth 1 highlight))
+         (override  (nth 2 highlight)))
+    (if (not start)
+        ;; No match but we might not signal an error.
+        (or (nth 3 highlight)
+            (error "No match %d in highlight %S" match highlight))
+      (when (and (consp value)  (not (numberp (car value)))) (setq value  (eval value)))
+      (when (stringp value) (setq value  (string-to-syntax value)))
+      ;; Flush the syntax-cache.  I believe this is not necessary for
+      ;; font-lock's use of syntax-ppss, but I'm not 100% sure and it can
+      ;; still be necessary for other users of syntax-ppss anyway.
+      (syntax-ppss-after-change-function start)
+      (cond
+        ((not override)
+         ;; Cannot override existing fontification.
+         (or (text-property-not-all start end 'syntax-table nil)
+             (put-text-property-unless-ignore start end 'syntax-table value)))
+        ((eq override t)
+         ;; Override existing fontification.
+         (put-text-property-unless-ignore start end 'syntax-table value))
+        ((eq override 'keep)
+         ;; Keep existing fontification.
+         (font-lock-fillin-text-property start end 'syntax-table value))))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;;
+;; (Parameter PPSS is used by Emacs 22 and 23, but not by Emacs 24.)
+;;
+(defun font-lock-fontify-syntactically-region (start end &optional loudly ppss)
+  "Put proper face on each string and comment between START and END.
+START should be at the beginning of a line."
+  (when (fboundp 'syntax-propertize)    ; Emacs 24+.
+    (syntax-propertize end)) ; Apply any needed syntax-table properties.
+  (let ((comment-end-regexp  (or font-lock-comment-end-skip
+                                 (regexp-quote (replace-regexp-in-string
+                                                "^ *" "" comment-end))))
+        (state               (or ppss  (syntax-ppss start))) ; Find the `start' state.
+        face beg)
+    (when loudly (message "Fontifying %s... (syntactically...)" (buffer-name)))
+    (while (progn ; Find each interesting place between here and `end'.
+             (when (or (nth 3 state)  (nth 4 state))
+               (setq face   (funcall font-lock-syntactic-face-function state)
+                     beg    (max (nth 8 state) start)
+                     state  (parse-partial-sexp (point) end nil nil state
+                                                'syntax-table))
+               (when face (put-text-property-unless-ignore beg (point) 'face face))
+               (when (and (eq face 'font-lock-comment-face)
+                          (or font-lock-comment-start-skip  comment-start-skip))
+                 ;; Find the comment delimiters
+                 ;; and use font-lock-comment-delimiter-face for them.
+                 (save-excursion
+                   (goto-char beg)
+                   (when (looking-at (or font-lock-comment-start-skip
+                                         comment-start-skip))
+                     (put-text-property-unless-ignore
+                      beg (match-end 0) 'face font-lock-comment-delimiter-face)))
+                 (when (looking-back comment-end-regexp (point-at-bol) t)
+                   (put-text-property-unless-ignore (match-beginning 0) (point) 'face
+                                                    font-lock-comment-delimiter-face))))
+             (< (point) end))
+      (setq state  (parse-partial-sexp (point) end nil nil state 'syntax-table)))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; 1. Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;; 2. Use `defun' instead of `defsubst', since we don't want to reproduce whole library.
+;;
+(defun font-lock-apply-highlight (highlight)
+  "Apply HIGHLIGHT following a match.
+HIGHLIGHT should be of the form MATCH-HIGHLIGHT, see `font-lock-keywords'."
+  (let* ((match     (nth 0 highlight))
+         (start     (match-beginning match)) (end (match-end match))
+         (override  (nth 2 highlight)))
+    (if (not start)
+        ;; No match but we might not signal an error.
+        (or (nth 3 highlight)  (error "No match %d in highlight %S" match highlight))
+      (let ((val  (eval (nth 1 highlight))))
+        (when (eq (car-safe val) 'face)
+          (add-text-properties start end (cddr val))
+          (setq val  (cadr val)))
+        (cond ((not (or val  (eq override t)))
+               ;; If `val' is nil, don't do anything.  It is important to do it
+               ;; explicitly, because when adding nil via things like
+               ;; font-lock-append-text-property, the property is actually
+               ;; changed from <face> to (<face>) which is undesirable.  --Stef
+               nil)
+              ((not override)
+               ;; Cannot override existing fontification.
+               (unless (text-property-not-all start end 'face nil)
+                 (put-text-property-unless-ignore start end 'face val)))
+              ((eq override t)
+               ;; Override existing fontification.
+               (put-text-property-unless-ignore start end 'face val))
+              ((eq override 'prepend)
+               ;; Prepend to existing fontification.
+               (font-lock-prepend-text-property start end 'face val))
+              ((eq override 'append)
+               ;; Append to existing fontification.
+               (font-lock-append-text-property start end 'face val))
+              ((eq override 'keep)
+               ;; Keep existing fontification.
+               (font-lock-fillin-text-property start end 'face val)))))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; 1. Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;; 2. Use `defun' instead of `defsubst', since we don't want to reproduce whole library.
+;;
+(defun font-lock-fontify-anchored-keywords (keywords limit)
+  "Fontify according to KEYWORDS until LIMIT.
+KEYWORDS should be of the form MATCH-ANCHORED, see `font-lock-keywords',
+LIMIT can be modified by the value of its PRE-MATCH-FORM."
+  (let ((matcher          (nth 0 keywords))
+        (lowdarks         (nthcdr 3 keywords))
+        (lead-start       (match-beginning 0))
+        (pre-match-value  (eval (nth 1 keywords))) ; Evaluate PRE-MATCH-FORM.
+        highlights)
+    ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line.
+    (if (not (and (numberp pre-match-value)  (> pre-match-value (point))))
+        (setq limit  (line-end-position))
+      (setq limit  pre-match-value)
+      (when (and font-lock-multiline  (>= limit (line-beginning-position 2)))
+        ;; this is a multiline anchored match
+        ;; (setq font-lock-multiline  t)
+        (put-text-property-unless-ignore (if (= limit (line-beginning-position 2))
+                                             (1- limit)
+                                           (min lead-start (point)))
+                                         limit
+                                         'font-lock-multiline t)))
+    (save-match-data
+      ;; Find an occurrence of `matcher' before `limit'.
+      (while (and (< (point) limit)  (if (stringp matcher)
+                                         (re-search-forward matcher limit t)
+                                       (funcall matcher limit)))
+        ;; Apply each highlight to this instance of `matcher'.
+        (setq highlights  lowdarks)
+        (while highlights
+          (font-lock-apply-highlight (car highlights))
+          (setq highlights  (cdr highlights)))))
+    ;; Evaluate POST-MATCH-FORM.
+    (eval (nth 2 keywords))))
+
+
+;; REPLACES ORIGINAL in `font-lock.el'.
+;;
+;; Use `put-text-property-unless-ignore' instead of `put-text-property'.
+;;
+(defun font-lock-fontify-keywords-region (start end &optional loudly)
+  "Fontify according to `font-lock-keywords' between START and END.
+START should be at the beginning of a line.
+LOUDLY, if non-nil, allows progress-meter bar."
+  (unless (eq (car font-lock-keywords) t)
+    (setq font-lock-keywords  (font-lock-compile-keywords font-lock-keywords)))
+  (let ((case-fold-search  font-lock-keywords-case-fold-search)
+        (keywords          (cddr font-lock-keywords))
+        (bufname           (buffer-name))
+        (count 0)
+        (pos               (make-marker))
+        keyword matcher highlights)
+    ;;
+    ;; Fontify each item in `font-lock-keywords' from `start' to `end'.
+    (while keywords
+      (when loudly
+        (message "Fontifying %s... (regexps..%s)" bufname (make-string (incf count)
+                                                                       ?.)))
+      ;;
+      ;; Find an occurrence of `matcher' from `start' to `end'.
+      (setq keyword  (car keywords) matcher (car keyword))
+      (goto-char start)
+      (while (and (< (point) end)
+                  (if (stringp matcher)
+                      (re-search-forward matcher end t)
+                    (funcall matcher end))
+                  ;; Beware empty string matches since they will
+                  ;; loop indefinitely.
+                  (or (> (point) (match-beginning 0))  (progn (forward-char 1) t)))
+        (when (and font-lock-multiline
+                   (>= (point) (save-excursion (goto-char (match-beginning 0))
+                                               (forward-line 1) (point))))
+          ;; this is a multiline regexp match
+          ;; (setq font-lock-multiline  t)
+          (put-text-property-unless-ignore (if (= (point)
+                                                  (save-excursion
+                                                    (goto-char (match-beginning 0))
+                                                    (forward-line 1) (point)))
+                                               (1- (point))
+                                             (match-beginning 0))
+                                           (point)
+                                           'font-lock-multiline t))
+        ;; Apply each highlight to this instance of `matcher', which may be
+        ;; specific highlights or more keywords anchored to `matcher'.
+        (setq highlights  (cdr keyword))
+        (while highlights
+          (if (numberp (car (car highlights)))
+              (font-lock-apply-highlight (car highlights))
+            (set-marker pos (point))
+            (font-lock-fontify-anchored-keywords (car highlights) end)
+            ;; Ensure forward progress.  `pos' is a marker because anchored
+            ;; keyword may add/delete text (this happens e.g. in grep.el).
+            (when (< (point) pos) (goto-char pos)))
+          (setq highlights  (cdr highlights))))
+      (setq keywords  (cdr keywords)))
+    (set-marker pos nil)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(provide 'font-lock+)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; font-lock+.el ends here
.emacs.d/elpa/font-lock+-20170222.1755/font-lock+.elc
Binary file
.emacs.d/elpa/gnupg/pubring.kbx
Binary file
.emacs.d/elpa/gnupg/pubring.kbx~
Binary file
.emacs.d/elpa/gnupg/trustdb.gpg
Binary file
.emacs.d/elpa/htmlize-20161211.1019/htmlize-autoloads.el
@@ -0,0 +1,76 @@
+;;; htmlize-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "htmlize" "htmlize.el" (22964 7393 807309 836000))
+;;; Generated autoloads from htmlize.el
+
+(autoload 'htmlize-buffer "htmlize" "\
+Convert BUFFER to HTML, preserving colors and decorations.
+
+The generated HTML is available in a new buffer, which is returned.
+When invoked interactively, the new buffer is selected in the current
+window.  The title of the generated document will be set to the buffer's
+file name or, if that's not available, to the buffer's name.
+
+Note that htmlize doesn't fontify your buffers, it only uses the
+decorations that are already present.  If you don't set up font-lock or
+something else to fontify your buffers, the resulting HTML will be
+plain.  Likewise, if you don't like the choice of colors, fix the mode
+that created them, or simply alter the faces it uses.
+
+\(fn &optional BUFFER)" t nil)
+
+(autoload 'htmlize-region "htmlize" "\
+Convert the region to HTML, preserving colors and decorations.
+See `htmlize-buffer' for details.
+
+\(fn BEG END)" t nil)
+
+(autoload 'htmlize-file "htmlize" "\
+Load FILE, fontify it, convert it to HTML, and save the result.
+
+Contents of FILE are inserted into a temporary buffer, whose major mode
+is set with `normal-mode' as appropriate for the file type.  The buffer
+is subsequently fontified with `font-lock' and converted to HTML.  Note
+that, unlike `htmlize-buffer', this function explicitly turns on
+font-lock.  If a form of highlighting other than font-lock is desired,
+please use `htmlize-buffer' directly on buffers so highlighted.
+
+Buffers currently visiting FILE are unaffected by this function.  The
+function does not change current buffer or move the point.
+
+If TARGET is specified and names a directory, the resulting file will be
+saved there instead of to FILE's directory.  If TARGET is specified and
+does not name a directory, it will be used as output file name.
+
+\(fn FILE &optional TARGET)" t nil)
+
+(autoload 'htmlize-many-files "htmlize" "\
+Convert FILES to HTML and save the corresponding HTML versions.
+
+FILES should be a list of file names to convert.  This function calls
+`htmlize-file' on each file; see that function for details.  When
+invoked interactively, you are prompted for a list of files to convert,
+terminated with RET.
+
+If TARGET-DIRECTORY is specified, the HTML files will be saved to that
+directory.  Normally, each HTML file is saved to the directory of the
+corresponding source file.
+
+\(fn FILES &optional TARGET-DIRECTORY)" t nil)
+
+(autoload 'htmlize-many-files-dired "htmlize" "\
+HTMLize dired-marked files.
+
+\(fn ARG &optional TARGET-DIRECTORY)" t nil)
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; htmlize-autoloads.el ends here
.emacs.d/elpa/htmlize-20161211.1019/htmlize-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "htmlize" "20161211.1019" "Convert buffer text and decorations to HTML." 'nil :commit "88e2cb6588827893d7bc619529393887c264d15a" :keywords '("hypermedia" "extensions"))
.emacs.d/elpa/htmlize-20161211.1019/htmlize.el
@@ -0,0 +1,1955 @@
+;;; htmlize.el --- Convert buffer text and decorations to HTML. -*- lexical-binding: t -*-
+
+;; Copyright (C) 1997-2003,2005,2006,2009,2011,2012,2014,2017 Hrvoje Niksic
+
+;; Author: Hrvoje Niksic <hniksic@gmail.com>
+;; Keywords: hypermedia, extensions
+;; Package-Version: 20161211.1019
+;; Version: 1.51
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This package converts the buffer text and the associated
+;; decorations to HTML.  Mail to <hniksic@gmail.com> to discuss
+;; features and additions.  All suggestions are more than welcome.
+
+;; To use it, just switch to the buffer you want HTML-ized and type
+;; `M-x htmlize-buffer'.  You will be switched to a new buffer that
+;; contains the resulting HTML code.  You can edit and inspect this
+;; buffer, or you can just save it with C-x C-w.  `M-x htmlize-file'
+;; will find a file, fontify it, and save the HTML version in
+;; FILE.html, without any additional intervention.  `M-x
+;; htmlize-many-files' allows you to htmlize any number of files in
+;; the same manner.  `M-x htmlize-many-files-dired' does the same for
+;; files marked in a dired buffer.
+
+;; htmlize supports three types of HTML output, selected by setting
+;; `htmlize-output-type': `css', `inline-css', and `font'.  In `css'
+;; mode, htmlize uses cascading style sheets to specify colors; it
+;; generates classes that correspond to Emacs faces and uses <span
+;; class=FACE>...</span> to color parts of text.  In this mode, the
+;; produced HTML is valid under the 4.01 strict DTD, as confirmed by
+;; the W3C validator.  `inline-css' is like `css', except the CSS is
+;; put directly in the STYLE attribute of the SPAN element, making it
+;; possible to paste the generated HTML into existing HTML documents.
+;; In `font' mode, htmlize uses <font color="...">...</font> to
+;; colorize HTML, which is not standard-compliant, but works better in
+;; older browsers.  `css' mode is the default.
+
+;; You can also use htmlize from your Emacs Lisp code.  When called
+;; non-interactively, `htmlize-buffer' and `htmlize-region' will
+;; return the resulting HTML buffer, but will not change current
+;; buffer or move the point.  htmlize will do its best to work on
+;; non-windowing Emacs sessions but the result will be limited to
+;; colors supported by the terminal.
+
+;; htmlize aims for compatibility with Emacsen version 21 and later.
+;; Please let me know if it doesn't work on the version of XEmacs or
+;; GNU Emacs that you are using.  The package relies on the presence
+;; of CL extensions, especially for cross-emacs compatibility; please
+;; don't try to remove that dependency.  I see no practical problems
+;; with using the full power of the CL extensions, except that one
+;; might learn to like them too much.
+
+;; The latest version is available at:
+;;
+;;        <https://github.com/hniksic/emacs-htmlize>
+;;
+
+;; Thanks go to the many people who have sent reports and contributed
+;; comments, suggestions, and fixes.  They include Ron Gut, Bob
+;; Weiner, Toni Drabik, Peter Breton, Ville Skytta, Thomas Vogels,
+;; Juri Linkov, Maciek Pasternacki, and many others.
+
+;; User quotes: "You sir, are a sick, sick, _sick_ person. :)"
+;;                  -- Bill Perry, author of Emacs/W3
+
+
+;;; Code:
+
+(require 'cl)
+(eval-when-compile
+  (defvar unresolved)
+  (if (string-match "XEmacs" emacs-version)
+      (byte-compiler-options
+	(warnings (- unresolved))))
+  (defvar font-lock-auto-fontify)
+  (defvar font-lock-support-mode)
+  (defvar global-font-lock-mode))
+
+(defconst htmlize-version "1.51")
+
+(defgroup htmlize nil
+  "Convert buffer text and faces to HTML."
+  :group 'hypermedia)
+
+(defcustom htmlize-head-tags ""
+  "Additional tags to insert within HEAD of the generated document."
+  :type 'string
+  :group 'htmlize)
+
+(defcustom htmlize-output-type 'css
+  "Output type of generated HTML, one of `css', `inline-css', or `font'.
+When set to `css' (the default), htmlize will generate a style sheet
+with description of faces, and use it in the HTML document, specifying
+the faces in the actual text with <span class=\"FACE\">.
+
+When set to `inline-css', the style will be generated as above, but
+placed directly in the STYLE attribute of the span ELEMENT: <span
+style=\"STYLE\">.  This makes it easier to paste the resulting HTML to
+other documents.
+
+When set to `font', the properties will be set using layout tags
+<font>, <b>, <i>, <u>, and <strike>.
+
+`css' output is normally preferred, but `font' is still useful for
+supporting old, pre-CSS browsers, and both `inline-css' and `font' for
+easier embedding of colorized text in foreign HTML documents (no style
+sheet to carry around)."
+  :type '(choice (const css) (const inline-css) (const font))
+  :group 'htmlize)
+
+(defcustom htmlize-use-images t
+  "Whether htmlize generates `img' for images attached to buffer contents."
+  :type 'boolean
+  :group 'htmlize)
+
+(defcustom htmlize-force-inline-images nil
+  "Non-nil means generate all images inline using data URLs.
+Normally htmlize converts image descriptors with :file properties to
+relative URIs, and those with :data properties to data URIs.  With this
+flag set, the images specified as a file name are loaded into memory and
+embedded in the HTML as data URIs."
+  :type 'boolean
+  :group 'htmlize)
+
+(defcustom htmlize-max-alt-text 100
+  "Maximum size of text to use as ALT text in images.
+
+Normally when htmlize encounters text covered by the `display' property
+that specifies an image, it generates an `alt' attribute containing the
+original text.  If the text is larger than `htmlize-max-alt-text' characters,
+this will not be done."
+  :type 'integer
+  :group 'htmlize)
+
+(defcustom htmlize-transform-image 'htmlize-default-transform-image
+  "Function called to modify the image descriptor.
+
+The function is called with the image descriptor found in the buffer and
+the text the image is supposed to replace.  It should return a (possibly
+different) image descriptor property list or a replacement string to use
+instead of of the original buffer text.
+
+Returning nil is the same as returning the original text."
+  :type 'boolean
+  :group 'htmlize)
+
+(defcustom htmlize-generate-hyperlinks t
+  "Non-nil means auto-generate the links from URLs and mail addresses in buffer.
+
+This is on by default; set it to nil if you don't want htmlize to
+autogenerate such links.  Note that this option only turns off automatic
+search for contents that looks like URLs and converting them to links.
+It has no effect on whether htmlize respects the `htmlize-link' property."
+  :type 'boolean
+  :group 'htmlize)
+
+(defcustom htmlize-hyperlink-style "
+      a {
+        color: inherit;
+        background-color: inherit;
+        font: inherit;
+        text-decoration: inherit;
+      }
+      a:hover {
+        text-decoration: underline;
+      }
+"
+  "The CSS style used for hyperlinks when in CSS mode."
+  :type 'string
+  :group 'htmlize)
+
+(defcustom htmlize-replace-form-feeds t
+  "Non-nil means replace form feeds in source code with HTML separators.
+Form feeds are the ^L characters at line beginnings that are sometimes
+used to separate sections of source code.  If this variable is set to
+`t', form feed characters are replaced with the <hr> separator.  If this
+is a string, it specifies the replacement to use.  Note that <pre> is
+temporarily closed before the separator is inserted, so the default
+replacement is effectively \"</pre><hr /><pre>\".  If you specify
+another replacement, don't forget to close and reopen the <pre> if you
+want the output to remain valid HTML.
+
+If you need more elaborate processing, set this to nil and use
+htmlize-after-hook."
+  :type 'boolean
+  :group 'htmlize)
+
+(defcustom htmlize-html-charset nil
+  "The charset declared by the resulting HTML documents.
+When non-nil, causes htmlize to insert the following in the HEAD section
+of the generated HTML:
+
+  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=CHARSET\">
+
+where CHARSET is the value you've set for htmlize-html-charset.  Valid
+charsets are defined by MIME and include strings like \"iso-8859-1\",
+\"iso-8859-15\", \"utf-8\", etc.
+
+If you are using non-Latin-1 charsets, you might need to set this for
+your documents to render correctly.  Also, the W3C validator requires
+submitted HTML documents to declare a charset.  So if you care about
+validation, you can use this to prevent the validator from bitching.
+
+Needless to say, if you set this, you should actually make sure that
+the buffer is in the encoding you're claiming it is in.  (This is
+normally achieved by using the correct file coding system for the
+buffer.)  If you don't understand what that means, you should probably
+leave this option in its default setting."
+  :type '(choice (const :tag "Unset" nil)
+		 string)
+  :group 'htmlize)
+
+(defcustom htmlize-convert-nonascii-to-entities t
+  "Whether non-ASCII characters should be converted to HTML entities.
+
+When this is non-nil, characters with codes in the 128-255 range will be
+considered Latin 1 and rewritten as \"&#CODE;\".  Characters with codes
+above 255 will be converted to \"&#UCS;\", where UCS denotes the Unicode
+code point of the character.  If the code point cannot be determined,
+the character will be copied unchanged, as would be the case if the
+option were nil.
+
+When the option is nil, the non-ASCII characters are copied to HTML
+without modification.  In that case, the web server and/or the browser
+must be set to understand the encoding that was used when saving the
+buffer.  (You might also want to specify it by setting
+`htmlize-html-charset'.)
+
+Note that in an HTML entity \"&#CODE;\", CODE is always a UCS code point,
+which has nothing to do with the charset the page is in.  For example,
+\"&#169;\" *always* refers to the copyright symbol, regardless of charset
+specified by the META tag or the charset sent by the HTTP server.  In
+other words, \"&#169;\" is exactly equivalent to \"&copy;\".
+
+For most people htmlize will work fine with this option left at the
+default setting; don't change it unless you know what you're doing."
+  :type 'sexp
+  :group 'htmlize)
+
+(defcustom htmlize-ignore-face-size 'absolute
+  "Whether face size should be ignored when generating HTML.
+If this is nil, face sizes are used.  If set to t, sizes are ignored
+If set to `absolute', only absolute size specifications are ignored.
+Please note that font sizes only work with CSS-based output types."
+  :type '(choice (const :tag "Don't ignore" nil)
+		 (const :tag "Ignore all" t)
+		 (const :tag "Ignore absolute" absolute))
+  :group 'htmlize)
+
+(defcustom htmlize-css-name-prefix ""
+  "The prefix used for CSS names.
+The CSS names that htmlize generates from face names are often too
+generic for CSS files; for example, `font-lock-type-face' is transformed
+to `type'.  Use this variable to add a prefix to the generated names.
+The string \"htmlize-\" is an example of a reasonable prefix."
+  :type 'string
+  :group 'htmlize)
+
+(defcustom htmlize-use-rgb-txt t
+  "Whether `rgb.txt' should be used to convert color names to RGB.
+
+This conversion means determining, for instance, that the color
+\"IndianRed\" corresponds to the (205, 92, 92) RGB triple.  `rgb.txt'
+is the X color database that maps hundreds of color names to such RGB
+triples.  When this variable is non-nil, `htmlize' uses `rgb.txt' to
+look up color names.
+
+If this variable is nil, htmlize queries Emacs for RGB components of
+colors using `color-instance-rgb-components' and `color-values'.
+This can yield incorrect results on non-true-color displays.
+
+If the `rgb.txt' file is not found (which will be the case if you're
+running Emacs on non-X11 systems), this option is ignored."
+  :type 'boolean
+  :group 'htmlize)
+
+(defvar htmlize-face-overrides nil
+  "Overrides for face definitions.
+
+Normally face definitions are taken from Emacs settings for fonts
+in the current frame.  For faces present in this plist, the
+definitions will be used instead.  Keys in the plist are symbols
+naming the face and values are the overriding definitions.  For
+example:
+
+  (setq htmlize-face-overrides
+        '(font-lock-warning-face \"black\"
+          font-lock-function-name-face \"red\"
+          font-lock-comment-face \"blue\"
+          default (:foreground \"dark-green\" :background \"yellow\")))
+
+This variable can be also be `let' bound when running `htmlize-buffer'.")
+
+(defcustom htmlize-html-major-mode nil
+  "The mode the newly created HTML buffer will be put in.
+Set this to nil if you prefer the default (fundamental) mode."
+  :type '(radio (const :tag "No mode (fundamental)" nil)
+		 (function-item html-mode)
+		 (function :tag "User-defined major mode"))
+  :group 'htmlize)
+
+(defvar htmlize-before-hook nil
+  "Hook run before htmlizing a buffer.
+The hook functions are run in the source buffer (not the resulting HTML
+buffer).")
+
+(defvar htmlize-after-hook nil
+  "Hook run after htmlizing a buffer.
+Unlike `htmlize-before-hook', these functions are run in the generated
+HTML buffer.  You may use them to modify the outlook of the final HTML
+output.")
+
+(defvar htmlize-file-hook nil
+  "Hook run by `htmlize-file' after htmlizing a file, but before saving it.")
+
+(defvar htmlize-buffer-places)
+
+;;; Some cross-Emacs compatibility.
+
+;; I try to conditionalize on features rather than Emacs version, but
+;; in some cases checking against the version *is* necessary.
+(defconst htmlize-running-xemacs (string-match "XEmacs" emacs-version))
+
+;; We need a function that efficiently finds the next change of a
+;; property regardless of whether the change occurred because of a
+;; text property or an extent/overlay.
+(cond
+ (htmlize-running-xemacs
+  (defun htmlize-next-change (pos prop &optional limit)
+    (if prop
+        (next-single-char-property-change pos prop nil (or limit (point-max)))
+      (next-property-change pos nil (or limit (point-max)))))
+  (defun htmlize-next-face-change (pos &optional limit)
+    (htmlize-next-change pos 'face limit)))
+ (t
+  (defun htmlize-next-change (pos prop &optional limit)
+    (if prop
+        (next-single-char-property-change pos prop nil limit)
+      (next-char-property-change pos limit)))
+  (defun htmlize-overlay-faces-at (pos)
+    (delq nil (mapcar (lambda (o) (overlay-get o 'face)) (overlays-at pos))))
+  (defun htmlize-next-face-change (pos &optional limit)
+    ;; (htmlize-next-change pos 'face limit) would skip over entire
+    ;; overlays that specify the `face' property, even when they
+    ;; contain smaller text properties that also specify `face'.
+    ;; Emacs display engine merges those faces, and so must we.
+    (or limit
+        (setq limit (point-max)))
+    (let ((next-prop (next-single-property-change pos 'face nil limit))
+          (overlay-faces (htmlize-overlay-faces-at pos)))
+      (while (progn
+               (setq pos (next-overlay-change pos))
+               (and (< pos next-prop)
+                    (equal overlay-faces (htmlize-overlay-faces-at pos)))))
+      (setq pos (min pos next-prop))
+      ;; Additionally, we include the entire region that specifies the
+      ;; `display' property.
+      (when (get-char-property pos 'display)
+        (setq pos (next-single-char-property-change pos 'display nil limit)))
+      pos)))
+ (t
+  (error "htmlize requires next-single-property-change or \
+next-single-char-property-change")))
+
+(defmacro htmlize-lexlet (&rest letforms)
+  (declare (indent 1) (debug let))
+  (if (and (boundp 'lexical-binding)
+           lexical-binding)
+      `(let ,@letforms)
+    ;; cl extensions have a macro implementing lexical let
+    `(lexical-let ,@letforms)))
+
+;; Simple overlay emulation for XEmacs
+
+(cond
+ (htmlize-running-xemacs
+  (defalias 'htmlize-make-overlay 'make-extent)
+  (defalias 'htmlize-overlay-put 'set-extent-property)
+  (defalias 'htmlize-overlay-get 'extent-property)
+  (defun htmlize-overlays-in (beg end) (extent-list nil beg end))
+  (defalias 'htmlize-delete-overlay 'detach-extent))
+ (t
+  (defalias 'htmlize-make-overlay 'make-overlay)
+  (defalias 'htmlize-overlay-put 'overlay-put)
+  (defalias 'htmlize-overlay-get 'overlay-get)
+  (defalias 'htmlize-overlays-in 'overlays-in)
+  (defalias 'htmlize-delete-overlay 'delete-overlay)))
+
+
+;;; Transformation of buffer text: HTML escapes, untabification, etc.
+
+(defvar htmlize-basic-character-table
+  ;; Map characters in the 0-127 range to either one-character strings
+  ;; or to numeric entities.
+  (let ((table (make-vector 128 ?\0)))
+    ;; Map characters in the 32-126 range to themselves, others to
+    ;; &#CODE entities;
+    (dotimes (i 128)
+      (setf (aref table i) (if (and (>= i 32) (<= i 126))
+			       (char-to-string i)
+			     (format "&#%d;" i))))
+    ;; Set exceptions manually.
+    (setf
+     ;; Don't escape newline, carriage return, and TAB.
+     (aref table ?\n) "\n"
+     (aref table ?\r) "\r"
+     (aref table ?\t) "\t"
+     ;; Escape &, <, and >.
+     (aref table ?&) "&amp;"
+     (aref table ?<) "&lt;"
+     (aref table ?>) "&gt;"
+     ;; Not escaping '"' buys us a measurable speedup.  It's only
+     ;; necessary to quote it for strings used in attribute values,
+     ;; which htmlize doesn't typically do.
+     ;(aref table ?\") "&quot;"
+     )
+    table))
+
+;; A cache of HTML representation of non-ASCII characters.  Depending
+;; on the setting of `htmlize-convert-nonascii-to-entities', this maps
+;; non-ASCII characters to either "&#<code>;" or "<char>" (mapconcat's
+;; mapper must always return strings).  It's only filled as characters
+;; are encountered, so that in a buffer with e.g. French text, it will
+;; only ever contain French accented characters as keys.  It's cleared
+;; on each entry to htmlize-buffer-1 to allow modifications of
+;; `htmlize-convert-nonascii-to-entities' to take effect.
+(defvar htmlize-extended-character-cache (make-hash-table :test 'eq))
+
+(defun htmlize-protect-string (string)
+  "HTML-protect string, escaping HTML metacharacters and I18N chars."
+  ;; Only protecting strings that actually contain unsafe or non-ASCII
+  ;; chars removes a lot of unnecessary funcalls and consing.
+  (if (not (string-match "[^\r\n\t -%'-;=?-~]" string))
+      string
+    (mapconcat (lambda (char)
+		 (cond
+		  ((< char 128)
+		   ;; ASCII: use htmlize-basic-character-table.
+		   (aref htmlize-basic-character-table char))
+		  ((gethash char htmlize-extended-character-cache)
+		   ;; We've already seen this char; return the cached
+		   ;; string.
+		   )
+		  ((not htmlize-convert-nonascii-to-entities)
+		   ;; If conversion to entities is not desired, always
+		   ;; copy the char literally.
+		   (setf (gethash char htmlize-extended-character-cache)
+			 (char-to-string char)))
+		  ((< char 256)
+		   ;; Latin 1: no need to call encode-char.
+		   (setf (gethash char htmlize-extended-character-cache)
+			 (format "&#%d;" char)))
+		  ((encode-char char 'ucs)
+                   ;; Must check if encode-char works for CHAR;
+                   ;; it fails for Arabic and possibly elsewhere.
+		   (setf (gethash char htmlize-extended-character-cache)
+			 (format "&#%d;" (encode-char char 'ucs))))
+		  (t
+		   ;; encode-char doesn't work for this char.  Copy it
+		   ;; unchanged and hope for the best.
+		   (setf (gethash char htmlize-extended-character-cache)
+			 (char-to-string char)))))
+	       string "")))
+
+(defun htmlize-attr-escape (string)
+  ;; Like htmlize-protect-string, but also escapes double-quoted
+  ;; strings to make it usable in attribute values.
+  (setq string (htmlize-protect-string string))
+  (if (not (string-match "\"" string))
+      string
+    (mapconcat (lambda (char)
+                 (if (eql char ?\")
+                     "&quot;"
+                   (char-to-string char)))
+               string "")))
+
+(defsubst htmlize-concat (list)
+  (if (and (consp list) (null (cdr list)))
+      ;; Don't create a new string in the common case where the list only
+      ;; consists of one element.
+      (car list)
+    (apply #'concat list)))
+
+(defun htmlize-format-link (linkprops text)
+  (let ((uri (if (stringp linkprops)
+                 linkprops
+               (plist-get linkprops :uri)))
+        (escaped-text (htmlize-protect-string text)))
+    (if uri
+        (format "<a href=\"%s\">%s</a>" (htmlize-attr-escape uri) escaped-text)
+      escaped-text)))
+
+(defun htmlize-escape-or-link (string)
+  ;; Escape STRING and/or add hyperlinks.  STRING comes from a
+  ;; `display' property.
+  (let ((pos 0) (end (length string)) outlist)
+    (while (< pos end)
+      (let* ((link (get-char-property pos 'htmlize-link string))
+             (next-link-change (next-single-property-change
+                                pos 'htmlize-link string end))
+             (chunk (substring string pos next-link-change)))
+        (push
+         (cond (link
+                (htmlize-format-link link chunk))
+               ((get-char-property 0 'htmlize-literal chunk)
+                chunk)
+               (t
+                (htmlize-protect-string chunk)))
+         outlist)
+        (setq pos next-link-change)))
+    (htmlize-concat (nreverse outlist))))
+
+(defun htmlize-display-prop-to-html (display text)
+  (let (desc)
+    (cond ((stringp display)
+           ;; Emacs ignores recursive display properties.
+           (htmlize-escape-or-link display))
+          ((not (eq (car-safe display) 'image))
+           (htmlize-protect-string text))
+          ((null (setq desc (funcall htmlize-transform-image
+                                     (cdr display) text)))
+           (htmlize-escape-or-link text))
+          ((stringp desc)
+           (htmlize-escape-or-link desc))
+          (t
+           (htmlize-generate-image desc text)))))
+
+(defun htmlize-string-to-html (string)
+  ;; Convert the string to HTML, including images attached as
+  ;; `display' property and links as `htmlize-link' property.  In a
+  ;; string without images or links, this is equivalent to
+  ;; `htmlize-protect-string'.
+  (let ((pos 0) (end (length string)) outlist)
+    (while (< pos end)
+      (let* ((display (get-char-property pos 'display string))
+             (next-display-change (next-single-property-change
+                                   pos 'display string end))
+             (chunk (substring string pos next-display-change)))
+        (push
+         (if display
+             (htmlize-display-prop-to-html display chunk)
+           (htmlize-escape-or-link chunk))
+         outlist)
+        (setq pos next-display-change)))
+    (htmlize-concat (nreverse outlist))))
+
+(defun htmlize-default-transform-image (imgprops _text)
+  "Default transformation of image descriptor to something usable in HTML.
+
+If `htmlize-use-images' is nil, the function always returns nil, meaning
+use original text.  Otherwise, it tries to find the image for images that
+specify a file name.  If `htmlize-force-inline-images' is non-nil, it also
+converts the :file attribute to :data and returns the modified property
+list."
+  (when htmlize-use-images
+    (when (plist-get imgprops :file)
+      (let ((location (plist-get (cdr (find-image (list imgprops))) :file)))
+        (when location
+          (setq imgprops (plist-put (copy-list imgprops) :file location)))))
+    (if htmlize-force-inline-images
+        (let ((location (plist-get imgprops :file))
+              data)
+          (when location
+            (with-temp-buffer
+              (condition-case nil
+                  (progn
+                    (insert-file-contents-literally location)
+                    (setq data (buffer-string)))
+                (error nil))))
+          ;; if successful, return the new plist, otherwise return
+          ;; nil, which will use the original text
+          (and data
+               (plist-put (plist-put imgprops :file nil)
+                          :data data)))
+      imgprops)))
+
+(defun htmlize-alt-text (_imgprops origtext)
+  (and (/= (length origtext) 0)
+       (<= (length origtext) htmlize-max-alt-text)
+       (not (string-match "[\0-\x1f]" origtext))
+       origtext))
+
+(defun htmlize-generate-image (imgprops origtext)
+  (let* ((alt-text (htmlize-alt-text imgprops origtext))
+         (alt-attr (if alt-text
+                       (format " alt=\"%s\"" (htmlize-attr-escape alt-text))
+                     "")))
+    (cond ((plist-get imgprops :file)
+           ;; Try to find the image in image-load-path
+           (let* ((found-props (cdr (find-image (list imgprops))))
+                  (file (or (plist-get found-props :file)
+                            (plist-get imgprops :file))))
+             (format "<img src=\"%s\"%s />"
+                     (htmlize-attr-escape (file-relative-name file))
+                     alt-attr)))
+          ((plist-get imgprops :data)
+           (format "<img src=\"data:image/%s;base64,%s\"%s />"
+                   (or (plist-get imgprops :type) "")
+                   (base64-encode-string (plist-get imgprops :data))
+                   alt-attr)))))
+
+(defconst htmlize-ellipsis "...")
+(put-text-property 0 (length htmlize-ellipsis) 'htmlize-ellipsis t htmlize-ellipsis)
+
+(defun htmlize-match-inv-spec (inv)
+  (member* inv buffer-invisibility-spec
+           :key (lambda (i)
+                  (if (symbolp i) i (car i)))))
+
+(defun htmlize-decode-invisibility-spec (invisible)
+  ;; Return t, nil, or `ellipsis', depending on how invisible text should be inserted.
+
+  (if (not (listp buffer-invisibility-spec))
+      ;; If buffer-invisibility-spec is not a list, then all
+      ;; characters with non-nil `invisible' property are visible.
+      (not invisible)
+
+    ;; Otherwise, the value of a non-nil `invisible' property can be:
+    ;; 1. a symbol -- make the text invisible if it matches
+    ;;    buffer-invisibility-spec.
+    ;; 2. a list of symbols -- make the text invisible if
+    ;;    any symbol in the list matches
+    ;;    buffer-invisibility-spec.
+    ;; If the match of buffer-invisibility-spec has a non-nil
+    ;; CDR, replace the invisible text with an ellipsis.
+    (let ((match (if (symbolp invisible)
+                     (htmlize-match-inv-spec invisible)
+                   (some #'htmlize-match-inv-spec invisible))))
+      (cond ((null match) t)
+            ((cdr-safe (car match)) 'ellipsis)
+            (t nil)))))
+
+(defun htmlize-add-before-after-strings (beg end text)
+  ;; Find overlays specifying before-string and after-string in [beg,
+  ;; pos).  If any are found, splice them into TEXT and return the new
+  ;; text.
+  (let (additions)
+    (dolist (overlay (overlays-in beg end))
+      (let ((before (overlay-get overlay 'before-string))
+            (after (overlay-get overlay 'after-string)))
+        (when after
+          (push (cons (- (overlay-end overlay) beg)
+                      after)
+                additions))
+        (when before
+          (push (cons (- (overlay-start overlay) beg)
+                      before)
+                additions))))
+    (if additions
+        (let ((textlist nil)
+              (strpos 0))
+          (dolist (add (stable-sort additions #'< :key #'car))
+            (let ((addpos (car add))
+                  (addtext (cdr add)))
+              (push (substring text strpos addpos) textlist)
+              (push addtext textlist)
+              (setq strpos addpos)))
+          (push (substring text strpos) textlist)
+          (apply #'concat (nreverse textlist)))
+      text)))
+
+(defun htmlize-copy-prop (prop beg end string)
+  ;; Copy the specified property from the specified region of the
+  ;; buffer to the target string.  We cannot rely on Emacs to copy the
+  ;; property because we want to handle properties coming from both
+  ;; text properties and overlays.
+  (let ((pos beg))
+    (while (< pos end)
+      (let ((value (get-char-property pos prop))
+            (next-change (htmlize-next-change pos prop end)))
+        (when value
+          (put-text-property (- pos beg) (- next-change beg)
+                             prop value string))
+        (setq pos next-change)))))
+
+(defun htmlize-get-text-with-display (beg end)
+  ;; Like buffer-substring-no-properties, except it copies the
+  ;; `display' property from the buffer, if found.
+  (let ((text (buffer-substring-no-properties beg end)))
+    (htmlize-copy-prop 'display beg end text)
+    (htmlize-copy-prop 'htmlize-link beg end text)
+    (unless htmlize-running-xemacs
+      (setq text (htmlize-add-before-after-strings beg end text)))
+    text))
+
+(defun htmlize-buffer-substring-no-invisible (beg end)
+  ;; Like buffer-substring-no-properties, but don't copy invisible
+  ;; parts of the region.  Where buffer-substring-no-properties
+  ;; mandates an ellipsis to be shown, htmlize-ellipsis is inserted.
+  (let ((pos beg)
+	visible-list invisible show last-show next-change)
+    ;; Iterate over the changes in the `invisible' property and filter
+    ;; out the portions where it's non-nil, i.e. where the text is
+    ;; invisible.
+    (while (< pos end)
+      (setq invisible (get-char-property pos 'invisible)
+	    next-change (htmlize-next-change pos 'invisible end)
+            show (htmlize-decode-invisibility-spec invisible))
+      (cond ((eq show t)
+	     (push (htmlize-get-text-with-display pos next-change)
+                   visible-list))
+            ((and (eq show 'ellipsis)
+                  (not (eq last-show 'ellipsis))
+                  ;; Conflate successive ellipses.
+                  (push htmlize-ellipsis visible-list))))
+      (setq pos next-change last-show show))
+    (htmlize-concat (nreverse visible-list))))
+
+(defun htmlize-trim-ellipsis (text)
+  ;; Remove htmlize-ellipses ("...") from the beginning of TEXT if it
+  ;; starts with it.  It checks for the special property of the
+  ;; ellipsis so it doesn't work on ordinary text that begins with
+  ;; "...".
+  (if (get-text-property 0 'htmlize-ellipsis text)
+      (substring text (length htmlize-ellipsis))
+    text))
+
+(defconst htmlize-tab-spaces
+  ;; A table of strings with spaces.  (aref htmlize-tab-spaces 5) is
+  ;; like (make-string 5 ?\ ), except it doesn't cons.
+  (let ((v (make-vector 32 nil)))
+    (dotimes (i (length v))
+      (setf (aref v i) (make-string i ?\ )))
+    v))
+
+(defun htmlize-untabify (text start-column)
+  "Untabify TEXT, assuming it starts at START-COLUMN."
+  (let ((column start-column)
+	(last-match 0)
+	(chunk-start 0)
+	chunks match-pos tab-size)
+    (while (string-match "[\t\n]" text last-match)
+      (setq match-pos (match-beginning 0))
+      (cond ((eq (aref text match-pos) ?\t)
+	     ;; Encountered a tab: create a chunk of text followed by
+	     ;; the expanded tab.
+	     (push (substring text chunk-start match-pos) chunks)
+	     ;; Increase COLUMN by the length of the text we've
+	     ;; skipped since last tab or newline.  (Encountering
+	     ;; newline resets it.)
+	     (incf column (- match-pos last-match))
+	     ;; Calculate tab size based on tab-width and COLUMN.
+	     (setq tab-size (- tab-width (% column tab-width)))
+	     ;; Expand the tab, carefully recreating the `display'
+	     ;; property if one was on the TAB.
+             (let ((display (get-text-property match-pos 'display text))
+                   (expanded-tab (aref htmlize-tab-spaces tab-size)))
+               (when display
+                 (put-text-property 0 tab-size 'display display expanded-tab))
+               (push expanded-tab chunks))
+	     (incf column tab-size)
+	     (setq chunk-start (1+ match-pos)))
+	    (t
+	     ;; Reset COLUMN at beginning of line.
+	     (setq column 0)))
+      (setq last-match (1+ match-pos)))
+    ;; If no chunks have been allocated, it means there have been no
+    ;; tabs to expand.  Return TEXT unmodified.
+    (if (null chunks)
+	text
+      (when (< chunk-start (length text))
+	;; Push the remaining chunk.
+	(push (substring text chunk-start) chunks))
+      ;; Generate the output from the available chunks.
+      (htmlize-concat (nreverse chunks)))))
+
+(defun htmlize-extract-text (beg end trailing-ellipsis)
+  ;; Extract buffer text, sans the invisible parts.  Then
+  ;; untabify it and escape the HTML metacharacters.
+  (let ((text (htmlize-buffer-substring-no-invisible beg end)))
+    (when trailing-ellipsis
+      (setq text (htmlize-trim-ellipsis text)))
+    ;; If TEXT ends up empty, don't change trailing-ellipsis.
+    (when (> (length text) 0)
+      (setq trailing-ellipsis
+            (get-text-property (1- (length text))
+                               'htmlize-ellipsis text)))
+    (setq text (htmlize-untabify text (current-column)))
+    (setq text (htmlize-string-to-html text))
+    (values text trailing-ellipsis)))
+
+(defun htmlize-despam-address (string)
+  "Replace every occurrence of '@' in STRING with %40.
+This is used to protect mailto links without modifying their meaning."
+  ;; Suggested by Ville Skytta.
+  (while (string-match "@" string)
+    (setq string (replace-match "%40" nil t string)))
+  string)
+
+(defun htmlize-make-tmp-overlay (beg end props)
+  (let ((overlay (htmlize-make-overlay beg end)))
+    (htmlize-overlay-put overlay 'htmlize-tmp-overlay t)
+    (while props
+      (htmlize-overlay-put overlay (pop props) (pop props)))
+    overlay))
+
+(defun htmlize-delete-tmp-overlays ()
+  (dolist (overlay (htmlize-overlays-in (point-min) (point-max)))
+    (when (htmlize-overlay-get overlay 'htmlize-tmp-overlay)
+      (htmlize-delete-overlay overlay))))
+
+(defun htmlize-make-link-overlay (beg end uri)
+  (htmlize-make-tmp-overlay beg end `(htmlize-link (:uri ,uri))))
+
+(defun htmlize-create-auto-links ()
+  "Add `htmlize-link' property to all mailto links in the buffer."
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward
+            "<\\(\\(mailto:\\)?\\([-=+_.a-zA-Z0-9]+@[-_.a-zA-Z0-9]+\\)\\)>"
+            nil t)
+      (let* ((address (match-string 3))
+             (beg (match-beginning 0)) (end (match-end 0))
+             (uri (concat "mailto:" (htmlize-despam-address address))))
+        (htmlize-make-link-overlay beg end uri)))
+    (goto-char (point-min))
+    (while (re-search-forward "<\\(\\(URL:\\)?\\([a-zA-Z]+://[^;]+\\)\\)>"
+                              nil t)
+      (htmlize-make-link-overlay
+       (match-beginning 0) (match-end 0) (match-string 3)))))
+
+;; Tests for htmlize-create-auto-links:
+
+;; <mailto:hniksic@xemacs.org>
+;; <http://fly.srk.fer.hr>
+;; <URL:http://www.xemacs.org>
+;; <http://www.mail-archive.com/bbdb-info@xemacs.org/>
+;; <hniksic@xemacs.org>
+;; <xalan-dev-sc.10148567319.hacuhiucknfgmpfnjcpg-john=doe.com@xml.apache.org>
+
+(defun htmlize-shadow-form-feeds ()
+  (let ((s "\n<hr />"))
+    (put-text-property 0 (length s) 'htmlize-literal t s)
+    (let ((disp `(display ,s)))
+      (while (re-search-forward "\n\^L" nil t)
+        (htmlize-make-tmp-overlay (match-beginning 0) (match-end 0) disp)))))
+
+(defun htmlize-defang-local-variables ()
+  ;; Juri Linkov reports that an HTML-ized "Local variables" can lead
+  ;; visiting the HTML to fail with "Local variables list is not
+  ;; properly terminated".  He suggested changing the phrase to
+  ;; syntactically equivalent HTML that Emacs doesn't recognize.
+  (goto-char (point-min))
+  (while (search-forward "Local Variables:" nil t)
+    (replace-match "Local Variables&#58;" nil t)))
+  
+
+;;; Color handling.
+
+(defvar htmlize-x-library-search-path
+  `(,data-directory
+    "/etc/X11/rgb.txt"
+    "/usr/share/X11/rgb.txt"
+    ;; the remainder of this list really belongs in a museum
+    "/usr/X11R6/lib/X11/"
+    "/usr/X11R5/lib/X11/"
+    "/usr/lib/X11R6/X11/"
+    "/usr/lib/X11R5/X11/"
+    "/usr/local/X11R6/lib/X11/"
+    "/usr/local/X11R5/lib/X11/"
+    "/usr/local/lib/X11R6/X11/"
+    "/usr/local/lib/X11R5/X11/"
+    "/usr/X11/lib/X11/"
+    "/usr/lib/X11/"
+    "/usr/local/lib/X11/"
+    "/usr/X386/lib/X11/"
+    "/usr/x386/lib/X11/"
+    "/usr/XFree86/lib/X11/"
+    "/usr/unsupported/lib/X11/"
+    "/usr/athena/lib/X11/"
+    "/usr/local/x11r5/lib/X11/"
+    "/usr/lpp/Xamples/lib/X11/"
+    "/usr/openwin/lib/X11/"
+    "/usr/openwin/share/lib/X11/"))
+
+(defun htmlize-get-color-rgb-hash (&optional rgb-file)
+  "Return a hash table mapping X color names to RGB values.
+The keys in the hash table are X11 color names, and the values are the
+#rrggbb RGB specifications, extracted from `rgb.txt'.
+
+If RGB-FILE is nil, the function will try hard to find a suitable file
+in the system directories.
+
+If no rgb.txt file is found, return nil."
+  (let ((rgb-file (or rgb-file (locate-file
+				"rgb.txt"
+				htmlize-x-library-search-path)))
+	(hash nil))
+    (when rgb-file
+      (with-temp-buffer
+	(insert-file-contents rgb-file)
+	(setq hash (make-hash-table :test 'equal))
+	(while (not (eobp))
+	  (cond ((looking-at "^\\s-*\\([!#]\\|$\\)")
+		 ;; Skip comments and empty lines.
+		 )
+		((looking-at
+		  "[ \t]*\\([0-9]+\\)[ \t]+\\([0-9]+\\)[ \t]+\\([0-9]+\\)[ \t]+\\(.*\\)")
+		 (setf (gethash (downcase (match-string 4)) hash)
+		       (format "#%02x%02x%02x"
+			       (string-to-number (match-string 1))
+			       (string-to-number (match-string 2))
+			       (string-to-number (match-string 3)))))
+		(t
+		 (error
+		  "Unrecognized line in %s: %s"
+		  rgb-file
+		  (buffer-substring (point) (progn (end-of-line) (point))))))
+	  (forward-line 1))))
+    hash))
+
+;; Compile the RGB map when loaded.  On systems where rgb.txt is
+;; missing, the value of the variable will be nil, and rgb.txt will
+;; not be used.
+(defvar htmlize-color-rgb-hash (htmlize-get-color-rgb-hash))
+
+;;; Face handling.
+
+(defun htmlize-face-specifies-property (face prop)
+  ;; Return t if face specifies PROP, as opposed to it being inherited
+  ;; from the default face.  The problem with e.g.
+  ;; `face-foreground-instance' is that it returns an instance for
+  ;; EVERY face because every face inherits from the default face.
+  ;; However, we'd like htmlize-face-{fore,back}ground to return nil
+  ;; when called with a face that doesn't specify its own foreground
+  ;; or background.
+  (or (eq face 'default)
+      (assq 'global (specifier-spec-list (face-property face prop)))))
+
+(defun htmlize-face-color-internal (face fg)
+  ;; Used only under GNU Emacs.  Return the color of FACE, but don't
+  ;; return "unspecified-fg" or "unspecified-bg".  If the face is
+  ;; `default' and the color is unspecified, look up the color in
+  ;; frame parameters.
+  (let* ((function (if fg #'face-foreground #'face-background))
+	 (color (funcall function face nil t)))
+    (when (and (eq face 'default) (null color))
+      (setq color (cdr (assq (if fg 'foreground-color 'background-color)
+			     (frame-parameters)))))
+    (when (or (eq color 'unspecified)
+	      (equal color "unspecified-fg")
+	      (equal color "unspecified-bg"))
+      (setq color nil))
+    (when (and (eq face 'default)
+	       (null color))
+      ;; Assuming black on white doesn't seem right, but I can't think
+      ;; of anything better to do.
+      (setq color (if fg "black" "white")))
+    color))
+
+(defun htmlize-face-foreground (face)
+  ;; Return the name of the foreground color of FACE.  If FACE does
+  ;; not specify a foreground color, return nil.
+  (cond (htmlize-running-xemacs
+	 ;; XEmacs.
+	 (and (htmlize-face-specifies-property face 'foreground)
+	      (color-instance-name (face-foreground-instance face))))
+	(t
+	 ;; GNU Emacs.
+	 (htmlize-face-color-internal face t))))
+
+(defun htmlize-face-background (face)
+  ;; Return the name of the background color of FACE.  If FACE does
+  ;; not specify a background color, return nil.
+  (cond (htmlize-running-xemacs
+	 ;; XEmacs.
+	 (and (htmlize-face-specifies-property face 'background)
+	      (color-instance-name (face-background-instance face))))
+	(t
+	 ;; GNU Emacs.
+	 (htmlize-face-color-internal face nil))))
+
+;; Convert COLOR to the #RRGGBB string.  If COLOR is already in that
+;; format, it's left unchanged.
+
+(defun htmlize-color-to-rgb (color)
+  (let ((rgb-string nil))
+    (cond ((null color)
+	   ;; Ignore nil COLOR because it means that the face is not
+	   ;; specifying any color.  Hence (htmlize-color-to-rgb nil)
+	   ;; returns nil.
+	   )
+	  ((string-match "\\`#" color)
+	   ;; The color is already in #rrggbb format.
+	   (setq rgb-string color))
+	  ((and htmlize-use-rgb-txt
+		htmlize-color-rgb-hash)
+	   ;; Use of rgb.txt is requested, and it's available on the
+	   ;; system.  Use it.
+	   (setq rgb-string (gethash (downcase color) htmlize-color-rgb-hash)))
+	  (t
+	   ;; We're getting the RGB components from Emacs.
+	   (let ((rgb
+		  (if (fboundp 'color-instance-rgb-components)
+		      (mapcar (lambda (arg)
+				(/ arg 256))
+			      (color-instance-rgb-components
+			       (make-color-instance color)))
+		    (mapcar (lambda (arg)
+			      (/ arg 256))
+			    (color-values color)))))
+	     (when rgb
+	       (setq rgb-string (apply #'format "#%02x%02x%02x" rgb))))))
+    ;; If RGB-STRING is still nil, it means the color cannot be found,
+    ;; for whatever reason.  In that case just punt and return COLOR.
+    ;; Most browsers support a decent set of color names anyway.
+    (or rgb-string color)))
+
+;; We store the face properties we care about into an
+;; `htmlize-fstruct' type.  That way we only have to analyze face
+;; properties, which can be time consuming, once per each face.  The
+;; mapping between Emacs faces and htmlize-fstructs is established by
+;; htmlize-make-face-map.  The name "fstruct" refers to variables of
+;; type `htmlize-fstruct', while the term "face" is reserved for Emacs
+;; faces.
+
+(defstruct htmlize-fstruct
+  foreground				; foreground color, #rrggbb
+  background				; background color, #rrggbb
+  size					; size
+  boldp					; whether face is bold
+  italicp				; whether face is italic
+  underlinep				; whether face is underlined
+  overlinep				; whether face is overlined
+  strikep				; whether face is struck through
+  css-name				; CSS name of face
+  )
+
+(defun htmlize-face-set-from-keyword-attr (fstruct attr value)
+  ;; For ATTR and VALUE, set the equivalent value in FSTRUCT.
+  (case attr
+    (:foreground
+     (setf (htmlize-fstruct-foreground fstruct) (htmlize-color-to-rgb value)))
+    (:background
+     (setf (htmlize-fstruct-background fstruct) (htmlize-color-to-rgb value)))
+    (:height
+     (setf (htmlize-fstruct-size fstruct) value))
+    (:weight
+     (when (string-match (symbol-name value) "bold")
+       (setf (htmlize-fstruct-boldp fstruct) t)))
+    (:slant
+     (setf (htmlize-fstruct-italicp fstruct) (or (eq value 'italic)
+						 (eq value 'oblique))))
+    (:bold
+     (setf (htmlize-fstruct-boldp fstruct) value))
+    (:italic
+     (setf (htmlize-fstruct-italicp fstruct) value))
+    (:underline
+     (setf (htmlize-fstruct-underlinep fstruct) value))
+    (:overline
+     (setf (htmlize-fstruct-overlinep fstruct) value))
+    (:strike-through
+     (setf (htmlize-fstruct-strikep fstruct) value))))
+
+(defun htmlize-face-size (face)
+  ;; The size (height) of FACE, taking inheritance into account.
+  ;; Only works in Emacs 21 and later.
+  (let* ((face-list (list face))
+         (head face-list)
+         (tail face-list))
+    (while head
+      (let ((inherit (face-attribute (car head) :inherit)))
+        (cond ((listp inherit)
+               (setcdr tail (copy-list inherit))
+               (setq tail (last tail)))
+              ((eq inherit 'unspecified))
+              (t
+               (setcdr tail (list inherit))
+               (setq tail (cdr tail)))))
+      (pop head))
+    (let ((size-list
+           (loop
+            for f in face-list
+            for h = (face-attribute f :height)
+            collect (if (eq h 'unspecified) nil h))))
+      (reduce 'htmlize-merge-size (cons nil size-list)))))
+
+(defun htmlize-face-css-name (face)
+  ;; Generate the css-name property for the given face.  Emacs places
+  ;; no restrictions on the names of symbols that represent faces --
+  ;; any characters may be in the name, even control chars.  We try
+  ;; hard to beat the face name into shape, both esthetically and
+  ;; according to CSS1 specs.
+  (let ((name (downcase (symbol-name face))))
+    (when (string-match "\\`font-lock-" name)
+      ;; font-lock-FOO-face -> FOO.
+      (setq name (replace-match "" t t name)))
+    (when (string-match "-face\\'" name)
+      ;; Drop the redundant "-face" suffix.
+      (setq name (replace-match "" t t name)))
+    (while (string-match "[^-a-zA-Z0-9]" name)
+      ;; Drop the non-alphanumerics.
+      (setq name (replace-match "X" t t name)))
+    (when (string-match "\\`[-0-9]" name)
+      ;; CSS identifiers may not start with a digit.
+      (setq name (concat "X" name)))
+    ;; After these transformations, the face could come out empty.
+    (when (equal name "")
+      (setq name "face"))
+    ;; Apply the prefix.
+    (concat htmlize-css-name-prefix name)))
+
+(defun htmlize-face-to-fstruct (face)
+  "Convert Emacs face FACE to fstruct."
+  (let ((fstruct (make-htmlize-fstruct
+		  :foreground (htmlize-color-to-rgb
+			       (htmlize-face-foreground face))
+		  :background (htmlize-color-to-rgb
+			       (htmlize-face-background face)))))
+    (if htmlize-running-xemacs
+        ;; XEmacs doesn't provide a way to detect whether a face is
+        ;; bold or italic, so we need to examine the font instance.
+        (let* ((font-instance (face-font-instance face))
+               (props (font-instance-properties font-instance)))
+          (when (equalp (cdr (assq 'WEIGHT_NAME props)) "bold")
+            (setf (htmlize-fstruct-boldp fstruct) t))
+          (when (or (equalp (cdr (assq 'SLANT props)) "i")
+                    (equalp (cdr (assq 'SLANT props)) "o"))
+            (setf (htmlize-fstruct-italicp fstruct) t))
+          (setf (htmlize-fstruct-strikep fstruct)
+                (face-strikethru-p face))
+          (setf (htmlize-fstruct-underlinep fstruct)
+                (face-underline-p face)))
+      ;; GNU Emacs
+      (dolist (attr '(:weight :slant :underline :overline :strike-through))
+        (let ((value (face-attribute face attr nil t)))
+          (when (and value (not (eq value 'unspecified)))
+            (htmlize-face-set-from-keyword-attr fstruct attr value))))
+      (let ((size (htmlize-face-size face)))
+        (unless (eql size 1.0) 	; ignore non-spec
+          (setf (htmlize-fstruct-size fstruct) size))))
+    (setf (htmlize-fstruct-css-name fstruct) (htmlize-face-css-name face))
+    fstruct))
+
+(defmacro htmlize-copy-attr-if-set (attr-list dest source)
+  ;; Generate code with the following pattern:
+  ;; (progn
+  ;;   (when (htmlize-fstruct-ATTR source)
+  ;;     (setf (htmlize-fstruct-ATTR dest) (htmlize-fstruct-ATTR source)))
+  ;;   ...)
+  ;; for the given list of boolean attributes.
+  (cons 'progn
+	(loop for attr in attr-list
+	      for attr-sym = (intern (format "htmlize-fstruct-%s" attr))
+	      collect `(when (,attr-sym ,source)
+                         (setf (,attr-sym ,dest) (,attr-sym ,source))))))
+
+(defun htmlize-merge-size (merged next)
+  ;; Calculate the size of the merge of MERGED and NEXT.
+  (cond ((null merged)     next)
+	((integerp next)   next)
+	((null next)       merged)
+	((floatp merged)   (* merged next))
+	((integerp merged) (round (* merged next)))))
+
+(defun htmlize-merge-two-faces (merged next)
+  (htmlize-copy-attr-if-set
+   (foreground background boldp italicp underlinep overlinep strikep)
+   merged next)
+  (setf (htmlize-fstruct-size merged)
+	(htmlize-merge-size (htmlize-fstruct-size merged)
+			    (htmlize-fstruct-size next)))
+  merged)
+
+(defun htmlize-merge-faces (fstruct-list)
+  (cond ((null fstruct-list)
+	 ;; Nothing to do, return a dummy face.
+	 (make-htmlize-fstruct))
+	((null (cdr fstruct-list))
+	 ;; Optimize for the common case of a single face, simply
+	 ;; return it.
+	 (car fstruct-list))
+	(t
+	 (reduce #'htmlize-merge-two-faces
+		 (cons (make-htmlize-fstruct) fstruct-list)))))
+
+;; GNU Emacs 20+ supports attribute lists in `face' properties.  For
+;; example, you can use `(:foreground "red" :weight bold)' as an
+;; overlay's "face", or you can even use a list of such lists, etc.
+;; We call those "attrlists".
+;;
+;; htmlize supports attrlist by converting them to fstructs, the same
+;; as with regular faces.
+
+(defun htmlize-attrlist-to-fstruct (attrlist &optional name)
+  ;; Like htmlize-face-to-fstruct, but accepts an ATTRLIST as input.
+  (let ((fstruct (make-htmlize-fstruct)))
+    (cond ((eq (car attrlist) 'foreground-color)
+	   ;; ATTRLIST is (foreground-color . COLOR)
+	   (setf (htmlize-fstruct-foreground fstruct)
+		 (htmlize-color-to-rgb (cdr attrlist))))
+	  ((eq (car attrlist) 'background-color)
+	   ;; ATTRLIST is (background-color . COLOR)
+	   (setf (htmlize-fstruct-background fstruct)
+		 (htmlize-color-to-rgb (cdr attrlist))))
+	  (t
+	   ;; ATTRLIST is a plist.
+	   (while attrlist
+	     (let ((attr (pop attrlist))
+		   (value (pop attrlist)))
+	       (when (and value (not (eq value 'unspecified)))
+		 (htmlize-face-set-from-keyword-attr fstruct attr value))))))
+    (setf (htmlize-fstruct-css-name fstruct) (or name "custom"))
+    fstruct))
+
+(defun htmlize-decode-face-prop (prop)
+  "Turn face property PROP into a list of face-like objects."
+  ;; PROP can be a symbol naming a face, a string naming such a
+  ;; symbol, a cons (foreground-color . COLOR) or (background-color
+  ;; COLOR), a property list (:attr1 val1 :attr2 val2 ...), or a list
+  ;; of any of those.
+  ;;
+  ;; (htmlize-decode-face-prop 'face) -> (face)
+  ;; (htmlize-decode-face-prop '(face1 face2)) -> (face1 face2)
+  ;; (htmlize-decode-face-prop '(:attr "val")) -> ((:attr "val"))
+  ;; (htmlize-decode-face-prop '((:attr "val") face (foreground-color "red")))
+  ;;   -> ((:attr "val") face (foreground-color "red"))
+  ;;
+  ;; Unrecognized atoms or non-face symbols/strings are silently
+  ;; stripped away.
+  (cond ((null prop)
+         nil)
+        ((symbolp prop)
+         (and (facep prop)
+              (list prop)))
+        ((stringp prop)
+         (and (facep (intern-soft prop))
+              (list prop)))
+        ((atom prop)
+         nil)
+        ((and (symbolp (car prop))
+              (eq ?: (aref (symbol-name (car prop)) 0)))
+         (list prop))
+        ((or (eq (car prop) 'foreground-color)
+             (eq (car prop) 'background-color))
+         (list prop))
+        (t
+         (apply #'nconc (mapcar #'htmlize-decode-face-prop prop)))))
+
+(defun htmlize-get-override-fstruct (face)
+  (let* ((raw-def (plist-get htmlize-face-overrides face))
+         (def (cond ((stringp raw-def) (list :foreground raw-def))
+                    ((listp raw-def) raw-def)
+                    (t
+                     (error (format (concat "face override must be an "
+                                            "attribute list or string, got %s")
+                                    raw-def))))))
+    (and def
+         (htmlize-attrlist-to-fstruct def (symbol-name face)))))
+
+(defun htmlize-make-face-map (faces)
+  ;; Return a hash table mapping Emacs faces to htmlize's fstructs.
+  ;; The keys are either face symbols or attrlists, so the test
+  ;; function must be `equal'.
+  (let ((face-map (make-hash-table :test 'equal))
+	css-names)
+    (dolist (face faces)
+      (unless (gethash face face-map)
+	;; Haven't seen FACE yet; convert it to an fstruct and cache
+	;; it.
+	(let ((fstruct (if (symbolp face)
+                           (or (htmlize-get-override-fstruct face)
+                               (htmlize-face-to-fstruct face))
+			 (htmlize-attrlist-to-fstruct face))))
+	  (setf (gethash face face-map) fstruct)
+	  (let* ((css-name (htmlize-fstruct-css-name fstruct))
+		 (new-name css-name)
+		 (i 0))
+	    ;; Uniquify the face's css-name by using NAME-1, NAME-2,
+	    ;; etc.
+	    (while (member new-name css-names)
+	      (setq new-name (format "%s-%s" css-name (incf i))))
+	    (unless (equal new-name css-name)
+	      (setf (htmlize-fstruct-css-name fstruct) new-name))
+	    (push new-name css-names)))))
+    face-map))
+
+(defun htmlize-unstringify-face (face)
+  "If FACE is a string, return it interned, otherwise return it unchanged."
+  (if (stringp face)
+      (intern face)
+    face))
+
+(defun htmlize-faces-in-buffer ()
+  "Return a list of faces used in the current buffer.
+Under XEmacs, this returns the set of faces specified by the extents
+with the `face' property.  (This covers text properties as well.)  Under
+GNU Emacs, it returns the set of faces specified by the `face' text
+property and by buffer overlays that specify `face'."
+  (let (faces)
+    ;; Testing for (fboundp 'map-extents) doesn't work because W3
+    ;; defines `map-extents' under FSF.
+    (if htmlize-running-xemacs
+	(let (face-prop)
+	  (map-extents (lambda (extent ignored)
+			 (setq face-prop (extent-face extent)
+			       ;; FACE-PROP can be a face or a list of
+			       ;; faces.
+			       faces (if (listp face-prop)
+					 (union face-prop faces)
+				       (adjoin face-prop faces)))
+			 nil)
+		       nil
+		       ;; Specify endpoints explicitly to respect
+		       ;; narrowing.
+		       (point-min) (point-max) nil nil 'face))
+      ;; FSF Emacs code.
+      ;; Faces used by text properties.
+      (let ((pos (point-min)) face-prop next)
+	(while (< pos (point-max))
+	  (setq face-prop (get-text-property pos 'face)
+		next (or (next-single-property-change pos 'face) (point-max)))
+          (setq faces (nunion (htmlize-decode-face-prop face-prop)
+                              faces :test 'equal))
+	  (setq pos next)))
+      ;; Faces used by overlays.
+      (dolist (overlay (overlays-in (point-min) (point-max)))
+	(let ((face-prop (overlay-get overlay 'face)))
+          (setq faces (nunion (htmlize-decode-face-prop face-prop)
+                              faces :test 'equal)))))
+    faces))
+
+;; htmlize-faces-at-point returns the faces in use at point.  The
+;; faces are sorted by increasing priority, i.e. the last face takes
+;; precedence.
+;;
+;; Under XEmacs, this returns all the faces in all the extents at
+;; point.  Under GNU Emacs, this returns all the faces in the `face'
+;; property and all the faces in the overlays at point.
+
+(cond (htmlize-running-xemacs
+       (defun htmlize-faces-at-point ()
+	 (let (extent extent-list face-list face-prop)
+	   (while (setq extent (extent-at (point) nil 'face extent))
+	     (push extent extent-list))
+	   ;; extent-list is in reverse display order, meaning that
+	   ;; smallest ones come last.  That is the order we want,
+	   ;; except it can be overridden by the `priority' property.
+	   (setq extent-list (stable-sort extent-list #'<
+					  :key #'extent-priority))
+	   (dolist (extent extent-list)
+	     (setq face-prop (extent-face extent))
+	     ;; extent's face-list is in reverse order from what we
+	     ;; want, but the `nreverse' below will take care of it.
+	     (setq face-list (if (listp face-prop)
+				 (append face-prop face-list)
+			       (cons face-prop face-list))))
+	   (nreverse face-list))))
+      (t
+       (defun htmlize-faces-at-point ()
+	 (let (all-faces)
+	   ;; Faces from text properties.
+	   (let ((face-prop (get-text-property (point) 'face)))
+             ;; we need to reverse the `face' prop because we want
+             ;; more specific faces to come later
+	     (setq all-faces (nreverse (htmlize-decode-face-prop face-prop))))
+	   ;; Faces from overlays.
+	   (let ((overlays
+		  ;; Collect overlays at point that specify `face'.
+		  (delete-if-not (lambda (o)
+				   (overlay-get o 'face))
+				 (overlays-at (point))))
+		 list face-prop)
+	     ;; Sort the overlays so the smaller (more specific) ones
+	     ;; come later.  The number of overlays at each one
+	     ;; position should be very small, so the sort shouldn't
+	     ;; slow things down.
+	     (setq overlays (sort* overlays
+				   ;; Sort by ascending...
+				   #'<
+				   ;; ...overlay size.
+				   :key (lambda (o)
+					  (- (overlay-end o)
+					     (overlay-start o)))))
+	     ;; Overlay priorities, if present, override the above
+	     ;; established order.  Larger overlay priority takes
+	     ;; precedence and therefore comes later in the list.
+	     (setq overlays (stable-sort
+			     overlays
+			     ;; Reorder (stably) by acending...
+			     #'<
+			     ;; ...overlay priority.
+			     :key (lambda (o)
+				    (or (overlay-get o 'priority) 0))))
+	     (dolist (overlay overlays)
+	       (setq face-prop (overlay-get overlay 'face)
+                     list (nconc (htmlize-decode-face-prop face-prop) list)))
+	     ;; Under "Merging Faces" the manual explicitly states
+	     ;; that faces specified by overlays take precedence over
+	     ;; faces specified by text properties.
+	     (setq all-faces (nconc all-faces list)))
+	   all-faces))))
+
+;; htmlize supports generating HTML in several flavors, some of which
+;; use CSS, and others the <font> element.  We take an OO approach and
+;; define "methods" that indirect to the functions that depend on
+;; `htmlize-output-type'.  The currently used methods are `doctype',
+;; `insert-head', `body-tag', and `text-markup'.  Not all output types
+;; define all methods.
+;;
+;; Methods are called either with (htmlize-method METHOD ARGS...) 
+;; special form, or by accessing the function with
+;; (htmlize-method-function 'METHOD) and calling (funcall FUNCTION).
+;; The latter form is useful in tight loops because `htmlize-method'
+;; conses.
+
+(defmacro htmlize-method (method &rest args)
+  ;; Expand to (htmlize-TYPE-METHOD ...ARGS...).  TYPE is the value of
+  ;; `htmlize-output-type' at run time.
+  `(funcall (htmlize-method-function ',method) ,@args))
+
+(defun htmlize-method-function (method)
+  ;; Return METHOD's function definition for the current output type.
+  ;; The returned object can be safely funcalled.
+  (let ((sym (intern (format "htmlize-%s-%s" htmlize-output-type method))))
+    (indirect-function (if (fboundp sym)
+			   sym
+			 (let ((default (intern (concat "htmlize-default-"
+							(symbol-name method)))))
+			   (if (fboundp default)
+			       default
+			     'ignore))))))
+
+(defvar htmlize-memoization-table (make-hash-table :test 'equal))
+
+(defmacro htmlize-memoize (key generator)
+  "Return the value of GENERATOR, memoized as KEY.
+That means that GENERATOR will be evaluated and returned the first time
+it's called with the same value of KEY.  All other times, the cached
+\(memoized) value will be returned."
+  (let ((value (gensym)))
+    `(let ((,value (gethash ,key htmlize-memoization-table)))
+       (unless ,value
+	 (setq ,value ,generator)
+	 (setf (gethash ,key htmlize-memoization-table) ,value))
+       ,value)))
+
+;;; Default methods.
+
+(defun htmlize-default-doctype ()
+  nil					; no doc-string
+  ;; Note that the `font' output is technically invalid under this DTD
+  ;; because the DTD doesn't allow embedding <font> in <pre>.
+  "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\">"
+  )
+
+(defun htmlize-default-body-tag (face-map)
+  nil					; no doc-string
+  face-map ; shut up the byte-compiler
+  "<body>")
+
+;;; CSS based output support.
+
+;; Internal function; not a method.
+(defun htmlize-css-specs (fstruct)
+  (let (result)
+    (when (htmlize-fstruct-foreground fstruct)
+      (push (format "color: %s;" (htmlize-fstruct-foreground fstruct))
+	    result))
+    (when (htmlize-fstruct-background fstruct)
+      (push (format "background-color: %s;"
+		    (htmlize-fstruct-background fstruct))
+	    result))
+    (let ((size (htmlize-fstruct-size fstruct)))
+      (when (and size (not (eq htmlize-ignore-face-size t)))
+	(cond ((floatp size)
+	       (push (format "font-size: %d%%;" (* 100 size)) result))
+	      ((not (eq htmlize-ignore-face-size 'absolute))
+	       (push (format "font-size: %spt;" (/ size 10.0)) result)))))
+    (when (htmlize-fstruct-boldp fstruct)
+      (push "font-weight: bold;" result))
+    (when (htmlize-fstruct-italicp fstruct)
+      (push "font-style: italic;" result))
+    (when (htmlize-fstruct-underlinep fstruct)
+      (push "text-decoration: underline;" result))
+    (when (htmlize-fstruct-overlinep fstruct)
+      (push "text-decoration: overline;" result))
+    (when (htmlize-fstruct-strikep fstruct)
+      (push "text-decoration: line-through;" result))
+    (nreverse result)))
+
+(defun htmlize-css-insert-head (buffer-faces face-map)
+  (insert "    <style type=\"text/css\">\n    <!--\n")
+  (insert "      body {\n        "
+	  (mapconcat #'identity
+		     (htmlize-css-specs (gethash 'default face-map))
+		     "\n        ")
+	  "\n      }\n")
+  (dolist (face (sort* (copy-list buffer-faces) #'string-lessp
+		       :key (lambda (f)
+			      (htmlize-fstruct-css-name (gethash f face-map)))))
+    (let* ((fstruct (gethash face face-map))
+	   (cleaned-up-face-name
+	    (let ((s
+		   ;; Use `prin1-to-string' rather than `symbol-name'
+		   ;; to get the face name because the "face" can also
+		   ;; be an attrlist, which is not a symbol.
+		   (prin1-to-string face)))
+	      ;; If the name contains `--' or `*/', remove them.
+	      (while (string-match "--" s)
+		(setq s (replace-match "-" t t s)))
+	      (while (string-match "\\*/" s)
+		(setq s (replace-match "XX" t t s)))
+	      s))
+	   (specs (htmlize-css-specs fstruct)))
+      (insert "      ." (htmlize-fstruct-css-name fstruct))
+      (if (null specs)
+	  (insert " {")
+	(insert " {\n        /* " cleaned-up-face-name " */\n        "
+		(mapconcat #'identity specs "\n        ")))
+      (insert "\n      }\n")))
+  (insert htmlize-hyperlink-style
+	  "    -->\n    </style>\n"))
+
+(defun htmlize-css-text-markup (fstruct-list buffer)
+  ;; Open the markup needed to insert text colored with FACES into
+  ;; BUFFER.  Return the function that closes the markup.
+
+  ;; In CSS mode, this is easy: just nest the text in one <span
+  ;; class=...> tag for each face in FSTRUCT-LIST.
+  (dolist (fstruct fstruct-list)
+    (princ "<span class=\"" buffer)
+    (princ (htmlize-fstruct-css-name fstruct) buffer)
+    (princ "\">" buffer))
+  (htmlize-lexlet ((fstruct-list fstruct-list) (buffer buffer))
+    (lambda ()
+      (dolist (fstruct fstruct-list)
+        (ignore fstruct)                ; shut up the byte-compiler
+        (princ "</span>" buffer)))))
+
+;; `inline-css' output support.
+
+(defun htmlize-inline-css-body-tag (face-map)
+  (format "<body style=\"%s\">"
+	  (mapconcat #'identity (htmlize-css-specs (gethash 'default face-map))
+		     " ")))
+
+(defun htmlize-inline-css-text-markup (fstruct-list buffer)
+  (let* ((merged (htmlize-merge-faces fstruct-list))
+	 (style (htmlize-memoize
+		 merged
+		 (let ((specs (htmlize-css-specs merged)))
+		   (and specs
+			(mapconcat #'identity (htmlize-css-specs merged) " "))))))
+    (when style
+      (princ "<span style=\"" buffer)
+      (princ style buffer)
+      (princ "\">" buffer))
+    (htmlize-lexlet ((style style) (buffer buffer))
+      (lambda ()
+        (when style
+          (princ "</span>" buffer))))))
+
+;;; `font' tag based output support.
+
+(defun htmlize-font-body-tag (face-map)
+  (let ((fstruct (gethash 'default face-map)))
+    (format "<body text=\"%s\" bgcolor=\"%s\">"
+	    (htmlize-fstruct-foreground fstruct)
+	    (htmlize-fstruct-background fstruct))))
+       
+(defun htmlize-font-text-markup (fstruct-list buffer)
+  ;; In `font' mode, we use the traditional HTML means of altering
+  ;; presentation: <font> tag for colors, <b> for bold, <u> for
+  ;; underline, and <strike> for strike-through.
+  (let* ((merged (htmlize-merge-faces fstruct-list))
+	 (markup (htmlize-memoize
+		  merged
+		  (cons (concat
+			 (and (htmlize-fstruct-foreground merged)
+			      (format "<font color=\"%s\">" (htmlize-fstruct-foreground merged)))
+			 (and (htmlize-fstruct-boldp merged)      "<b>")
+			 (and (htmlize-fstruct-italicp merged)    "<i>")
+			 (and (htmlize-fstruct-underlinep merged) "<u>")
+			 (and (htmlize-fstruct-strikep merged)    "<strike>"))
+			(concat
+			 (and (htmlize-fstruct-strikep merged)    "</strike>")
+			 (and (htmlize-fstruct-underlinep merged) "</u>")
+			 (and (htmlize-fstruct-italicp merged)    "</i>")
+			 (and (htmlize-fstruct-boldp merged)      "</b>")
+			 (and (htmlize-fstruct-foreground merged) "</font>"))))))
+    (princ (car markup) buffer)
+    (htmlize-lexlet ((markup markup) (buffer buffer))
+      (lambda ()
+        (princ (cdr markup) buffer)))))
+
+(defun htmlize-buffer-1 ()
+  ;; Internal function; don't call it from outside this file.  Htmlize
+  ;; current buffer, writing the resulting HTML to a new buffer, and
+  ;; return it.  Unlike htmlize-buffer, this doesn't change current
+  ;; buffer or use switch-to-buffer.
+  (save-excursion
+    ;; Protect against the hook changing the current buffer.
+    (save-excursion
+      (run-hooks 'htmlize-before-hook))
+    ;; Convince font-lock support modes to fontify the entire buffer
+    ;; in advance.
+    (htmlize-ensure-fontified)
+    (clrhash htmlize-extended-character-cache)
+    (clrhash htmlize-memoization-table)
+    ;; It's important that the new buffer inherits default-directory
+    ;; from the current buffer.
+    (let ((htmlbuf (generate-new-buffer (if (buffer-file-name)
+                                            (htmlize-make-file-name
+                                             (file-name-nondirectory
+                                              (buffer-file-name)))
+                                          "*html*")))
+          (completed nil))
+      (unwind-protect
+          (let* ((buffer-faces (htmlize-faces-in-buffer))
+                 (face-map (htmlize-make-face-map (adjoin 'default buffer-faces)))
+                 (places (gensym))
+                 (title (if (buffer-file-name)
+                            (file-name-nondirectory (buffer-file-name))
+                          (buffer-name))))
+            (when htmlize-generate-hyperlinks
+              (htmlize-create-auto-links))
+            (when htmlize-replace-form-feeds
+              (htmlize-shadow-form-feeds))
+
+            ;; Initialize HTMLBUF and insert the HTML prolog.
+            (with-current-buffer htmlbuf
+              (buffer-disable-undo)
+              (insert (htmlize-method doctype) ?\n
+                      (format "<!-- Created by htmlize-%s in %s mode. -->\n"
+                              htmlize-version htmlize-output-type)
+                      "<html>\n  ")
+              (put places 'head-start (point-marker))
+              (insert "<head>\n"
+                      "    <title>" (htmlize-protect-string title) "</title>\n"
+                      (if htmlize-html-charset
+                          (format (concat "    <meta http-equiv=\"Content-Type\" "
+                                          "content=\"text/html; charset=%s\">\n")
+                                  htmlize-html-charset)
+                        "")
+                      htmlize-head-tags)
+              (htmlize-method insert-head buffer-faces face-map)
+              (insert "  </head>")
+              (put places 'head-end (point-marker))
+              (insert "\n  ")
+              (put places 'body-start (point-marker))
+              (insert (htmlize-method body-tag face-map)
+                      "\n    ")
+              (put places 'content-start (point-marker))
+              (insert "<pre>\n"))
+            (let ((text-markup
+                   ;; Get the inserter method, so we can funcall it inside
+                   ;; the loop.  Not calling `htmlize-method' in the loop
+                   ;; body yields a measurable speed increase.
+                   (htmlize-method-function 'text-markup))
+                  ;; Declare variables used in loop body outside the loop
+                  ;; because it's faster to establish `let' bindings only
+                  ;; once.
+                  next-change text face-list trailing-ellipsis
+                  fstruct-list last-fstruct-list
+                  (close-markup (lambda ())))
+              ;; This loop traverses and reads the source buffer, appending
+              ;; the resulting HTML to HTMLBUF.  This method is fast
+              ;; because: 1) it doesn't require examining the text
+              ;; properties char by char (htmlize-next-face-change is used
+              ;; to move between runs with the same face), and 2) it doesn't
+              ;; require frequent buffer switches, which are slow because
+              ;; they rebind all buffer-local vars.
+              (goto-char (point-min))
+              (while (not (eobp))
+                (setq next-change (htmlize-next-face-change (point)))
+                ;; Get faces in use between (point) and NEXT-CHANGE, and
+                ;; convert them to fstructs.
+                (setq face-list (htmlize-faces-at-point)
+                      fstruct-list (delq nil (mapcar (lambda (f)
+                                                       (gethash f face-map))
+                                                     face-list)))
+                (multiple-value-setq (text trailing-ellipsis)
+                  (htmlize-extract-text (point) next-change trailing-ellipsis))
+                ;; Don't bother writing anything if there's no text (this
+                ;; happens in invisible regions).
+                (when (> (length text) 0)
+                  ;; Open the new markup if necessary and insert the text.
+                  (when (not (equalp fstruct-list last-fstruct-list))
+                    (funcall close-markup)
+                    (setq last-fstruct-list fstruct-list
+                          close-markup (funcall text-markup fstruct-list htmlbuf)))
+                  (princ text htmlbuf))
+                (goto-char next-change))
+
+              ;; We've gone through the buffer; close the markup from
+              ;; the last run, if any.
+              (funcall close-markup))
+
+            ;; Insert the epilog and post-process the buffer.
+            (with-current-buffer htmlbuf
+              (insert "</pre>")
+              (put places 'content-end (point-marker))
+              (insert "\n  </body>")
+              (put places 'body-end (point-marker))
+              (insert "\n</html>\n")
+              (htmlize-defang-local-variables)
+              (goto-char (point-min))
+              (when htmlize-html-major-mode
+                ;; What sucks about this is that the minor modes, most notably
+                ;; font-lock-mode, won't be initialized.  Oh well.
+                (funcall htmlize-html-major-mode))
+              (set (make-local-variable 'htmlize-buffer-places)
+                   (symbol-plist places))
+              (run-hooks 'htmlize-after-hook)
+              (buffer-enable-undo))
+            (setq completed t)
+            htmlbuf)
+
+        (when (not completed)
+          (kill-buffer htmlbuf))
+        (htmlize-delete-tmp-overlays)))))
+
+;; Utility functions.
+
+(defmacro htmlize-with-fontify-message (&rest body)
+  ;; When forcing fontification of large buffers in
+  ;; htmlize-ensure-fontified, inform the user that he is waiting for
+  ;; font-lock, not for htmlize to finish.
+  `(progn
+     (if (> (buffer-size) 65536)
+	 (message "Forcing fontification of %s..."
+		  (buffer-name (current-buffer))))
+     ,@body
+     (if (> (buffer-size) 65536)
+	 (message "Forcing fontification of %s...done"
+		  (buffer-name (current-buffer))))))
+
+(defun htmlize-ensure-fontified ()
+  ;; If font-lock is being used, ensure that the "support" modes
+  ;; actually fontify the buffer.  If font-lock is not in use, we
+  ;; don't care because, except in htmlize-file, we don't force
+  ;; font-lock on the user.
+  (when (and (boundp 'font-lock-mode)
+	     font-lock-mode)
+    ;; In part taken from ps-print-ensure-fontified in GNU Emacs 21.
+    (cond
+     ((and (boundp 'jit-lock-mode)
+	   (symbol-value 'jit-lock-mode))
+      (htmlize-with-fontify-message
+       (jit-lock-fontify-now (point-min) (point-max))))
+     ((and (boundp 'lazy-lock-mode)
+	   (symbol-value 'lazy-lock-mode))
+      (htmlize-with-fontify-message
+       (lazy-lock-fontify-region (point-min) (point-max))))
+     ((and (boundp 'lazy-shot-mode)
+	   (symbol-value 'lazy-shot-mode))
+      (htmlize-with-fontify-message
+       ;; lazy-shot is amazing in that it must *refontify* the region,
+       ;; even if the whole buffer has already been fontified.  <sigh>
+       (lazy-shot-fontify-region (point-min) (point-max))))
+     ;; There's also fast-lock, but we don't need to handle specially,
+     ;; I think.  fast-lock doesn't really defer fontification, it
+     ;; just saves it to an external cache so it's not done twice.
+     )))
+
+
+;;;###autoload
+(defun htmlize-buffer (&optional buffer)
+  "Convert BUFFER to HTML, preserving colors and decorations.
+
+The generated HTML is available in a new buffer, which is returned.
+When invoked interactively, the new buffer is selected in the current
+window.  The title of the generated document will be set to the buffer's
+file name or, if that's not available, to the buffer's name.
+
+Note that htmlize doesn't fontify your buffers, it only uses the
+decorations that are already present.  If you don't set up font-lock or
+something else to fontify your buffers, the resulting HTML will be
+plain.  Likewise, if you don't like the choice of colors, fix the mode
+that created them, or simply alter the faces it uses."
+  (interactive)
+  (let ((htmlbuf (with-current-buffer (or buffer (current-buffer))
+		   (htmlize-buffer-1))))
+    (when (interactive-p)
+      (switch-to-buffer htmlbuf))
+    htmlbuf))
+
+;;;###autoload
+(defun htmlize-region (beg end)
+  "Convert the region to HTML, preserving colors and decorations.
+See `htmlize-buffer' for details."
+  (interactive "r")
+  ;; Don't let zmacs region highlighting end up in HTML.
+  (when (fboundp 'zmacs-deactivate-region)
+    (zmacs-deactivate-region))
+  (let ((htmlbuf (save-restriction
+		   (narrow-to-region beg end)
+		   (htmlize-buffer-1))))
+    (when (interactive-p)
+      (switch-to-buffer htmlbuf))
+    htmlbuf))
+
+(defun htmlize-region-for-paste (beg end)
+  "Htmlize the region and return just the HTML as a string.
+This forces the `inline-css' style and only returns the HTML body,
+but without the BODY tag.  This should make it useful for inserting
+the text to another HTML buffer."
+  (let* ((htmlize-output-type 'inline-css)
+	 (htmlbuf (htmlize-region beg end)))
+    (unwind-protect
+	(with-current-buffer htmlbuf
+	  (buffer-substring (plist-get htmlize-buffer-places 'content-start)
+			    (plist-get htmlize-buffer-places 'content-end)))
+      (kill-buffer htmlbuf))))
+
+(defun htmlize-make-file-name (file)
+  "Make an HTML file name from FILE.
+
+In its default implementation, this simply appends `.html' to FILE.
+This function is called by htmlize to create the buffer file name, and
+by `htmlize-file' to create the target file name.
+
+More elaborate transformations are conceivable, such as changing FILE's
+extension to `.html' (\"file.c\" -> \"file.html\").  If you want them,
+overload this function to do it and htmlize will comply."
+  (concat file ".html"))
+
+;; Older implementation of htmlize-make-file-name that changes FILE's
+;; extension to ".html".
+;(defun htmlize-make-file-name (file)
+;  (let ((extension (file-name-extension file))
+;	(sans-extension (file-name-sans-extension file)))
+;    (if (or (equal extension "html")
+;	    (equal extension "htm")
+;	    (equal sans-extension ""))
+;	(concat file ".html")
+;      (concat sans-extension ".html"))))
+
+;;;###autoload
+(defun htmlize-file (file &optional target)
+  "Load FILE, fontify it, convert it to HTML, and save the result.
+
+Contents of FILE are inserted into a temporary buffer, whose major mode
+is set with `normal-mode' as appropriate for the file type.  The buffer
+is subsequently fontified with `font-lock' and converted to HTML.  Note
+that, unlike `htmlize-buffer', this function explicitly turns on
+font-lock.  If a form of highlighting other than font-lock is desired,
+please use `htmlize-buffer' directly on buffers so highlighted.
+
+Buffers currently visiting FILE are unaffected by this function.  The
+function does not change current buffer or move the point.
+
+If TARGET is specified and names a directory, the resulting file will be
+saved there instead of to FILE's directory.  If TARGET is specified and
+does not name a directory, it will be used as output file name."
+  (interactive (list (read-file-name
+		      "HTML-ize file: "
+		      nil nil nil (and (buffer-file-name)
+				       (file-name-nondirectory
+					(buffer-file-name))))))
+  (let ((output-file (if (and target (not (file-directory-p target)))
+			 target
+		       (expand-file-name
+			(htmlize-make-file-name (file-name-nondirectory file))
+			(or target (file-name-directory file)))))
+	;; Try to prevent `find-file-noselect' from triggering
+	;; font-lock because we'll fontify explicitly below.
+	(font-lock-mode nil)
+	(font-lock-auto-fontify nil)
+	(global-font-lock-mode nil)
+	;; Ignore the size limit for the purposes of htmlization.
+	(font-lock-maximum-size nil)
+	;; Disable font-lock support modes.  This will only work in
+	;; more recent Emacs versions, so htmlize-buffer-1 still needs
+	;; to call htmlize-ensure-fontified.
+	(font-lock-support-mode nil))
+    (with-temp-buffer
+      ;; Insert FILE into the temporary buffer.
+      (insert-file-contents file)
+      ;; Set the file name so normal-mode and htmlize-buffer-1 pick it
+      ;; up.  Restore it afterwards so with-temp-buffer's kill-buffer
+      ;; doesn't complain about killing a modified buffer.
+      (let ((buffer-file-name file))
+	;; Set the major mode for the sake of font-lock.
+	(normal-mode)
+	(font-lock-mode 1)
+	(unless font-lock-mode
+	  ;; In GNU Emacs (font-lock-mode 1) doesn't force font-lock,
+	  ;; contrary to the documentation.  This seems to work.
+	  (font-lock-fontify-buffer))
+	;; htmlize the buffer and save the HTML.
+	(with-current-buffer (htmlize-buffer-1)
+	  (unwind-protect
+	      (progn
+		(run-hooks 'htmlize-file-hook)
+		(write-region (point-min) (point-max) output-file))
+	    (kill-buffer (current-buffer)))))))
+  ;; I haven't decided on a useful return value yet, so just return
+  ;; nil.
+  nil)
+
+;;;###autoload
+(defun htmlize-many-files (files &optional target-directory)
+  "Convert FILES to HTML and save the corresponding HTML versions.
+
+FILES should be a list of file names to convert.  This function calls
+`htmlize-file' on each file; see that function for details.  When
+invoked interactively, you are prompted for a list of files to convert,
+terminated with RET.
+
+If TARGET-DIRECTORY is specified, the HTML files will be saved to that
+directory.  Normally, each HTML file is saved to the directory of the
+corresponding source file."
+  (interactive
+   (list
+    (let (list file)
+      ;; Use empty string as DEFAULT because setting DEFAULT to nil
+      ;; defaults to the directory name, which is not what we want.
+      (while (not (equal (setq file (read-file-name
+				     "HTML-ize file (RET to finish): "
+				     (and list (file-name-directory
+						(car list)))
+				     "" t))
+			 ""))
+	(push file list))
+      (nreverse list))))
+  ;; Verify that TARGET-DIRECTORY is indeed a directory.  If it's a
+  ;; file, htmlize-file will use it as target, and that doesn't make
+  ;; sense.
+  (and target-directory
+       (not (file-directory-p target-directory))
+       (error "target-directory must name a directory: %s" target-directory))
+  (dolist (file files)
+    (htmlize-file file target-directory)))
+
+;;;###autoload
+(defun htmlize-many-files-dired (arg &optional target-directory)
+  "HTMLize dired-marked files."
+  (interactive "P")
+  (htmlize-many-files (dired-get-marked-files nil arg) target-directory))
+
+(provide 'htmlize)
+
+;; Local Variables:
+;; byte-compile-warnings: (not cl-functions lexical unresolved obsolete)
+;; End:
+
+;;; htmlize.el ends here
.emacs.d/elpa/htmlize-20161211.1019/htmlize.elc
Binary file
.emacs.d/elpa/memoize-20170720.1802/memoize-autoloads.el
@@ -0,0 +1,15 @@
+;;; memoize-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil nil ("memoize.el") (22964 3865 252659 958000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; memoize-autoloads.el ends here
.emacs.d/elpa/memoize-20170720.1802/memoize-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "memoize" "20170720.1802" "Memoization functions" 'nil :commit "636defefa9168f90bce6fc27431352ac7d01a890" :url "https://github.com/skeeto/emacs-memoize")
.emacs.d/elpa/memoize-20170720.1802/memoize.el
@@ -0,0 +1,174 @@
+;;; memoize.el --- Memoization functions -*- lexical-binding: t; -*-
+
+;; This is free and unencumbered software released into the public domain.
+
+;; Author: Christopher Wellons <mosquitopsu@gmail.com>
+;; URL: https://github.com/skeeto/emacs-memoize
+;; Package-Version: 20170720.1802
+;; Version: 1.1
+
+;;; Commentary:
+
+;; `memoize' accepts a symbol or a function. When given a symbol, the
+;; symbol's function definition is memoized and installed overtop of
+;; the original function definition. When given a function, it returns
+;; a memoized version of that function.
+
+;;     (memoize 'my-expensive-function)
+
+;; `defmemoize' defines a memoized function directly, behaving just
+;; like `defun'.
+
+;;     (defmemoize my-expensive-function (x)
+;;       (if (zerop n)
+;;           1
+;;         (* n (my-expensive-function (1- n)))))
+
+;; Memoizing an interactive function will render that function
+;; non-interactive. It would be easy to fix this problem when it comes
+;; to non-byte-compiled functions, but recovering the interactive
+;; definition from a byte-compiled function is more complex than I
+;; care to deal with. Besides, interactive functions are always used
+;; for their side effects anyway.
+
+;; There's no way to memoize nil returns, but why would your expensive
+;; functions do all that work just to return nil? :-)
+
+;; Memoization takes up memory, which should be freed at some point.
+;; Because of this, all memoization has a timeout from when the last
+;; access was. The default timeout is set by
+;; `memoize-default-timeout'.  It can be overriden by using the
+;; `memoize' function, but the `defmemoize' macro will always just use
+;; the default timeout.
+
+;; If you wait to byte-compile the function until *after* it is
+;; memoized then the function and memoization wrapper both get
+;; compiled at once, so there's no special reason to do them
+;; separately. But there really isn't much advantage to compiling the
+;; memoization wrapper anyway.
+
+;;; Code:
+
+(require 'cl-lib)
+
+(defvar memoize-default-timeout "2 hours"
+  "The amount of time after which to remove a memoization.
+This represents the time after last use of the memoization after
+which the value is expired. Setting this to nil means to never
+expire, which will cause a memory leak, but may be acceptable for
+very careful uses.")
+
+(defun memoize (func &optional timeout)
+  "Memoize FUNC: a closure, lambda, or symbol.
+
+If argument is a symbol then install the memoized function over
+the original function. The TIMEOUT value, a timeout string as
+used by `run-at-time' will determine when the value expires, and
+will apply after the last access (unless another access
+happens)."
+  (cl-typecase func
+    (symbol
+     (put func 'function-documentation
+          (concat (documentation func) " (memoized)"))
+     (fset func (memoize--wrap (symbol-function func) timeout))
+     func)
+    (function (memoize--wrap func timeout))))
+
+(defun memoize--wrap (func timeout)
+  "Return the memoized version of FUNC.
+TIMEOUT specifies how long the values last from last access. A
+nil timeout will cause the values to never expire, which will
+cause a memory leak as memoize is use, so use the nil value with
+care."
+  (let ((table (make-hash-table :test 'equal))
+        (timeouts (make-hash-table :test 'equal)))
+    (lambda (&rest args)
+      (let ((value (gethash args table)))
+        (unwind-protect
+            (or value (puthash args (apply func args) table))
+          (let ((existing-timer (gethash args timeouts))
+                (timeout-to-use (or timeout memoize-default-timeout)))
+            (when existing-timer
+              (cancel-timer existing-timer))
+            (when timeout-to-use
+              (puthash args
+                       (run-at-time timeout-to-use nil
+                                    (lambda ()
+                                      (remhash args table))) timeouts))))))))
+
+(defmacro defmemoize (name arglist &rest body)
+  "Create a memoize'd function. NAME, ARGLIST, DOCSTRING and BODY
+have the same meaning as in `defun'."
+  (declare (indent defun))
+  `(progn
+     (defun ,name ,arglist
+       ,@body)
+     (memoize (quote ,name))))
+
+(defun memoize-by-buffer-contents (func)
+    "Memoize the given function by buffer contents.
+If argument is a symbol then install the memoized function over
+the original function."
+  (cl-typecase func
+    (symbol
+     (put func 'function-documentation
+          (concat (documentation func) " (memoized by buffer contents)"))
+     (fset func (memoize-by-buffer-contents--wrap (symbol-function func)))
+     func)
+    (function (memoize-by-buffer-contents--wrap func))))
+
+(defun memoize-by-buffer-contents--wrap (func)
+  "Return the memoization based on the buffer contents of FUNC.
+
+This form of memoization will be based off the current buffer
+contents. A different memoization is stored for all buffer
+contents, although old contents and no-longer-existant buffers
+will get garbage collected."
+  ;; We need 3 tables here to properly garbage collect. First is the
+  ;; table for the memoization itself, `memoization-table'. It holds a
+  ;; cons of the content hash and the function arguments.
+  ;;
+  ;; Buffer contents change often, though, so we want these entries to
+  ;; be automatically garbage collected when the buffer changes or the
+  ;; buffer goes away. To keep the entries around, we need to tie the
+  ;; content hash to the buffer, so that the content hash string
+  ;; doesn't go away until the buffer does. We do that with the
+  ;; `buffer-to-contents-table'.
+  ;;
+  ;; But even if the buffer content does change, we need to expire the
+  ;; memoization entries for that particular buffer content. So we
+  ;; have a `contents-to-memoization-table' that we use to tie the
+  ;; content hash to the memoization conses used as keys in the
+  ;; `memoization-table'.
+  ;;
+  ;; If a buffer's value changes, we make sure the next time we put a
+  ;; new value at the `buffer-to-contents-table', which causes the
+  ;; hash string to disappear. This causes the hash-string to
+  ;; disappear from the `contents-to-memoization-table', which causes
+  ;; the memoizations based on that content string to disappear from
+  ;; the `memoization-table'.
+  (let ((memoization-table (make-hash-table :test 'equal :weakness 'key))
+        (buffer-to-contents-table (make-hash-table :weakness 'key))
+        (contents-to-memoization-table (make-hash-table :weakness 'key)))
+    (lambda (&rest args)
+      (let* ((bufhash (secure-hash 'md5 (buffer-string)))
+             (memokey (cons bufhash args))
+             (value (gethash memokey memoization-table)))
+        (or value
+            (progn
+              (puthash (current-buffer) bufhash buffer-to-contents-table)
+              (puthash bufhash memokey contents-to-memoization-table)
+              (puthash memokey (apply func args) memoization-table)))))))
+
+(defmacro defmemoize-by-buffer-contents (name arglist &rest body)
+  "Create a memoize'd-by-buffer-contents function. NAME, ARGLIST,
+DOCSTRING and BODY have the same meaning as in `defun'."
+  (declare (indent defun))
+  `(progn
+     (defun ,name ,arglist
+       ,@body)
+     (memoize-by-buffer-contents (quote ,name))))
+
+(provide 'memoize)
+
+;;; memoize.el ends here
.emacs.d/elpa/memoize-20170720.1802/memoize.elc
Binary file
.emacs.d/elpa/packed-20170819.942/packed-autoloads.el
@@ -0,0 +1,15 @@
+;;; packed-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil nil ("packed.el") (22964 2141 241205 598000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; packed-autoloads.el ends here
.emacs.d/elpa/packed-20170819.942/packed-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "packed" "20170819.942" "package manager agnostic Emacs Lisp package utilities" '((emacs "24.3")) :commit "94ea12b9d44bfa42c28d0548199f2fcd19e4aa6a" :url "https://github.com/emacscollective/packed" :keywords '("compile" "convenience" "lisp" "package" "library"))
.emacs.d/elpa/packed-20170819.942/packed.el
@@ -0,0 +1,584 @@
+;;; packed.el --- package manager agnostic Emacs Lisp package utilities
+
+;; Copyright (C) 2012-2017  Jonas Bernoulli
+
+;; Author: Jonas Bernoulli <jonas@bernoul.li>
+;; Homepage: https://github.com/emacscollective/packed
+;; Keywords: compile, convenience, lisp, package, library
+;; Package-Version: 20170819.942
+;; Package-Requires: ((emacs "24.3"))
+
+;; This file is not part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file 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.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Packed provides some package manager agnostic utilities to work
+;; with Emacs Lisp packages.  As far as Packed is concerned packages
+;; are collections of Emacs Lisp libraries that are stored in a
+;; dedicated directory such as a vcs repository.  And libraries are
+;; Emacs Lisp files that provide the correct feature (matching the
+;; filename).
+
+;; Where a package manager might depend on metadata, Packed instead
+;; uses some heuristics to get the same information -- that is slower
+;; and might also fail at times but avoids having to create the
+;; metadata in the first place.
+
+;;; Code:
+
+(require 'bytecomp)
+(require 'cl-lib)
+
+(declare-function autoload-rubric "autoload")
+(declare-function autoload-find-destination "autoload")
+(declare-function autoload-file-load-name "autoload")
+(declare-function info-initialize "info")
+(defvar Info-directory-list)
+
+;;; Options
+
+(defgroup packed nil
+  "Emacs package utilities."
+  :group 'convenience
+  :prefix 'packed)
+
+(defcustom packed-loaddefs-filename "loaddefs.el"
+  "Name of the files used to store extracted autoload definitions."
+  :group 'packed
+  :type 'file)
+
+;;; Libraries
+
+(defun packed-el-suffixes (&optional nosuffix must-suffix)
+  "Return a list of the valid suffixes of Emacs Lisp source libraries.
+Unlike `get-load-suffixes' don't return the suffixes for
+byte-compile destinations just those of source files.
+
+If NOSUFFIX is non-nil the `.el' part is omitted.  IF MUST-SUFFIX
+is non-nil all returned suffixes contain `.el'.  This uses the
+variables `load-suffixes' (from which it removes \".elc\") and
+`load-file-rep-suffixes'."
+  (packed--suffixes ".elc" nosuffix must-suffix))
+
+(defun packed-elc-suffixes (&optional nosuffix must-suffix)
+  "Return a list of the valid suffixes of Emacs Lisp source libraries.
+Unlike `get-load-suffixes' don't return the suffixes for
+source files just those of byte-compile destinations.
+
+If NOSUFFIX is non-nil the `.elc' part is omitted.  IF MUST-SUFFIX
+is non-nil all returned suffixes contain `.elc'.  This uses the
+variables `load-suffixes' (from which it removes \".el\") and
+`load-file-rep-suffixes'."
+  (packed--suffixes ".el" nosuffix must-suffix))
+
+(defun packed--suffixes (remove-suffix &optional nosuffix must-suffix)
+  (append (unless nosuffix
+            (let ((load-suffixes (remove remove-suffix load-suffixes)))
+              (get-load-suffixes)))
+          (unless must-suffix
+            load-file-rep-suffixes)))
+
+(defun packed-el-regexp ()
+  "Return the valid suffixes of Emacs libraries as a regular expression.
+The returned regular expression matches source files but not
+byte-compile destinations and always expects the \".el\" suffix."
+  (concat (regexp-opt (packed-el-suffixes nil t)) "\\'"))
+
+(defun packed-elc-regexp ()
+  "Return the valid suffixes of byte-compile destinations as a regexp.
+The returned regular expression matches byte-compile destinations
+but not source files and always expects the \".elc\" suffix."
+  (concat (regexp-opt (packed-elc-suffixes nil t)) "\\'"))
+
+(defun packed-el-file (elc)
+  "Return the Emacs source file for byte-compile destination ELC."
+  (let ((standard (concat (file-name-sans-extension
+                           (file-name-sans-extension elc)) ".el"))
+        (suffixes (remove ".el" (packed-el-suffixes)))
+        file)
+    (while (and (not file) suffixes)
+      (unless (file-exists-p (setq file (concat standard (pop suffixes))))
+        (setq file nil)))
+    (or file standard)))
+
+(defalias 'packed-elc-file 'byte-compile-dest-file)
+
+(defun packed-locate-library (library &optional nosuffix path interactive-call)
+  "Show the precise file name of Emacs library LIBRARY.
+Unlike `locate-library' don't return the byte-compile destination
+if it exists but always the Emacs source file.
+
+LIBRARY should be a relative file name of the library, a string.
+It can omit the suffix (a.k.a. file-name extension) if NOSUFFIX is
+nil (which is the default, see below).
+This command searches the directories in `load-path' like `\\[load-library]'
+to find the file that `\\[load-library] RET LIBRARY RET' would load.
+Optional second arg NOSUFFIX non-nil means don't add suffixes `load-suffixes'
+to the specified name LIBRARY.
+
+If the optional third arg PATH is specified, that list of directories
+is used instead of `load-path'.
+
+When called from a program, the file name is normally returned as a
+string.  When run interactively, the argument INTERACTIVE-CALL is t,
+and the file name is displayed in the echo area."
+  (interactive (list (completing-read "Locate library: "
+                                      (apply-partially
+                                       'locate-file-completion-table
+                                       load-path (get-load-suffixes)))
+                     nil nil t))
+  (let ((file (locate-file (substitute-in-file-name library)
+                           (or path load-path)
+                           (packed-el-suffixes nosuffix))))
+    (when interactive-call
+      (if file
+          (message "Library is file %s" (abbreviate-file-name file))
+        (message "No library %s in search path" library)))
+    file))
+
+(defun packed-ignore-directory-p (directory)
+  "Return t if DIRECTORY is being ignored when searching for libraries.
+DIRECTORY and all libraries it and its subdirectories contain
+are being ignored if it contains a file named \".nosearch\" or
+if it is a hidden directory."
+  (or (string-prefix-p "." (file-name-nondirectory
+                            (directory-file-name directory)))
+      (file-exists-p (expand-file-name ".nosearch" directory))))
+
+(defmacro packed-with-file (file &rest body)
+  "Execute BODY in a buffer containing the contents of FILE.
+If FILE is nil or equal to `buffer-file-name' execute BODY in the
+current buffer.  Move to beginning of buffer before executing BODY.
+FILE should be an Emacs lisp source file."
+  (declare (indent 1) (debug t))
+  (let ((filesym (make-symbol "--file--")))
+    `(let ((,filesym ,file))
+       (save-match-data
+         (save-excursion
+           (if (and ,filesym (not (equal ,filesym buffer-file-name)))
+               (with-temp-buffer
+                 (insert-file-contents ,filesym)
+                 (setq buffer-file-name ,filesym)
+                 (set-buffer-modified-p nil)
+                 (with-syntax-table emacs-lisp-mode-syntax-table
+                   ,@body))
+             (goto-char (point-min))
+             (with-syntax-table emacs-lisp-mode-syntax-table
+               ,@body)))))))
+
+(defun packed-library-p (file)
+  "Return non-nil if FILE is an Emacs source library.
+Actually return the feature provided by FILE.
+
+An Emacs lisp file is considered to be a library if it provides
+the correct feature; that is a feature that matches its filename
+\(and possibly parts of the path leading to it)."
+  (and (let ((filename (file-name-nondirectory file)))
+         (save-match-data
+           (and (string-match (packed-el-regexp) filename)
+                (not (or (file-symlink-p file)
+                         (string-equal filename dir-locals-file)
+                         (auto-save-file-name-p filename))))))
+       (packed-library-feature file)))
+
+(defun packed-libraries (directory &optional full nonrecursive)
+  "Return a list of libraries that are part of PACKAGE located in DIRECTORY.
+DIRECTORY is assumed to contain the libraries belonging to a
+single package.
+
+If optional FULL is non-nil return absolute paths otherwise paths
+relative to DIRECTORY.
+
+If optional NONRECURSIVE only return libraries directly located
+in DIRECTORY."
+  (cl-mapcan (pcase-lambda (`(,library . ,feature))
+               (and feature
+                    (list (if full
+                              library
+                            (file-relative-name library directory)))))
+             (packed-libraries-1 directory nonrecursive)))
+
+(defun packed-libraries-1 (directory &optional nonrecursive)
+  "Return a list of Emacs lisp files DIRECTORY and its subdirectories.
+
+The return value has the form ((LIBRARY . FEATURE)...).  FEATURE
+is nil if LIBRARY does not provide a feature or only features
+that don't match the filename."
+  (let (libraries)
+    (dolist (f (directory-files directory t "^[^.]"))
+      (cond ((file-directory-p f)
+             (or nonrecursive
+                 (packed-ignore-directory-p f)
+                 (setq libraries (nconc (packed-libraries-1 f) libraries))))
+            ((string-match (packed-el-regexp)
+                           (file-name-nondirectory f))
+             (push (cons f (packed-library-p f)) libraries))))
+    (nreverse libraries)))
+
+(defun packed-main-library (directory &optional package noerror nosingle)
+  "Return the main library from the package directory DIRECTORY.
+Optional PACKAGE is the name of the package; if it is nil the
+basename of DIRECTORY is used as the package name.
+
+Return the library whose basename matches the package name.  If
+that fails append \"-mode\" to the package name, respectively
+remove that substring, and try again.
+
+The library must provide the correct feature; that is the feature
+which matches the filename (and possibly parts of the path leading
+to it).
+
+Unless optional NOSINGLE is non-nil and if there is only a single
+Emacs lisp file return that even if it doesn't match the package
+name.
+
+If the main library cannot be found raise an error or if optional
+NOERROR is non-nil return nil."
+  (packed-main-library-1
+   (or package (file-name-nondirectory (directory-file-name directory)))
+   (packed-libraries-1 directory)
+   noerror nosingle))
+
+(defun packed-main-library-1 (package libraries &optional noerror nosingle)
+  "Return the main library among LIBRARIES of the package PACKAGE.
+PACKAGE is a package name, a string.  LIBRARIES is a list of full
+library filenames or an alist as returned by `packed-libraries-1'.
+In the latter case also ensure that the main library provides the
+correct feature.
+
+Return the library whose basename matches the package name.  If
+that fails append \"-mode\" to the package name, respectively
+remove that substring, and try again.
+
+Unless optional NOSINGLE is non-nil and if there is only a single
+Emacs lisp file return that even if it doesn't match the package
+name.
+
+If no library matches raise an error or if optional NOERROR is
+non-nil return nil."
+  (let ((match
+         (cond ((and (not nosingle)
+                     (not (cdr libraries)))
+                (car libraries))
+               ((packed-main-library-2 package libraries))
+               ((packed-main-library-2
+                 (if (string-match "-mode$" package)
+                     (substring package 0 -5)
+                   (concat package "-mode"))
+                 libraries)))))
+    (cond ((and (not match)
+                (not noerror))
+           (error "Cannot determine main library of %s" package))
+          ((atom match)
+           match)
+          ((cdr match)
+           (car match))
+          ((not noerror)
+           (error "Main library %s provides no or wrong feature"
+                  (car match))))))
+
+(defun packed-main-library-2 (package libraries)
+  (let ((regexp (concat "^" (regexp-quote package) (packed-el-regexp) "$")))
+    (cl-find-if (lambda (lib)
+                  (string-match regexp (file-name-nondirectory
+                                        (if (consp lib) (car lib) lib))))
+                libraries)))
+
+;;; Load Path
+
+(defun packed-add-to-load-path (directory)
+  "Add DIRECTORY and subdirectories to `load-path' if they contain libraries."
+  (dolist (d (packed-load-path directory))
+    (add-to-list 'load-path d)))
+
+(defun packed-remove-from-load-path (directory)
+  "Remove DIRECTORY and its subdirectories from `load-path'.
+Elements of `load-path' which no longer exist are not removed."
+  (setq directory (directory-file-name (expand-file-name directory)))
+  (setq load-path (delete directory load-path))
+  (dolist (f (directory-files directory t "^[^.]" t))
+    (when (file-directory-p f)
+      (packed-remove-from-load-path f))))
+
+(defun packed-load-path (directory)
+  "Return a list of directories below DIRECTORY that contain libraries."
+  (let (lp in-lp)
+    (dolist (f (directory-files directory t "^[^.]"))
+      (cond ((file-regular-p f)
+             (and (not in-lp)
+                  (packed-library-p f)
+                  (add-to-list 'lp (directory-file-name directory))
+                  (setq in-lp t)))
+            ((file-directory-p f)
+             (unless (packed-ignore-directory-p f)
+               (setq lp (nconc (packed-load-path f) lp))))))
+    lp))
+
+;;; Byte Compile
+
+(defmacro packed-without-mode-hooks (&rest body)
+  (declare (indent 0))
+  `(let (after-change-major-mode-hook
+         prog-mode-hook
+         emacs-lisp-mode-hook)
+     ,@body))
+
+(defun packed-byte-compile-file (filename &optional load)
+  "Like `byte-compile-file' but don't run any mode hooks."
+  (packed-without-mode-hooks (byte-compile-file filename load)))
+
+(defun packed-compile-package (directory &optional force)
+  (unless noninteractive
+    (save-some-buffers)
+    (force-mode-line-update))
+  (with-current-buffer (get-buffer-create byte-compile-log-buffer)
+    (setq default-directory (expand-file-name directory))
+    (unless (eq major-mode 'compilation-mode)
+      (compilation-mode))
+    (let ((default-directory default-directory)
+          (skip-count 0)
+          (fail-count 0)
+          (lib-count 0)
+          (dir-count 0)
+          file dir last-dir)
+      (displaying-byte-compile-warnings
+       (dolist (elt (packed-libraries-1 directory))
+         (setq file (car elt)
+               dir (file-name-nondirectory file))
+         (if (cdr elt)
+             (cl-incf (pcase (byte-recompile-file file force 0)
+                        (`no-byte-compile skip-count)
+                        (`t lib-count)
+                        (_  fail-count)))
+           (setq skip-count (1+ skip-count)))
+         (unless (eq last-dir dir)
+           (setq last-dir dir dir-count (1+ dir-count)))))
+      (message "Done (Total of %d file%s compiled%s%s%s)"
+               lib-count (if (= lib-count 1) "" "s")
+               (if (> fail-count 0) (format ", %d failed"  fail-count) "")
+               (if (> skip-count 0) (format ", %d skipped" skip-count) "")
+               (if (> dir-count  1)
+                   (format " in %d director%s" dir-count
+                           (if (= dir-count 1) "y" "ies"))
+                 "")))))
+
+;;; Autoloads
+
+(defun packed-loaddefs-file (&optional directory)
+  (let ((file (locate-dominating-file (or directory default-directory)
+                                      packed-loaddefs-filename)))
+    (and file (expand-file-name packed-loaddefs-filename file))))
+
+(defun packed-load-loaddefs (&optional directory)
+  (let ((file (packed-loaddefs-file directory)))
+    (if  file
+        (load file)
+      (message "Cannot locate loaddefs file for %s" directory))))
+
+(defmacro packed-with-loaddefs (dest &rest body)
+  (declare (indent 1))
+  `(packed-without-mode-hooks
+     (require 'autoload)
+     (let ((generated-autoload-file ,dest) buf)
+       (prog1 (progn ,@body)
+         (while (setq buf (find-buffer-visiting generated-autoload-file))
+           (with-current-buffer buf
+             (save-buffer)
+             (kill-buffer)))))))
+
+(defun packed-update-autoloads (dest path)
+  (packed-with-loaddefs dest
+    (update-directory-autoloads path)))
+
+(defun packed-remove-autoloads (dest path)
+  (packed-with-loaddefs dest
+    ;; `autoload-find-destination' clears out autoloads associated
+    ;; with a file if they are not found in the current buffer
+    ;; anymore (which is the case here because it is empty).
+    (with-temp-buffer
+      (let ((autoload-modified-buffers (list (current-buffer))))
+        (dolist (d path)
+          (when (file-directory-p d)
+            (dolist (f (directory-files d t (packed-el-regexp)))
+              (autoload-find-destination
+               f (autoload-file-load-name f)))))))))
+
+;;; Features
+
+(defconst packed-provided-regexp "\
+\(\\(?:cc-\\|silentcomp-\\)?provide[\s\t\n]+'\
+\\([^(),\s\t\n]+\\)\\(?:[\s\t\n]+'\
+\(\\([^(),]+\\))\\)?)")
+
+(defun packed-provided ()
+  (let (features)
+    (save-excursion
+      (goto-char (point-min))
+      (while (re-search-forward packed-provided-regexp nil t)
+        (unless (save-match-data
+                  (or (nth 3 (syntax-ppss))   ; in string
+                      (nth 4 (syntax-ppss)))) ; in comment
+          (dolist (feature (cons (match-string 1)
+                                 (let ((f (match-string 2)))
+                                   (and f (split-string f " " t)))))
+            (add-to-list 'features (intern feature))))))
+    (or features
+        (and (goto-char (point-min))
+             (re-search-forward
+              "^(provide-theme[\s\t\n]+'\\([^)]+\\))" nil t)
+             (list (intern (concat (match-string 1)
+                                   "-theme"))))
+        (and (goto-char (point-min))
+             (re-search-forward
+              "^(provide-me\\(?:[\s\t\n]+\"\\(.+\\)\"\\)?)" nil t)
+             (list (intern (concat (match-string 1)
+                                   (file-name-sans-extension
+                                    (file-name-nondirectory
+                                     buffer-file-name)))))))))
+
+(defun packed-library-feature (file)
+  "Return the first valid feature actually provided by FILE.
+
+Here valid means that requiring that feature would actually load FILE.
+Normally that is the case when the feature matches the filename, e.g.
+when \"foo.el\" provides `foo'.  But if \"foo.el\"s parent directory's
+filename is \"bar\" then `bar/foo' would also be valid.  Of course this
+depends on the actual value of `load-path', here we just assume that it
+allows for file to be found.
+
+This can be used to determine if an Emacs lisp file should be considered
+a library.  Not every Emacs lisp file has to provide a feature / be a
+library.  If a file lacks an expected feature then loading it using
+`require' still succeeds but causes an error."
+  (let* ((file (expand-file-name file))
+         (sans (file-name-sans-extension (file-name-sans-extension file)))
+         (last (file-name-nondirectory sans)))
+    (cl-find-if (lambda (feature)
+                  (setq feature (symbol-name feature))
+                  (or (equal feature last)
+                      (string-suffix-p (concat "/" feature) sans)))
+                (packed-with-file file (packed-provided)))))
+
+(defconst packed-required-regexp "\
+\(\\(?:cc-\\)?require[\s\t\n]+'\
+\\([^(),\s\t\n\"]+\\)\
+\\(?:\\(?:[\s\t\n]+\\(?:nil\\|\"[^\"]*\"\\)\\)\
+\\(?:[\s\t\n]+\\(?:nil\\|\\(t\\)\\)\\)?\\)?)")
+
+(defun packed-required ()
+  (let (hard soft)
+    (save-excursion
+      (goto-char (point-min))
+      (while (re-search-forward packed-required-regexp nil t)
+        (let ((feature (intern (match-string 1))))
+          (cond ((save-match-data
+                   (or (nth 3 (syntax-ppss))    ; in string
+                       (nth 4 (syntax-ppss))))) ; in comment
+                ((match-string 2)
+                 (add-to-list 'soft feature))
+                (t
+                 (add-to-list 'hard feature))))))
+    (list hard soft)))
+
+;;; Info Pages
+
+(defvar packed-ginstall-info
+  (or (executable-find "ginstall-info")
+      (executable-find "install-info")))
+
+(defconst packed-texinfo-regexp
+  (concat "\\." (regexp-opt (list "texi" "texinfo" "txi")) "$"))
+
+(defun packed-enable-info-dir-file (dir-file)
+  "Add the directory containing DIR-FILE to `Info-directory-list'.
+Before doing so initialize the default value of the latter if
+that hasn't happened yet.  If DIR-FILE doesn't exist do nothing."
+  (when (file-exists-p dir-file)
+    (require 'info)
+    (info-initialize)
+    (add-to-list 'Info-directory-list (file-name-directory dir-file))))
+
+(defun packed-install-info (directory dir-file)
+  "Install info files from DIRECTORY in DIR-FILE.
+
+In the directory containing DIR-FILE create links to info and
+texinfo files in DIRECTORY and recursively all non-hidden
+subdirectories; and add the info files to DIR-FILE.  Files are
+linked to instead of copied to make it easier to later remove
+files from a particular DIRECTORY.
+
+If a texinfo file exists create a link to it and create the info
+file in the directory containing DIR-FILE.  The corresponding
+info file if it also exists in DIRECTORY is ignored."
+  (let ((default-directory (file-name-directory dir-file)))
+    (dolist (f (packed-info-files directory))
+      (let ((l (file-name-nondirectory f)))
+        (make-symbolic-link f l t)
+        (when (string-match packed-texinfo-regexp f)
+          (call-process "makeinfo" nil nil nil l)
+          (setq l (concat (file-name-sans-extension l) ".info")))
+        (call-process packed-ginstall-info nil nil nil l
+                      (file-name-nondirectory dir-file))))))
+
+(defun packed-uninstall-info (directory dir-file)
+  "Uninstall info files located in DIRECTORY from DIR-FILE.
+
+In the directory containing DIR-FILE remove links to info and
+texinfo files in DIRECTORY and recursively all non-hidden
+subdirectories; and remove the info files from DIR-FILE.
+
+When removing a symlink to a texinfo file also remove the info
+file created from it.  Also remove the corresponding entries from
+DIR-FILE."
+  (let ((default-directory (file-name-directory dir-file))
+        (r (concat "^" (regexp-quote directory))))
+    (dolist (f (directory-files default-directory "^[^.]"))
+      (when (and (file-symlink-p f)
+                 (string-match r (file-truename f)))
+        (when (string-match packed-texinfo-regexp f)
+          (delete-file f)
+          (setq f (concat (file-name-sans-extension f) ".info")))
+        (call-process packed-ginstall-info nil nil nil "--delete" f "dir")
+        (when (file-exists-p f)
+          (delete-file f))))))
+
+(defun packed-info-files (directory)
+  "Return a list of info and texinfo files in DIRECTORY.
+
+Return a list of absolute filenames of info and texinfo files in
+DIRECTORY and recursively all non-hidden subdirectories.  If both
+an info file and the corresponding texinfo file exist only
+include the latter in the returned list."
+  (let (files name)
+    (dolist (f (directory-files directory t "^[^.]"))
+      (cond ((file-directory-p f)
+             (setq files (nconc (packed-info-files f) files)))
+            ((file-regular-p f)
+             (cond ((and (string-match "\\.info\\'" f)
+                         (setq name (file-name-sans-extension f))
+                         (not (file-exists-p (concat name ".texinfo")))
+                         (not (file-exists-p (concat name ".texi")))
+                         (not (file-exists-p (concat name ".txi"))))
+                    (setq files (cons f files)))
+                   ((string-match "\\.\\(txi\\|texi\\(nfo\\)?\\)\\'" f)
+                    (setq files (cons f files)))))))
+    (sort files 'string<)))
+
+(provide 'packed)
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
+;;; packed.el ends here
.emacs.d/elpa/packed-20170819.942/packed.elc
Binary file
.emacs.d/elpa/page-break-lines-20170829.157/page-break-lines-autoloads.el
@@ -0,0 +1,77 @@
+;;; page-break-lines-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "page-break-lines" "page-break-lines.el" (22964
+;;;;;;  2890 175710 654000))
+;;; Generated autoloads from page-break-lines.el
+
+(defvar page-break-lines-char 9472 "\
+Character used to render page break lines.")
+
+(custom-autoload 'page-break-lines-char "page-break-lines" t)
+
+(defvar page-break-lines-lighter " PgLn" "\
+Mode-line indicator for `page-break-lines-mode'.")
+
+(custom-autoload 'page-break-lines-lighter "page-break-lines" t)
+
+(defvar page-break-lines-modes '(emacs-lisp-mode lisp-mode scheme-mode compilation-mode outline-mode help-mode) "\
+Modes in which to enable `page-break-lines-mode'.")
+
+(custom-autoload 'page-break-lines-modes "page-break-lines" t)
+
+(defface page-break-lines '((t :inherit font-lock-comment-face :bold nil :italic nil)) "\
+Face used to colorize page break lines.
+If using :bold or :italic, please ensure `page-break-lines-char'
+is available in that variant of your font, otherwise it may be
+displayed as a junk character." :group (quote page-break-lines))
+
+(autoload 'page-break-lines-mode "page-break-lines" "\
+Toggle Page Break Lines mode.
+
+In Page Break mode, page breaks (^L characters) are displayed as a
+horizontal line of `page-break-string-char' characters.
+
+\(fn &optional ARG)" t nil)
+
+(define-obsolete-function-alias 'turn-on-page-break-lines-mode 'page-break-lines-mode)
+
+(autoload 'page-break-lines-mode-maybe "page-break-lines" "\
+Enable `page-break-lines-mode' in the current buffer if desired.
+When `major-mode' is listed in `page-break-lines-modes', then
+`page-break-lines-mode' will be enabled.
+
+\(fn)" nil nil)
+
+(defvar global-page-break-lines-mode nil "\
+Non-nil if Global Page-Break-Lines mode is enabled.
+See the `global-page-break-lines-mode' command
+for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `global-page-break-lines-mode'.")
+
+(custom-autoload 'global-page-break-lines-mode "page-break-lines" nil)
+
+(autoload 'global-page-break-lines-mode "page-break-lines" "\
+Toggle Page-Break-Lines mode in all buffers.
+With prefix ARG, enable Global Page-Break-Lines mode if ARG is positive;
+otherwise, disable it.  If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
+Page-Break-Lines mode is enabled in all buffers where
+`page-break-lines-mode-maybe' would do it.
+See `page-break-lines-mode' for more information on Page-Break-Lines mode.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; page-break-lines-autoloads.el ends here
.emacs.d/elpa/page-break-lines-20170829.157/page-break-lines-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "page-break-lines" "20170829.157" "Display ^L page breaks as tidy horizontal lines" 'nil :commit "913732ad06d838661989fb1fef05fcc9ca88f725" :url "https://github.com/purcell/page-break-lines" :keywords '("convenience" "faces"))
.emacs.d/elpa/page-break-lines-20170829.157/page-break-lines.el
@@ -0,0 +1,175 @@
+;;; page-break-lines.el --- Display ^L page breaks as tidy horizontal lines
+
+;; Copyright (C) 2012-2015 Steve Purcell
+
+;; Author: Steve Purcell <steve@sanityinc.com>
+;; URL: https://github.com/purcell/page-break-lines
+;; Package-Version: 20170829.157
+;; Package-X-Original-Version: 0
+;; Keywords: convenience, faces
+
+;; 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:
+
+;; This library provides a global mode which displays form feed
+;; characters as horizontal rules.
+
+;; Install from Melpa or Marmalade, or add to `load-path' and use
+;; (require 'page-break-lines).
+
+;; Use `page-break-lines-mode' to enable the mode in specific buffers,
+;; or customize `page-break-lines-modes' and enable the mode globally with
+;; `global-page-break-lines-mode'.
+
+;; Issues and limitations:
+
+;; If `page-break-lines-char' is displayed at a different width to
+;; regular characters, the rule may be either too short or too long:
+;; rules may then wrap if `truncate-lines' is nil.  On some systems,
+;; Emacs may erroneously choose a different font for the page break
+;; symbol, which choice can be overridden using code such as:
+
+;; (set-fontset-font "fontset-default"
+;;                   (cons page-break-lines-char page-break-lines-char)
+;;                   (face-attribute 'default :family))
+
+;; Use `describe-char' on a page break char to determine whether this
+;; is the case.
+
+;; Additionally, the use of `text-scale-increase' or
+;; `text-scale-decrease' will cause the rule width to be incorrect,
+;; because the reported window width (in characters) will continue to
+;; be the width in the frame's default font, not the scaled font used to
+;; display the rule.
+
+;; Adapted from code http://www.emacswiki.org/emacs/PageBreaks
+
+;;; Code:
+
+(defgroup page-break-lines nil
+  "Display ugly ^L page breaks as tidy horizontal lines."
+  :prefix "page-break-lines-"
+  :group 'faces)
+
+;;;###autoload
+(defcustom page-break-lines-char ?โ”€
+  "Character used to render page break lines."
+  :type 'character
+  :group 'page-break-lines)
+
+;;;###autoload
+(defcustom page-break-lines-lighter " PgLn"
+  "Mode-line indicator for `page-break-lines-mode'."
+  :type '(choice (const :tag "No lighter" "") string)
+  :group 'page-break-lines)
+
+;;;###autoload
+(defcustom page-break-lines-modes
+  '(emacs-lisp-mode lisp-mode scheme-mode compilation-mode outline-mode help-mode)
+  "Modes in which to enable `page-break-lines-mode'."
+  :type '(repeat symbol)
+  :group 'page-break-lines)
+
+;;;###autoload
+(defface page-break-lines
+  '((t :inherit font-lock-comment-face :bold nil :italic nil))
+  "Face used to colorize page break lines.
+If using :bold or :italic, please ensure `page-break-lines-char'
+is available in that variant of your font, otherwise it may be
+displayed as a junk character."
+  :group 'page-break-lines)
+
+
+
+;;;###autoload
+(define-minor-mode page-break-lines-mode
+  "Toggle Page Break Lines mode.
+
+In Page Break mode, page breaks (^L characters) are displayed as a
+horizontal line of `page-break-string-char' characters."
+  :lighter page-break-lines-lighter
+  :group 'page-break-lines
+  (page-break-lines--update-display-tables))
+
+;;;###autoload
+(define-obsolete-function-alias 'turn-on-page-break-lines-mode 'page-break-lines-mode)
+
+(dolist (hook '(window-configuration-change-hook
+                window-size-change-functions
+                after-setting-font-hook
+                display-line-numbers-mode-hook))
+  (add-hook hook 'page-break-lines--update-display-tables))
+
+
+
+(defun page-break-lines--update-display-table (window)
+  "Modify a display-table that displays page-breaks prettily.
+If the buffer inside WINDOW has `page-break-lines-mode' enabled,
+its display table will be modified as necessary."
+  (with-current-buffer (window-buffer window)
+    (with-selected-window window
+      (if page-break-lines-mode
+          (progn
+            (unless buffer-display-table
+              (setq buffer-display-table (make-display-table)))
+            (let ((default-height (face-attribute 'default :height nil 'default)))
+              (set-face-attribute 'page-break-lines nil :height default-height)
+              (let* ((cwidth (char-width page-break-lines-char))
+                     (wwidth (- (window-width)
+                                (if (bound-and-true-p display-line-numbers)
+                                    (+ (line-number-display-width) 2)
+                                  0)
+                                (if (display-graphic-p) 0 1)))
+                     (width (/ wwidth cwidth))
+                     (glyph (make-glyph-code page-break-lines-char 'page-break-lines))
+                     (new-display-entry (vconcat (make-list width glyph))))
+                (unless (equal new-display-entry (elt buffer-display-table ?\^L))
+                  (aset buffer-display-table ?\^L new-display-entry)))))
+        (when (and (member major-mode page-break-lines-modes)
+                   buffer-display-table)
+          (aset buffer-display-table ?\^L nil))))))
+
+(defun page-break-lines--update-display-tables  (&optional frame)
+  "Function called for updating display table in windows of FRAME."
+  (unless (minibufferp)
+    (mapc 'page-break-lines--update-display-table (window-list frame 'no-minibuffer))))
+
+
+
+;;;###autoload
+(defun page-break-lines-mode-maybe ()
+  "Enable `page-break-lines-mode' in the current buffer if desired.
+When `major-mode' is listed in `page-break-lines-modes', then
+`page-break-lines-mode' will be enabled."
+  (if (and (not (minibufferp))
+           (apply 'derived-mode-p page-break-lines-modes))
+      (page-break-lines-mode 1)))
+
+;;;###autoload
+(define-global-minor-mode global-page-break-lines-mode
+  page-break-lines-mode page-break-lines-mode-maybe
+  :require 'page-break-lines
+  :group 'page-break-lines)
+
+
+(provide 'page-break-lines)
+
+;; Local Variables:
+;; coding: utf-8
+;; byte-compile-warnings: (not cl-functions)
+;; checkdoc-minor-mode: t
+;; End:
+
+;;; page-break-lines.el ends here
.emacs.d/elpa/page-break-lines-20170829.157/page-break-lines.elc
Binary file
.emacs.d/elpa/solaire-mode-1.0.2/solaire-mode-autoloads.el
@@ -0,0 +1,51 @@
+;;; solaire-mode-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "solaire-mode" "solaire-mode.el" (22964 3868
+;;;;;;  811661 530000))
+;;; Generated autoloads from solaire-mode.el
+
+(autoload 'solaire-mode "solaire-mode" "\
+Make source buffers grossly incandescent by remapping common faces (see
+`solaire-mode-remap-faces') to their solaire-mode variants.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'turn-on-solaire-mode "solaire-mode" "\
+Enable `solaire-mode' in the current buffer.
+
+Does nothing if it doesn't represent a real, file-visiting buffer (see
+`solaire-mode-real-buffer-fn').
+
+\(fn)" nil nil)
+
+(autoload 'turn-off-solaire-mode "solaire-mode" "\
+Disable `solaire-mode' in the current buffer.
+
+\(fn)" nil nil)
+
+(autoload 'solaire-mode-in-minibuffer "solaire-mode" "\
+Highlight the minibuffer whenever it is active.
+
+\(fn)" nil nil)
+
+(autoload 'solaire-mode-reset "solaire-mode" "\
+Reset all buffers with `solaire-mode' enabled.
+
+\(fn)" t nil)
+
+(autoload 'solaire-mode-restore-persp-mode-buffers "solaire-mode" "\
+Restore `solaire-mode' in buffers when `persp-mode' loads a session.
+
+\(fn &rest _)" nil nil)
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; solaire-mode-autoloads.el ends here
.emacs.d/elpa/solaire-mode-1.0.2/solaire-mode-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "solaire-mode" "1.0.2" "make certain buffers grossly incandescent" '((emacs "24.4") (cl-lib "0.5")) :commit "0f467e5f309e5a36280e06b40c0e6bbe90e06358" :url "https://github.com/hlissner/emacs-solaire-mode" :keywords '("dim" "bright" "window" "buffer" "faces"))
.emacs.d/elpa/solaire-mode-1.0.2/solaire-mode.el
@@ -0,0 +1,201 @@
+;;; solaire-mode.el --- make certain buffers grossly incandescent
+;;
+;; Copyright (C) 2017 Henrik Lissner
+;;
+;; Author: Henrik Lissner <http://github/hlissner>
+;; Maintainer: Henrik Lissner <henrik@lissner.net>
+;; Created: Jun 03, 2017
+;; Modified: Jul 18, 2017
+;; Version: 1.0.2
+;; Package-Version: 1.0.2
+;; Keywords: dim bright window buffer faces
+;; Homepage: https://github.com/hlissner/emacs-solaire-mode
+;; Package-Requires: ((emacs "24.4") (cl-lib "0.5"))
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; Commentary:
+;;
+;; `soliare-mode' is inspired by editors who visually distinguish code-editing
+;; windows from sidebars, popups, terminals, ecetera. It changes the background
+;; of file-visiting buffers (and certain aspects of the UI) to make them easier
+;; to distinguish from other, not-so-important buffers.
+;;
+;; Praise the sun.
+;;
+;;; Installation
+;;
+;; M-x package-install RET solaire-mode
+;;
+;;   (require 'solaire-mode)
+;;
+;; Brighten buffers that represent real files:
+;;
+;;   (add-hook 'after-change-major-mode-hook #'turn-on-solaire-mode)
+;;
+;; If you use auto-revert-mode:
+;;
+;;   (add-hook 'after-revert-hook #'turn-on-solaire-mode)
+;;
+;; And to unconditionally brighten certain buffers:
+;;
+;;   (add-hook 'ediff-prepare-buffer-hook #'solaire-mode)
+;;
+;; You can do similar with the minibuffer when it is active:
+;;
+;;   (add-hook 'minibuffer-setup-hook #'solaire-mode-in-minibuffer)
+;;
+;;; Code:
+
+(require 'cl-lib)
+
+(defgroup solaire-mode nil
+  "Options for solaire-mode."
+  :group 'faces)
+
+(defface solaire-default-face '((t (:inherit default)))
+  "Alternative version of the `default' face."
+  :group 'solaire-mode)
+
+(defface solaire-minibuffer-face '((t (:inherit solaire-default-face)))
+  "Alternative face for the minibuffer. See `solaire-mode-in-minibuffer'."
+  :group 'solaire-mode)
+
+(defface solaire-linum-face '((t (:inherit linum)))
+  "Alternative face for `linum-mode' (and `nlinum-mode')."
+  :group 'solaire-mode)
+
+(defface solaire-line-number-face '((t (:inherit line-number)))
+  "Alternative face for `line-number', for native line numbers in Emacs 26+."
+  :group 'solaire-mode)
+
+(defface solaire-line-number-current-line-face '((t (:inherit line-number-current-line)))
+  "Alternative face for `line-number-current-line', for native line numbers in
+Emacs 26+."
+  :group 'solaire-mode)
+
+(defface solaire-hl-line-face '((t (:inherit hl-line)))
+  "Alternative face for the current line, highlighted by `hl-line'."
+  :group 'solaire-mode)
+
+(defface solaire-org-hide-face '((t (:inherit org-hide)))
+  "Alternative face for `org-hide', which is used to camoflauge the leading
+asterixes in `org-mode' when `org-hide-leading-stars' is non-nil."
+  :group 'solaire-mode)
+
+(defface solaire-mode-line-face '((t (:inherit mode-line)))
+  "Alternative face for the mode line."
+  :group 'solaire-mode)
+
+(defface solaire-mode-line-inactive-face '((t (:inherit mode-line-inactive)))
+  "Alternative face for the inactive mode line."
+  :group 'solaire-mode)
+
+;;
+(defcustom solaire-mode-real-buffer-fn #'solaire-mode--real-buffer-fn
+  "The function that determines buffer eligability for `solaire-mode'.
+
+Should accept one argument: the buffer."
+  :group 'solaire-mode
+  :type 'function)
+
+(defcustom solaire-mode-remap-modeline t
+  "If non-nil, remap mode-line faces as well.
+
+Solaire-mode can conflict with certain mode-line plugins, like powerline and
+telephone-line, so it's best to simply turn this off for those plugins."
+  :group 'solaire-mode
+  :type 'boolean)
+
+(defcustom solaire-mode-remap-faces
+  '((default solaire-default-face)
+    (hl-line solaire-hl-line-face)
+    (linum solaire-linum-face)
+    (line-number solaire-line-number-face)
+    (line-number-current-line solaire-line-number-current-line-face)
+    (org-hide solaire-org-hide-face)
+    (mode-line solaire-mode-line-face)
+    (mode-line-inactive solaire-mode-line-inactive-face))
+  "An alist of faces to remap when enabling `solaire-mode'."
+  :group 'solaire-mode
+  :type '(list face))
+
+(defun solaire-mode--real-buffer-fn (buf)
+  "Return t if the current buffer BUF represents a real file."
+  buffer-file-name)
+
+;;;###autoload
+(define-minor-mode solaire-mode
+  "Make source buffers grossly incandescent by remapping common faces (see
+`solaire-mode-remap-faces') to their solaire-mode variants."
+  :lighter "" ; should be obvious it's on
+  :init-value nil
+  ;; Don't reset remapped faces on `kill-all-local-variables'
+  (make-variable-buffer-local 'face-remapping-alist)
+  (put 'face-remapping-alist 'permanent-local solaire-mode)
+  (if solaire-mode
+      (progn
+        (set-face-background 'fringe (face-background 'solaire-default-face))
+        (setq face-remapping-alist (append solaire-mode-remap-faces face-remapping-alist))
+        (unless solaire-mode-remap-modeline
+          (dolist (fc '(mode-line mode-line-inactive) solaire-mode-remap-faces)
+            (setq face-remapping-alist
+                  (assq-delete-all fc solaire-mode-remap-faces)))))
+    (dolist (remap solaire-mode-remap-faces)
+      (setq face-remapping-alist (delete remap face-remapping-alist)))
+    (unless (cl-loop for buf in (buffer-list)
+                     when (buffer-local-value 'solaire-mode buf)
+                     return t)
+      (set-face-background 'fringe (face-background 'default)))))
+
+;;;###autoload
+(defun turn-on-solaire-mode ()
+  "Enable `solaire-mode' in the current buffer.
+
+Does nothing if it doesn't represent a real, file-visiting buffer (see
+`solaire-mode-real-buffer-fn')."
+  (when (and (not solaire-mode)
+             (funcall solaire-mode-real-buffer-fn (current-buffer)))
+    (solaire-mode +1)))
+
+;;;###autoload
+(defun turn-off-solaire-mode ()
+  "Disable `solaire-mode' in the current buffer."
+  (when solaire-mode
+    (solaire-mode -1)))
+
+;;;###autoload
+(defun solaire-mode-in-minibuffer ()
+  "Highlight the minibuffer whenever it is active."
+  (with-selected-window (minibuffer-window)
+    (setq-local face-remapping-alist
+                (append face-remapping-alist '((default solaire-minibuffer-face))))))
+
+;;;###autoload
+(defun solaire-mode-reset ()
+  "Reset all buffers with `solaire-mode' enabled."
+  (interactive)
+  (dolist (buf (buffer-list))
+    (with-current-buffer buf
+      (when solaire-mode
+        (solaire-mode -1)
+        (solaire-mode +1)))))
+
+;;;###autoload
+(defun solaire-mode-restore-persp-mode-buffers (&rest _)
+  "Restore `solaire-mode' in buffers when `persp-mode' loads a session."
+  (dolist (buf (persp-buffer-list))
+    (with-current-buffer buf
+      (turn-on-solaire-mode))))
+
+(defun solaire-mode--face-remap-add-relative (orig-fn &rest args)
+  "Minimize interference from other themes, functions and/or packages trying to
+remap their own faces (like `text-scale-set')."
+  (when solaire-mode
+    (let ((remap (assq (nth 0 args) face-remapping-alist)))
+      (when remap (setf (nth 0 args) (cadr remap)))))
+  (apply orig-fn args))
+(advice-add 'face-remap-add-relative :around #'solaire-mode--face-remap-add-relative)
+
+(provide 'solaire-mode)
+;;; solaire-mode.el ends here
.emacs.d/elpa/solaire-mode-1.0.2/solaire-mode.elc
Binary file
.emacs.d/images/okumura_rin_4_by_naruto_lover16-d4ktg50.png
Binary file
.emacs.d/lisp/use-package/bind-key.elc
Binary file
.emacs.d/lisp/use-package/use-package.elc
Binary file
.emacs.d/lisp/setup-package.elc
Binary file
.emacs.d/lisp/vde-functions.elc
Binary file
.emacs.d/emacs.org
@@ -1,7 +1,5 @@
 #+TITLE: Vincent Demeester's emacs configuration
-#+AUTHOR: Vincent Demeester
-#+EMAIL: vincent [at] demeester [dot] fr
-#+TAGS: emacs
+#+TAGS: emacs configuration
 
 #+BEGIN_SRC
                                                               ___ __
@@ -11,3 +9,297 @@
                                                                      |_____|
 #+END_SRC
 
+This is my second attempt to write a litterate configuration for
+emacs. The first one want well but still, there is some part that
+weren't litterate, and it got cluttered really quick.
+
+That time, I am going to try to follow few principles:
+
+- Do no hesitate to separate the configuration into several files. For
+  example, a file for the Go language configuration, one for Org-mode
+  configuration, etc. would make sense I feel. One other aspect of
+  this is, I may want to be able to extract those file to publish them
+  as blogpost /or/ articles.
+- Do *everything* litterate. What this mean is, if I want to create a
+  =Caskfile= or a shell script, this will also be in an org-mode file
+  with the right =tangle= definitions.
+- Adopt vim =modal= editing, thus probably using =evil= mode. And make
+  sure the behaviour I adopt on my bepo layout, would be the same on a
+  =qwerty= layout. What this means is, get the most common modal
+  shortcut that would work on another vim setup and make sure to
+  rebinding it to bepo keys.
+
+Starting from scratch is going to be a little bit tricky, given the
+load of configuration I had, but I really feel it is a good thing ๐Ÿ‘ผ.
+
+This configuration is /tangled/ by org-mode (babel) and byte-compiled.
+
+* Early work ๐Ÿš€
+
+There is a few things we want to do early :
+
+- Setup package management
+- Disable/Enable some built-in features
+- Setup a correct theme (the default one is /ok/ but you know..
+
+This makes it so that the file that is produced from tangling this
+file uses lexical scoping.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  ;;; -*- lexical-binding: t -*-
+  (setq-default lexical-binding t)
+#+END_SRC
+
+Let's also error-out really quick if the Emacs version is too old
+(i.e. below 24 as of today).
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (let ((minver 24))
+    (unless (>= emacs-major-version minver)
+      (error "Your Emacs is too old -- this configuration requrise v%s or higher" minver)))
+#+END_SRC
+
+Let's also add =.emacs.d/lisp= folder(s) to the load-path so that we
+can write our own emacs-lisp /libraries/.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  ;; Add custom lisp files to load-path
+  (add-to-list 'load-path (concat user-emacs-directory "lisp"))
+  (add-to-list 'load-path (concat user-emacs-directory "config"))
+  (add-to-list 'load-path (concat user-emacs-directory "lisp/use-package"))
+#+END_SRC
+
+** Variables and personal information
+
+Let's define a bunch of variable name that will be useful later (like
+where are =org-mode= file stored, etc.)
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (setq
+   desktop-directory (substitute-env-in-file-name "$HOME/desktop")
+   downloads-directory (expand-file-name "downloads" desktop-directory)
+   videos-directory (expand-file-name "videos" desktop-directory)
+   music-directory (expand-file-name "music" desktop-directory)
+   pictures-directory (expand-file-name "pictures" desktop-directory)
+   github-general-folder (substitute-env-in-file-name "$HOME/src/github.com")
+   github-username "vdemeester"
+   github-personal-folder (expand-file-name github-username github-general-folder))
+#+END_SRC
+
+** GUI Disables
+
+Death to any gui elements in emacs! Do this EARLY so that emacs
+doesn't redisplay in a way that is visually unpleasant on startup a
+bunch of times.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
+  (when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+  (when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
+  (when (fboundp 'blink-cursor-mode) (blink-cursor-mode -1))
+#+END_SRC
+
+Tooltips are annoying:
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+(if (fboundp 'tooltip-mode) (tooltip-mode -1) (setq tooltip-use-echo-area t))'
+#+END_SRC
+
+** Package management
+
+I am going to use [[https://github.com/jwiegley/use-package][use-package]] as my /package-management/ of choice
+with built-in =package.el=. I'm manually updating it in this
+repository from upstream.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (require 'package)
+  (package-initialize)
+
+  (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
+  (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
+
+  (setq use-package-always-pin "melpa-stable")
+
+  (when (not package-archive-contents)
+    (package-refresh-contents))
+
+  (require 'use-package)
+#+END_SRC
+
+To reduce the risk of loading outdated byte code files, we set
+load-prefer-newer and enable auto-compile-on-load-mode as early as
+possible.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+(setq load-prefer-newer t)
+#+END_SRC
+
+** Setup auto-compile
+
+Automatically compile emacs-lisp libraries. This guarantee that Emacs never loads outdated byte code files.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (use-package auto-compile
+    :ensure t
+    :config
+    (progn
+      (auto-compile-on-load-mode)
+      (auto-compile-on-save-mode)))
+#+END_SRC
+
+** Backup files
+
+Files suffixed with =~= in the current directory are ugly โ€” this is
+really something I hate. I'm not against using backup files, as it can
+saves some time in case of trouble. But we'll move them elsewhere :
+=~/tmp/emacs-1001= (if the use uid is =1001=). Note that we are not
+using =/tmp= to store them because in most of my setup, =/tmp= is
+/in-memory/. Using it would mean we would loose those temporary files
+between reboots.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (defconst emacs-tmp-dir (format "%s/%s%s/" temporary-file-directory "emacs" (user-uid)))
+  (setq backup-directory-alist
+        `((".*" . ,emacs-tmp-dir))
+        auto-save-file-name-transforms
+        `((".*" ,emacs-tmp-dir t))
+        auto-save-list-file-prefix emacs-tmp-dir)
+#+END_SRC
+
+Now that all the temporary files are out of the way, we can keep more of them.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (setq delete-old-versions t
+        kept-new-versions 6
+        kept-old-versions 2
+        version-control t)
+#+END_SRC
+
+** Encoding system
+
+Make sure we use =utf-8= by default.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (set-terminal-coding-system 'utf-8)
+  (set-keyboard-coding-system 'utf-8)
+  (set-language-environment "UTF-8")
+  (prefer-coding-system 'utf-8)
+  (setq-default buffer-file-coding-system 'utf-8-auto-unix)
+#+END_SRC
+
+** Lazier prompting
+
+Answering yes and no to each question from Emacs can be tedious, a
+single y or n will suffice.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (fset 'yes-or-no-p 'y-or-n-p)
+#+END_SRC
+
+Let Emacs display the unfinished keystroke quickly (by default it's 1
+second).
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (setq echo-keystrokes 0.1)
+#+END_SRC
+
+* Load configurations
+
+It is now time to load other configuration.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  ;; (require 'evil-config)
+  (use-package org-config)
+#+END_SRC
+* Visual ๐Ÿ˜Ž
+
+Let's customize some graphical element, like dashboard, mode-line, and stuff
+
+** Dashboard
+
+The default Emacs splash-screen is not that useful. A useful
+splash-screen would display some recent files opened, bookmaks,
+projects and org-agenda items. Luckily, there is already a project
+that does that, [[https://github.com/rakanalh/emacs-dashboard][emacs-dashboard]].
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (use-package dashboard
+    :ensure t
+    :diminish dashboard-mode
+    :config
+    (setq dashboard-banner-logo-title "Welcome to Emacs, Vincent !"
+          dashboard-startup-banner (expand-file-name "images/okumura_rin_4_by_naruto_lover16-d4ktg50.png" user-emacs-directory))
+    (dashboard-setup-startup-hook))
+#+END_SRC
+
+** Theme
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (use-package doom-themes
+    :ensure t
+    :config
+    (setq doom-themes-enable-bolt t)
+    (setq doom-themes-enable-italic t)
+    (load-theme 'doom-one t))
+#+END_SRC
+
+A good companion to =doom-one= theme is [[https://github.com/hlissner/emacs-solaire-mode][solaire-mode]]. It helps
+visually distinguish file-visiting from other types of windows (like
+popups or sidebars).
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (use-package solaire-mode
+    :ensure t
+    :config
+    (setq solaire-mode-remap-modeline nil)
+    (add-hook 'after-change-major-mode-hook #'turn-on-solaire-mode)
+    (add-hook 'after-revert-hook #'turn-on-solaire-mode)
+    (add-hook 'minibuffer-setup-hook #'solaire-mode-in-minibuffer)
+    (add-hook 'ediff-prepare-buffer-hook #'solaire-mode)
+    (advice-add #'persp-load-state-from-file :after #'solaire-mode-restore-persp-mode-buffers))
+#+END_SRC
+** Lines and columns
+
+We want to see somewhere the column and line number, and also
+highlight the current line to see it easily.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (line-number-mode 1)
+  (column-number-mode 1)
+  (global-hl-line-mode 1)
+#+END_SRC
+
+** Syntax highlighting
+
+Depending on the files opened and the syntax highlighting enabled,
+~font-lock-mode~ can be slow, we try to limit that, to keep Emacs
+reactive.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (setq font-lock-maximum-decoration 2)
+#+END_SRC
+
+** Fringe decorations
+
+[[http://www.emacswiki.org/emacs/TheFringe][The fringe]] is the vertical region at the right and left of the
+buffer. Emacs lets you customize it of course.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (setq-default indicate-buffer-boundaries 'left)
+  (setq-default indicate-empty-lines +1)
+#+END_SRC
+
+** Byte-compiles =.emacs.d= folder
+
+Let's also define a quick function to byte-compile files under
+=.emacs.d= folder to speed things up.
+
+#+BEGIN_SRC emacs-lisp :tangle init.el
+  (defun vde/byte-recompile ()
+    (interactive)
+    (byte-recompile-directory user-emacs-directory 0)
+    (byte-recompile-directory (expand-file-name "lisp" user-emacs-directory) 0)
+    (byte-recompile-directory (expand-file-name "config" user-emacs-directory) 0)
+    (byte-recompile-directory (expand-file-name "lisp/use-package" user-emacs-directory) 0))
+#+END_SRC
+
.emacs.d/init.el
@@ -0,0 +1,117 @@
+
+;;; -*- lexical-binding: t -*-
+(setq-default lexical-binding t)
+
+(let ((minver 24))
+  (unless (>= emacs-major-version minver)
+    (error "Your Emacs is too old -- this configuration requrise v%s or higher" minver)))
+
+;; Add custom lisp files to load-path
+(add-to-list 'load-path (concat user-emacs-directory "lisp"))
+(add-to-list 'load-path (concat user-emacs-directory "config"))
+(add-to-list 'load-path (concat user-emacs-directory "lisp/use-package"))
+
+(setq
+ desktop-directory (substitute-env-in-file-name "$HOME/desktop")
+ downloads-directory (expand-file-name "downloads" desktop-directory)
+ videos-directory (expand-file-name "videos" desktop-directory)
+ music-directory (expand-file-name "music" desktop-directory)
+ pictures-directory (expand-file-name "pictures" desktop-directory)
+ github-general-folder (substitute-env-in-file-name "$HOME/src/github.com")
+ github-username "vdemeester"
+ github-personal-folder (expand-file-name github-username github-general-folder))
+
+(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
+(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
+(when (fboundp 'blink-cursor-mode) (blink-cursor-mode -1))
+
+(if (fboundp 'tooltip-mode) (tooltip-mode -1) (setq tooltip-use-echo-area t))'
+
+(require 'package)
+(package-initialize)
+
+(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
+(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
+
+(setq use-package-always-pin "melpa-stable")
+
+(when (not package-archive-contents)
+  (package-refresh-contents))
+
+(require 'use-package)
+
+(setq load-prefer-newer t)
+
+(use-package auto-compile
+  :ensure t
+  :config
+  (progn
+    (auto-compile-on-load-mode)
+    (auto-compile-on-save-mode)))
+
+(defconst emacs-tmp-dir (format "%s/%s%s/" temporary-file-directory "emacs" (user-uid)))
+(setq backup-directory-alist
+      `((".*" . ,emacs-tmp-dir))
+      auto-save-file-name-transforms
+      `((".*" ,emacs-tmp-dir t))
+      auto-save-list-file-prefix emacs-tmp-dir)
+
+(setq delete-old-versions t
+      kept-new-versions 6
+      kept-old-versions 2
+      version-control t)
+
+(set-terminal-coding-system 'utf-8)
+(set-keyboard-coding-system 'utf-8)
+(set-language-environment "UTF-8")
+(prefer-coding-system 'utf-8)
+(setq-default buffer-file-coding-system 'utf-8-auto-unix)
+
+(fset 'yes-or-no-p 'y-or-n-p)
+
+(setq echo-keystrokes 0.1)
+
+;; (require 'evil-config)
+(use-package org-config)
+
+(use-package dashboard
+  :ensure t
+  :diminish dashboard-mode
+  :config
+  (setq dashboard-banner-logo-title "Welcome to Emacs, Vincent !"
+        dashboard-startup-banner (expand-file-name "images/okumura_rin_4_by_naruto_lover16-d4ktg50.png" user-emacs-directory))
+  (dashboard-setup-startup-hook))
+
+(use-package doom-themes
+  :ensure t
+  :config
+  (setq doom-themes-enable-bolt t)
+  (setq doom-themes-enable-italic t)
+  (load-theme 'doom-one t))
+
+(use-package solaire-mode
+  :ensure t
+  :config
+  (setq solaire-mode-remap-modeline nil)
+  (add-hook 'after-change-major-mode-hook #'turn-on-solaire-mode)
+  (add-hook 'after-revert-hook #'turn-on-solaire-mode)
+  (add-hook 'minibuffer-setup-hook #'solaire-mode-in-minibuffer)
+  (add-hook 'ediff-prepare-buffer-hook #'solaire-mode)
+  (advice-add #'persp-load-state-from-file :after #'solaire-mode-restore-persp-mode-buffers))
+
+(line-number-mode 1)
+(column-number-mode 1)
+(global-hl-line-mode 1)
+
+(setq font-lock-maximum-decoration 2)
+
+(setq-default indicate-buffer-boundaries 'left)
+(setq-default indicate-empty-lines +1)
+
+(defun vde/byte-recompile ()
+  (interactive)
+  (byte-recompile-directory user-emacs-directory 0)
+  (byte-recompile-directory (expand-file-name "lisp" user-emacs-directory) 0)
+  (byte-recompile-directory (expand-file-name "config" user-emacs-directory) 0)
+  (byte-recompile-directory (expand-file-name "lisp/use-package" user-emacs-directory) 0))
.emacs.d/init.elc
Binary file