emacs.d/elpa/org-beautify-theme-20170908.2218/org-beautify-theme.el
2019-11-22 22:23:12 +01:00

125 lines
5.5 KiB
EmacsLisp

;;; org-beautify-theme.el --- A sub-theme to make org-mode more beautiful.
;; Copyright (C) 2014-2017 Jonathan Arkell
;; Author: Jonathan Arkell <jonnay@jonnay.net>
;; Version: 0.4
;; Package-Version: 20170908.2218
;; Created: 5 Oct 2012
;; Keywords: org theme
;; This file is not part of GNU Emacs.
;; Released under the GPL v3.0
;; This file 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, or (at your option)
;; any later version.
;; This file 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:
;; #+title: Read Me
;;
;; [[./screenshot.png]]
;;
;; * Making Org-mode Beautiful
;; ** This theme is dedicated to my wife Shell
;; Who—in her beauty, her love, and her love for beauty—has shown me
;; that form can enhance function.
;; * Mission
;; - Make org mode headlines easy to read. In any theme.
;; - Make it look more like a published book and/or desktop app, less
;; like angry fruit salad.
;; - Make it awesome to live in an org buffer.
;; * Usage
;; Load this theme over top your existing theme, and you should be
;; golden. If you find any incompatibilities, let me know with what
;; theme and I will try and fix it.
;;
;; When loading a whole new theme overtop, org-beautify-theme will
;; still be active with the old theme. Just unload org-beautify-theme
;; and then reload it, and everything will be fine again.
;;
;; If you still get really ugly headlines, customize the
;; ~org-beautify-theme-use-box-hack~ variable and set it to nil (false).
;;
;; * Changelog
;; - v0.4 :: [2017-09-08]
;; - Add org-beautify-theme-use-box-hack to allow the user to
;; fix ugly boxes.
;; - v0.3.2 :: [2017-08-29]
;; - Update License
;; - v0.3.1 :: [2016-10-19]
;; - Fix load path issues (Thanks PierreTechoueyres!)
;; - reverse chronological changelog, because ah-doy!
;; - v0.2 :: [2016-08-08]
;; - Better repository Location
;; - Fix so that you can load the theme properly.
;; - v0.1.2 :: [2014-01-06]
;; - Add Verdana font to fall back on
;; - v0.1.1 :: [2014-01-06]
;; - Fix checkboxes
;; - v0.1 :: First Release
;; - Make the colors suck a lot less, and the buffers look a lot nicer.
;;
;;; Code:
(deftheme org-beautify "Sub-theme to beautify org mode")
(defcustom org-beautify-theme-use-box-hack 't
"Use a 3 pixel box with the background color to add spacing.
Note that this has a side effect that can make the theme look
really bad under some circumstances."
:type 'boolean)
(let* ((sans-font (cond ((x-list-fonts "Lucida Grande") '(:font "Lucida Grande"))
((x-list-fonts "Verdana") '(:font "Verdana"))
((x-family-fonts "Sans Serif") '(:family "Sans Serif"))
(nil (warn "Cannot find a Sans Serif Font. Please report at: https://github.com/jonnay/org-beautify-theme/issues"))))
(base-font-color (face-foreground 'default nil 'default))
(background-color (face-background 'default nil 'default))
(headline `(:inherit default :foreground ,base-font-color))
(primary-color (face-foreground 'mode-line nil))
(secondary-color (face-background 'secondary-selection nil 'region))
(padding (if org-beautify-theme-use-box-hack
`(:line-width 5 :color ,background-color)
nil))
(org-highlights `(:foreground ,base-font-color :background ,secondary-color)))
(custom-theme-set-faces 'org-beautify
`(org-agenda-structure ((t (:inherit default ,@sans-font :height 2.0 :underline nil))))
`(org-level-8 ((t ,headline)))
`(org-level-7 ((t ,headline)))
`(org-level-6 ((t ,headline)))
`(org-level-5 ((t ,headline)))
`(org-level-4 ((t ,headline)))
`(org-level-3 ((t (,@headline :box ,padding))))
`(org-level-2 ((t (,@headline ,@sans-font :height 1.25 :box ,padding))))
`(org-level-1 ((t (,@headline ,@sans-font :height 1.5 :box ,padding ))))
`(org-document-title ((t (:inherit org-level-1 :height 2.0 :underline nil :box ,padding))))
`(org-block ((t (:foreground ,base-font-color :background ,background-color :box nil))))
`(org-block-begin-line ((t ,org-highlights)))
`(org-block-end-line ((t ,org-highlights)))
`(org-checkbox ((t (:foreground "#000000", :background "#93a1a1" :box (:line-width -3 :color "#93a1a1" :style "released-button")))))
`(org-headline-done ((t (:strike-through t))))
`(org-done ((t (:strike-through t))))))
;;;###autoload
(when (and (boundp 'custom-theme-load-path) load-file-name)
(add-to-list 'custom-theme-load-path
(file-name-as-directory (file-name-directory load-file-name))))
;; Local Variables:
;; no-byte-compile: t
;; End:
(provide-theme 'org-beautify)
;;; org-beautify-theme.el ends here