     (when (display-graphic-p)
       (load-theme 'material-light 'no-confirm))))
 
-(use-package moe-theme)
-
-;; Make selection stand out more for default theme.
-(unless custom-enabled-themes
-  (set-face-attribute 'region nil :background "#666" :foreground "#fff"))
+;; https://emacs.stackexchange.com/questions/3112/how-to-reset-color-theme
+(defun my/undo-themes (&rest _)
+  (mapc #'disable-theme custom-enabled-themes))
+
+(general-add-advice 'load-theme :before #'my/undo-themes)
+
+(defun my/better-default-theme (&rest _)
+  (unless custom-enabled-themes
+    ;; Make selection stand out more for default theme.
+    (set-face-attribute 'region nil :background "#666" :foreground "#fff")))
+
+(general-add-advice 'disable-theme :after #'my/better-default-theme)
+(my/better-default-theme)

  (evil-mode)

  :config
  ;; Move up one line when doing q: and q/.
  (general-add-advice 'evil-command-window-ex :after #'evil-previous-line)
  (general-add-advice 'evil-command-window-search-forward
                      :after #'evil-previous-line)

  ;; Disable hl-line-mode in evil visual state.
  ;;
  ;; This has the side effect of enabling hl-line-mode in non-text/prog modes if
  ;; visual state is ever entered then exited, but not really a big deal for me
  ;; as visual state normally isn't even entered in those modes.
  (general-add-hook 'evil-visual-state-entry-hook (lambda () (hl-line-mode -1)))
  (general-add-hook 'evil-visual-state-exit-hook #'hl-line-mode)

  ;; Set normal state as default state.
  ;; In :config as it references evil mode variables.

;; Not necessarily only for lisp languages but main use case is for lisp
;; languages where this really helps.
(use-package rainbow-delimiters
  :ghook
  'prog-mode-hook
  :config
  (defun my/rainbow-delimiters-default-faces (&rest _)
    ;; Default rainbow delimiters colours do not differentiate themselves
    ;; enough.
    (unless custom-enabled-themes
      (set-face-foreground 'rainbow-delimiters-depth-1-face "dark orange")
      (set-face-foreground 'rainbow-delimiters-depth-2-face "deep pink")
      (set-face-foreground 'rainbow-delimiters-depth-3-face "chartreuse")
      (set-face-foreground 'rainbow-delimiters-depth-4-face "deep sky blue")
      (set-face-foreground 'rainbow-delimiters-depth-5-face "goldenrod")
      (set-face-foreground 'rainbow-delimiters-depth-6-face "orchid")
      (set-face-foreground 'rainbow-delimiters-depth-7-face "spring green")
      (set-face-foreground 'rainbow-delimiters-depth-8-face "sienna")
      (set-face-foreground 'rainbow-delimiters-depth-9-face "red")))

  (defun my/rainbow-delimiters-faces (&rest _)
    ;; Always bold delimiters regardless of theme, as they are easier to see and
    ;; identify for me.
    (set-face-bold 'rainbow-delimiters-depth-1-face t)
    (set-face-bold 'rainbow-delimiters-depth-2-face t)
    (set-face-bold 'rainbow-delimiters-depth-3-face t)
    (set-face-bold 'rainbow-delimiters-depth-4-face t)
    (set-face-bold 'rainbow-delimiters-depth-5-face t)
    (set-face-bold 'rainbow-delimiters-depth-6-face t)
    (set-face-bold 'rainbow-delimiters-depth-7-face t)
    (set-face-bold 'rainbow-delimiters-depth-8-face t)
    (set-face-bold 'rainbow-delimiters-depth-9-face t))

  (general-add-advice 'disable-theme
                      :after #'my/rainbow-delimiters-default-faces)
  (general-add-advice 'load-theme :after #'my/rainbow-delimiters-faces)
  (my/rainbow-delimiters-default-faces)
  (my/rainbow-delimiters-faces))

;; Theme
;; =====
