mirror of
https://gitlab.com/dwt1/dotfiles.git
synced 2026-04-23 19:40:24 +10:00
Moving to Doom Emacs!
This commit is contained in:
93
.emacs.d/modules/ui/doom/README.org
Normal file
93
.emacs.d/modules/ui/doom/README.org
Normal file
@@ -0,0 +1,93 @@
|
||||
#+TITLE: ui/doom
|
||||
#+DATE: October 9, 2019
|
||||
#+SINCE: v1.3
|
||||
#+STARTUP: inlineimages
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#changing-theme][Changing theme]]
|
||||
- [[#changing-fonts][Changing fonts]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
- [[#strange-font-symbols][Strange font symbols]]
|
||||
- [[#ugly-background-colors-in-tty-emacs-for-daemon-users][Ugly background colors in tty Emacs for daemon users]]
|
||||
|
||||
* Description
|
||||
This module gives Doom its signature look: powered by the =doom-one= theme
|
||||
(inspired by Atom's One Dark theme) and =solaire-mode=.
|
||||
|
||||
+ A colorscheme inspired by Atom's One Dark theme (now available in a separate
|
||||
plugin: [[https://github.com/hlissner/emacs-doom-theme/][doom-themes]])
|
||||
+ A custom folded-region indicator for ~hideshow~
|
||||
+ "Thin bar" fringe bitmaps for ~git-gutter-fringe~
|
||||
+ File-visiting buffers are slightly brighter (thanks to solaire-mode)
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/hlissner/emacs-doom-themes][doom-themes]]
|
||||
+ [[https://github.com/hlissner/emacs-solaire-mode][solaire-mode]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no prereqisites.
|
||||
|
||||
* Configuration
|
||||
** Changing theme
|
||||
Although this module uses the ~doom-one~ theme by default, [[https://github.com/hlissner/emacs-doom-theme/][doom-themes]] offers a number of alternatives:
|
||||
|
||||
+ *doom-one:* doom-themes' flagship theme, inspired by [[https://atom.io/][Atom's]] One Dark themes
|
||||
+ *doom-vibrant:* a more vibrant version of doom-one
|
||||
+ *doom-molokai:* based on Textmate's monokai
|
||||
+ *doom-nova:* adapted from [[https://trevordmiller.com/projects/nova][Nova]]
|
||||
+ *doom-one-light:* light version of doom-one
|
||||
+ *doom-peacock:* based on Peacock from [[https://daylerees.github.io/][daylerees' themes]]
|
||||
+ *doom-tomorrow-night:* by [[https://github.com/ChrisKempson/Tomorrow-Theme][Chris Kempson]]
|
||||
|
||||
This can be changed by changing the ~doom-theme~ variable, e.g.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq doom-theme 'doom-molokai)
|
||||
#+END_SRC
|
||||
|
||||
** Changing fonts
|
||||
core/core-ui.el has four relevant variables:
|
||||
|
||||
+ ~doom-font~ :: the default font to use in Doom Emacs.
|
||||
+ ~doom-big-font~ :: the font to use when ~doom-big-font-mode~ is enabled.
|
||||
+ ~doom-variable-font~ :: the font to use when ~variable-pitch-mode~ is active (or where the ~variable-pitch~ face is used).
|
||||
+ ~doom-unicode-font~ :: the font used to display unicode symbols. This is ignored if the =:ui unicode= module is enabled.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq doom-font (font-spec :family "Fira Mono" :size 12)
|
||||
doom-variable-pitch-font (font-spec :family "Fira Sans")
|
||||
doom-unicode-font (font-spec :family "DejaVu Sans Mono")
|
||||
doom-big-font (font-spec :family "Fira Mono" :size 19))
|
||||
#+END_SRC
|
||||
|
||||
* Troubleshooting
|
||||
** Strange font symbols
|
||||
If you're seeing strange unicode symbols, this is likely because you don't have
|
||||
~all-the-icons~'s font icon installed. You can install them with ~M-x
|
||||
all-the-icons-install-fonts~.
|
||||
|
||||
** Ugly background colors in tty Emacs for daemon users
|
||||
=solaire-mode= is an aesthetic plugin that makes file-visiting buffers brighter
|
||||
than the rest of the Emacs' frame (to visually differentiate temporary windows
|
||||
or sidebars from editing windows). This looks great in GUI Emacs, but can look
|
||||
questionable in the terminal.
|
||||
|
||||
It disables itself if you start tty Emacs with ~emacs -nw~, but if you create a
|
||||
tty frame from a daemon (which solaire-mode cannot anticipate), you'll get an
|
||||
ugly background instead.
|
||||
|
||||
If you only use Emacs in the terminal, your best bet is to disable the
|
||||
solaire-mode package:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
;; in ~/.doom.d/packages.el
|
||||
(package! solaire-mode :disable t)
|
||||
#+END_SRC
|
||||
96
.emacs.d/modules/ui/doom/config.el
Normal file
96
.emacs.d/modules/ui/doom/config.el
Normal file
@@ -0,0 +1,96 @@
|
||||
;;; ui/doom/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +doom-solaire-themes
|
||||
'((doom-challenger-deep . t)
|
||||
(doom-city-lights . t)
|
||||
(doom-dracula . t)
|
||||
(doom-molokai)
|
||||
(doom-nord . t)
|
||||
(doom-nord-light . t)
|
||||
(doom-nova)
|
||||
(doom-one . t)
|
||||
(doom-one-light . t)
|
||||
(doom-opera . t)
|
||||
(doom-snazzy . t)
|
||||
(doom-solarized-dark . t)
|
||||
(doom-solarized-light)
|
||||
(doom-spacegrey . t)
|
||||
(doom-tomorrow-day . t)
|
||||
(doom-tomorrow-night . t)
|
||||
(doom-vibrant))
|
||||
"An alist of themes that support `solaire-mode'. If CDR is t, then
|
||||
`solaire-mode-swap-bg' will be used automatically, when the theme is loaded.")
|
||||
|
||||
|
||||
;;
|
||||
;;; Packages
|
||||
|
||||
(use-package! doom-themes
|
||||
:defer t
|
||||
:init
|
||||
(unless doom-theme
|
||||
(setq doom-theme 'doom-one))
|
||||
:config
|
||||
;; improve integration w/ org-mode
|
||||
(add-hook 'doom-load-theme-hook #'doom-themes-org-config)
|
||||
;; more Atom-esque file icons for neotree/treemacs
|
||||
(when (featurep! :ui neotree)
|
||||
(add-hook 'doom-load-theme-hook #'doom-themes-neotree-config)
|
||||
(setq doom-themes-neotree-enable-variable-pitch t
|
||||
doom-themes-neotree-file-icons 'simple
|
||||
doom-themes-neotree-line-spacing 2))
|
||||
(when (featurep! :ui treemacs)
|
||||
(add-hook 'doom-load-theme-hook #'doom-themes-treemacs-config)))
|
||||
|
||||
|
||||
(use-package! solaire-mode
|
||||
:when (or (daemonp) (display-graphic-p))
|
||||
:defer t
|
||||
:init
|
||||
(add-hook! 'doom-load-theme-hook :append
|
||||
(defun +doom-solaire-mode-swap-bg-maybe-h ()
|
||||
(pcase-let ((`(,_theme . ,swap) (assq doom-theme +doom-solaire-themes)))
|
||||
(require 'solaire-mode)
|
||||
(if swap (solaire-mode-swap-bg)))))
|
||||
:config
|
||||
;; fringe can become unstyled when deleting or focusing frames
|
||||
(add-hook 'focus-in-hook #'solaire-mode-reset)
|
||||
;; Prevent color glitches when reloading either DOOM or loading a new theme
|
||||
(add-hook! '(doom-load-theme-hook doom-reload-hook) :append
|
||||
#'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.
|
||||
(add-hook 'org-capture-mode-hook #'turn-on-solaire-mode)
|
||||
|
||||
;; 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. On Emacs 27 this no longer happens.
|
||||
(unless EMACS27+
|
||||
(defun +doom--line-range-fn ()
|
||||
(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-fn))
|
||||
|
||||
;; 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).
|
||||
(add-hook! 'solaire-mode-hook
|
||||
(defun +doom-disable-fringes-in-minibuffer-h (&rest _)
|
||||
(set-window-fringes (minibuffer-window) 0 0 nil)))
|
||||
|
||||
(defadvice! +doom--no-fringes-in-which-key-buffer-a (&rest _)
|
||||
:after 'which-key--show-buffer-side-window
|
||||
(+doom-disable-fringes-in-minibuffer-h)
|
||||
(set-window-fringes (get-buffer-window which-key--buffer) 0 0 nil))
|
||||
|
||||
(add-hook! '(minibuffer-setup-hook window-configuration-change-hook)
|
||||
#'+doom-disable-fringes-in-minibuffer-h)
|
||||
|
||||
(solaire-global-mode +1))
|
||||
6
.emacs.d/modules/ui/doom/packages.el
Normal file
6
.emacs.d/modules/ui/doom/packages.el
Normal file
@@ -0,0 +1,6 @@
|
||||
;; -*- no-byte-compile: t; -*-
|
||||
;;; ui/doom/packages.el
|
||||
|
||||
(package! doom-themes)
|
||||
(package! solaire-mode)
|
||||
|
||||
Reference in New Issue
Block a user