   "Contrast level for the theme background."
   :options '(soft medium hard))
 
-(deftheme gruvbox "A retro-groove colour theme")
-(let* ((gruvbox-dark0_hard  (if (display-graphic-p) "#1d2021" "color-234"))
-      (gruvbox-dark0       (if (display-graphic-p) "#282828" "color-235"))
-      (gruvbox-dark0_soft  (if (display-graphic-p) "#32302f" "color-236"))
-      (gruvbox-dark1       (if (display-graphic-p) "#3c3836" "color-237"))
-      (gruvbox-dark2       (if (display-graphic-p) "#504945" "color-239"))
-      (gruvbox-dark3       (if (display-graphic-p) "#665c54" "color-241"))
-      (gruvbox-dark4       (if (display-graphic-p) "#7c6f64" "color-243"))
-
-      (gruvbox-medium      (if (display-graphic-p) "#928374" "color-245")) ;; or 244
-
-      (gruvbox-light0_hard (if (display-graphic-p) "#f9f5d7" "color-230"))
-      (gruvbox-light0      (if (display-graphic-p) "#fbf1c7" "color-229"))
-      (gruvbox-light0_soft (if (display-graphic-p) "#f2e5bc" "color-228"))
-      (gruvbox-light1      (if (display-graphic-p) "#ebdbb2" "color-223"))
-      (gruvbox-light2      (if (display-graphic-p) "#d5c4a1" "color-250"))
-      (gruvbox-light3      (if (display-graphic-p) "#bdae93" "color-248"))
-      (gruvbox-light4      (if (display-graphic-p) "#a89984" "color-246"))
-
-      (gruvbox-bright_red     (if (display-graphic-p) "#fb4934" "color-167"))
-      (gruvbox-bright_green   (if (display-graphic-p) "#b8bb26" "color-142"))
-      (gruvbox-bright_yellow  (if (display-graphic-p) "#fabd2f" "color-214"))
-      (gruvbox-bright_blue    (if (display-graphic-p) "#83a598" "color-109"))
-      (gruvbox-bright_purple  (if (display-graphic-p) "#d3869b" "color-175"))
-      (gruvbox-bright_aqua    (if (display-graphic-p) "#8ec07c" "color-108"))
-      (gruvbox-bright_orange  (if (display-graphic-p) "#fe8019" "color-208"))
-
-      ;; neutral, no 256-color code, requested, nice work-around meanwhile
-      (gruvbox-neutral_red    (if (display-graphic-p) "#cc241d" "#d75f5f"))
-      (gruvbox-neutral_green  (if (display-graphic-p) "#98971a" "#afaf00"))
-      (gruvbox-neutral_yellow (if (display-graphic-p) "#d79921" "#ffaf00"))
-      (gruvbox-neutral_blue   (if (display-graphic-p) "#458588" "#87afaf"))
-      (gruvbox-neutral_purple (if (display-graphic-p) "#b16286" "#d787af"))
-      (gruvbox-neutral_aqua   (if (display-graphic-p) "#689d6a" "#87af87"))
-      (gruvbox-neutral_orange (if (display-graphic-p) "#d65d0e" "#ff8700"))
-
-      (gruvbox-faded_red      (if (display-graphic-p) "#9d0006" "color-88"))
-      (gruvbox-faded_green    (if (display-graphic-p) "#79740e" "color-100"))
-      (gruvbox-faded_yellow   (if (display-graphic-p) "#b57614" "color-136"))
-      (gruvbox-faded_blue     (if (display-graphic-p) "#076678" "color-24"))
-      (gruvbox-faded_purple   (if (display-graphic-p) "#8f3f71" "color-96"))
-      (gruvbox-faded_aqua     (if (display-graphic-p) "#427b58" "color-66"))
-      (gruvbox-faded_orange   (if (display-graphic-p) "#af3a03" "color-130"))
-
-      (gruvbox-dark_red        (if (display-graphic-p) "#421E1E" "color-52"))
-      (gruvbox-dark_blue       (if (display-graphic-p) "#2B3C44" "color-4"))
-      (gruvbox-dark_aqua       (if (display-graphic-p) "#36473A" "color-23"))
-
-      (gruvbox-delimiter-one    (if (display-graphic-p) "#458588" "color-30"))
-      (gruvbox-delimiter-two    (if (display-graphic-p) "#b16286" "color-168"))
-      (gruvbox-delimiter-three  (if (display-graphic-p) "#8ec07c" "color-108"))
-      (gruvbox-delimiter-four   (if (display-graphic-p) "#d65d0e" "color-166"))
-      (gruvbox-white            (if (display-graphic-p) "#FFFFFF" "white"))
-      (gruvbox-black            (if (display-graphic-p) "#000000" "black"))
-      (gruvbox-sienna           (if (display-graphic-p) "#DD6F48" "sienna"))
-      (gruvbox-darkslategray4   (if (display-graphic-p) "#528B8B" "DarkSlateGray4"))
-      (gruvbox-lightblue4       (if (display-graphic-p) "#66999D" "LightBlue4"))
-      (gruvbox-burlywood4       (if (display-graphic-p) "#BBAA97" "burlywood4"))
-      (gruvbox-aquamarine4      (if (display-graphic-p) "#83A598" "aquamarine4"))
-      (gruvbox-turquoise4       (if (display-graphic-p) "#61ACBB" "turquoise4"))
-
-      (gruvbox-bg (cl-case gruvbox-contrast
-        (hard gruvbox-dark0_hard)
-        (soft gruvbox-dark0_soft)
-        ;; Medium by default.
-        (t    gruvbox-dark0))))
-
-  (custom-theme-set-faces
-    'gruvbox
-
-    ;; UI
-    `(default                           ((t (:background ,gruvbox-bg :foreground ,gruvbox-light0))))
-    `(cursor                            ((t (:background ,gruvbox-light0))))
-    `(mode-line                         ((t (:box nil :background ,gruvbox-dark2 :foreground ,gruvbox-light2))))
-    `(mode-line-inactive                ((t (:box nil :background ,gruvbox-dark1 :foreground ,gruvbox-light4))))
-    `(fringe                            ((t (:background ,gruvbox-bg))))
-    `(linum                             ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(hl-line                           ((t (:background ,gruvbox-dark1))))
-    `(region                            ((t (:background ,gruvbox-dark2)))) ;;selection
-    `(secondary-selection               ((t (:background ,gruvbox-dark1))))
-    `(minibuffer-prompt                 ((t (:background ,gruvbox-bg :foreground ,gruvbox-neutral_green :bold t))))
-    `(vertical-border                   ((t (:foreground ,gruvbox-dark2))))
-    `(link                              ((t (:foreground ,gruvbox-faded_blue :underline t))))
-    `(shadow                            ((t (:foreground ,gruvbox-dark4))))
-
-    ;; Built-in syntax
-    `(font-lock-builtin-face            ((t (:foreground ,gruvbox-neutral_orange))))
-    `(font-lock-constant-face           ((t (:foreground ,gruvbox-neutral_purple))))
-    `(font-lock-comment-face            ((t (:foreground ,gruvbox-dark4))))
-    `(font-lock-function-name-face      ((t (:foreground ,gruvbox-neutral_yellow))))
-    `(font-lock-keyword-face            ((t (:foreground ,gruvbox-neutral_red))))
-    `(font-lock-string-face             ((t (:foreground ,gruvbox-neutral_green))))
-    `(font-lock-variable-name-face      ((t (:foreground ,gruvbox-neutral_blue))))
-    `(font-lock-type-face               ((t (:foreground ,gruvbox-neutral_purple))))
-    `(font-lock-warning-face            ((t (:foreground ,gruvbox-neutral_red :bold t))))
-
-    ;; whitespace-mode
-    `(whitespace-space                  ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(whitespace-hspace                 ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(whitespace-tab                    ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(whitespace-newline                ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(whitespace-trailing               ((t (:background ,gruvbox-dark1 :foreground ,gruvbox-neutral_red))))
-    `(whitespace-line                   ((t (:background ,gruvbox-dark1 :foreground ,gruvbox-neutral_red))))
-    `(whitespace-space-before-tab       ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(whitespace-indentation            ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-    `(whitespace-empty                  ((t (:background nil :foreground nil))))
-    `(whitespace-space-after-tab        ((t (:background ,gruvbox-bg :foreground ,gruvbox-dark4))))
-
-    ;; RainbowDelimiters
-    `(rainbow-delimiters-depth-1-face   ((t (:foreground ,gruvbox-delimiter-one))))
-    `(rainbow-delimiters-depth-2-face   ((t (:foreground ,gruvbox-delimiter-two))))
-    `(rainbow-delimiters-depth-3-face   ((t (:foreground ,gruvbox-delimiter-three))))
-    `(rainbow-delimiters-depth-4-face   ((t (:foreground ,gruvbox-delimiter-four))))
-    `(rainbow-delimiters-depth-5-face   ((t (:foreground ,gruvbox-delimiter-one))))
-    `(rainbow-delimiters-depth-6-face   ((t (:foreground ,gruvbox-delimiter-two))))
-    `(rainbow-delimiters-depth-7-face   ((t (:foreground ,gruvbox-delimiter-three))))
-    `(rainbow-delimiters-depth-8-face   ((t (:foreground ,gruvbox-delimiter-four))))
-    `(rainbow-delimiters-depth-9-face   ((t (:foreground ,gruvbox-delimiter-one))))
-    `(rainbow-delimiters-depth-10-face  ((t (:foreground ,gruvbox-delimiter-two))))
-    `(rainbow-delimiters-depth-11-face  ((t (:foreground ,gruvbox-delimiter-three))))
-    `(rainbow-delimiters-depth-12-face  ((t (:foreground ,gruvbox-delimiter-four))))
-    `(rainbow-delimiters-unmatched-face ((t (:background nil :foreground ,gruvbox-light0))))
-
-    ;; linum-relative
-    `(linum-relative-current-face       ((t (:background ,gruvbox-dark1 :foreground ,gruvbox-light4))))
-
-    ;; Highlight indentation mode
-    `(highlight-indentation-current-column-face ((t (:background ,gruvbox-dark2 ))))
-    `(highlight-indentation-face                ((t (:background ,gruvbox-dark1 ))))
-
-    ;; Smartparens
-    `(sp-pair-overlay-face              ((t (:background ,gruvbox-dark2))))
-    ;`(sp-wrap-overlay-face             ((t (:inherit sp-wrap-overlay-face))))
-    ;`(sp-wrap-tag-overlay-face         ((t (:inherit sp-wrap-overlay-face))))
-    `(sp-show-pair-match-face           ((t (:background ,gruvbox-dark2)))) ;; Pair tags highlight
-    `(sp-show-pair-mismatch-face        ((t (:background ,gruvbox-neutral_red)))) ;; Highlight for bracket without pair
-
-    ;; elscreen
-    `(elscreen-tab-background-face      ((t (:box nil :background ,gruvbox-bg)))) ;; Tab bar, not the tabs
-    `(elscreen-tab-control-face         ((t (:box nil :background ,gruvbox-dark2 :foreground ,gruvbox-neutral_red :underline nil)))) ;; The controls
-    `(elscreen-tab-current-screen-face  ((t (:box nil :background ,gruvbox-dark4 :foreground ,gruvbox-dark0)))) ;; Current tab
-    `(elscreen-tab-other-screen-face    ((t (:box nil :background ,gruvbox-dark2 :foreground ,gruvbox-light4 :underline nil)))) ;; Inactive tab
-
-    ;; ag (The Silver Searcher)
-    `(ag-hit-face                       ((t (:foreground ,gruvbox-neutral_blue))))
-    `(ag-match-face                     ((t (:foreground ,gruvbox-neutral_red))))
-
-    ;; Diffs
-    `(diff-changed                      ((t (:background nil :foreground ,gruvbox-light1))))
-    `(diff-added                        ((t (:background nil :foreground ,gruvbox-neutral_green))))
-    `(diff-removed                      ((t (:background nil :foreground ,gruvbox-neutral_red))))
-    `(diff-indicator-changed            ((t (:inherit diff-changed))))
-    `(diff-indicator-added              ((t (:inherit diff-added))))
-    `(diff-indicator-removed            ((t (:inherit diff-removed))))
-
-    `(js2-warning                       ((t (:underline (:color ,gruvbox-bright_yellow :style wave)))))
-    `(js2-error                         ((t (:underline (:color ,gruvbox-bright_red :style wave)))))
-    `(js2-external-variable             ((t (:underline (:color ,gruvbox-bright_aqua :style wave)))))
-    `(js2-jsdoc-tag                     ((t (:background nil :foreground ,gruvbox-medium ))))
-    `(js2-jsdoc-type                    ((t (:background nil :foreground ,gruvbox-light4 ))))
-    `(js2-jsdoc-value                   ((t (:background nil :foreground ,gruvbox-light3 ))))
-    `(js2-function-param                ((t (:background nil :foreground ,gruvbox-bright_aqua ))))
-    `(js2-function-call                 ((t (:background nil :foreground ,gruvbox-bright_blue ))))
-    `(js2-instance-member               ((t (:background nil :foreground ,gruvbox-bright_orange ))))
-    `(js2-private-member                ((t (:background nil :foreground ,gruvbox-faded_yellow ))))
-    `(js2-private-function-call         ((t (:background nil :foreground ,gruvbox-faded_aqua ))))
-    `(js2-jsdoc-html-tag-name           ((t (:background nil :foreground ,gruvbox-light4 ))))
-    `(js2-jsdoc-html-tag-delimiter      ((t (:background nil :foreground ,gruvbox-light3 ))))
-
-
-    ;; popup
-    `(popup-face                                ((t (:foreground ,gruvbox-light1 :background ,gruvbox-dark1))))
-    `(popup-menu-mouse-face                     ((t (:foreground ,gruvbox-light0 :background ,gruvbox-faded_green))))
-    `(popup-menu-selection-face                 ((t (:foreground ,gruvbox-light0 :background ,gruvbox-faded_green))))
-    `(popup-tip-face                            ((t (:foreground ,gruvbox-light2 :background ,gruvbox-dark2))))
-
-
-    ;; helm
-    `(helm-M-x-key                              ((t ( :foreground ,gruvbox-neutral_orange  ))))
-    `(helm-action                               ((t ( :foreground ,gruvbox-white :underline t ))))
-    `(helm-bookmark-addressbook                 ((t ( :foreground ,gruvbox-neutral_red ))))
-    `(helm-bookmark-directory                   ((t ( :foreground ,gruvbox-bright_purple ))))
-    `(helm-bookmark-file                        ((t ( :foreground ,gruvbox-faded_blue ))))
-    `(helm-bookmark-gnus                        ((t ( :foreground ,gruvbox-faded_purple ))))
-    `(helm-bookmark-info                        ((t ( :foreground ,gruvbox-turquoise4 ))))
-    `(helm-bookmark-man                         ((t ( :foreground ,gruvbox-sienna ))))
-    `(helm-bookmark-w3m                         ((t ( :foreground ,gruvbox-neutral_yellow ))))
-    `(helm-buffer-directory                     ((t ( :foreground ,gruvbox-white         :background ,gruvbox-bright_blue  ))))
-    `(helm-buffer-not-saved                     ((t ( :foreground ,gruvbox-faded_red ))))
-    `(helm-buffer-process                       ((t ( :foreground ,gruvbox-burlywood4 ))))
-    `(helm-buffer-saved-out                     ((t ( :foreground ,gruvbox-bright_red ))))
-    `(helm-buffer-size                          ((t ( :foreground ,gruvbox-bright_purple ))))
-    `(helm-candidate-number                     ((t ( :foreground ,gruvbox-neutral_green ))))
-    `(helm-ff-directory                         ((t ( :foreground ,gruvbox-neutral_purple ))))
-    `(helm-ff-executable                        ((t ( :foreground ,gruvbox-turquoise4  ))))
-    `(helm-ff-file                              ((t ( :foreground ,gruvbox-sienna ))))
-    `(helm-ff-invalid-symlink                   ((t ( :foreground ,gruvbox-white         :background ,gruvbox-bright_red   ))))
-    `(helm-ff-prefix                            ((t ( :foreground ,gruvbox-black         :background ,gruvbox-neutral_yellow))))
-    `(helm-ff-symlink                           ((t ( :foreground ,gruvbox-neutral_orange ))))
-    `(helm-grep-cmd-line                        ((t ( :foreground ,gruvbox-neutral_green ))))
-    `(helm-grep-file                            ((t ( :foreground ,gruvbox-faded_purple ))))
-    `(helm-grep-finish                          ((t ( :foreground ,gruvbox-turquoise4 ))))
-    `(helm-grep-lineno                          ((t ( :foreground ,gruvbox-neutral_orange ))))
-    `(helm-grep-match                           ((t ( :foreground ,gruvbox-neutral_yellow ))))
-    `(helm-grep-running                         ((t ( :foreground ,gruvbox-neutral_red ))))
-    `(helm-header                               ((t ( :foreground ,gruvbox-aquamarine4 ))))
-    `(helm-helper                               ((t ( :foreground ,gruvbox-aquamarine4 ))))
-    `(helm-history-deleted                      ((t ( :foreground ,gruvbox-black         :background ,gruvbox-bright_red   ))))
-    `(helm-history-remote                       ((t ( :foreground ,gruvbox-faded_red ))))
-    `(helm-lisp-completion-info                 ((t ( :foreground ,gruvbox-faded_orange ))))
-    `(helm-lisp-show-completion                 ((t ( :foreground ,gruvbox-bright_red ))))
-    `(helm-locate-finish                        ((t ( :foreground ,gruvbox-white         :background ,gruvbox-aquamarine4  ))))
-    `(helm-match                                ((t ( :foreground ,gruvbox-neutral_orange ))))
-    `(helm-moccur-buffer                        ((t ( :foreground ,gruvbox-bright_aqua :underline t                          ))))
-    `(helm-prefarg                              ((t ( :foreground ,gruvbox-turquoise4 ))))
-    `(helm-selection                            ((t ( :foreground ,gruvbox-white         :background ,gruvbox-dark2        ))))
-    `(helm-selection-line                       ((t ( :foreground ,gruvbox-white         :background ,gruvbox-dark2        ))))
-    `(helm-separator                            ((t ( :foreground ,gruvbox-faded_red ))))
-    `(helm-source-header                        ((t ( :foreground ,gruvbox-light2 ))))
-    `(helm-visible-mark                         ((t ( :foreground ,gruvbox-black         :background ,gruvbox-light3       ))))
-
-    ;; company-mode
-    `(company-scrollbar-bg              ((t (:background ,gruvbox-dark1))))
-    `(company-scrollbar-fg              ((t (:background ,gruvbox-dark0_soft))))
-    `(company-tooltip                   ((t (:background ,gruvbox-dark0_soft))))
-    `(company-tooltip-annotation        ((t (:foreground ,gruvbox-neutral_green))))
-    `(company-tooltip-selection         ((t (:foreground ,gruvbox-neutral_purple))))
-    `(company-tooltip-common            ((t (:foreground ,gruvbox-neutral_blue :underline t))))
-    `(company-tooltip-common-selection  ((t (:foreground ,gruvbox-neutral_blue :underline t))))
-    `(company-preview-common            ((t (:foreground ,gruvbox-neutral_purple))))
-
-    ;; Term
-    `(term-color-black                  ((t (:foreground ,gruvbox-dark1))))
-    `(term-color-blue                   ((t (:foreground ,gruvbox-neutral_blue))))
-    `(term-color-cyan                   ((t (:foreground ,gruvbox-neutral_aqua))))
-    `(term-color-green                  ((t (:foreground ,gruvbox-neutral_green))))
-    `(term-color-magenta                ((t (:foreground ,gruvbox-neutral_purple))))
-    `(term-color-red                    ((t (:foreground ,gruvbox-neutral_red))))
-    `(term-color-white                  ((t (:foreground ,gruvbox-light1))))
-    `(term-color-yellow                 ((t (:foreground ,gruvbox-neutral_yellow))))
-    `(term-default-fg-color             ((t (:foreground ,gruvbox-light0))))
-    `(term-default-bg-color             ((t (:background ,gruvbox-bg))))
-
-    ;; message-mode
-    `(message-header-to                 ((t (:inherit font-lock-variable-name-face))))
-    `(message-header-cc                 ((t (:inherit font-lock-variable-name-face))))
-    `(message-header-subject            ((t (:foreground ,gruvbox-neutral_orange :weight bold))))
-    `(message-header-newsgroups         ((t (:foreground ,gruvbox-neutral_yellow :weight bold))))
-    `(message-header-other              ((t (:inherit font-lock-variable-name-face))))
-    `(message-header-name               ((t (:inherit font-lock-keyword-face))))
-    `(message-header-xheader            ((t (:foreground ,gruvbox-faded_blue))))
-    `(message-separator                 ((t (:inherit font-lock-comment-face))))
-    `(message-cited-text                ((t (:inherit font-lock-comment-face))))
-    `(message-mml                       ((t (:foreground ,gruvbox-faded_green :weight bold))))
-
-    ;; org-mode
-    `(org-hide                          ((t (:foreground ,gruvbox-dark0))))
-    `(org-level-1                       ((t (:foreground ,gruvbox-neutral_blue))))
-    `(org-level-2                       ((t (:foreground ,gruvbox-neutral_yellow))))
-    `(org-level-3                       ((t (:foreground ,gruvbox-neutral_purple))))
-    `(org-level-4                       ((t (:foreground ,gruvbox-neutral_red))))
-    `(org-level-5                       ((t (:foreground ,gruvbox-neutral_green))))
-    `(org-level-6                       ((t (:foreground ,gruvbox-neutral_aqua))))
-    `(org-level-7                       ((t (:foreground ,gruvbox-faded_blue))))
-    `(org-level-8                       ((t (:foreground ,gruvbox-neutral_orange))))
-    `(org-special-keyword               ((t (:inherit font-lock-comment-face))))
-    `(org-drawer                        ((t (:inherit font-lock-function-face))))
-    `(org-column                        ((t (:background ,gruvbox-dark0))))
-    `(org-column-title                  ((t (:background ,gruvbox-dark0 :underline t :weight bold))))
-    `(org-warning                       ((t (:bold t :foreground ,gruvbox-neutral_red :weight bold :underline nil))))
-    `(org-archived                      ((t (:foreground ,gruvbox-light0 :weight bold))))
-    `(org-link                          ((t (:foreground ,gruvbox-faded_aqua :underline t))))
-    `(org-footnote                      ((t (:foreground ,gruvbox-neutral_aqua :underline t))))
-    `(org-ellipsis                      ((t (:foreground ,gruvbox-light4 :underline t))))
-    `(org-date                          ((t (:foreground ,gruvbox-neutral_blue :underline t))))
-    `(org-sexp-date                     ((t (:foreground ,gruvbox-faded_blue :underline t))))
-    `(org-tag                           ((t (:bold t :weight bold))))
-    `(org-list-dt                       ((t (:bold t :weight bold))))
-    `(org-todo                          ((t (:bold t :foreground ,gruvbox-neutral_red :weight bold))))
-    `(org-done                          ((t (:bold t :foreground ,gruvbox-neutral_aqua :weight bold))))
-    `(org-agenda-done                   ((t (:foreground ,gruvbox-neutral_aqua))))
-    `(org-headline-done                 ((t (:foreground ,gruvbox-neutral_aqua))))
-    `(org-table                         ((t (:foreground ,gruvbox-neutral_blue))))
-    `(org-formula                       ((t (:foreground ,gruvbox-neutral_yellow))))
-    `(org-document-title                ((t (:foreground ,gruvbox-faded_blue))))
-    `(org-document-info                 ((t (:foreground ,gruvbox-faded_blue))))
-    `(org-agenda-structure              ((t (:inherit font-lock-comment-face))))
-    `(org-agenda-date-today             ((t (:foreground ,gruvbox-light0 :weight bold :italic t))))
-    `(org-scheduled                     ((t (:foreground ,gruvbox-neutral_yellow))))
-    `(org-scheduled-today               ((t (:foreground ,gruvbox-neutral_blue))))
-    `(org-scheduled-previously          ((t (:foreground ,gruvbox-faded_red))))
-    `(org-upcoming-deadline             ((t (:inherit font-lock-keyword-face))))
-    `(org-deadline-announce             ((t (:foreground ,gruvbox-faded_red))))
-    `(org-time-grid                     ((t (:foreground ,gruvbox-faded_orange))))
-
-    ;; org-habit
-    `(org-habit-clear-face              ((t (:background ,gruvbox-faded_blue))))
-    `(org-habit-clear-future-face       ((t (:background ,gruvbox-neutral_blue))))
-    `(org-habit-ready-face              ((t (:background ,gruvbox-faded_green))))
-    `(org-habit-ready-future-face       ((t (:background ,gruvbox-neutral_green))))
-    `(org-habit-alert-face              ((t (:background ,gruvbox-faded_yellow))))
-    `(org-habit-alert-future-face       ((t (:background ,gruvbox-neutral_yellow))))
-    `(org-habit-overdue-face            ((t (:background ,gruvbox-faded_red))))
-    `(org-habit-overdue-future-face     ((t (:background ,gruvbox-neutral_red))))
-
-    ;; elfeed
-    `(elfeed-search-title-face          ((t (:foreground ,gruvbox-medium))))
-    `(elfeed-search-unread-title-face   ((t (:foreground ,gruvbox-light0))))
-    `(elfeed-search-date-face           ((t (:inherit font-lock-builtin-face :underline t))))
-    `(elfeed-search-feed-face           ((t (:inherit font-lock-variable-name-face))))
-    `(elfeed-search-tag-face            ((t (:inherit font-lock-keyword-face))))
-    `(elfeed-search-last-update-face    ((t (:inherit font-lock-comment-face))))
-    `(elfeed-search-unread-count-face   ((t (:inherit font-lock-comment-face))))
-    `(elfeed-search-filter-face         ((t (:inherit font-lock-string-face))))
-
-    ;; Smart-mode-line
-    `(sml/global            ((t (:foreground ,gruvbox-burlywood4 :inverse-video nil))))
-    `(sml/modes             ((t (:foreground ,gruvbox-bright_green))))
-    `(sml/filename          ((t (:foreground ,gruvbox-bright_red :weight bold))))
-    `(sml/prefix            ((t (:foreground ,gruvbox-light1))))
-    `(sml/read-only         ((t (:foreground ,gruvbox-neutral_blue))))
-    `(persp-selected-face   ((t (:foreground ,gruvbox-neutral_orange))))
-
-        ;;isearch
-    `(isearch                       ((t (:foreground ,gruvbox-black :background ,gruvbox-neutral_orange))))
-    `(lazy-highlight           ((t (:foreground ,gruvbox-black :background ,gruvbox-neutral_yellow))))
-    `(isearch-fail                  ((t (:foreground ,gruvbox-light0 :background ,gruvbox-bright_red))))
-
-    ;; markdown-mode
-    `(markdown-header-face-1                       ((t (:foreground ,gruvbox-neutral_blue))))
-    `(markdown-header-face-2                       ((t (:foreground ,gruvbox-neutral_yellow))))
-    `(markdown-header-face-3                       ((t (:foreground ,gruvbox-neutral_purple))))
-    `(markdown-header-face-4                       ((t (:foreground ,gruvbox-neutral_red))))
-    `(markdown-header-face-5                       ((t (:foreground ,gruvbox-neutral_green))))
-    `(markdown-header-face-6                       ((t (:foreground ,gruvbox-neutral_aqua))))
-
-    ;; anzu-mode
-    `(anzu-mode-line        ((t (:foreground ,gruvbox-bright_yellow :weight bold))))
-    `(anzu-match-1          ((t (:background ,gruvbox-bright_green))))
-    `(anzu-match-2          ((t (:background ,gruvbox-faded_yellow))))
-    `(anzu-match-3          ((t (:background ,gruvbox-aquamarine4))))
-    `(anzu-replace-to       ((t (:foreground ,gruvbox-bright_yellow))))
-    `(anzu-replace-highlight ((t (:inherit isearch))))
-
-    ;; Ace-jump-mode
-    `(ace-jump-face-background  ((t (:foreground ,gruvbox-light4 :background ,gruvbox-bg :inverse-video nil))))
-    `(ace-jump-face-foreground  ((t (:foreground ,gruvbox-bright_red :background ,gruvbox-bg :inverse-video nil :box 1))))
-
-    ;; Ace-window
-    `(aw-background-face        ((t (:forground  ,gruvbox-light1 :background ,gruvbox-bg :inverse-video nil))))
-    `(aw-leading-char-face ((t (:foreground ,gruvbox-bright_orange :background ,gruvbox-bg :height 4.0 :box (:line-width 1 :color ,gruvbox-bright_orange)))))
-
-    ;; show-paren
-    `(show-paren-match      ((t (:background ,gruvbox-dark3 :weight bold))))
-    `(show-paren-mismatch   ((t (:background ,gruvbox-bright_red :foreground ,gruvbox-dark3 :weight bold))))
-
-    ;; MODE SUPPORT: dired+
-    `(diredp-file-name                          ((t (:foreground ,gruvbox-light2 ))))
-    `(diredp-file-suffix                        ((t (:foreground ,gruvbox-light4 ))))
-    `(diredp-compressed-file-suffix             ((t (:foreground ,gruvbox-faded_blue ))))
-    `(diredp-dir-name                           ((t (:foreground ,gruvbox-faded_blue ))))
-    `(diredp-dir-heading                        ((t (:foreground ,gruvbox-bright_blue ))))
-    `(diredp-symlink                            ((t (:foreground ,gruvbox-bright_orange ))))
-    `(diredp-date-time                          ((t (:foreground ,gruvbox-light3 ))))
-    `(diredp-number                             ((t (:foreground ,gruvbox-faded_blue ))))
-    `(diredp-no-priv                            ((t (:foreground ,gruvbox-dark4 ))))
-    `(diredp-other-priv                         ((t (:foreground ,gruvbox-dark2 ))))
-    `(diredp-rare-priv                          ((t (:foreground ,gruvbox-dark4 ))))
-    `(diredp-ignored-file-name                  ((t (:foreground ,gruvbox-dark4 ))))
-
-    `(diredp-dir-priv                           ((t (:foreground ,gruvbox-faded_blue  :background ,gruvbox-dark_blue))))
-    `(diredp-exec-priv                          ((t (:foreground ,gruvbox-faded_blue  :background ,gruvbox-dark_blue))))
-    `(diredp-link-priv                          ((t (:foreground ,gruvbox-faded_aqua  :background ,gruvbox-dark_aqua))))
-    `(diredp-read-priv                          ((t (:foreground ,gruvbox-bright_red  :background ,gruvbox-dark_red))))
-    `(diredp-write-priv                         ((t (:foreground ,gruvbox-bright_aqua :background ,gruvbox-dark_aqua))))
-
-)
-
-
-(custom-theme-set-variables
-  'gruvbox
-
-  `(ansi-color-names-vector [,gruvbox-dark1 ,gruvbox-neutral_red
-    ,gruvbox-neutral_green ,gruvbox-neutral_yellow ,gruvbox-neutral_blue
-    ,gruvbox-neutral_purple ,gruvbox-neutral_aqua ,gruvbox-light1])))
+(autothemer-deftheme
+ gruvbox
+ "A retro-groove colour theme"
+
+ ((((class color) (min-colors #xFFFFFF)) ;; color column 1 GUI/24bit
+   ((class color) (min-colors #xFF)))    ;; color column 2 Xterm/256
+
+  (gruvbox-dark0_hard     "#1d2021" "#1c1c1c")
+  (gruvbox-dark0          "#282828" "#262626")
+  (gruvbox-dark0_soft     "#32302f" "#303030")
+  (gruvbox-dark1          "#3c3836" "#3a3a3a")
+  (gruvbox-dark2          "#504945" "#4e4e4e")
+  (gruvbox-dark3          "#665c54" "#626262")
+  (gruvbox-dark4          "#7c6f64" "#767676")
+
+  (gruvbox-medium         "#928374" "#8a8a8a")
+
+  (gruvbox-light0_hard    "#f9f5d7" "#ffffdf")
+  (gruvbox-light0         "#fbf1c7" "#ffffaf")
+  (gruvbox-light0_soft    "#f2e5bc" "#ffff87")
+  (gruvbox-light1         "#ebdbb2" "#ffdfaf")
+  (gruvbox-light2         "#d5c4a1" "#bcbcbc")
+  (gruvbox-light3         "#bdae93" "#a8a8a8")
+  (gruvbox-light4         "#a89984" "#949494")
+
+  (gruvbox-bright_red     "#fb4934" "#d75f5f")
+  (gruvbox-bright_green   "#b8bb26" "#afaf00")
+  (gruvbox-bright_yellow  "#fabd2f" "#ffaf00")
+  (gruvbox-bright_blue    "#83a598" "#87afaf")
+  (gruvbox-bright_purple  "#d3869b" "#d787af")
+  (gruvbox-bright_aqua    "#8ec07c" "#87af87")
+  (gruvbox-bright_orange  "#fe8019" "#ff8700")
+
+  (gruvbox-neutral_red    "#cc241d" "#d75f5f")
+  (gruvbox-neutral_green  "#98971a" "#afaf00")
+  (gruvbox-neutral_yellow "#d79921" "#ffaf00")
+  (gruvbox-neutral_blue   "#458588" "#87afaf")
+  (gruvbox-neutral_purple "#b16286" "#d787af")
+  (gruvbox-neutral_aqua   "#689d6a" "#87af87")
+  (gruvbox-neutral_orange "#d65d0e" "#ff8700")
+
+  (gruvbox-faded_red      "#9d0006" "#870000")
+  (gruvbox-faded_green    "#79740e" "#878700")
+  (gruvbox-faded_yellow   "#b57614" "#af8700")
+  (gruvbox-faded_blue     "#076678" "#005f87")
+  (gruvbox-faded_purple   "#8f3f71" "#875f87")
+  (gruvbox-faded_aqua     "#427b58" "#5f8787")
+  (gruvbox-faded_orange   "#af3a03" "#af5f00")
+
+  (gruvbox-dark_red        "#421E1E" "#5f0000")
+  (gruvbox-dark_blue       "#2B3C44" "#000080")
+  (gruvbox-dark_aqua       "#36473A" "#005f5f")
+
+  (gruvbox-delimiter-one    "#458588" "#008787")
+  (gruvbox-delimiter-two    "#b16286" "#d75f87")
+  (gruvbox-delimiter-three  "#8ec07c" "#87af87")
+  (gruvbox-delimiter-four   "#d65d0e" "#d75f00")
+  (gruvbox-white            "#FFFFFF" "white")
+  (gruvbox-black            "#000000" "black")
+  (gruvbox-sienna           "#DD6F48" "sienna")
+  (gruvbox-darkslategray4   "#528B8B" "DarkSlateGray4")
+  (gruvbox-lightblue4       "#66999D" "LightBlue4")
+  (gruvbox-burlywood4       "#BBAA97" "burlywood4")
+  (gruvbox-aquamarine4      "#83A598" "aquamarine4")
+  (gruvbox-turquoise4       "#61ACBB" "turquoise4")
+
+  (gruvbox-bg (cl-case gruvbox-contrast
+                (hard gruvbox-dark0_hard)
+                (soft gruvbox-dark0_soft)
+                ;; Medium by default.
+                (t    gruvbox-dark0))))
+
+ ;; UI
+ ((default                                                         (:background gruvbox-bg :foreground gruvbox-light0))
+  (cursor                                                          (:background gruvbox-light0))
+  (mode-line                                                       (:box nil :background gruvbox-dark2 :foreground gruvbox-light2))
+  (mode-line-inactive                                              (:box nil :background gruvbox-dark1 :foreground gruvbox-light4))
+  (fringe                                                          (:background gruvbox-bg))
+  (linum                                                           (:background gruvbox-bg :foreground gruvbox-dark4))
+  (hl-line                                                         (:background gruvbox-dark1))
+  (region                                                          (:background gruvbox-dark2)) ;;selection
+  (secondary-selection                                             (:background gruvbox-dark1))
+  (minibuffer-prompt                                               (:background gruvbox-bg :foreground gruvbox-neutral_green :bold t))
+  (vertical-border                                                 (:foreground gruvbox-dark2))
+  (link                                                            (:foreground gruvbox-faded_blue :underline t))
+  (shadow                                                          (:foreground gruvbox-dark4))
+
+  ;; Built-in syntax
+  (font-lock-builtin-face                                                  (:foreground gruvbox-neutral_orange))
+  (font-lock-constant-face                                                 (:foreground gruvbox-neutral_purple))
+  (font-lock-comment-face                                                  (:foreground gruvbox-dark4))
+  (font-lock-function-name-face                                            (:foreground gruvbox-neutral_yellow))
+  (font-lock-keyword-face                                                  (:foreground gruvbox-neutral_red))
+  (font-lock-string-face                                                   (:foreground gruvbox-neutral_green))
+  (font-lock-variable-name-face                                            (:foreground gruvbox-neutral_blue))
+  (font-lock-type-face                                                     (:foreground gruvbox-neutral_purple))
+  (font-lock-warning-face                                                  (:foreground gruvbox-neutral_red :bold t))
+
+  ;; whitespace-mode
+  (whitespace-space                                                (:background gruvbox-bg :foreground gruvbox-dark4))
+  (whitespace-hspace                                               (:background gruvbox-bg :foreground gruvbox-dark4))
+  (whitespace-tab                                                  (:background gruvbox-bg :foreground gruvbox-dark4))
+  (whitespace-newline                                              (:background gruvbox-bg :foreground gruvbox-dark4))
+  (whitespace-trailing                                             (:background gruvbox-dark1 :foreground gruvbox-neutral_red))
+  (whitespace-line                                                 (:background gruvbox-dark1 :foreground gruvbox-neutral_red))
+  (whitespace-space-before-tab                                     (:background gruvbox-bg :foreground gruvbox-dark4))
+  (whitespace-indentation                                          (:background gruvbox-bg :foreground gruvbox-dark4))
+  (whitespace-empty                                                (:background nil :foreground nil))
+  (whitespace-space-after-tab                                      (:background gruvbox-bg :foreground gruvbox-dark4))
+
+  ;; RainbowDelimiters
+  (rainbow-delimiters-depth-1-face                                 (:foreground gruvbox-delimiter-one))
+  (rainbow-delimiters-depth-2-face                                 (:foreground gruvbox-delimiter-two))
+  (rainbow-delimiters-depth-3-face                                 (:foreground gruvbox-delimiter-three))
+  (rainbow-delimiters-depth-4-face                                 (:foreground gruvbox-delimiter-four))
+  (rainbow-delimiters-depth-5-face                                 (:foreground gruvbox-delimiter-one))
+  (rainbow-delimiters-depth-6-face                                 (:foreground gruvbox-delimiter-two))
+  (rainbow-delimiters-depth-7-face                                 (:foreground gruvbox-delimiter-three))
+  (rainbow-delimiters-depth-8-face                                 (:foreground gruvbox-delimiter-four))
+  (rainbow-delimiters-depth-9-face                                 (:foreground gruvbox-delimiter-one))
+  (rainbow-delimiters-depth-10-face                                (:foreground gruvbox-delimiter-two))
+  (rainbow-delimiters-depth-11-face                                (:foreground gruvbox-delimiter-three))
+  (rainbow-delimiters-depth-12-face                                (:foreground gruvbox-delimiter-four))
+  (rainbow-delimiters-unmatched-face                               (:background nil :foreground gruvbox-light0))
+
+  ;; linum-relative
+  (linum-relative-current-face                                     (:background gruvbox-dark1 :foreground gruvbox-light4))
+
+  ;; Highlight indentation mode
+  (highlight-indentation-current-column-face                       (:background gruvbox-dark2))
+  (highlight-indentation-face                                      (:background gruvbox-dark1))
+
+  ;; Smartparens
+  (sp-pair-overlay-face                                            (:background gruvbox-dark2))
+  (sp-show-pair-match-face                                         (:background gruvbox-dark2)) ;; Pair tags highlight
+  (sp-show-pair-mismatch-face                                      (:background gruvbox-neutral_red)) ;; Highlight for bracket without pair
+  ;(sp-wrap-overlay-face                                           (:inherit 'sp-wrap-overlay-face))
+  ;(sp-wrap-tag-overlay-face                                       (:inherit 'sp-wrap-overlay-face))
+
+  ;; elscreen
+  (elscreen-tab-background-face                                    (:box nil :background gruvbox-bg)) ;; Tab bar, not the tabs
+  (elscreen-tab-control-face                                       (:box nil :background gruvbox-dark2 :foreground gruvbox-neutral_red :underline nil)) ;; The controls
+  (elscreen-tab-current-screen-face                                (:box nil :background gruvbox-dark4 :foreground gruvbox-dark0)) ;; Current tab
+  (elscreen-tab-other-screen-face                                  (:box nil :background gruvbox-dark2 :foreground gruvbox-light4 :underline nil)) ;; Inactive tab
+
+  ;; ag (The Silver Searcher)
+  (ag-hit-face                                                     (:foreground gruvbox-neutral_blue))
+  (ag-match-face                                                   (:foreground gruvbox-neutral_red))
+
+  ;; Diffs
+  (diff-changed                                                    (:background nil :foreground gruvbox-light1))
+  (diff-added                                                      (:background nil :foreground gruvbox-neutral_green))
+  (diff-removed                                                    (:background nil :foreground gruvbox-neutral_red))
+  (diff-indicator-changed                                          (:inherit 'diff-changed))
+  (diff-indicator-added                                            (:inherit 'diff-added))
+  (diff-indicator-removed                                          (:inherit 'diff-removed))
+
+  (js2-warning                                                     (:underline (:color gruvbox-bright_yellow :style 'wave)))
+  (js2-error                                                       (:underline (:color gruvbox-bright_red :style 'wave)))
+  (js2-external-variable                                           (:underline (:color gruvbox-bright_aqua :style 'wave)))
+  (js2-jsdoc-tag                                                   (:background nil :foreground gruvbox-medium))
+  (js2-jsdoc-type                                                  (:background nil :foreground gruvbox-light4))
+  (js2-jsdoc-value                                                 (:background nil :foreground gruvbox-light3))
+  (js2-function-param                                              (:background nil :foreground gruvbox-bright_aqua))
+  (js2-function-call                                               (:background nil :foreground gruvbox-bright_blue))
+  (js2-instance-member                                             (:background nil :foreground gruvbox-bright_orange))
+  (js2-private-member                                              (:background nil :foreground gruvbox-faded_yellow))
+  (js2-private-function-call                                       (:background nil :foreground gruvbox-faded_aqua))
+  (js2-jsdoc-html-tag-name                                         (:background nil :foreground gruvbox-light4))
+  (js2-jsdoc-html-tag-delimiter                                    (:background nil :foreground gruvbox-light3))
+
+  ;; popup
+  (popup-face                                                      (:foreground gruvbox-light1 :background gruvbox-dark1))
+  (popup-menu-mouse-face                                           (:foreground gruvbox-light0 :background gruvbox-faded_green))
+  (popup-menu-selection-face                                       (:foreground gruvbox-light0 :background gruvbox-faded_green))
+  (popup-tip-face                                                  (:foreground gruvbox-light2 :background gruvbox-dark2))
+
+  ;; helm
+  (helm-M-x-key                                                    (:foreground gruvbox-neutral_orange ))
+  (helm-action                                                     (:foreground gruvbox-white :underline t))
+  (helm-bookmark-addressbook                                       (:foreground gruvbox-neutral_red))
+  (helm-bookmark-directory                                         (:foreground gruvbox-bright_purple))
+  (helm-bookmark-file                                              (:foreground gruvbox-faded_blue))
+  (helm-bookmark-gnus                                              (:foreground gruvbox-faded_purple))
+  (helm-bookmark-info                                              (:foreground gruvbox-turquoise4))
+  (helm-bookmark-man                                               (:foreground gruvbox-sienna))
+  (helm-bookmark-w3m                                               (:foreground gruvbox-neutral_yellow))
+  (helm-buffer-directory                                           (:foreground gruvbox-white :background gruvbox-bright_blue))
+  (helm-buffer-not-saved                                           (:foreground gruvbox-faded_red))
+  (helm-buffer-process                                             (:foreground gruvbox-burlywood4))
+  (helm-buffer-saved-out                                           (:foreground gruvbox-bright_red))
+  (helm-buffer-size                                                (:foreground gruvbox-bright_purple))
+  (helm-candidate-number                                           (:foreground gruvbox-neutral_green))
+  (helm-ff-directory                                               (:foreground gruvbox-neutral_purple))
+  (helm-ff-executable                                              (:foreground gruvbox-turquoise4))
+  (helm-ff-file                                                    (:foreground gruvbox-sienna))
+  (helm-ff-invalid-symlink                                         (:foreground gruvbox-white :background gruvbox-bright_red))
+  (helm-ff-prefix                                                  (:foreground gruvbox-black :background gruvbox-neutral_yellow))
+  (helm-ff-symlink                                                 (:foreground gruvbox-neutral_orange))
+  (helm-grep-cmd-line                                              (:foreground gruvbox-neutral_green))
+  (helm-grep-file                                                  (:foreground gruvbox-faded_purple))
+  (helm-grep-finish                                                (:foreground gruvbox-turquoise4))
+  (helm-grep-lineno                                                (:foreground gruvbox-neutral_orange))
+  (helm-grep-match                                                 (:foreground gruvbox-neutral_yellow))
+  (helm-grep-running                                               (:foreground gruvbox-neutral_red))
+  (helm-header                                                     (:foreground gruvbox-aquamarine4))
+  (helm-helper                                                     (:foreground gruvbox-aquamarine4))
+  (helm-history-deleted                                            (:foreground gruvbox-black :background gruvbox-bright_red))
+  (helm-history-remote                                             (:foreground gruvbox-faded_red))
+  (helm-lisp-completion-info                                       (:foreground gruvbox-faded_orange))
+  (helm-lisp-show-completion                                       (:foreground gruvbox-bright_red))
+  (helm-locate-finish                                              (:foreground gruvbox-white :background gruvbox-aquamarine4))
+  (helm-match                                                      (:foreground gruvbox-neutral_orange))
+  (helm-moccur-buffer                                              (:foreground gruvbox-bright_aqua :underline t))
+  (helm-prefarg                                                    (:foreground gruvbox-turquoise4))
+  (helm-selection                                                  (:foreground gruvbox-white :background gruvbox-dark2))
+  (helm-selection-line                                             (:foreground gruvbox-white :background gruvbox-dark2))
+  (helm-separator                                                  (:foreground gruvbox-faded_red))
+  (helm-source-header                                              (:foreground gruvbox-light2))
+  (helm-visible-mark                                               (:foreground gruvbox-black :background gruvbox-light3))
+
+  ;; company-mode
+  (company-scrollbar-bg                                            (:background gruvbox-dark1))
+  (company-scrollbar-fg                                            (:background gruvbox-dark0_soft))
+  (company-tooltip                                                 (:background gruvbox-dark0_soft))
+  (company-tooltip-annotation                                      (:foreground gruvbox-neutral_green))
+  (company-tooltip-selection                                       (:foreground gruvbox-neutral_purple))
+  (company-tooltip-common                                          (:foreground gruvbox-neutral_blue :underline t))
+  (company-tooltip-common-selection                                (:foreground gruvbox-neutral_blue :underline t))
+  (company-preview-common                                          (:foreground gruvbox-neutral_purple))
+
+  ;; Term
+  (term-color-black                                                (:foreground gruvbox-dark1))
+  (term-color-blue                                                 (:foreground gruvbox-neutral_blue))
+  (term-color-cyan                                                 (:foreground gruvbox-neutral_aqua))
+  (term-color-green                                                (:foreground gruvbox-neutral_green))
+  (term-color-magenta                                              (:foreground gruvbox-neutral_purple))
+  (term-color-red                                                  (:foreground gruvbox-neutral_red))
+  (term-color-white                                                (:foreground gruvbox-light1))
+  (term-color-yellow                                               (:foreground gruvbox-neutral_yellow))
+  (term-default-fg-color                                           (:foreground gruvbox-light0))
+  (term-default-bg-color                                           (:background gruvbox-bg))
+
+  ;; message-mode
+  (message-header-to                                               (:inherit 'font-lock-variable-name-face))
+  (message-header-cc                                               (:inherit 'font-lock-variable-name-face))
+  (message-header-subject                                          (:foreground gruvbox-neutral_orange :weight 'bold))
+  (message-header-newsgroups                                       (:foreground gruvbox-neutral_yellow :weight 'bold))
+  (message-header-other                                            (:inherit 'font-lock-variable-name-face))
+  (message-header-name                                             (:inherit 'font-lock-keyword-face))
+  (message-header-xheader                                          (:foreground gruvbox-faded_blue))
+  (message-separator                                               (:inherit 'font-lock-comment-face))
+  (message-cited-text                                              (:inherit 'font-lock-comment-face))
+  (message-mml                                                     (:foreground gruvbox-faded_green :weight 'bold))
+
+  ;; org-mode
+  (org-hide                                                        (:foreground gruvbox-dark0))
+  (org-level-1                                                     (:foreground gruvbox-neutral_blue))
+  (org-level-2                                                     (:foreground gruvbox-neutral_yellow))
+  (org-level-3                                                     (:foreground gruvbox-neutral_purple))
+  (org-level-4                                                     (:foreground gruvbox-neutral_red))
+  (org-level-5                                                     (:foreground gruvbox-neutral_green))
+  (org-level-6                                                     (:foreground gruvbox-neutral_aqua))
+  (org-level-7                                                     (:foreground gruvbox-faded_blue))
+  (org-level-8                                                     (:foreground gruvbox-neutral_orange))
+  (org-special-keyword                                             (:inherit 'font-lock-comment-face))
+  (org-drawer                                                      (:inherit 'font-lock-function-face))
+  (org-column                                                      (:background gruvbox-dark0))
+  (org-column-title                                                (:background gruvbox-dark0 :underline t :weight 'bold))
+  (org-warning                                                     (:bold t :foreground gruvbox-neutral_red :weight 'bold :underline nil))
+  (org-archived                                                    (:foreground gruvbox-light0 :weight 'bold))
+  (org-link                                                        (:foreground gruvbox-faded_aqua :underline t))
+  (org-footnote                                                    (:foreground gruvbox-neutral_aqua :underline t))
+  (org-ellipsis                                                    (:foreground gruvbox-light4 :underline t))
+  (org-date                                                        (:foreground gruvbox-neutral_blue :underline t))
+  (org-sexp-date                                                   (:foreground gruvbox-faded_blue :underline t))
+  (org-tag                                                         (:bold t :weight 'bold))
+  (org-list-dt                                                     (:bold t :weight 'bold))
+  (org-todo                                                        (:bold t :foreground gruvbox-neutral_red :weight 'bold))
+  (org-done                                                        (:bold t :foreground gruvbox-neutral_aqua :weight 'bold))
+  (org-agenda-done                                                 (:foreground gruvbox-neutral_aqua))
+  (org-headline-done                                               (:foreground gruvbox-neutral_aqua))
+  (org-table                                                       (:foreground gruvbox-neutral_blue))
+  (org-formula                                                     (:foreground gruvbox-neutral_yellow))
+  (org-document-title                                              (:foreground gruvbox-faded_blue))
+  (org-document-info                                               (:foreground gruvbox-faded_blue))
+  (org-agenda-structure                                            (:inherit 'font-lock-comment-face))
+  (org-agenda-date-today                                           (:foreground gruvbox-light0 :weight 'bold :italic t))
+  (org-scheduled                                                   (:foreground gruvbox-neutral_yellow))
+  (org-scheduled-today                                             (:foreground gruvbox-neutral_blue))
+  (org-scheduled-previously                                        (:foreground gruvbox-faded_red))
+  (org-upcoming-deadline                                           (:inherit 'font-lock-keyword-face))
+  (org-deadline-announce                                           (:foreground gruvbox-faded_red))
+  (org-time-grid                                                   (:foreground gruvbox-faded_orange))
+
+  ;; org-habit
+  (org-habit-clear-face                                            (:background gruvbox-faded_blue))
+  (org-habit-clear-future-face                                     (:background gruvbox-neutral_blue))
+  (org-habit-ready-face                                            (:background gruvbox-faded_green))
+  (org-habit-ready-future-face                                     (:background gruvbox-neutral_green))
+  (org-habit-alert-face                                            (:background gruvbox-faded_yellow))
+  (org-habit-alert-future-face                                     (:background gruvbox-neutral_yellow))
+  (org-habit-overdue-face                                          (:background gruvbox-faded_red))
+  (org-habit-overdue-future-face                                   (:background gruvbox-neutral_red))
+
+  ;; elfeed
+  (elfeed-search-title-face                                        (:foreground gruvbox-medium))
+  (elfeed-search-unread-title-face                                 (:foreground gruvbox-light0))
+  (elfeed-search-date-face                                         (:inherit 'font-lock-builtin-face :underline t))
+  (elfeed-search-feed-face                                         (:inherit 'font-lock-variable-name-face))
+  (elfeed-search-tag-face                                          (:inherit 'font-lock-keyword-face))
+  (elfeed-search-last-update-face                                  (:inherit 'font-lock-comment-face))
+  (elfeed-search-unread-count-face                                 (:inherit 'font-lock-comment-face))
+  (elfeed-search-filter-face                                       (:inherit 'font-lock-string-face))
+
+  ;; Smart-mode-line
+  (sml/global                                                      (:foreground gruvbox-burlywood4 :inverse-video nil))
+  (sml/modes                                                       (:foreground gruvbox-bright_green))
+  (sml/filename                                                    (:foreground gruvbox-bright_red :weight 'bold))
+  (sml/prefix                                                      (:foreground gruvbox-light1))
+  (sml/read-only                                                   (:foreground gruvbox-neutral_blue))
+  (persp-selected-face                                             (:foreground gruvbox-neutral_orange))
+
+  ;;isearch
+  (isearch                                                         (:foreground gruvbox-black :background gruvbox-neutral_orange))
+  (lazy-highlight                                                  (:foreground gruvbox-black :background gruvbox-neutral_yellow))
+  (isearch-fail                                                    (:foreground gruvbox-light0 :background gruvbox-bright_red))
+
+  ;; markdown-mode
+  (markdown-header-face-1                                          (:foreground gruvbox-neutral_blue))
+  (markdown-header-face-2                                          (:foreground gruvbox-neutral_yellow))
+  (markdown-header-face-3                                          (:foreground gruvbox-neutral_purple))
+  (markdown-header-face-4                                          (:foreground gruvbox-neutral_red))
+  (markdown-header-face-5                                          (:foreground gruvbox-neutral_green))
+  (markdown-header-face-6                                          (:foreground gruvbox-neutral_aqua))
+
+  ;; anzu-mode
+  (anzu-mode-line                                                  (:foreground gruvbox-bright_yellow :weight 'bold))
+  (anzu-match-1                                                    (:background gruvbox-bright_green))
+  (anzu-match-2                                                    (:background gruvbox-faded_yellow))
+  (anzu-match-3                                                    (:background gruvbox-aquamarine4))
+  (anzu-replace-to                                                 (:foreground gruvbox-bright_yellow))
+  (anzu-replace-highlight                                          (:inherit 'isearch))
+
+  ;; Ace-jump-mode
+  (ace-jump-face-background                                        (:foreground gruvbox-light4 :background gruvbox-bg :inverse-video nil))
+  (ace-jump-face-foreground                                        (:foreground gruvbox-bright_red :background gruvbox-bg :inverse-video nil :box 1))
+
+  ;; Ace-window
+  (aw-background-face                                              (:forground  gruvbox-light1 :background gruvbox-bg :inverse-video nil))
+  (aw-leading-char-face                                            (:foreground gruvbox-bright_orange :background gruvbox-bg :height 4.0 :box (:line-width 1 :color gruvbox-bright_orange)))
+
+  ;; show-paren
+  (show-paren-match                                                (:background gruvbox-dark3 :weight 'bold))
+  (show-paren-mismatch                                             (:background gruvbox-bright_red :foreground gruvbox-dark3 :weight 'bold))
+
+  ;; MODE SUPPORT: dired+
+  (diredp-file-name                                                (:foreground gruvbox-light2))
+  (diredp-file-suffix                                              (:foreground gruvbox-light4))
+  (diredp-compressed-file-suffix                                   (:foreground gruvbox-faded_blue))
+  (diredp-dir-name                                                 (:foreground gruvbox-faded_blue))
+  (diredp-dir-heading                                              (:foreground gruvbox-bright_blue))
+  (diredp-symlink                                                  (:foreground gruvbox-bright_orange))
+  (diredp-date-time                                                (:foreground gruvbox-light3))
+  (diredp-number                                                   (:foreground gruvbox-faded_blue))
+  (diredp-no-priv                                                  (:foreground gruvbox-dark4))
+  (diredp-other-priv                                               (:foreground gruvbox-dark2))
+  (diredp-rare-priv                                                (:foreground gruvbox-dark4))
+  (diredp-ignored-file-name                                        (:foreground gruvbox-dark4))
+
+  (diredp-dir-priv                                                 (:foreground gruvbox-faded_blue  :background gruvbox-dark_blue))
+  (diredp-exec-priv                                                (:foreground gruvbox-faded_blue  :background gruvbox-dark_blue))
+  (diredp-link-priv                                                (:foreground gruvbox-faded_aqua  :background gruvbox-dark_aqua))
+  (diredp-read-priv                                                (:foreground gruvbox-bright_red  :background gruvbox-dark_red))
+  (diredp-write-priv                                               (:foreground gruvbox-bright_aqua :background gruvbox-dark_aqua)))
+
+ (custom-theme-set-variables 'gruvbox
+                             `(ansi-color-names-vector [,gruvbox-dark1
+                                                        ,gruvbox-neutral_red
+                                                        ,gruvbox-neutral_green
+                                                        ,gruvbox-neutral_yellow
+                                                        ,gruvbox-neutral_blue
+                                                        ,gruvbox-neutral_purple
+                                                        ,gruvbox-neutral_aqua
+                                                        ,gruvbox-light1])))
 
 (defun gruvbox-set-ansi-color-names-vector ()
   "Give comint and the like the same colours as the term colours we set."
   (setq ansi-color-names-vector
-    [term-color-black term-color-red term-color-green term-color-yellow term-color-blue
-     term-color-purple term-color-aqua term-color-white]))
+        [term-color-black
+         term-color-red
+         term-color-green
+         term-color-yellow
+         term-color-blue
+         term-color-purple
+         term-color-aqua
+         term-color-white]))
 
 ;;;###autoload
 (and load-file-name
-    (boundp 'custom-theme-load-path)
-    (add-to-list 'custom-theme-load-path
-                 (file-name-as-directory
-                  (file-name-directory load-file-name))))
+     (boundp 'custom-theme-load-path)
+     (add-to-list 'custom-theme-load-path
+                  (file-name-as-directory
+                   (file-name-directory load-file-name))))
 
 (provide-theme 'gruvbox)
 

(eval-when-compile
  (require 'cl-lib))

(unless (>= emacs-major-version 24)
  (error "Requires Emacs 24 or later"))


;;          Greduan <me@greduan.com>
;; Maintainer: jasonm23 <jasonm23@gmail.com>
;; URL: http://github.com/Greduan/emacs-theme-gruvbox
;; Version: 1.00

;; Package-Requires: ((autothemer "0.2"))

;;; Commentary:

;; Using autothemer since 1.00

;; A port of the Gruvbox colorscheme for Vim, built on top of the new built-in
;; theme support in Emacs 24.
