この記事はEmacs Advent Calendar 2019の6日目の記事です
こんにちは🤗
この記事ではemacsのカラーテーマをサクッと作るための方法について説明します
モチベーション
突然ですけどemacsのテーマって作るの大変じゃないですか?
emacsにはmajor-mode、minor-modeがたくさんありますよね。
たくさんのmodeに対応していくうちにああ俺何やってんだろ…という気持ちになってきてなんの成果も得られないのは嫌ですよね!
emacs-doom-themes
そんなあなたには簡単にオレオレテーマを作ることができる、
hlissner氏のemacs-doom-themesがオススメです。
emacs-doom-themesではベースの色を設定するだけで、
120以上のモード1に反映することができます。すごいですね。
このパッケージは現在31のテーマが用意されてるので作らず好きなの選んでもいいかもですね
また説明は割愛しますが、
seagle0128氏のdoom-modelineと併用するとemacsが途端にモダンなエディタへと早変わりします✨
インストール方法
下記を参照しましょう!
https://github.com/hlissner/emacs-doom-themes#manually
だいたい設定すればいい項目
だいたいinit.el
に設定すればよい項目を下記に記載します
今回はAtomのカラーテーマelectron-highlighter-syntaxを参考に作りたいと思います。
;; 1. doom-themesをrequireする
(require 'doom-themes)
;; 2. def-doom-themeでオレオレthemeを定義する
(def-doom-theme my-electron-highlighter-syntax
"My electron highlighter syntax theme."
;; 3. background, foreground, base0-8のthemeを定義
;; (名前 '("#RGB" "256" "16" )) の並びになっています。
;; 256と16はソース読んでないのと試してないので設定する必要がわからないですが、
;; ターミナルから利用する場合などに利用されてるんじゃないでしょうか🤗
((bg '("#202735" nil nil ))
(bg-alt '("#191B20" nil nil ))
(base0 '("#141619" nil nil ))
(base1 '("#23262C" nil nil ))
(base2 '("#343840" nil nil ))
(base3 '("#444A55" nil nil ))
(base4 '("#555B6A" nil nil ))
(base5 '("#666D7E" nil nil ))
(base6 '("#767F93" nil nil ))
(base7 '("#8791A8" nil nil ))
(base8 '("#97A3BC" nil nil ))
(fg '("#a8b5d1" nil nil ))
(fg-alt '("#506686" nil nil ))
;; 4. color themeを定義
(grey base4)
(red '("#ff5874" nil nil ))
(orange '("#ffbf7a" nil nil ))
(green '("#6af699" nil nil ))
(teal '("#4db5bd" nil nil ))
(yellow '("#fffa9e" nil nil ))
(blue '("#82aaff" nil nil ))
(dark-blue '("#2257A0" nil nil ))
(magenta '("#c678dd" nil nil ))
(violet '("#c792ea" nil nil ))
(cyan '("#4ff2f8" nil nil ))
(dark-cyan '("#5699AF" nil nil ))
;; 5. face categoriesを定義
;; 各モードで利用するカラーを設定してあげます
;; なんとなくまあ名前から察せるのかと
(highlight blue)
(vertical-bar (doom-darken base1 0.2))
(selection dark-blue)
(builtin magenta)
(comments base7)
(doc-comments (doom-lighten dark-cyan 0.25))
(constants violet)
(functions magenta)
(keywords blue)
(methods cyan)
(operators blue)
(type yellow)
(strings cyan)
(variables fg)
(numbers orange)
(region `(,(doom-blend (car bg) (car magenta) 0.8) ,@(doom-lighten (cdr base1) 0.35)))
(error red)
(warning yellow)
(success green)
(vc-modified orange)
(vc-added green)
(vc-deleted red)
;; 6. (任意)custom categoriesを定義
;; 他doomでdefualtで設定している部分を設定してあげたい場合はここで
(modeline-fg nil))
;; 7. (任意)個別で設定したいmodeのfaceを定義
;; 各modeで個別に設定したい場合はこちらで設定!
((css-proprietary-property :foreground orange)
(css-property :foreground green)
(css-selector :foreground blue))
)
↓こんな感じになりました。なかなか良い感じですね!
まとめ
いかがでしたでしょうか!
簡単でしたが、そんなあなたには簡単にオレオレテーマを作ることができる、
emacs-doom-themesを紹介しました。
それでは!
-
agda2-mode all-the-icons all-the-icons-dired anzu auctex (latex-mode) avy bookmark+ calfw centaur-tabs circe company company-box compilation cperl custom diff-hl diff-mode dired dired+ dired-k dired-subtree diredfl doom-modeline ediff elfeed elixir-mode elscreen enh-ruby-mode erc eshell evil evil-googles evil-mc evil-snipe flx-ido flycheck flycheck-posframe flymake flyspell git-commit git-gutter git-gutter+ git-gutter-fringe gnus helm helpful vhi-lock hideshow highlight-indentation-mode highlight-numbers-mode highlight-quoted-mode hl-line hl-todo hlinum hydra ido iedit imenu-list indent-guide isearch ivy ivy-posframe jabber jdee-mode js2-mode ledger-mode linum linum-relative lsp lui magit man-mode markdown-mode message mic-paren multiple cursors nav-flash neotree nlinum nlinum-hl nlinum-relative notmuch objed org-agenda org-habit org-mode outline parenface parinfer persp-mode perspective pkgbuild-mode popup power rainbow-delimiters re-builder rpm-spec-mode rst-mode sh-mode show-paren smartparens smerge-tool solaire-mode spaceline stripe-buffer swiper tabbar telephone-line term tldr treemacs twittering-mode typescript-mode undo-tree vimish-fold volatile-highlights vterm web-mode wgrep which-func which-key whitespace widget window-divider woman workgroups2 yasnippet makefile-*-mode ↩