Commit f73ce49c444a
Changed files (85)
.emacs.d
elpa
all-the-icons-20170817.642
data
auto-compile-1.4.1
dashboard-1.2.3
doom-themes-1.2.5
font-lock+-20170222.1755
htmlize-20161211.1019
memoize-20170720.1802
packed-20170819.942
page-break-lines-20170829.157
solaire-mode-1.0.2
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/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,
+\"©\" *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, \"©\" is exactly equivalent to \"©\".
+
+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 ?&) "&"
+ (aref table ?<) "<"
+ (aref table ?>) ">"
+ ;; 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 ?\") """
+ )
+ 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 ?\")
+ """
+ (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:" 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