Add theming layer
This commit is contained in:
parent
15f4db4d10
commit
eda444f153
90
layers/theming/README.org
Normal file
90
layers/theming/README.org
Normal file
|
@ -0,0 +1,90 @@
|
|||
* Theming contribution layer for Spacemacs
|
||||
|
||||
** Table of Contents :TOC@4:
|
||||
- [[#theming-contribution-layer-for-spacemacs][Theming contribution layer for Spacemacs]]
|
||||
- [[#description][Description]]
|
||||
- [[#install][Install]]
|
||||
- [[#usage][Usage]]
|
||||
- [[#attributes][Attributes]]
|
||||
- [[#faces][Faces]]
|
||||
- [[#headers][Headers]]
|
||||
|
||||
** Description
|
||||
This layer allows for a simple way of modifying themes.
|
||||
|
||||
** Install
|
||||
To use this contribution add it to your =~/.spacemacs=
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq-default dotspacemacs-configuration-layers '(theming))
|
||||
#+end_src
|
||||
|
||||
** Usage
|
||||
To use this layer, set the value of =theming-modifications=. It should be a list
|
||||
of the following form:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
((theme1 (face1 attributes...)
|
||||
(face2 attributes...)
|
||||
...)
|
||||
(theme2 (face1 attributes...)
|
||||
(face2 attributes...)
|
||||
...)
|
||||
...)
|
||||
#+end_src
|
||||
|
||||
This will apply the given attributes to the relevant faces whenever the
|
||||
appropriate theme is loaded. To update without changing the theme, use ~SPC :
|
||||
spacemacs/update-theme~.
|
||||
|
||||
** Attributes
|
||||
See [[http://www.gnu.org/software/emacs/manual/html_node/elisp/Face-Attributes.html#Face-Attributes][face attributes]] in the Emacs manual for more information. Some of the more
|
||||
common attributes you might want to tweak are the following:
|
||||
|
||||
- =:inherit= :: the name of a face to inherit attributes from
|
||||
- =:foreground= and =:background= :: Hexadecimal color strings
|
||||
- =:height= :: typically a floating point number (1.0 gives the same height as
|
||||
the underlying face)
|
||||
- =:weight= :: typically =bold= or =normal=
|
||||
- =:underline= :: typically =nil= or =t=
|
||||
- =:slant= :: typically =oblique=, =italic= or =normal=
|
||||
- =:box= :: set to =t= to draw a box around characters in the foreground
|
||||
|
||||
** Faces
|
||||
To see a list over all loaded faces and what they look like, use ~SPC :
|
||||
list-faces-display~. You can also use ~SPC h d c~ (describe character) on a
|
||||
character to see its face.
|
||||
|
||||
Some of the most common faces to modify are the syntactical elements:
|
||||
- =font-lock-builtin-face=
|
||||
- =font-lock-comment-delimiter-face=
|
||||
- =font-lock-comment-face=
|
||||
- =font-lock-constant-face=
|
||||
- =font-lock-doc-face=
|
||||
- =font-lock-function-name-face=
|
||||
- =font-lock-keyword-face=
|
||||
- =font-lock-preprocessor-face=
|
||||
- =font-lock-string-face=
|
||||
- =font-lock-type-face=
|
||||
- =font-lock-variable-name-face=
|
||||
- =font-lock-warning-face=
|
||||
|
||||
As well as the mode-line faces for the active and inactive windows:
|
||||
- =powerline-active1=
|
||||
- =powerline-active2=
|
||||
- =powerline-inactive1=
|
||||
- =powerline-inactive2=
|
||||
- =mode-line=
|
||||
- =mode-line-inactive=
|
||||
|
||||
** Headers
|
||||
This layer includes three additional layer variables for tweaking headings.
|
||||
Allowed values are a list of themes in which the given effect should happen, or
|
||||
the symbol =all= to apply it on all themes.
|
||||
|
||||
- =theming-headings-inherit-from-default= :: inherits all headings from the
|
||||
default face to avoid non-monospaced fonts
|
||||
- =theming-headings-same-size= :: sets the =:height= attribute to one on all
|
||||
headings to give them the same size as the rest of the text
|
||||
- =theming-headings-bold= :: sets the =:weight= attribute to bold on all
|
||||
headings
|
67
layers/theming/config.el
Normal file
67
layers/theming/config.el
Normal file
|
@ -0,0 +1,67 @@
|
|||
;;; config.el --- Theming Layer configuration File for Spacemacs
|
||||
;;
|
||||
;; Copyright (c) 2012-2014 Sylvain Benner
|
||||
;; Copyright (c) 2014-2015 Sylvain Benner & Contributors
|
||||
;;
|
||||
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
||||
;; URL: https://github.com/syl20bnr/spacemacs
|
||||
;;
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;;; License: GPLv3
|
||||
|
||||
(defvar theming-modifications '()
|
||||
"An alist of theme modifications. Each element should
|
||||
be on the form (THEME . SPEC), where THEME is a symbol
|
||||
representing a theme, and SPEC is an alist mapping faces
|
||||
to face specs (see `defface').")
|
||||
|
||||
(defvar theming-headings-inherit-from-default '()
|
||||
"A list of themes where all headings should inherit
|
||||
from the default face, or the symbol `all'.")
|
||||
|
||||
(defvar theming-headings-same-size '()
|
||||
"A list of themes where all headings should have the
|
||||
same size, or the symbol `all'.")
|
||||
|
||||
(defvar theming-headings-bold '()
|
||||
"A list of themes where all headings should be bold,
|
||||
or the symbol `all'.")
|
||||
|
||||
(defvar spacemacs--theming-modified-faces '())
|
||||
|
||||
(defvar spacemacs--theming-header-faces
|
||||
'(font-latex-sectioning-0-face
|
||||
font-latex-sectioning-1-face
|
||||
font-latex-sectioning-2-face
|
||||
font-latex-sectioning-3-face
|
||||
font-latex-sectioning-4-face
|
||||
font-latex-sectioning-5-face
|
||||
font-latex-slide-title-face
|
||||
info-title-1
|
||||
info-title-2
|
||||
info-title-3
|
||||
info-title-4
|
||||
markdown-header-face
|
||||
markdown-header-face-1
|
||||
markdown-header-face-2
|
||||
markdown-header-face-3
|
||||
markdown-header-face-4
|
||||
markdown-header-face-5
|
||||
markdown-header-face-6
|
||||
org-document-title
|
||||
org-level-1
|
||||
org-level-2
|
||||
org-level-3
|
||||
org-level-4
|
||||
org-level-5
|
||||
org-level-6
|
||||
org-level-7
|
||||
org-level-8)
|
||||
"List of header faces.")
|
||||
|
||||
;; Apply theme customizations after any call to load-theme
|
||||
(advice-add 'load-theme :after 'spacemacs//theming)
|
||||
|
||||
;; Apply the initial customizations now, because load-theme has already been called
|
||||
(spacemacs//theming spacemacs--cur-theme)
|
47
layers/theming/funcs.el
Normal file
47
layers/theming/funcs.el
Normal file
|
@ -0,0 +1,47 @@
|
|||
;;; config.el --- Theming Layer functions File for Spacemacs
|
||||
;;
|
||||
;; Copyright (c) 2012-2014 Sylvain Benner
|
||||
;; Copyright (c) 2014-2015 Sylvain Benner & Contributors
|
||||
;;
|
||||
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
||||
;; URL: https://github.com/syl20bnr/spacemacs
|
||||
;;
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;;; License: GPLv3
|
||||
|
||||
(defun spacemacs//in-or-all (key seq)
|
||||
(or (eq 'all seq) (memq key seq)))
|
||||
|
||||
(defun spacemacs//theming (theme &optional no-confirm no-enable)
|
||||
"Removes existing user theming and applies customizations for the given
|
||||
theme."
|
||||
(unless no-enable
|
||||
|
||||
;; Remove existing modifications
|
||||
(dolist (face spacemacs--theming-modified-faces)
|
||||
(custom-set-faces `(,face ((t ())))))
|
||||
(setq spacemacs--theming-modified-faces nil)
|
||||
|
||||
;; Headings
|
||||
(let ((mods nil))
|
||||
(when (spacemacs//in-or-all theme theming-headings-inherit-from-default)
|
||||
(setq mods (plist-put mods :inherit 'default)))
|
||||
(when (spacemacs//in-or-all theme theming-headings-same-size)
|
||||
(setq mods (plist-put mods :height 1.0)))
|
||||
(when (spacemacs//in-or-all theme theming-headings-bold)
|
||||
(setq mods (plist-put mods :weight 'bold)))
|
||||
(when mods
|
||||
(dolist (face spacemacs--theming-header-faces)
|
||||
(custom-set-faces `(,face ((t ,mods))))
|
||||
(push face spacemacs--theming-modified-faces))))
|
||||
|
||||
;; Add new modifications
|
||||
(dolist (spec (append (cdr (assq theme theming-modifications))
|
||||
(cdr (assq t theming-modifications))))
|
||||
(custom-set-faces `(,(car spec) ((t ,(cdr spec)))))
|
||||
(push (car spec) spacemacs--theming-modified-faces))))
|
||||
|
||||
(defun spacemacs/update-theme ()
|
||||
(interactive)
|
||||
(spacemacs//theming spacemacs--cur-theme))
|
Loading…
Reference in a new issue