aboutsummaryrefslogtreecommitdiff
path: root/soria-theme.el
diff options
context:
space:
mode:
Diffstat (limited to 'soria-theme.el')
-rw-r--r--soria-theme.el224
1 files changed, 224 insertions, 0 deletions
diff --git a/soria-theme.el b/soria-theme.el
new file mode 100644
index 0000000..1122349
--- /dev/null
+++ b/soria-theme.el
@@ -0,0 +1,224 @@
+;;; soria-theme.el --- A xoria256 theme with some colors from openSUSE.
+
+;; Copyright (C) 2016 Miquel Sabaté Solà <mikisabate@gmail.com>
+;;
+;; 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:
+;;
+;; This is a color theme based on xoria256 (vim.org #2140) but with some
+;; modifications here and there with colors from openSUSE's guidelines
+;; (http://opensuse.github.io/branding-guidelines/).
+
+;;; Credits:
+;;
+;; FEI Hao for the xoria256 port (https://github.com/suxue/xoria256-emacs).
+;; This theme is *largely* based on this port.
+;;
+;; Kelvin Smith for the port of the Monokai theme to Emacs
+;; (https://github.com/oneKelvinSmith/monokai-emacs). I've taken a lot of
+;; inspiration from its source code.
+;;
+;; I've adapted some of the color IDs with this gist:
+;; https://gist.github.com/MicahElliott/719710
+
+;;; Code:
+
+;; Initialization stuff.
+
+(unless (>= emacs-major-version 24)
+ (error "The soria theme requires Emacs 24 or later!"))
+
+(deftheme soria "A xoria256 theme with some colors from openSUSE")
+
+;; First of all, let's create our own font-lock for numbers.
+
+(make-face 'font-lock-number-face)
+(set-face-attribute 'font-lock-number-face nil :inherit font-lock-constant-face)
+(setq font-lock-number-face 'font-lock-number-face)
+
+; add-font-lock-numbers adds to the list of keywords of font-lock-number-face
+; the supported numeric formats (decimal, octal, hex and bin).
+(defun add-font-lock-numbers ()
+ (defvar font-lock-number "[0-9]+\\([eE][+-]?[0-9]*\\)?")
+ (defvar font-lock-hexnumber "0[xX][0-9a-fA-F]+")
+ (defvar font-lock-binnumber "0[bB][01]+")
+
+ (font-lock-add-keywords nil (list
+ (list (concat "\\<\\(" font-lock-number "\\)\\>" )
+ 0 font-lock-number-face)
+ (list (concat "\\<\\(" font-lock-hexnumber "\\)\\>" )
+ 0 font-lock-number-face)
+ (list (concat "\\<\\(" font-lock-binnumber "\\)\\>" )
+ 0 font-lock-number-face)))
+)
+
+;; The color theme itself.
+
+(let*
+ ((class '((class color) (min-colors 89)))
+ (soria-purple "#dfafdf")
+ (soria-darkpurple "#875f87")
+ (soria-white "#d0d0d0")
+ (soria-darkgray "#1c1c1c")
+ (soria-brightgreen "#81c13b")
+ (soria-green "#b9dc92")
+ (soria-darkgreen "#2f5361")
+ (soria-gray "#808080")
+ (soria-linegray "#3a3a3a")
+ (soria-statusgray "#4e4e4e")
+ (soria-statusncgray "#b2b2b2")
+ (soria-black "#000000")
+ (soria-whitest "#eeeeee")
+ (soria-yellow "#ffffaf")
+ (soria-orange "#d7af87")
+ (soria-redpastel "#d78787")
+ (soria-blue "#87afd7"))
+
+ (custom-theme-set-faces
+ 'soria
+ ;; Ensure sufficient contrast on low-color terminals.
+ `(default (
+ (((class color) (min-colors 256))
+ (:foreground ,soria-white :background ,soria-darkgray))))
+
+ ;; Highlighting faces
+
+ `(highlight
+ ((,class (:background ,soria-darkpurple
+ :foreground ,soria-white))))
+
+ `(region
+ ((,class (:inherit highlight))))
+
+ `(lazy-highlight
+ ((,class (:inherit highlight))))
+
+ `(isearch
+ ((,class (:background ,soria-green
+ :foreground ,soria-black))))
+
+ `(trailing-whitespace
+ ((,class (:background ,soria-brightgreen))))
+
+ ;; Font lock faces
+
+ `(font-lock-builtin-face
+ ((,class (:foreground ,soria-blue))))
+
+ `(font-lock-comment-face
+ ((,class (:foreground ,soria-gray))))
+
+ `(font-lock-comment-delimiter-face
+ ((,class (:inherit font-lock-comment-face))))
+
+ `(font-lock-doc-face
+ ((,class (:inherit font-lock-comment-face))))
+
+ `(font-lock-function-name-face
+ ((,class (:foreground ,soria-purple))))
+
+ `(font-lock-variable-name-face
+ ((,class (:foreground ,soria-white))))
+
+ `(font-lock-preprocessor-face
+ ((,class (:foreground ,soria-green))))
+
+ `(font-lock-constant-face
+ ((,class (:foreground ,soria-yellow))))
+
+ `(font-lock-keyword-face
+ ((,class (:foreground ,soria-blue))))
+
+ `(font-lock-string-face
+ ((,class (:foreground ,soria-yellow))))
+
+ `(font-lock-type-face
+ ((,class (:foreground ,soria-blue))))
+
+ `(font-lock-number-face
+ ((,class (:foreground ,soria-orange))))
+
+ `(font-lock-negation-char-face
+ ((,class (:inherit default))))
+
+ `(font-lock-warning-face
+ ((,class (:foreground ,soria-green))))
+
+ ;; Misc
+
+ `(hl-line
+ ((,class (:background ,soria-linegray))))
+
+ `(linum-highlight-face
+ ((,class (:background ,soria-darkgray
+ :foreground ,soria-yellow))))
+
+ `(show-paren-match
+ ((,class (:background ,soria-brightgreen
+ :foreground ,soria-darkgreen))))
+
+ ;; Mode line faces
+
+ `(mode-line
+ ((,class
+ (:box (:line-width -1 :style released-button)
+ :background ,soria-statusgray
+ :foreground ,soria-white))))
+
+ `(mode-line-inactive
+ ((,class
+ (:box (:line-width -1 :style released-button)
+ :background ,soria-linegray
+ :foreground ,soria-statusncgray))))
+
+ `(compilation-mode-line-fail
+ ((,class (:foreground ,soria-redpastel))))
+
+ `(compilation-mode-line-run
+ ((,class (:foreground ,soria-yellow))))
+
+ `(compilation-mode-line-exit
+ ((,class (:foreground ,soria-brightgreen))))
+
+ ;; Escape and prompt faces
+
+ `(minibuffer-prompt
+ ((,class (:foreground ,soria-white))))
+
+ `(escape-glyph
+ ((,class (:foreground ,soria-redpastel))))
+
+ `(error
+ ((,class (:foreground ,soria-white))))
+
+ `(warning
+ ((,class (:foreground ,soria-orange))))
+
+ `(success
+ ((,class (:foreground ,soria-blue))))
+ )
+)
+
+;; And finally hook the defined font locks and call provide-theme.
+
+(add-hook 'prog-mode-hook 'add-font-lock-numbers)
+
+(provide-theme 'soria)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; soria-theme.el ends here