You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.0 KiB
73 lines
3.0 KiB
;;; solarized-theme-utils.el --- Utilities for solarized theme development |
|
|
|
;; Copyright (C) 2012 Thomas Frössman |
|
|
|
;; Author: Thomas Frössman <thomasf@jossystem.se> |
|
;; URL: http://github.com/bbatsov/solarized-emacs |
|
|
|
;; This program is free software; you can redistribute it and/or modify |
|
;; it under the terms of the GNU General Public License as published by |
|
;; the Free Software Foundation, either version 3 of the License, or |
|
;; (at your option) any later version. |
|
|
|
;; This program is distributed in the hope that it will be useful, |
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
;; GNU General Public License for more details. |
|
|
|
;; You should have received a copy of the GNU General Public License |
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
;;; Commentary: |
|
;; |
|
;; Development utilities, these are not needed for normal theme usage |
|
;; |
|
|
|
;;;; Code: |
|
(require 'cl-lib) |
|
(require 'solarized) |
|
|
|
(defun solarized-import-faces (&optional regexp already-defined) |
|
"Imports current effective face definitions by regular expression |
|
in the format of solarized-theme.el." |
|
(interactive (list (read-regexp "List faces matching regexp"))) |
|
(let* |
|
((all-faces (zerop (length regexp))) |
|
(faces |
|
(delq nil |
|
(mapcar (lambda (face) |
|
(let ((s (symbol-name face))) |
|
(when (or all-faces (string-match regexp s)) |
|
face))) |
|
(sort (face-list) #'string-lessp))))) |
|
(mapc (lambda(face) |
|
(when (or (not (get face 'theme-face)) already-defined) |
|
(insert (format |
|
"`(%s ((,class %s)))%s |
|
" |
|
face |
|
(let (result) |
|
(dolist (entry face-attribute-name-alist result) |
|
(let* ((attribute (car entry)) |
|
(value (face-attribute face attribute))) |
|
(unless (eq value 'unspecified) |
|
(setq result |
|
(nconc (list attribute |
|
(cond |
|
((cl-member attribute |
|
'(":background" |
|
":foreground") |
|
:test 'string=) |
|
(format "\"%s\"" value)) |
|
(t value))) result)))))) |
|
(if (get face 'theme-face) |
|
(format " ;; Already set by current theme!") |
|
""))))) |
|
faces))) |
|
|
|
;; Local Variables: |
|
;; byte-compile-warnings: (not cl-functions) |
|
;; indent-tabs-mode: nil |
|
;; End: |
|
(provide 'solarized-theme-utils) |
|
;;; solarized-theme-utils.el ends here
|
|
|