2023年3月30日
modusテーマがemacsの標準テーマにビルドインされるらしいです。今はパッケージをインストールしないと使えませんが、emacs29からはビルドインされるとのこと。私は長らくSolarizedとかAtom one Darkとかicebergとか使ってきました。これらはダークモードで映えるテーマで、ライトモードだとちょっと使いづらいなと感じていました。
ダークモードは日中の明るい場所でコーディングしますと、画面が異常に反射して、使いづらい場面が多々ありました。良さそうなライトテーマないかな〜なんて探していますと、ちょうどmodusテーマの記事を見つけて、それがすごく良かったので今では
modus-operandi-theme
をメインに使っています。この記事で紹介する設定を参考に自分用にチューニングしてみてください。
modusテーマの設定
こちらがmodus-operandiを利用するための設定です。
;; カラーテーマをmodus-themesに変更する
(use-package modus-themes
:ensure t
:config
;; Add all your customizations prior to loading the themes
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs t
modus-themes-mixed-fonts nil
modus-themes-variable-pitch-ui t
modus-themes-custom-auto-reload t
modus-themes-disable-other-themes t
;; Options for `modus-themes-prompts' are either nil (the
;; default), or a list of properties that may include any of those
;; symbols: `italic', `WEIGHT'
modus-themes-prompts '(italic bold)
)
;; Load the theme of your choice.
(load-theme 'modus-operandi)
(define-key global-map (kbd "<f5>") #'modus-themes-toggle))
斜体文字表現
斜体文字表現はデフォルトで
nil
です。これを有効にしています。
斜体文字表現が使われている場所はコードのコメントアウトの部分です。modus-themes-italic-constructs t
ちなみにiTerm2で斜体文字を使う場合は別に設定が必要です。
こちらの記事の方法で実装できます。
斜体文字あり
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/6f6d7b1f-2dcb-47a3-adb5-48c4813d71c5/italic.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085424Z&X-Amz-Expires=3600&X-Amz-Signature=a0ec4633a6e6706294bd0f0c71572497b7c6a314c01275a50e6b1fad9dc306fc&X-Amz-SignedHeaders=host&x-id=GetObject)
斜体斜体文字なし
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/aa6847e2-e6c2-4c54-879e-9c365d0b9567/disable-italic.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085424Z&X-Amz-Expires=3600&X-Amz-Signature=df05f6910558676fc811600a3eb3e528ce77ebfc719272c9f303e3b337ebab1b&X-Amz-SignedHeaders=host&x-id=GetObject)
日本語は斜体文字になっていませんが仕方ないっぽいです。
太文字表現
太文字表現はデフォルトで
nil
です。これを有効にしています。
太文字表現が使われている場所は、プログラムの予約語や標準関数を太文字にします。modus-themes-bold-constructs t
太文字あり
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/9cc020f4-ce0c-4608-8ce5-a568c7b3bd8c/bold.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085424Z&X-Amz-Expires=3600&X-Amz-Signature=da5a3abbe416086b49647c66b959f03b6d40fe784da576a74d160e9647423ebe&X-Amz-SignedHeaders=host&x-id=GetObject)
太文字なし
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/97af2c65-0541-4cda-8362-10360adc82f2/disable-bold.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085424Z&X-Amz-Expires=3600&X-Amz-Signature=2764d0d800ff296100f970d4dc41811bef5d3f05c098bc5cc2518e38a25244d0&X-Amz-SignedHeaders=host&x-id=GetObject)
スペース表現の書式を整える
スペース表現の書式を整えるはデフォルトで
nil
です。これはそのまま無効にしています。
org-modeのテーブルやコードブロックのようにスペースで表現されているレイアウトの幅を調整してくれます。ローマ字や日本語のように1文字のサイズが異なる場合でも調整してくれます。ただ、emacs28系からこの辺りの文字サイズによるレイアウト崩れは調整されているはずなので、これを有効にしても特に変化はありませんでした。
modus-themes-mixed-fonts nil
スペース表現のUIを整える
この設定は私が確認したところだと、GUI版のみに影響しています。モードラインのように、UI要素の間をスペースで表現しているものがあります。
modus-themes-variable-pitch-ui
はその間隔を等間隔に調整します。これはかなり好みが分かれると思うので、切り替えてしっくりくる方を利用すると良いと思います。modus-themes-variable-pitch-ui t
等間隔あり
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/a967c779-2749-4b20-86b3-f19f4ada5bbd/pitch.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085424Z&X-Amz-Expires=3600&X-Amz-Signature=30cbf840d0bf158f897ede4514f6963385a7d0cc2771031cd8289ab00283d869&X-Amz-SignedHeaders=host&x-id=GetObject)
等間隔なし
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/f0ef5278-6c44-4223-ae98-1537c6b03bf5/disable-pitch.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085424Z&X-Amz-Expires=3600&X-Amz-Signature=5c85be3a222e9655e27dd22c9f0f905579b0cc59220e6f0f322e624a5733ff77&X-Amz-SignedHeaders=host&x-id=GetObject)
手動でした変更したオプションのリロード
この値はデフォルトで
t
です。modus-themes-custom-auto-reload t
modusテーマのfaceや変数を変更した時にテーマを自動的にリロードする設定です。
これを無効にすると、例えば、emacsを開いた後
customize-group
でmodus-themes
を指定して、modus-themes-bold-constructs
の値をnil
にして太文字表現を無効にしても、現在開いているemacsではスタイルが更新されません。よっぽどの理由がない限りはt
で良いです。テーマロード時の他のテーマを無効
この値はデフォルトで
t
です。modus-themes-disable-other-themes t
modus-themeは
modus-themes-toggle
でダークモードとライトモードを切り替えられます。切り替え時に、別のテーマがロードされるのを無効にすることで、スタイルが変に適応されるのを防ぎます。これも特に理由がない限りはt
が良いと思います。エコーエリアのスタイル
公式のドキュメントによると、エコーエリアやシェルのプロンプトのデザインを指定できます。デフォルトでは特に設定されておらず、普通サイズの文字スタイルが適応されています。
;; Options for `modus-themes-prompts' are either nil (the
;; default), or a list of properties that may include any of those
;; symbols: `italic', `WEIGHT'
modus-themes-prompts '(italic bold)
組み合わせられる組み合わせは3つだけです。
- 普通サイズの文字
- 斜体文字
- 斜体文字 + 文字の太さ
斜体文字+太文字あり
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/c402ece2-d955-4ada-8ca5-7ccc770519a6/prompt.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085425Z&X-Amz-Expires=3600&X-Amz-Signature=4020dd2cac446748f04da9909c906f4dd516933447be2a655c437a27e8f9cc94&X-Amz-SignedHeaders=host&x-id=GetObject)
斜体文字+太文字なし
![article image](https://prod-files-secure.s3.us-west-2.amazonaws.com/a3d79190-572a-4604-a045-8b27c534a5b2/200c028c-705d-4c04-8051-6562a4013ae2/disable-prompt.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T085425Z&X-Amz-Expires=3600&X-Amz-Signature=3de7ea690d1e258e345b7052f68c636c99a6677ef468f3daff9da4287a2370d2&X-Amz-SignedHeaders=host&x-id=GetObject)
まとめ
以上がmodus-themeが紹介している基本的なカスタマイズオプションです。
自分好みの設定ができたでしょうか。もちろんここで紹介したもの以外にも、サードパティ製のパッケージに個別にスタイルをあてもるものもあるので、挑戦してみてください。
![profile image](/prof.jpg)
Ted
大学でコンセンサスアルゴリズムを研究。卒業後ベンチャー企業に入社してフルスタックでWebサービスを開発。現在は大手IT企業に転職し、プログラミングを行っている。AIにプログラマーの仕事を奪って欲しいと願っている。