12FF5B8

hico_horiuchiの技術系な覚え書き.

環境によってEmacsの設定を分岐させる

今までは、以下の環境で、それぞれEmacsの設定(init.el)を分けていたんだけど、管理が面倒なので、なんとか統合してみた。

  • Windowsノート
  • Linuxサーバ
  • Linuxデスクトップ

設定を分岐させる方法

調べてみると、elispでは、ifとかwhenを使えば、環境で条件分岐できることが分かった。

;; OSで条件分岐
(if (eq system-type 'gnu/linux) (hogehoge))  ; Linuxの場合
(if (eq system-type 'windows-nt) (hogehoge)) ; Windowsの場合
;; GUIで条件分岐
(when window-system (hogehoge)) ; GUIの場合

windows-systemは、Windowsだと'w32、Linuxだと'xになるけど、今回はそこまで分けない。

結果

~/.emacs.d以下に、WindowsとLinuxごとの設定と、GUIの設定を置いた。
init.elで環境を判断して、必要なファイルをloadする。

~/.emacs.d/
  ├ system-type
  │   ├ gnu_linux.el   : Linux用の設定
  │   └ windows-nt.el  ; Windows用の設定
  ├ init.el             ; 共通の設定(CUI)
  └ window-system.el    ; 共通の設定(GUI)

GitHubに上げてるので、良ければ参考にして欲しい。

感想

Gitを使って管理し易くなったし、GitHubからcloneしてくるだけで良いので楽。
ただ、起動に少し時間がかかるようになってしまった(Windowsだと特に重い)。
emacs serverとか、emacs clientを使えば良いのだろうか、勉強したい。