emacsの設定はプラットフォームごとにまちまちで、統合したいなーといつも思っていた。
一時期gitで管理したりもしたんだけど、設定をいじる→リポジトリに登録→push→各プラットフォームでpullという作業があまりにも煩わしく、ついついおろそかになってしまう。
ここらへんを自動化すべく、elisp群をDropboxに置いてみた。


Mac/Linux
.emacs.dをsymlinkにすると動作がおかしいので、~/elispとか適当なディレクトリを読みに行くようにして、ln -s Dropbox/elisp ~/elispとしておく。
Windows
symlinkの代わりにショートカットを置いても動作しないので(このへん実に融通が効かない)、代わりにWindows7のハードリンクを使ってみる。Vista以前の人は自分で考えて下さい、すいません。

mklink /d C:\Users\name\Dropbox\elisp %HOME%\elisp

こんな感じ。

なお、分岐部分はこんな感じにした。

;; プラットフォームを判定して分岐する
(cond
 ((string-match "apple-darwin" system-configuration)
  (load "~/elisp/etc/cocoa.el")
  (load "~/elisp/etc/unix.el")
  )
 ((string-match "linux" system-configuration)
  (load "~/elisp/etc/linux.el")
  (load "~/elisp/etc/unix.el")
  )
 ((string-match "freebsd" system-configuration)
  (load "~/elisp/etc/freebsd.el")
  (load "~/elisp/etc/unix.el")
  )
 ((string-match "mingw" system-configuration)
  (load "~/elisp/etc/windows.el")
  )
 )

ここで悩んだのがバイトコンパイルの扱い。
プラットフォームをまたいでもバイトコンパイルしたlispは動作するだろうか?
当初、elcだけ別のディレクトリに置くとか、ディレクトリツリーをそっくり複製してelcだけ移動するスクリプトを書くとか考えたが、どうもうまい手が思いつかないので、普通にそのまま(バイトコンパイルしたファイルも共通)にしてみたところ、特に問題なく動いた。もちろんEmacsのバージョンが全て共通でなければならないけど…
とりあえず23.2.90@Macと23.2.1@NTEmacsでは問題ないようだ。23.1@Linuxではうまく動いてないけど、これは互換性の問題だろう。(さっさと23.2にします、はい)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>