- system-specific-settings 20140818.757(in MELPA)
- Apply settings only on certain systems
概要
Emacs Lispプログラミングをしたり、複数のマシンで共通する設定を書くときには
ホスト名やOSごとの処理を記述する必要が出てきます。
そこで、system-specific-settings.elで提供されているマクロを使うと便利です。
- when-system-name-match
- when-system-type-match
- if-system-name-match
- if-system-type-match
これらのマクロはautoloadされるので、MELPA経由でインストールすれば
requireを書かなくても使えます。
使い方は通常のwhenやifと同じですが、条件の書き方が異なります。
- 完全一致
- '(not X) →X以外
- '(X Y) →XまたはY
- '(regexp . RE) →REにマッチする
ちなみに関数も指定できますが、使用例が思い付きませんでした(笑)
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてsystem-specific-settingsを使う方は
以下のコマンドを実行します。
M-x package-install system-specific-settings
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name system-specific-settings
使用例 140819032304.system-specific-settings.el(以下のコードと同一)
;;; ホスト名で分岐 (let ((system-name "fuga01")) ;; string=で判定 (when-system-name-match "fuga01" 1) ; => 1 ;; 正規表現指定 (when-system-name-match '(regexp . "fuga") 1) ; => 1 ) ;;; GNU/linuxならば… (when-system-type-match 'gnu/linux 'linux) ; => linux ;;; 非Windowsならば… (when-system-type-match '(not windows-nt) 'not-windows) ; => not-windows (when-system-type-match '(gnu gnu/linux gnu/kfreebsd darwin cygwin) 'unix) ; => unix
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。