My personal dotfiles
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.

prassee-theme.el 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. ;; Inspired from Doom-theme with some customization
  2. (deftheme prassee
  3. "A dark theme inspired by Doom One theme")
  4. (let ((c '((class color) (min-colors 89)))
  5. (black "#181e26")
  6. (white "#DFDFDF")
  7. (grey (if window-system "#5B6268" "#525252"))
  8. (green-c "#65737E")
  9. (grey-c "#3d4451")
  10. (grey-d "#3D3D48")
  11. (grey-dd "#404850")
  12. (yellow "#ECBE7B")
  13. (yellow-d "#CDB464")
  14. (orange "#da8548")
  15. (red "#ff6c6b")
  16. (magenta "#c678dd")
  17. (violet "#a9a1e1")
  18. (cyan "#46D9FF")
  19. (cyan-d "#5699AF")
  20. (teal "#4db5bd")
  21. (blue "#51afef")
  22. (blue-d "#1f5582")
  23. (green "#98be65"))
  24. (let* ((bg "#2b303b")
  25. (bg-d "#2b303b")
  26. (fg "#bbc2cf")
  27. (highlight blue)
  28. (vertical-bar black)
  29. (current-line (if window-system "#23272e" "#262626"))
  30. (selection highlight)
  31. (builtin magenta)
  32. (comments green-c)
  33. (constants violet)
  34. (functions magenta)
  35. (keywords blue)
  36. (methods cyan)
  37. (operators blue)
  38. (type yellow)
  39. (strings green)
  40. (variables white)
  41. (numbers orange)
  42. (region "#3d4451")
  43. ;; tabs
  44. (tab-unfocused-bg "#353a42")
  45. (tab-unfocused-fg "#1e2022")
  46. ;; main search regions
  47. (search-bg blue)
  48. (search-fg black)
  49. ;; other search regions
  50. (search-rest-bg grey-d)
  51. (search-rest-fg blue)
  52. ;; mode line
  53. (modeline-fg grey)
  54. (modeline-fg-l blue)
  55. (modeline-bg (if window-system bg-d current-line))
  56. (modeline-bg-l (if window-system blue current-line))
  57. (modeline-fg-inactive white)
  58. (modeline-bg-inactive grey)
  59. ;; vcs
  60. (vc-modified yellow-d)
  61. (vc-added green)
  62. (vc-deleted red))
  63. (custom-theme-set-faces
  64. 'prassee
  65. ;; Global
  66. `(default ((,c (:background ,bg-d :foreground ,fg))))
  67. `(fringe ((,c (:inherit default :foreground ,comments))))
  68. `(region ((,c (:background ,region))))
  69. `(highlight ((,c (:background ,blue :foreground ,black))))
  70. `(hl-line ((,c (:background ,bg))))
  71. `(cursor ((,c (:background ,blue))))
  72. `(shadow ((,c (:foreground ,grey))))
  73. `(minibuffer-prompt ((,c (:foreground ,blue))))
  74. `(tooltip ((,c (:background ,black :foreground ,fg))))
  75. `(error ((,c (:foreground ,orange))))
  76. `(warning ((,c (:foreground ,yellow))))
  77. `(success ((,c (:foreground ,green))))
  78. `(secondary-selection ((,c (:background ,blue :foreground ,black))))
  79. `(lazy-highlight ((,c (:background ,blue-d :foreground ,white))))
  80. `(match ((,c (:foreground ,green :background ,black ))))
  81. `(trailing-whitespace ((,c (:background ,comments))))
  82. `(vertical-border ((,c (:foreground ,vertical-bar :background ,vertical-bar))))
  83. `(show-paren-match ((,c (:foreground ,red :background ,black ))))
  84. `(show-paren-mismatch ((,c (:foreground ,black :background ,red ))))
  85. `(linum
  86. ((((type graphic)) :background ,bg :foreground ,teal )
  87. (t :background ,bg :foreground ,teal )))
  88. `(font-lock-builtin-face ((,c (:foreground ,builtin))))
  89. `(font-lock-comment-face ((,c (:foreground ,comments))))
  90. `(font-lock-comment-delimiter-face ((,c (:foreground ,comments))))
  91. `(font-lock-doc-face ((,c (:foreground ,comments))))
  92. `(font-lock-doc-string-face ((,c (:foreground ,comments))))
  93. `(font-lock-constant-face ((,c (:foreground ,constants))))
  94. `(font-lock-function-name-face ((,c (:foreground ,functions))))
  95. `(font-lock-keyword-face ((,c (:foreground ,keywords))))
  96. `(font-lock-string-face ((,c (:foreground ,strings))))
  97. `(font-lock-type-face ((,c (:foreground ,type))))
  98. `(font-lock-variable-name-face ((,c (:foreground ,variables))))
  99. `(font-lock-warning-face ((,c (:inherit warning))))
  100. `(font-lock-negation-char-face ((,c (:foreground ,operators ))))
  101. `(font-lock-preprocessor-face ((,c (:foreground ,operators ))))
  102. `(font-lock-preprocessor-char-face ((,c (:foreground ,operators ))))
  103. `(font-lock-regexp-grouping-backslash ((,c (:foreground ,operators ))))
  104. `(font-lock-regexp-grouping-construct ((,c (:foreground ,operators ))))
  105. ;; Modeline
  106. `(mode-line ((,c (:foreground ,black
  107. :background ,teal))))
  108. `(mode-line-inactive ((,c (:foreground ,green
  109. :background ,green-c))))
  110. `(header-line ((,c (:inherit mode-line))))
  111. ;; Powerline/Spaceline
  112. ;;`(spaceline-highlight-face ((,c (:foreground ,black))))
  113. `(powerline-active1 ((,c (:inherit mode-line))))
  114. `(powerline-active2 ((,c (:inherit mode-line))))
  115. `(powerline-inactive1 ((,c (:inherit mode-line-inactive))))
  116. `(powerline-inactive2 ((,c (:inherit mode-line-inactive))))
  117. ;; Dired/dired-k
  118. `(dired-directory ((,c (:foreground ,orange))))
  119. `(dired-ignored ((,c (:foreground ,comments))))
  120. `(dired-k-directory ((,c (:foreground ,blue))))
  121. ;; Search
  122. `(isearch ((,c (:background ,search-bg :foreground ,black ))))
  123. `(isearch-lazy-highlight-face ((,c (:background ,search-rest-bg))))
  124. `(yas-field-highlight-face ((,c (:inherit match))))
  125. ;; `window-divider'
  126. `(window-divider ((,c (:foreground ,vertical-bar))))
  127. `(window-divider-first-pixel ((,c (:foreground ,vertical-bar))))
  128. `(window-divider-last-pixel ((,c (:foreground ,vertical-bar))))
  129. ;;
  130. ;; Plugins
  131. ;;
  132. ;; Avy
  133. `(avy-lead-face-0 ((,c (:background ,search-bg :foreground ,search-fg))))
  134. `(avy-lead-face-1 ((,c (:background ,search-bg :foreground ,search-fg))))
  135. `(avy-lead-face-2 ((,c (:background ,search-bg :foreground ,search-fg))))
  136. `(avy-lead-face ((,c (:background ,search-bg :foreground ,search-fg))))
  137. ;; company-mode
  138. `(company-tooltip ((,c (:inherit tooltip))))
  139. `(company-tooltip-common ((,c (:foreground ,blue))))
  140. `(company-tooltip-search ((,c (:foreground ,search-fg :background ,highlight))))
  141. `(company-tooltip-selection ((,c (:background ,selection))))
  142. `(company-tooltip-mouse ((,c (:background ,magenta :foreground ,bg))))
  143. `(company-tooltip-annotation ((,c (:foreground ,violet))))
  144. `(company-scrollbar-bg ((,c (:background ,black))))
  145. `(company-scrollbar-fg ((,c (:background ,blue))))
  146. `(company-preview ((,c (:foreground ,blue))))
  147. `(company-preview-common ((,c (:foreground ,magenta :background ,grey-d))))
  148. `(company-preview-search ((,c (:inherit company-tooltip-search))))
  149. ;; diff-hl
  150. `(diff-hl-change ((,c (:foreground ,vc-modified))))
  151. `(diff-hl-delete ((,c (:foreground ,vc-deleted))))
  152. `(diff-hl-insert ((,c (:foreground ,vc-added))))
  153. ;; elscreen
  154. `(elscreen-tab-background-face ((,c (:background ,bg-d))))
  155. `(elscreen-tab-control-face ((,c (:background ,bg-d :foreground ,bg-d))))
  156. `(elscreen-tab-current-screen-face ((,c (:background ,bg :foreground ,fg))))
  157. `(elscreen-tab-other-screen-face ((,c (:background ,tab-unfocused-bg :foreground ,tab-unfocused-fg))))
  158. ;; flycheck
  159. `(flycheck-error ((,c (:underline (:style wave :color ,red)))))
  160. `(flycheck-warning ((,c (:underline (:style wave :color ,yellow)))))
  161. `(flycheck-info ((,c (:underline (:style wave :color ,green)))))
  162. `(flyspell-incorrect ((,c (:underline (:style wave :color ,red) :inherit unspecified))))
  163. ;; git-gutter
  164. `(git-gutter:modified ((,c (:foreground ,vc-modified))))
  165. `(git-gutter:added ((,c (:foreground ,vc-added))))
  166. `(git-gutter:deleted ((,c (:foreground ,vc-deleted))))
  167. `(git-gutter-fr:modified ((,c (:foreground ,vc-modified))))
  168. `(git-gutter-fr:added ((,c (:foreground ,vc-added))))
  169. `(git-gutter-fr:deleted ((,c (:foreground ,vc-deleted))))
  170. `(git-gutter+-modified ((,c (:foreground ,vc-modified))))
  171. `(git-gutter+-added ((,c (:foreground ,vc-added))))
  172. `(git-gutter+-deleted ((,c (:foreground ,vc-deleted))))
  173. ;; Helm
  174. `(helm-selection ((,c (:background ,teal :foreground ,black))))
  175. `(helm-match ((,c (:foreground ,blue :underline t))))
  176. `(helm-source-header ((,c (:background ,highlight :foreground ,black ))))
  177. `(helm-swoop-target-line-face ((,c (:foreground ,highlight :inverse-video t))))
  178. `(helm-ff-file ((,c (:foreground ,fg))))
  179. `(helm-ff-prefix ((,c (:foreground ,magenta))))
  180. `(helm-ff-dotted-directory ((,c (:foreground ,grey-d))))
  181. `(helm-ff-directory ((,c (:foreground ,orange))))
  182. `(helm-ff-executable ((,c (:foreground ,white ))))
  183. ;; indent-guide, highlight-{quoted,numbers,indentation}-mode
  184. `(indent-guide-face ((,c (:foreground "#2F2F38"))))
  185. `(highlight-indentation-face ((,c (:background "#222830"))))
  186. `(highlight-indentation-current-column-face ((,c (:background "#222830"))))
  187. `(highlight-indentation-guides-odd-face ((,c (:background ,bg))))
  188. `(highlight-indentation-guides-even-face ((,c (:background "#222830"))))
  189. `(highlight-quoted-symbol ((,c (:foreground ,type))))
  190. `(highlight-quoted-quote ((,c (:foreground ,operators))))
  191. `(highlight-numbers-number ((,c (:foreground ,numbers))))
  192. ;; neotree
  193. `(neo-root-dir-face ((,c (:foreground ,green :background ,bg :box (:line-width 4 :color ,bg)))))
  194. `(neo-file-link-face ((,c (:foreground ,fg))))
  195. `(neo-dir-link-face ((,c (:foreground ,blue))))
  196. `(neo-expand-btn-face ((,c (:foreground ,blue))))
  197. ;; pos-tip
  198. `(popup ((,c (:inherit tooltip))))
  199. `(popup-tip-face ((,c (:inherit tooltip))))
  200. ;; stripe-buffer
  201. `(stripe-highlight ((,c (:background ,bg))))
  202. ;; Volatile highlights
  203. `(vhl/default-face ((,c (:background ,grey-d))))
  204. ;; Rainbow delimiters
  205. `(rainbow-delimiters-depth-1-face ((,c (:foreground ,blue))))
  206. `(rainbow-delimiters-depth-2-face ((,c (:foreground ,magenta))))
  207. `(rainbow-delimiters-depth-3-face ((,c (:foreground ,green))))
  208. `(rainbow-delimiters-depth-4-face ((,c (:foreground ,orange))))
  209. `(rainbow-delimiters-depth-5-face ((,c (:foreground ,violet))))
  210. ;; re-builder
  211. `(reb-match-0 ((,c (:foreground ,orange :inverse-video t))))
  212. `(reb-match-1 ((,c (:foreground ,magenta :inverse-video t))))
  213. `(reb-match-2 ((,c (:foreground ,green :inverse-video t))))
  214. `(reb-match-3 ((,c (:foreground ,yellow :inverse-video t))))
  215. ;; which-key
  216. `(which-key-key-face ((,c (:foreground ,green))))
  217. `(which-key-group-description-face ((,c (:foreground ,violet))))
  218. `(which-key-command-description-face ((,c (:foreground ,blue))))
  219. `(which-key-local-map-description-face ((,c (:foreground ,magenta))))
  220. ;; whitespace
  221. `(whitespace-tab ((,c (:foreground ,grey-d))))
  222. `(whitespace-newline ((,c (:foreground ,grey-d))))
  223. `(whitespace-trailing ((,c (:background ,grey-d))))
  224. `(whitespace-line ((,c (:background ,current-line :foreground ,magenta))))
  225. ;; workgroups2
  226. `(wg-current-workgroup-face ((,c (:foreground ,black :background ,blue))))
  227. `(wg-other-workgroup-face ((,c (:foreground ,grey :background ,current-line))))
  228. `(wg-divider-face ((,c (:foreground ,grey-d))))
  229. `(wg-brace-face ((,c (:foreground ,blue))))
  230. ;;
  231. ;; Language-specific
  232. ;;
  233. ;; ensime , Scala & SBT
  234. `(scala-font-lock:var-face ((t (:foreground ,fg :underline (:style wave :color "yellow") :inherit 'font-lock-variable-name-face))))
  235. `(sbt:error ((t (:inherit 'default :foreground ,red))))
  236. `(ensime-warnline-highlight ((t (:inherit 'font-lock-warning-face))))
  237. `(ensime-compile-infoline ((t (:foreground ,fg ))))
  238. ;;; (css|scss)-mode
  239. `(css-proprietary-property ((,c (:foreground ,orange))))
  240. `(css-property ((,c (:foreground ,green))))
  241. `(css-selector ((,c (:foreground ,blue))))
  242. ;;; js2-mode
  243. `(js2-function-param ((,c (:foreground ,variables))))
  244. `(js2-function-call ((,c (:foreground ,functions))))
  245. `(js2-object-property ((,c (:foreground ,violet))))
  246. `(js2-jsdoc-tag ((,c (:foreground ,comments))))
  247. ;;; makefile-*-mode
  248. `(makefile-targets ((,c (:foreground ,blue))))
  249. ;;; markdown-mode
  250. `(markdown-header-face ((,c (:foreground ,red :bold t))))
  251. `(markdown-header-delimiter-face ((,c (:inherit markdown-header-face))))
  252. `(markdown-metadata-key-face ((,c (:foreground ,red))))
  253. `(markdown-blockquote-face ((,c (:foreground ,violet))))
  254. `(markdown-markup-face ((,c (:foreground ,grey))))
  255. `(markdown-markup-face ((,c (:foreground ,operators))))
  256. `(markdown-pre-face ((,c (:foreground ,green))))
  257. `(markdown-inline-face ((,c (:foreground ,cyan))))
  258. `(markdown-list-face ((,c (:foreground ,red))))
  259. `(markdown-link-face ((,c (:foreground ,blue :bold t))))
  260. `(markdown-url-face ((,c (:foreground ,magenta :bold t))))
  261. `(markdown-header-face-1 ((,c (:inherit markdown-header-face))))
  262. `(markdown-header-face-2 ((,c (:inherit markdown-header-face))))
  263. `(markdown-header-face-3 ((,c (:inherit markdown-header-face))))
  264. `(markdown-header-face-4 ((,c (:inherit markdown-header-face))))
  265. `(markdown-header-face-5 ((,c (:inherit markdown-header-face))))
  266. `(markdown-header-face-6 ((,c (:inherit markdown-header-face))))
  267. `(markdown-header-rule-face ((,c (:inherit shadow))))
  268. `(markdown-italic-face ((,c (:inherit italic :foreground ,violet))))
  269. `(markdown-bold-face ((,c (:inherit bold :foreground ,orange))))
  270. `(markdown-link-face ((,c (:inherit shadow))))
  271. `(markdown-link-title-face ((,c (:inherit link))))
  272. `(markdown-url-face ((,c (:inherit link))))
  273. ;; org-mode
  274. `(org-tag ((,c (:foreground ,yellow :bold t))))
  275. `(org-priority ((,c (:foreground ,red))))
  276. `(org-ellipsis ((,c (:inherit hs-face))))
  277. `(org-hide ((,c (:foreground ,bg))))
  278. `(org-table ((,c (:foreground ,cyan))))
  279. `(org-quote ((,c (:slant italic :foreground ,grey :background ,current-line))))
  280. `(org-document-info ((,c (:foreground ,orange))))
  281. `(org-document-info-keyword ((,c (:foreground ,grey-d))))
  282. `(org-meta-line ((,c (:foreground ,comments))))
  283. `(org-block-begin-line ((,c (:background ,current-line :foreground ,comments))))
  284. `(org-block-end-line ((,c (:inherit org-block-begin-line))))
  285. `(org-block-background ((,c (:background ,current-line))))
  286. `(org-archived ((,c (:foreground ,grey))))
  287. `(org-document-title ((,c (:foreground ,cyan :height 1.2))))
  288. `(org-level-1 ((,c (:background ,current-line :foreground ,blue :height 1.2))))
  289. `(org-level-2 ((,c ( :foreground ,blue))))
  290. `(org-level-3 ((,c ( :foreground ,blue))))
  291. `(org-level-4 ((,c ( :foreground ,blue))))
  292. `(org-level-5 ((,c ( :foreground ,blue))))
  293. `(org-level-6 ((,c ( :foreground ,blue))))
  294. `(org-code ((,c (:foreground ,orange))))
  295. `(org-verbatim ((,c (:foreground ,green))))
  296. `(org-formula ((,c (:foreground ,cyan))))
  297. `(org-list-dt ((,c (:foreground ,cyan))))
  298. `(org-footnote ((,c (:foreground ,orange))))
  299. `(org-link ((,c (:foreground ,cyan :underline t))))
  300. `(org-date ((,c (:foreground ,violet))))
  301. `(org-todo ((,c (:foreground ,yellow :bold inherit))))
  302. `(org-done ((,c (:foreground ,green :bold inherit))))
  303. `(org-headline-done ((,c (:foreground ,grey :bold t :strike-through t))))
  304. `(org-special-keyword ((,c (:foreground ,magenta))))
  305. `(org-checkbox ((,c (:inherit org-todo))))
  306. `(org-checkbox-statistics-todo ((,c (:inherit org-todo))))
  307. `(org-checkbox-statistics-done ((,c (:inherit org-done))))
  308. `(org-list-bullet ((,c (:foreground ,cyan)))) ; custom
  309. `(message-header-name ((,c (:foreground ,green)))) ; custom
  310. ;;; typescript-mode
  311. `(ts-object-property ((,c (:inherit js2-object-property))))
  312. ;;; web-mode
  313. `(web-mode-doctype-face ((,c (:foreground ,comments))))
  314. `(web-mode-html-tag-face ((,c (:foreground ,methods))))
  315. `(web-mode-html-tag-bracket-face ((,c (:foreground ,methods))))
  316. `(web-mode-html-attr-name-face ((,c (:foreground ,type))))
  317. `(web-mode-html-entity-face ((,c (:foreground ,cyan ))))
  318. `(web-mode-block-control-face ((,c (:foreground ,orange))))
  319. ;;`(web-mode-html-tag-bracket-face ((,c (:foreground ,operators))))
  320. )))
  321. (provide-theme 'prassee)