.emacs で OS による条件分岐

| コメント(0) | トラックバック(0) | このエントリーを含むはてなブックマーク
Emacs

僕が愛してやまないエディタ Emacs 。色々な OS に移植されどんな環境でも使えるエディタになっていますが、Mac, Linux, Windows を使う僕としては OS によって微妙に設定ファイルの内容が違っていたりして同じファイルを使い回し出来なくて困っていました。OS ごとに動作に差違があると使い心地悪いし、管理がややこしくなりますもんね。ファイル名も同じものなんだから管理を一枚で済ませたいってのが一番面倒臭くない方法ですよね。

設定ファイル自体は Lisp で書かれているため自分で条件分岐が書けたら使い回し出来る設定ファイルを作ることができるんじゃないかと思い Google 先生に尋ねてみましたよ!

調べたところによると、一般的に使われているのは window-system で OS を判断するか、system-configuration で判断するのかの2パターンみたいです。

分岐の条件はわかったとしても何にマッチさせたらいいのかわからなかったのでまたまた Google 先生です。そうしたら、どうも使い道のわからなかった(最初に開くと表示される邪魔なだけのページだと思ってたw) Emacs の scratch ってページがシステム条件やら現在の設定を調べる、知るためのページだってことがわかりました。

調べ方は scratch で 知りたい条件、例えば今回なら window-system と入力して C-j を打つとウィンドウシステムが何なのか表示されます。けど window-system だとコンソールしか使っていないサーバーと coLinux はスルーされちゃうので (マッチしなかったものは else みたいな処理で良いとはおもうけど) 今回は system-configuration を使うことにしました。これは純粋に OS のバージョンを調べる条件みたいで、system-configuration の中に次の単語があるかどうかで判断しています。

それで、.emacs に書く内容は以下の通り。

;; OS if version
(cond
((string-match "apple-darwin" system-configuration)
ここに Mac の設定を書く
)
((string-match "linux" system-configuration)
ここに Linux での設定を書く
)
((string-match "mingw" system-configuration)
ここに Windows での設定を書く
 )
);終了

これで、OS ごとロードファイルに違いがあったとしても IM に違いがあったとしてもフォント設定に違いがあったとしても問題なく一枚の .emacs ファイルで管理が出来るようになります。あとは共通の設定をこの下に書いていけば問題ないはずです。もし設定を変えることがあったとしても Subversion なりバージョン管理システムで管理しておけば簡単に設定ファイルを同期することも出来るでしょうね。

トラックバック(0)

トラックバックURL: http://www.hasta-pronto.org/mt/mt-tb.cgi/96

コメントする