You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
6.3 KiB
Python

import json
""" This file reads the JSON file in root directory and converts it to emacs color theme. The theme is written on stdout and can be copied into a file and loaded in emacs without any modifications. """
background = ""
foreground = ""
colors = []
with open("../JSON", 'r') as f:
d = json.loads(f.read())
background = d['background']
foreground = d['foreground']
colors = d['color']
print(";; foreground : " + foreground)
print(";; background : " + background)
i = 0
for c in colors:
print(";; color" + str(i) + " " + c)
i += 1
print("""
(deftheme {theme_name}
"Add some description here")
(let ((class '((class color) (min-colors 89))))
(custom-theme-set-faces
'{theme_name}
`(default ((,class (:background "{bg}" :foreground "{fg}"))))
`(cursor ((,class (:background "{fg}" :foreground "{fg}"))))
;; Highlighting faces
`(fringe ((,class (:background "{bg}"))))
`(highlight ((,class (:background "{bg}" :underline t))))
;; background during selection, this tends to be weird so feel free to experiment
`(region ((t (:background "{bright_black}" :foreground "{bright_white}"))))
`(secondary-selection ((,class (:background "{bg}"))))
`(isearch ((,class (:background "{bg}" :foreground "{blue}" :weight bold))))
`(isearch-fail ((t (:foreground "{fg}" :background "{red}"))))
`(lazy-highlight ((,class (:background "{bg}" :foreground "{yellow}" :weight bold))))
;; Mode line faces
`(mode-line ((,class (:background "{black}" :foreground "{white}"))))
`(mode-line-inactive ((,class (:background "{bright_black}" :foreground "{bright_white}"))))
;; Escape and prompt faces
`(minibuffer-prompt ((,class (:foreground "{cyan}"))))
`(escape-glyph ((,class (:foreground "{yellow}" :weight bold))))
`(homoglyph ((,class (:foreground "{green}" :weight bold))))
;; Font lock faces, this is where all source file highlighing is done
`(font-lock-builtin-face ((,class (:foreground "{fg}" :weight bold))))
`(font-lock-comment-face ((,class (:foreground "{green}"))))
`(font-lock-constant-face ((,class (:foreground "{green}"))))
`(font-lock-function-name-face ((,class (:foreground "{cyan}"))))
`(font-lock-keyword-face ((,class (:foreground "{bright_red}" :weight bold))))
`(font-lock-string-face ((,class (:foreground "{green}"))))
`(font-lock-type-face ((,class (:foreground "{bright_yellow}" :weight bold))))
`(font-lock-variable-name-face ((,class (:foreground "{white}"))))
`(font-lock-warning-face ((,class (:foreground "{red}" :weight bold))))
;; Button and link faces
`(link ((,class (:foreground "{blue}" :underline t))))
`(link-visited ((,class (:foreground "{bright_blue}" :underline t))))
`(button ((,class (:background "{bright_black}" :foreground "{bright_white}"))))
`(header-line ((,class (:background "{bg}" :foreground "{bright_yellow}"))))
;; Gnus faces
;; `(gnus-group-news-1 ((,class (:weight bold :foreground "#95e454"))))
;; `(gnus-group-news-1-low ((,class (:foreground "#95e454"))))
;; `(gnus-group-news-2 ((,class (:weight bold :foreground "#cae682"))))
;; `(gnus-group-news-2-low ((,class (:foreground "#cae682"))))
;; `(gnus-group-news-3 ((,class (:weight bold :foreground "#ccaa8f"))))
;; `(gnus-group-news-3-low ((,class (:foreground "#ccaa8f"))))
;; `(gnus-group-news-4 ((,class (:weight bold :foreground "#99968b"))))
;; `(gnus-group-news-4-low ((,class (:foreground "#99968b"))))
;; `(gnus-group-news-5 ((,class (:weight bold :foreground "#cae682"))))
;; `(gnus-group-news-5-low ((,class (:foreground "#cae682"))))
;; `(gnus-group-news-low ((,class (:foreground "#99968b"))))
;; `(gnus-group-mail-1 ((,class (:weight bold :foreground "#95e454"))))
;; `(gnus-group-mail-1-low ((,class (:foreground "#95e454"))))
;; `(gnus-group-mail-2 ((,class (:weight bold :foreground "#cae682"))))
;; `(gnus-group-mail-2-low ((,class (:foreground "#cae682"))))
;; `(gnus-group-mail-3 ((,class (:weight bold :foreground "#ccaa8f"))))
;; `(gnus-group-mail-3-low ((,class (:foreground "#ccaa8f"))))
;; `(gnus-group-mail-low ((,class (:foreground "#99968b"))))
;; `(gnus-header-content ((,class (:foreground "#8ac6f2"))))
;; `(gnus-header-from ((,class (:weight bold :foreground "#95e454"))))
;; `(gnus-header-subject ((,class (:foreground "#cae682"))))
;; `(gnus-header-name ((,class (:foreground "#8ac6f2"))))
;; `(gnus-header-newsgroups ((,class (:foreground "#cae682"))))
;; set ansi-colors
`(ansi-color-black ((t (:foreground "{black}"))))
`(ansi-color-white ((t (:foreground "{white}"))))
`(ansi-color-red ((t (:foreground "{red}"))))
`(ansi-color-yellow ((t (:foreground "{yellow}"))))
`(ansi-color-green ((t (:foregrounB "{green}"))))
`(ansi-color-cyan ((t (:foreground "{cyan}"))))
`(ansi-color-blue ((t (:foreground "{blue}"))))
`(ansi-color-magenta ((t (:foregrou0E "{magenta}"))))
`(ansi-color-bright-black ((t (:foreground "{bright_black}"))))
`(ansi-color-bright-white ((t (:foreground "{bright_white}"))))
`(ansi-color-bright-red ((t (:foreground "{bright_red}"))))
`(ansi-color-bright-yellow ((t (:foreground "{bright_yellow}"))))
`(ansi-color-bright-green ((t (:foreground "{bright_green}"))))
`(ansi-color-bright-cyan ((t (:foreground "{bright_cyan}"))))
`(ansi-color-bright-blue ((t (:foreground "{bright_blue}" ))))
`(ansi-color-bright-magenta ((t (:foreground "{bright_magenta}"))))
;; Message faces
;; `(message-header-name ((,class (:foreground "#8ac6f2" :weight bold))))
;; `(message-header-cc ((,class (:foreground "#95e454"))))
;; `(message-header-other ((,class (:foreground "#95e454"))))
;; `(message-header-subject ((,class (:foreground "#cae682"))))
;; `(message-header-to ((,class (:foreground "#cae682"))))
;; `(message-cited-text ((,class (:foreground "#99968b"))))
`(message-separator ((,class (:foreground "{white}" :weight bold))))))
(provide-theme '{theme_name})
""".format(theme_name="anmol-test",bg=background, fg=foreground, black=colors[0], red=colors[1], green=colors[2], yellow=colors[3], blue=colors[4], magenta=colors[5], cyan=colors[6], white=colors[7], bright_black=colors[8], bright_red=colors[9], bright_green=colors[10], bright_yellow=colors[11], bright_blue=colors[12], bright_magenta=colors[13], bright_cyan=colors[14], bright_white=colors[15]))