2017-06-08 11:47:56 +02:00
|
|
|
;;; ui/doom/config.el -*- lexical-binding: t; -*-
|
2017-01-17 00:20:59 -05:00
|
|
|
|
2018-03-22 19:28:03 -04:00
|
|
|
(defvar +doom-solaire-themes
|
2018-03-28 06:49:49 -04:00
|
|
|
'((doom-city-lights . t)
|
|
|
|
(doom-dracula . t)
|
2019-03-04 04:46:40 -05:00
|
|
|
(doom-molokai)
|
2018-03-28 06:49:49 -04:00
|
|
|
(doom-nord . t)
|
2018-05-02 23:41:17 +02:00
|
|
|
(doom-nord-light . t)
|
2018-08-03 16:17:32 +02:00
|
|
|
(doom-nova)
|
2018-03-28 06:49:49 -04:00
|
|
|
(doom-one . t)
|
|
|
|
(doom-one-light . t)
|
2018-06-17 12:12:13 +02:00
|
|
|
(doom-opera . t)
|
2018-08-03 16:17:32 +02:00
|
|
|
(doom-solarized-light)
|
|
|
|
(doom-spacegrey)
|
|
|
|
(doom-vibrant)
|
|
|
|
(doom-tomorrow-night))
|
2018-03-28 06:49:49 -04:00
|
|
|
"An alist of themes that support `solaire-mode'. If CDR is t, then use
|
|
|
|
`solaire-mode-swap-bg'.")
|
2018-03-22 19:28:03 -04:00
|
|
|
|
|
|
|
|
|
|
|
;;
|
2018-09-07 19:36:16 -04:00
|
|
|
;; Packages
|
2018-03-22 19:28:03 -04:00
|
|
|
|
2017-01-31 05:09:20 -05:00
|
|
|
;; <https://github.com/hlissner/emacs-doom-theme>
|
2017-06-05 03:12:49 +02:00
|
|
|
(def-package! doom-themes
|
2018-05-25 00:46:11 +02:00
|
|
|
:defer t
|
|
|
|
:init
|
2017-12-09 16:52:23 -05:00
|
|
|
(unless doom-theme
|
2018-03-22 19:28:03 -04:00
|
|
|
(setq doom-theme 'doom-one))
|
2019-03-17 23:19:55 -04:00
|
|
|
:config
|
2017-12-08 22:57:08 -05:00
|
|
|
;; improve integration w/ org-mode
|
2018-03-22 19:28:03 -04:00
|
|
|
(add-hook 'doom-load-theme-hook #'doom-themes-org-config)
|
2018-07-10 23:05:01 +02:00
|
|
|
;; more Atom-esque file icons for neotree/treemacs
|
2018-07-03 12:29:27 +02:00
|
|
|
(when (featurep! :ui neotree)
|
|
|
|
(add-hook 'doom-load-theme-hook #'doom-themes-neotree-config)
|
|
|
|
(setq doom-neotree-enable-variable-pitch t
|
|
|
|
doom-neotree-file-icons 'simple
|
2018-07-10 23:05:01 +02:00
|
|
|
doom-neotree-line-spacing 2))
|
|
|
|
(when (featurep! :ui treemacs)
|
|
|
|
(add-hook 'doom-load-theme-hook #'doom-themes-treemacs-config)
|
|
|
|
(setq doom-treemacs-enable-variable-pitch t)))
|
2017-01-31 05:09:20 -05:00
|
|
|
|
|
|
|
|
2017-06-05 03:13:24 +02:00
|
|
|
(def-package! solaire-mode
|
2018-05-25 00:46:11 +02:00
|
|
|
:defer t
|
2018-03-22 19:28:03 -04:00
|
|
|
:init
|
|
|
|
(defun +doom|solaire-mode-swap-bg-maybe ()
|
2018-03-28 06:49:49 -04:00
|
|
|
(when-let* ((rule (assq doom-theme +doom-solaire-themes)))
|
2018-03-22 19:28:03 -04:00
|
|
|
(require 'solaire-mode)
|
2018-03-28 06:49:49 -04:00
|
|
|
(if (cdr rule) (solaire-mode-swap-bg))))
|
2018-03-22 19:28:03 -04:00
|
|
|
(add-hook 'doom-load-theme-hook #'+doom|solaire-mode-swap-bg-maybe t)
|
2017-06-05 03:13:24 +02:00
|
|
|
:config
|
2018-02-18 03:14:33 -05:00
|
|
|
;; fringe can become unstyled when deleting or focusing frames
|
|
|
|
(add-hook 'focus-in-hook #'solaire-mode-reset)
|
2018-03-22 19:27:17 -04:00
|
|
|
;; Prevent color glitches when reloading either DOOM or loading a new theme
|
|
|
|
(add-hook! :append '(doom-load-theme-hook doom-reload-hook)
|
2018-02-07 01:36:16 -05:00
|
|
|
#'solaire-mode-reset)
|
|
|
|
;; org-capture takes an org buffer and narrows it. The result is erroneously
|
|
|
|
;; considered an unreal buffer, so solaire-mode must be restored.
|
2018-09-18 15:16:22 -04:00
|
|
|
(add-hook 'org-capture-mode-hook #'turn-on-solaire-mode)
|
2017-06-05 03:13:24 +02:00
|
|
|
|
2019-03-05 03:01:59 -05:00
|
|
|
;; On Emacs 26+, when point is on the last line and solaire-mode is remapping
|
|
|
|
;; the hl-line face, hl-line's highlight bleeds into the rest of the window
|
|
|
|
;; after eob.
|
|
|
|
(when EMACS26+
|
|
|
|
(defun +doom--line-range ()
|
|
|
|
(cons (line-beginning-position)
|
|
|
|
(cond ((let ((eol (line-end-position)))
|
|
|
|
(and (= eol (point-max))
|
|
|
|
(/= eol (line-beginning-position))))
|
|
|
|
(1- (line-end-position)))
|
|
|
|
((or (eobp)
|
|
|
|
(= (line-end-position 2) (point-max)))
|
|
|
|
(line-end-position))
|
|
|
|
((line-beginning-position 2)))))
|
|
|
|
(setq hl-line-range-function #'+doom--line-range))
|
|
|
|
|
2018-09-18 15:16:22 -04:00
|
|
|
;; Because fringes can't be given a buffer-local face, they can look odd, so
|
|
|
|
;; we remove them in the minibuffer and which-key popups (they serve no
|
|
|
|
;; purpose there anyway).
|
|
|
|
(defun +doom|disable-fringes-in-minibuffer (&rest _)
|
|
|
|
(set-window-fringes (minibuffer-window) 0 0 nil))
|
|
|
|
(add-hook 'solaire-mode-hook #'+doom|disable-fringes-in-minibuffer)
|
|
|
|
|
|
|
|
(defun doom*no-fringes-in-which-key-buffer (&rest _)
|
|
|
|
(+doom|disable-fringes-in-minibuffer)
|
|
|
|
(set-window-fringes (get-buffer-window which-key--buffer) 0 0 nil))
|
|
|
|
(advice-add 'which-key--show-buffer-side-window :after #'doom*no-fringes-in-which-key-buffer)
|
|
|
|
|
|
|
|
(add-hook! '(minibuffer-setup-hook window-configuration-change-hook)
|
2018-12-26 17:36:44 -05:00
|
|
|
#'+doom|disable-fringes-in-minibuffer)
|
|
|
|
|
2019-03-02 12:48:08 -05:00
|
|
|
(solaire-global-mode +1))
|