summaryrefslogtreecommitdiff
path: root/emacs
diff options
context:
space:
mode:
authorBlaise Thompson <blaise@untzag.com>2018-07-03 09:13:37 -0500
committerBlaise Thompson <blaise@untzag.com>2018-07-03 09:13:37 -0500
commitf972585b1ce8c6f29320f157cdd711277b3f5c33 (patch)
treecd7ba9ca7f208da1be56381aa68492e92344a898 /emacs
parent7bcb0b78ce9e70b5e09ed84677742357ffdd3709 (diff)
2018-07-03 09:13
Diffstat (limited to 'emacs')
-rw-r--r--emacs/color-theme-tomorrow.el609
-rw-r--r--emacs/init.el117
-rw-r--r--emacs/tomorrow-day-theme.el2
-rw-r--r--emacs/tomorrow-night-blue-theme.el2
-rw-r--r--emacs/tomorrow-night-bright-theme.el2
-rw-r--r--emacs/tomorrow-night-eighties-theme.el2
-rw-r--r--emacs/tomorrow-night-theme.el2
7 files changed, 727 insertions, 9 deletions
diff --git a/emacs/color-theme-tomorrow.el b/emacs/color-theme-tomorrow.el
new file mode 100644
index 0000000..10e45a0
--- /dev/null
+++ b/emacs/color-theme-tomorrow.el
@@ -0,0 +1,609 @@
+;;; color-theme-tomorrow.el --- GNU Emacs port of the Tomorrow Theme.
+
+;;; Commentary:
+;;
+;;; Tomorrow Theme
+;;
+;; Originally by Chris Kempson https://github.com/ChrisKempson/Tomorrow-Theme
+;; Ported to GNU Emacs by Chris Charles
+;; Rewritten by Steve Purcell <steve@sanityinc.com> for compatibility
+;; Update to match master by Donald Curtis <dcurtis@milkbox.net>
+
+
+;;; Code:
+
+(defconst color-theme-tomorrow-colors
+ '((night . ((background . "#1d1f21")
+ (current-line . "#282a2e")
+ (selection . "#373b41")
+ (foreground . "#c5c8c6")
+ (comment . "#969896")
+ (red . "#cc6666")
+ (orange . "#de935f")
+ (yellow . "#f0c674")
+ (green . "#b5bd68")
+ (aqua . "#8abeb7")
+ (blue . "#81a2be")
+ (purple . "#b294bb")))
+ (day . ((background . "#ffffff")
+ (current-line . "#efefef")
+ (selection . "#d6d6d6")
+ (foreground . "#4d4d4c")
+ (comment . "#8e908c")
+ (red . "#c82829")
+ (orange . "#f5871f")
+ (yellow . "#eab700")
+ (green . "#718c00")
+ (aqua . "#3e999f")
+ (blue . "#4271ae")
+ (purple . "#8959a8")))
+ (night-eighties . ((background . "#2d2d2d")
+ (current-line . "#393939")
+ (selection . "#515151")
+ (foreground . "#cccccc")
+ (comment . "#999999")
+ (red . "#f2777a")
+ (orange . "#f99157")
+ (yellow . "#ffcc66")
+ (green . "#99cc99")
+ (aqua . "#66cccc")
+ (blue . "#6699cc")
+ (purple . "#cc99cc")))
+ (night-blue . ((background . "#002451")
+ (current-line . "#00346e")
+ (selection . "#003f8e")
+ (foreground . "#ffffff")
+ (comment . "#7285b7")
+ (red . "#ff9da4")
+ (orange . "#ffc58f")
+ (yellow . "#ffeead")
+ (green . "#d1f1a9")
+ (aqua . "#99ffff")
+ (blue . "#bbdaff")
+ (purple . "#ebbbff")))
+ (night-bright . ((background . "#000000")
+ (current-line . "#2a2a2a")
+ (selection . "#424242")
+ (foreground . "#eaeaea")
+ (comment . "#969896")
+ (red . "#d54e53")
+ (orange . "#e78c45")
+ (yellow . "#e7c547")
+ (green . "#b9ca4a")
+ (aqua . "#70c0b1")
+ (blue . "#7aa6da")
+ (purple . "#c397d8")))))
+
+
+
+(defmacro color-theme-tomorrow--with-colors (mode &rest body)
+ "Execute `BODY' in a scope with variables bound to the various tomorrow colors.
+
+`MODE' should be set to either 'day, 'night, 'night-eighties, 'night-blue or 'night-bright."
+ `(let* ((colors (or (cdr (assoc ,mode color-theme-tomorrow-colors))
+ (error "no such theme flavor")))
+ (background (cdr (assoc 'background colors)))
+ (current-line (cdr (assoc 'current-line colors)))
+ (selection (cdr (assoc 'selection colors)))
+ (foreground (cdr (assoc 'foreground colors)))
+ (comment (cdr (assoc 'comment colors)))
+ (red (cdr (assoc 'red colors)))
+ (orange (cdr (assoc 'orange colors)))
+ (yellow (cdr (assoc 'yellow colors)))
+ (green (cdr (assoc 'green colors)))
+ (aqua (cdr (assoc 'aqua colors)))
+ (blue (cdr (assoc 'blue colors)))
+ (purple (cdr (assoc 'purple colors)))
+ (class '((class color) (min-colors 89))))
+ ,@body))
+
+(defmacro color-theme-tomorrow--face-specs ()
+ "Return a backquote which defines a list of face specs.
+
+It expects to be evaluated in a scope in which the various color
+names to which it refers are bound."
+ (quote
+ `(;; Standard font lock faces
+ (default ((,class (:foreground ,foreground :background ,background))))
+ (bold ((,class (:weight bold))))
+ (bold-italic ((,class (:slant italic :weight bold))))
+ (underline ((,class (:underline t))))
+ (italic ((,class (:slant italic))))
+ (shadow ((,class (:foreground ,comment))))
+ (success ((,class (:foreground ,green))))
+ (error ((,class (:foreground ,red))))
+ (warning ((,class (:foreground ,orange))))
+ (outline-4 ((,class (:slant normal :foreground ,comment))))
+
+ ;; Font-lock stuff
+ (font-lock-builtin-face ((,class (:foreground ,aqua))))
+ (font-lock-comment-delimiter-face ((,class (:foreground ,comment :slant italic))))
+ (font-lock-comment-face ((,class (:foreground ,comment :slant italic))))
+ (font-lock-constant-face ((,class (:foreground ,aqua))))
+ (font-lock-doc-face ((,class (:foreground ,comment))))
+ (font-lock-doc-string-face ((,class (:foreground ,yellow))))
+ (font-lock-function-name-face ((,class (:foreground ,blue))))
+ (font-lock-keyword-face ((,class (:foreground ,purple))))
+ (font-lock-negation-char-face ((,class (:foreground ,green))))
+ (font-lock-preprocessor-face ((,class (:foreground ,purple))))
+ (font-lock-regexp-grouping-backslash ((,class (:foreground ,yellow))))
+ (font-lock-regexp-grouping-construct ((,class (:foreground ,purple))))
+ (font-lock-string-face ((,class (:foreground ,green))))
+ (font-lock-type-face ((,class (:foreground ,yellow))))
+ (font-lock-variable-name-face ((,class (:foreground ,orange))))
+ (font-lock-warning-face ((,class (:weight bold :foreground ,red))))
+
+ ;; Flymake
+ (flymake-warnline ((,class (:underline ,orange :background ,background))))
+ (flymake-errline ((,class (:underline ,red :background ,background))))
+
+ ;; Clojure errors
+ (clojure-test-failure-face ((,class (:background nil :inherit flymake-warnline))))
+ (clojure-test-error-face ((,class (:background nil :inherit flymake-errline))))
+ (clojure-test-success-face ((,class (:background nil :foreground nil :underline ,green))))
+
+ ;; For Brian Carper's extended clojure syntax table
+ (clojure-keyword ((,class (:foreground ,yellow))))
+ (clojure-parens ((,class (:foreground ,foreground))))
+ (clojure-braces ((,class (:foreground ,green))))
+ (clojure-brackets ((,class (:foreground ,yellow))))
+ (clojure-double-quote ((,class (:foreground ,aqua :background nil))))
+ (clojure-special ((,class (:foreground ,blue))))
+ (clojure-java-call ((,class (:foreground ,purple))))
+
+ ;; Rainbow-delimiters
+ (rainbow-delimiters-depth-1-face ((,class (:foreground ,purple))))
+ (rainbow-delimiters-depth-2-face ((,class (:foreground ,blue))))
+ (rainbow-delimiters-depth-3-face ((,class (:foreground ,aqua))))
+ (rainbow-delimiters-depth-4-face ((,class (:foreground ,green))))
+ (rainbow-delimiters-depth-5-face ((,class (:foreground ,yellow))))
+ (rainbow-delimiters-depth-6-face ((,class (:foreground ,orange))))
+ (rainbow-delimiters-depth-7-face ((,class (:foreground ,red))))
+ (rainbow-delimiters-depth-8-face ((,class (:foreground ,comment))))
+ (rainbow-delimiters-depth-9-face ((,class (:foreground ,foreground))))
+ (rainbow-delimiters-unmatched-face ((,class (:foreground ,red))))
+
+ ;; MMM-mode
+ (mmm-code-submode-face ((,class (:background ,current-line))))
+ (mmm-comment-submode-face ((,class (:inherit font-lock-comment-face))))
+ (mmm-output-submode-face ((,class (:background ,current-line))))
+
+ ;; Search
+ (match ((,class (:foreground ,blue :background ,background :inverse-video t))))
+ (isearch ((,class (:foreground ,yellow :background ,background :inverse-video t))))
+ (isearch-lazy-highlight-face ((,class (:foreground ,aqua :background ,background :inverse-video t))))
+ (isearch-fail ((,class (:background ,background :inherit font-lock-warning-face :inverse-video t))))
+
+ ;; IDO
+ (ido-subdir ((,class (:foreground ,comment))))
+ (ido-first-match ((,class (:foreground ,orange :weight bold))))
+ (ido-only-match ((,class (:foreground ,red :weight bold))))
+ (ido-indicator ((,class (:foreground ,red :background ,background))))
+ (ido-virtual ((,class (:foreground ,comment))))
+
+ ;; which-function
+ (which-func ((,class (:foreground ,blue :background nil :weight bold))))
+
+ ;; Emacs interface
+ (cursor ((,class (:background ,red))))
+ (fringe ((,class (:background ,current-line))))
+ (linum ((,class (:background ,current-line))))
+ (hl-line ((,class (:background ,current-line))))
+ (border ((,class (:background ,current-line))))
+ (border-glyph ((,class (nil))))
+ (highlight ((,class (:background ,green))))
+ (link ((,class (:foreground ,blue))))
+ (link-visited ((,class (:foreground ,purple))))
+ (gui-element ((,class (:background ,current-line :foreground ,foreground))))
+ (mode-line ((,class (:background ,selection :foreground ,foreground))))
+ (mode-line-inactive ((,class (:background ,current-line :foreground ,foreground))))
+ (mode-line-buffer-id ((,class (:foreground ,purple :background nil))))
+ (mode-line-emphasis ((,class (:foreground ,foreground :slant italic))))
+ (mode-line-highlight ((,class (:foreground ,purple :box nil :weight bold))))
+ (minibuffer-prompt ((,class (:foreground ,blue))))
+ (region ((,class (:background ,selection))))
+ (secondary-selection ((,class (:background ,current-line))))
+
+ (header-line ((,class (:inherit mode-line :foreground ,purple :background nil))))
+
+ (trailing-whitespace ((,class (:background ,red :foreground ,yellow))))
+ (whitespace-empty ((,class (:foreground ,red :background ,yellow))))
+ (whitespace-hspace ((,class (:background ,selection :foreground ,comment))))
+ (whitespace-indentation ((,class (:background ,yellow :foreground ,red))))
+ (whitespace-line ((,class (:background ,current-line :foreground ,purple))))
+ (whitespace-newline ((,class (:foreground ,comment))))
+ (whitespace-space ((,class (:background ,current-line :foreground ,comment))))
+ (whitespace-space-after-tab ((,class (:background ,yellow :foreground ,red))))
+ (whitespace-space-before-tab ((,class (:background ,orange :foreground ,red))))
+ (whitespace-tab ((,class (:background ,selection :foreground ,comment))))
+ (whitespace-trailing ((,class (:background ,red :foreground ,yellow))))
+
+ ;; Parenthesis matching (built-in)
+ (show-paren-match ((,class (:background ,blue :foreground ,current-line))))
+ (show-paren-mismatch ((,class (:background ,orange :foreground ,current-line))))
+
+ ;; Parenthesis matching (mic-paren)
+ (paren-face-match ((,class (:foreground nil :background nil :inherit show-paren-match))))
+ (paren-face-mismatch ((,class (:foreground nil :background nil :inherit show-paren-mismatch))))
+ (paren-face-no-match ((,class (:foreground nil :background nil :inherit show-paren-mismatch))))
+
+ ;; Parenthesis dimming (parenface)
+ (paren-face ((,class (:foreground ,comment :background nil))))
+
+ (sh-heredoc ((,class (:foreground nil :inherit font-lock-string-face :weight normal))))
+ (sh-quoted-exec ((,class (:foreground nil :inherit font-lock-preprocessor-face))))
+ (slime-highlight-edits-face ((,class (:weight bold))))
+ (slime-repl-input-face ((,class (:weight normal :underline nil))))
+ (slime-repl-prompt-face ((,class (:underline nil :weight bold :foreground ,purple))))
+ (slime-repl-result-face ((,class (:foreground ,green))))
+ (slime-repl-output-face ((,class (:foreground ,blue :background ,background))))
+
+ (csv-separator-face ((,class (:foreground ,orange))))
+
+ (diff-added ((,class (:foreground ,green))))
+ (diff-changed ((,class (:foreground ,yellow))))
+ (diff-removed ((,class (:foreground ,red))))
+ (diff-header ((,class (:background ,current-line))))
+ (diff-file-header ((,class (:background ,selection))))
+ (diff-hunk-header ((,class (:background ,current-line :foreground ,purple))))
+
+ (ediff-even-diff-A ((,class (:foreground nil :background nil :inverse-video t))))
+ (ediff-even-diff-B ((,class (:foreground nil :background nil :inverse-video t))))
+ (ediff-odd-diff-A ((,class (:foreground ,comment :background nil :inverse-video t))))
+ (ediff-odd-diff-B ((,class (:foreground ,comment :background nil :inverse-video t))))
+
+ (eldoc-highlight-function-argument ((,class (:foreground ,green :weight bold))))
+
+ ;; undo-tree
+ (undo-tree-visualizer-default-face ((,class (:foreground ,foreground))))
+ (undo-tree-visualizer-current-face ((,class (:foreground ,green :weight bold))))
+ (undo-tree-visualizer-active-branch-face ((,class (:foreground ,red))))
+ (undo-tree-visualizer-register-face ((,class (:foreground ,yellow))))
+
+ ;; auctex
+ (font-latex-bold-face ((,class (:foreground ,green))))
+ (font-latex-doctex-documentation-face ((,class (:background ,current-line))))
+ (font-latex-italic-face ((,class (:foreground ,green))))
+ (font-latex-math-face ((,class (:foreground ,orange))))
+ (font-latex-sectioning-0-face ((,class (:foreground ,yellow))))
+ (font-latex-sectioning-1-face ((,class (:foreground ,yellow))))
+ (font-latex-sectioning-2-face ((,class (:foreground ,yellow))))
+ (font-latex-sectioning-3-face ((,class (:foreground ,yellow))))
+ (font-latex-sectioning-4-face ((,class (:foreground ,yellow))))
+ (font-latex-sectioning-5-face ((,class (:foreground ,yellow))))
+ (font-latex-sedate-face ((,class (:foreground ,aqua))))
+ (font-latex-string-face ((,class (:foreground ,yellow))))
+ (font-latex-verbatim-face ((,class (:foreground ,orange))))
+ (font-latex-warning-face ((,class (:foreground ,red))))
+
+ ;; dired+
+ (diredp-compressed-file-suffix ((,class (:foreground ,blue))))
+ (diredp-dir-heading ((,class (:foreground nil :background nil :inherit heading))))
+ (diredp-dir-priv ((,class (:foreground ,aqua :background nil))))
+ (diredp-exec-priv ((,class (:foreground ,blue :background nil))))
+ (diredp-executable-tag ((,class (:foreground ,red :background nil))))
+ (diredp-file-name ((,class (:foreground ,yellow))))
+ (diredp-file-suffix ((,class (:foreground ,green))))
+ (diredp-flag-mark-line ((,class (:background nil :inherit highlight))))
+ (diredp-ignored-file-name ((,class (:foreground ,comment))))
+ (diredp-link-priv ((,class (:background nil :foreground ,purple))))
+ (diredp-mode-line-flagged ((,class (:foreground ,red))))
+ (diredp-mode-line-marked ((,class (:foreground ,green))))
+ (diredp-no-priv ((,class (:background nil))))
+ (diredp-number ((,class (:foreground ,yellow))))
+ (diredp-other-priv ((,class (:background nil :foreground ,purple))))
+ (diredp-rare-priv ((,class (:foreground ,red :background nil))))
+ (diredp-read-priv ((,class (:foreground ,green :background nil))))
+ (diredp-symlink ((,class (:foreground ,purple))))
+ (diredp-write-priv ((,class (:foreground ,yellow :background nil))))
+
+ ;; Magit (a patch is pending in magit to make these standard upstream)
+ (magit-branch ((,class (:foreground ,green))))
+ (magit-header ((,class (:inherit nil :weight bold))))
+ (magit-item-highlight ((,class (:inherit highlight :background nil))))
+ (magit-log-graph ((,class (:foreground ,comment))))
+ (magit-log-sha1 ((,class (:foreground ,purple))))
+ (magit-log-head-label-bisect-bad ((,class (:foreground ,red))))
+ (magit-log-head-label-bisect-good ((,class (:foreground ,green))))
+ (magit-log-head-label-default ((,class (:foreground ,yellow :box nil :weight bold))))
+ (magit-log-head-label-local ((,class (:foreground ,blue))))
+ (magit-log-head-label-remote ((,class (:foreground ,green))))
+ (magit-log-head-label-tags ((,class (:foreground ,aqua :box nil :weight bold))))
+ (magit-section-title ((,class (:inherit diff-hunk-header))))
+
+ (link ((,class (:foreground nil :underline t))))
+ (widget-button ((,class (:underline t))))
+ (widget-field ((,class (:background ,current-line :box (:line-width 1 :color ,foreground)))))
+
+ ;; Compilation (most faces politely inherit from 'success, 'error, 'warning etc.)
+ (compilation-column-number ((,class (:foreground ,yellow))))
+ (compilation-line-number ((,class (:foreground ,yellow))))
+ (compilation-message-face ((,class (:foreground ,blue))))
+ (compilation-mode-line-exit ((,class (:foreground ,green))))
+ (compilation-mode-line-fail ((,class (:foreground ,red))))
+ (compilation-mode-line-run ((,class (:foreground ,blue))))
+
+ ;; Grep
+ (grep-context-face ((,class (:foreground ,comment))))
+ (grep-error-face ((,class (:foreground ,red :weight bold :underline t))))
+ (grep-hit-face ((,class (:foreground ,blue))))
+ (grep-match-face ((,class (:foreground nil :background nil :inherit match))))
+
+ (regex-tool-matched-face ((,class (:foreground nil :background nil :inherit match))))
+
+ ;; mark-multiple
+ (mm/master-face ((,class (:inherit region :foreground nil :background nil))))
+ (mm/mirror-face ((,class (:inherit region :foreground nil :background nil))))
+
+ (org-agenda-structure ((,class (:foreground ,purple))))
+ (org-agenda-date ((,class (:foreground ,blue :underline nil))))
+ (org-agenda-done ((,class (:foreground ,green))))
+ (org-agenda-dimmed-todo-face ((,class (:foreground ,comment))))
+ (org-block ((,class (:foreground ,orange))))
+ (org-code ((,class (:foreground ,yellow))))
+ (org-column ((,class (:background ,current-line))))
+ (org-column-title ((,class (:inherit org-column :weight bold :underline t))))
+ (org-date ((,class (:foreground ,purple :underline t))))
+ (org-document-info ((,class (:foreground ,aqua))))
+ (org-document-info-keyword ((,class (:foreground ,green))))
+ (org-document-title ((,class (:weight bold :foreground ,orange :height 1.44))))
+ (org-done ((,class (:foreground ,green))))
+ (org-ellipsis ((,class (:foreground ,comment))))
+ (org-footnote ((,class (:foreground ,aqua))))
+ (org-formula ((,class (:foreground ,red))))
+ (org-hide ((,class (:foreground ,current-line))))
+ (org-link ((,class (:foreground ,blue))))
+ (org-scheduled ((,class (:foreground ,green))))
+ (org-scheduled-previously ((,class (:foreground ,orange))))
+ (org-scheduled-today ((,class (:foreground ,green))))
+ (org-special-keyword ((,class (:foreground ,orange))))
+ (org-table ((,class (:foreground ,purple))))
+ (org-todo ((,class (:foreground ,red))))
+ (org-upcoming-deadline ((,class (:foreground ,orange))))
+ (org-warning ((,class (:weight bold :foreground ,red))))
+
+ (markdown-url-face ((,class (:inherit link))))
+ (markdown-link-face ((,class (:foreground ,blue :underline t))))
+
+ (hl-sexp-face ((,class (:background ,current-line))))
+ (highlight-80+ ((,class (:background ,current-line))))
+
+ ;; Python-specific overrides
+ (py-builtins-face ((,class (:foreground ,orange :weight normal))))
+
+ ;; js2-mode
+ (js2-warning-face ((,class (:underline ,orange))))
+ (js2-error-face ((,class (:foreground nil :underline ,red))))
+ (js2-external-variable-face ((,class (:foreground ,purple))))
+ (js2-function-param-face ((,class (:foreground ,blue))))
+ (js2-instance-member-face ((,class (:foreground ,blue))))
+ (js2-private-function-call-face ((,class (:foreground ,red))))
+
+ ;; js3-mode
+ (js3-warning-face ((,class (:underline ,orange))))
+ (js3-error-face ((,class (:foreground nil :underline ,red))))
+ (js3-external-variable-face ((,class (:foreground ,purple))))
+ (js3-function-param-face ((,class (:foreground ,blue))))
+ (js3-jsdoc-tag-face ((,class (:foreground ,orange))))
+ (js3-jsdoc-type-face ((,class (:foreground ,aqua))))
+ (js3-jsdoc-value-face ((,class (:foreground ,yellow))))
+ (js3-jsdoc-html-tag-name-face ((,class (:foreground ,blue))))
+ (js3-jsdoc-html-tag-delimiter-face ((,class (:foreground ,green))))
+ (js3-instance-member-face ((,class (:foreground ,blue))))
+ (js3-private-function-call-face ((,class (:foreground ,red))))
+
+ ;; nxml
+ (nxml-name-face ((,class (:foreground unspecified :inherit font-lock-constant-face))))
+ (nxml-attribute-local-name-face ((,class (:foreground unspecified :inherit font-lock-variable-name-face))))
+ (nxml-ref-face ((,class (:foreground unspecified :inherit font-lock-preprocessor-face))))
+ (nxml-delimiter-face ((,class (:foreground unspecified :inherit font-lock-keyword-face))))
+ (nxml-delimited-data-face ((,class (:foreground unspecified :inherit font-lock-string-face))))
+ (rng-error-face ((,class (:underline ,red))))
+
+ ;; RHTML
+ (erb-delim-face ((,class (:background ,current-line))))
+ (erb-exec-face ((,class (:background ,current-line :weight bold))))
+ (erb-exec-delim-face ((,class (:background ,current-line))))
+ (erb-out-face ((,class (:background ,current-line :weight bold))))
+ (erb-out-delim-face ((,class (:background ,current-line))))
+ (erb-comment-face ((,class (:background ,current-line :weight bold :slant italic))))
+ (erb-comment-delim-face ((,class (:background ,current-line))))
+
+ ;; Message-mode
+ (message-header-other ((,class (:foreground nil :background nil :weight normal))))
+ (message-header-subject ((,class (:inherit message-header-other :weight bold :foreground ,yellow))))
+ (message-header-to ((,class (:inherit message-header-other :weight bold :foreground ,orange))))
+ (message-header-cc ((,class (:inherit message-header-to :foreground nil))))
+ (message-header-name ((,class (:foreground ,blue :background nil))))
+ (message-header-newsgroups ((,class (:foreground ,aqua :background nil :slant normal))))
+ (message-separator ((,class (:foreground ,purple))))
+
+ ;; Jabber
+ (jabber-chat-prompt-local ((,class (:foreground ,yellow))))
+ (jabber-chat-prompt-foreign ((,class (:foreground ,orange))))
+ (jabber-chat-prompt-system ((,class (:foreground ,yellow :weight bold))))
+ (jabber-chat-text-local ((,class (:foreground ,yellow))))
+ (jabber-chat-text-foreign ((,class (:foreground ,orange))))
+ (jabber-chat-text-error ((,class (:foreground ,red))))
+
+ (jabber-roster-user-online ((,class (:foreground ,green))))
+ (jabber-roster-user-xa ((,class :foreground ,comment)))
+ (jabber-roster-user-dnd ((,class :foreground ,yellow)))
+ (jabber-roster-user-away ((,class (:foreground ,orange))))
+ (jabber-roster-user-chatty ((,class (:foreground ,purple))))
+ (jabber-roster-user-error ((,class (:foreground ,red))))
+ (jabber-roster-user-offline ((,class (:foreground ,comment))))
+
+ (jabber-rare-time-face ((,class (:foreground ,comment))))
+ (jabber-activity-face ((,class (:foreground ,purple))))
+ (jabber-activity-personal-face ((,class (:foreground ,aqua))))
+
+ ;; Gnus
+ (gnus-cite-1 ((,class (:inherit outline-1 :foreground nil))))
+ (gnus-cite-2 ((,class (:inherit outline-2 :foreground nil))))
+ (gnus-cite-3 ((,class (:inherit outline-3 :foreground nil))))
+ (gnus-cite-4 ((,class (:inherit outline-4 :foreground nil))))
+ (gnus-cite-5 ((,class (:inherit outline-5 :foreground nil))))
+ (gnus-cite-6 ((,class (:inherit outline-6 :foreground nil))))
+ (gnus-cite-7 ((,class (:inherit outline-7 :foreground nil))))
+ (gnus-cite-8 ((,class (:inherit outline-8 :foreground nil))))
+ ;; there are several more -cite- faces...
+ (gnus-header-content ((,class (:inherit message-header-other))))
+ (gnus-header-subject ((,class (:inherit message-header-subject))))
+ (gnus-header-from ((,class (:inherit message-header-other-face :weight bold :foreground ,orange))))
+ (gnus-header-name ((,class (:inherit message-header-name))))
+ (gnus-button ((,class (:inherit link :foreground nil))))
+ (gnus-signature ((,class (:inherit font-lock-comment-face))))
+
+ (gnus-summary-normal-unread ((,class (:foreground ,blue :weight normal))))
+ (gnus-summary-normal-read ((,class (:foreground ,foreground :weight normal))))
+ (gnus-summary-normal-ancient ((,class (:foreground ,aqua :weight normal))))
+ (gnus-summary-normal-ticked ((,class (:foreground ,orange :weight normal))))
+ (gnus-summary-low-unread ((,class (:foreground ,comment :weight normal))))
+ (gnus-summary-low-read ((,class (:foreground ,comment :weight normal))))
+ (gnus-summary-low-ancient ((,class (:foreground ,comment :weight normal))))
+ (gnus-summary-high-unread ((,class (:foreground ,yellow :weight normal))))
+ (gnus-summary-high-read ((,class (:foreground ,green :weight normal))))
+ (gnus-summary-high-ancient ((,class (:foreground ,green :weight normal))))
+ (gnus-summary-high-ticked ((,class (:foreground ,orange :weight normal))))
+ (gnus-summary-cancelled ((,class (:foreground ,red :background nil :weight normal))))
+
+ (gnus-group-mail-low ((,class (:foreground ,comment))))
+ (gnus-group-mail-low-empty ((,class (:foreground ,comment))))
+ (gnus-group-mail-1 ((,class (:foreground nil :weight normal :inherit outline-1))))
+ (gnus-group-mail-2 ((,class (:foreground nil :weight normal :inherit outline-2))))
+ (gnus-group-mail-3 ((,class (:foreground nil :weight normal :inherit outline-3))))
+ (gnus-group-mail-4 ((,class (:foreground nil :weight normal :inherit outline-4))))
+ (gnus-group-mail-5 ((,class (:foreground nil :weight normal :inherit outline-5))))
+ (gnus-group-mail-6 ((,class (:foreground nil :weight normal :inherit outline-6))))
+ (gnus-group-mail-1-empty ((,class (:inherit gnus-group-mail-1 :foreground ,comment))))
+ (gnus-group-mail-2-empty ((,class (:inherit gnus-group-mail-2 :foreground ,comment))))
+ (gnus-group-mail-3-empty ((,class (:inherit gnus-group-mail-3 :foreground ,comment))))
+ (gnus-group-mail-4-empty ((,class (:inherit gnus-group-mail-4 :foreground ,comment))))
+ (gnus-group-mail-5-empty ((,class (:inherit gnus-group-mail-5 :foreground ,comment))))
+ (gnus-group-mail-6-empty ((,class (:inherit gnus-group-mail-6 :foreground ,comment))))
+ (gnus-group-news-1 ((,class (:foreground nil :weight normal :inherit outline-5))))
+ (gnus-group-news-2 ((,class (:foreground nil :weight normal :inherit outline-6))))
+ (gnus-group-news-3 ((,class (:foreground nil :weight normal :inherit outline-7))))
+ (gnus-group-news-4 ((,class (:foreground nil :weight normal :inherit outline-8))))
+ (gnus-group-news-5 ((,class (:foreground nil :weight normal :inherit outline-1))))
+ (gnus-group-news-6 ((,class (:foreground nil :weight normal :inherit outline-2))))
+ (gnus-group-news-1-empty ((,class (:inherit gnus-group-news-1 :foreground ,comment))))
+ (gnus-group-news-2-empty ((,class (:inherit gnus-group-news-2 :foreground ,comment))))
+ (gnus-group-news-3-empty ((,class (:inherit gnus-group-news-3 :foreground ,comment))))
+ (gnus-group-news-4-empty ((,class (:inherit gnus-group-news-4 :foreground ,comment))))
+ (gnus-group-news-5-empty ((,class (:inherit gnus-group-news-5 :foreground ,comment))))
+ (gnus-group-news-6-empty ((,class (:inherit gnus-group-news-6 :foreground ,comment))))
+
+ (erc-direct-msg-face ((,class (:foreground ,orange))))
+ (erc-error-face ((,class (:foreground ,red))))
+ (erc-header-face ((,class (:foreground ,foreground :background ,selection))))
+ (erc-input-face ((,class (:foreground ,green))))
+ (erc-keyword-face ((,class (:foreground ,yellow))))
+ (erc-current-nick-face ((,class (:foreground ,green))))
+ (erc-my-nick-face ((,class (:foreground ,green))))
+ (erc-nick-default-face ((,class (:weight normal :foreground ,purple))))
+ (erc-nick-msg-face ((,class (:weight normal :foreground ,yellow))))
+ (erc-notice-face ((,class (:foreground ,comment))))
+ (erc-pal-face ((,class (:foreground ,orange))))
+ (erc-prompt-face ((,class (:foreground ,blue))))
+ (erc-timestamp-face ((,class (:foreground ,aqua))))
+
+ (custom-variable-tag ((,class (:foreground ,blue))))
+ (custom-group-tag ((,class (:foreground ,blue))))
+ (custom-state ((,class (:foreground ,green))))
+ )))
+
+(defmacro color-theme-tomorrow--frame-parameter-specs ()
+ "Return a backquote which defines a list of frame parameter specs.
+
+These are required by color-theme's `color-theme-install', but
+not by the new `deftheme' mechanism. It expects to be evaluated
+in a scope in which the various color names to which it refers
+are bound."
+ (quote
+ `(((background-color . ,background)
+ (background-mode . light)
+ (border-color . ,foreground)
+ (cursor-color . ,purple)
+ (foreground-color . ,foreground)
+ (mouse-color . ,aqua)))))
+
+(defun color-theme-tomorrow--theme-name (mode)
+ (intern (format "tomorrow-%s" (symbol-name mode))))
+
+(defmacro color-theme-tomorrow--define-theme (mode)
+ "Define a theme for the tomorrow variant `MODE'."
+ (let ((name (color-theme-tomorrow--theme-name mode))
+ (doc (format "tomorrow-%s" mode)))
+ `(progn
+ (deftheme ,name ,doc)
+ (color-theme-tomorrow--with-colors
+ ',mode
+ (apply 'custom-theme-set-faces ',name
+ (color-theme-tomorrow--face-specs))
+ (custom-theme-set-variables
+ ',name
+ `(fci-rule-color ,current-line)
+ `(ansi-color-names-vector (vector ,foreground ,red ,green ,yellow ,blue ,purple ,aqua ,background))
+ '(ansi-color-faces-vector [default bold shadow italic underline bold bold-italic bold])))
+ (provide-theme ',name))))
+
+
+(defun color-theme-tomorrow-real (mode)
+ "Apply the tomorrow variant theme."
+ (if (fboundp 'load-theme)
+ (let ((name (color-theme-tomorrow--theme-name mode)))
+ (if (> emacs-major-version 23)
+ (load-theme name t)
+ (load-theme name)))
+ (progn
+ (require 'color-theme)
+ (color-theme-tomorrow--with-colors
+ mode
+ (color-theme-install
+ `(,(intern (concat "color-theme-tomorrow-" (symbol-name mode)))
+ ,@(color-theme-tomorrow--frame-parameter-specs)
+ ,@(color-theme-tomorrow--face-specs)))
+ ;; ansi-color - comint and other modes that handle terminal color escape sequences
+ (setq ansi-color-names-vector (vector foreground red green yellow blue purple aqua background))
+ (setq ansi-color-faces-vector [default bold shadow italic underline bold bold-italic bold])))))
+
+;;;###autoload
+(when (boundp 'custom-theme-load-path)
+ (add-to-list 'custom-theme-load-path
+ (file-name-as-directory (file-name-directory load-file-name))))
+
+;;;###autoload
+(defun color-theme-tomorrow-night ()
+ (interactive)
+ (color-theme-tomorrow-real 'night))
+
+;;;###autoload
+(defun color-theme-tomorrow ()
+ (interactive)
+ (color-theme-tomorrow-real 'day))
+
+;;;###autoload
+(defun color-theme-tomorrow-night-bright ()
+ (interactive)
+ (color-theme-tomorrow-real 'night-bright))
+
+;;;###autoload
+(defun color-theme-tomorrow-night-eighties ()
+ (interactive)
+ (color-theme-tomorrow-real 'night-eighties))
+
+;;;###autoload
+(defun color-theme-tomorrow-night-blue ()
+ (interactive)
+ (color-theme-tomorrow-real 'night-blue))
+
+
+(provide 'color-theme-tomorrow)
+
+;; Local Variables:
+;; byte-compile-warnings: (not cl-functions)
+;; End:
+
+;;; color-theme-tomorrow.el ends here
diff --git a/emacs/init.el b/emacs/init.el
index 8a49306..dc9dead 100644
--- a/emacs/init.el
+++ b/emacs/init.el
@@ -3,13 +3,9 @@
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
- '(custom-enabled-themes (quote (sanityinc-tomorrow-night)))
- '(custom-safe-themes
- (quote
- ("06f0b439b62164c6f8f84fdda32b62fb50b6d00e8b01c2208e55543a6337433a" default)))
'(package-selected-packages
(quote
- (helm-swoop evil-leader helm spaceline evil use-package))))
+ (helm-flyspell flycheck which-key helm-swoop evil-leader helm spaceline evil use-package))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
@@ -25,6 +21,8 @@
(package-refresh-contents)
(package-install 'use-package))
+;; packages ---------------------------------------------------------------------------------------
+
;; evil
(use-package evil-leader
:ensure t
@@ -37,6 +35,11 @@
(modify-syntax-entry ?_ "w")
)
+;; flycheck
+(use-package flycheck
+ :ensure t
+ :init (global-flycheck-mode))
+
;; helm
(use-package helm
:ensure t
@@ -45,6 +48,10 @@
(define-key helm-map (kbd "<tab>") #'helm-execute-persistent-action)
(define-key helm-map (kbd "C-z") #'helm-select-action)
)
+(use-package helm-flyspell
+ :ensure t
+ :init (flyspell-mode)
+ )
(use-package helm-swoop
:ensure t
)
@@ -71,13 +78,105 @@
(setq powerline-default-separator 'bar)
(spaceline-emacs-theme)
-;; theme
+;; which-key
+(use-package which-key
+ :ensure t
+ :config
+ (setq which-key-popup-type 'minibuffer)
+ (setq which-key-allow-evil-operators t)
+ )
+(which-key-mode)
+
+;; theme ------------------------------------------------------------------------------------------
+
(menu-bar-mode -1)
(tool-bar-mode -1)
(toggle-scroll-bar -1)
-(color-theme-sanityinc-tomorrow-night)
+;; TODO: color theme
+
+(setq-default left-margin-width 0 right-margin-width 0)
-;; keybindings
+(load-file "~/source/dotfiles/emacs/color-theme-tomorrow.el")
+(color-theme-tomorrow-night)
+(set-face-attribute 'helm-selection nil
+ :background "#373b41"
+ :foreground "#c5c8c6")
+
+;;; functions -------------------------------------------------------------------------------------
+
+(defun flyspell-goto-previous-error (arg)
+ "Go to arg previous spelling error."
+ (interactive "p")
+ (while (not (= 0 arg))
+ (let ((pos (point))
+ (min (point-min)))
+ (if (and (eq (current-buffer) flyspell-old-buffer-error)
+ (eq pos flyspell-old-pos-error))
+ (progn
+ (if (= flyspell-old-pos-error min)
+ ;; goto beginning of buffer
+ (progn
+ (message "Restarting from end of buffer")
+ (goto-char (point-max)))
+ (backward-word 1))
+ (setq pos (point))))
+ ;; seek the next error
+ (while (and (> pos min)
+ (let ((ovs (overlays-at pos))
+ (r '()))
+ (while (and (not r) (consp ovs))
+ (if (flyspell-overlay-p (car ovs))
+ (setq r t)
+ (setq ovs (cdr ovs))))
+ (not r)))
+ (backward-word 1)
+ (setq pos (point)))
+ ;; save the current location for next invocation
+ (setq arg (1- arg))
+ (setq flyspell-old-pos-error pos)
+ (setq flyspell-old-buffer-error (current-buffer))
+ (goto-char pos)
+ (if (= pos min)
+ (progn
+ (message "No more miss-spelled word!")
+ (setq arg 0))))))
+
+(defun check-previous-spelling-error ()
+ "Jump to previous spelling error and correct it"
+ (interactive)
+ (push-mark-no-activate)
+ (flyspell-goto-previous-error 1)
+ (call-interactively 'helm-flyspell-correct))
+
+(defun check-next-spelling-error ()
+ "Jump to next spelling error and correct it"
+ (interactive)
+ (push-mark-no-activate)
+ (flyspell-buffer)
+ (flyspell-goto-next-error)
+ (call-interactively 'helm-flyspell-correct))
+
+(defun push-mark-no-activate ()
+ "Pushes `point' to `mark-ring' and does not activate the region
+ Equivalent to \\[set-mark-command] when \\[transient-mark-mode] is disabled"
+ (interactive)
+ (push-mark (point) t nil)
+ (message "Pushed mark to ring"))
+
+;;; hooks -----------------------------------------------------------------------------------------
+
+(add-hook 'text-mode-hook 'flyspell-mode)
+
+;; keybindings ------------------------------------------------------------------------------------
+
+(evil-leader/set-key "b" 'org-brain-visualize)
(evil-leader/set-key "f" 'helm-find-files)
+(evil-leader/set-key "j" 'dired-jump)
+(evil-leader/set-key "k" 'kill-buffer)
(evil-leader/set-key "m" 'helm-mini)
-(evil-leader/set-key "b" 'org-brain-visualize)
+(evil-leader/set-key "q" 'save-buffers-kill-terminal)
+(evil-leader/set-key "s" 'check-next-spelling-error)
+(evil-leader/set-key "t" 'color-theme-tomorrow-night)
+(evil-leader/set-key "T" 'color-theme-tomorrow)
+(evil-leader/set-key "x" 'helm-M-x)
+(evil-leader/set-key "," 'other-window)
diff --git a/emacs/tomorrow-day-theme.el b/emacs/tomorrow-day-theme.el
new file mode 100644
index 0000000..58761dd
--- /dev/null
+++ b/emacs/tomorrow-day-theme.el
@@ -0,0 +1,2 @@
+(require 'color-theme-tomorrow)
+(color-theme-tomorrow--define-theme day)
diff --git a/emacs/tomorrow-night-blue-theme.el b/emacs/tomorrow-night-blue-theme.el
new file mode 100644
index 0000000..32ffdde
--- /dev/null
+++ b/emacs/tomorrow-night-blue-theme.el
@@ -0,0 +1,2 @@
+(require 'color-theme-tomorrow)
+(color-theme-tomorrow--define-theme night-blue)
diff --git a/emacs/tomorrow-night-bright-theme.el b/emacs/tomorrow-night-bright-theme.el
new file mode 100644
index 0000000..c1be97e
--- /dev/null
+++ b/emacs/tomorrow-night-bright-theme.el
@@ -0,0 +1,2 @@
+(require 'color-theme-tomorrow)
+(color-theme-tomorrow--define-theme night-bright)
diff --git a/emacs/tomorrow-night-eighties-theme.el b/emacs/tomorrow-night-eighties-theme.el
new file mode 100644
index 0000000..4818341
--- /dev/null
+++ b/emacs/tomorrow-night-eighties-theme.el
@@ -0,0 +1,2 @@
+(require 'color-theme-tomorrow)
+(color-theme-tomorrow--define-theme night-eighties)
diff --git a/emacs/tomorrow-night-theme.el b/emacs/tomorrow-night-theme.el
new file mode 100644
index 0000000..67c9a25
--- /dev/null
+++ b/emacs/tomorrow-night-theme.el
@@ -0,0 +1,2 @@
+(require 'color-theme-tomorrow)
+(color-theme-tomorrow--define-theme night)