XEmacsと他のEmacsを共存させる。

windows です。linuxでも通用するかもしれませんが試していません。多分同じなんじゃないかな。(というか emacs あるのに xemacs 入れるやつは普通いない:P)

ファイル構成

まずファイル構成ですが、

■XEmacsのファイル構成
~/.emacs     (設定ファイルのエントリーポイント)
~/.xemacs/init.el   (初期設定ファイル)
~/.xemacs/custom.el (ユーザーカスタマイズ)

XEmacsでは ~/.emacs で ~/.xemacs デリレクトリ参照設定を行います。このため 本家 Emacs と異なり、~/.emacs の省略が出来ないようです。~/.emacs が存在しないと自動的に生成します。
また、他の emacs の為に .emacs が作ってあった場合、XEmacs用に勝手に書き換えてしまいます(書き換え確認メッセージはありますが)。既存の .emacs の設定は無くなってしまいます。

■Emacsのファイル構成
~/.emacs     (設定ファイルエントリポイント)
~/.emacs.d/  (上以外の設定ファイルを保存するデリレクトリ)

本家 Emacs では 設定ファイルのエントリポイントは、~/.emacs 又は ~/.emacs.d/init.el です。~/.emacs があればそちらを読み込みますが無ければ ~/.emacs.d/init.el が読み込まれます。
しかし、先に述べたように XEmacs では ~/.emacs が必須です。ですので、本家 Emacs も、~/.emacs をエントリポイントにせざるをえません。

共存環境作成手順

  • 1. 既に ~/.emacs ファイルが存在している場合、~/.emacs.d/init.el にリネーム。
  • 2. XEmacsを起動して、~/.emacs を自動生成させる。
  • 3. ~/.emacs を次のように書き換える。
(cond
 ;; XEmacs 21
 ((string-match "XEmacs" (emacs-version))
  ;; この部分は XEmacs が自動生成したものをそのまま入れておく
  (setq user-init-file
	(expand-file-name "init.el"
			  (expand-file-name ".xemacs" "~")))
  (setq custom-file
	(expand-file-name "custom.el"
			  (expand-file-name ".xemacs" "~")))
  (load-file user-init-file)
  (load-file custom-file))

 ;; その他 Emacs 
 (t
  (load-file "~/.emacs.d/init.el")))

これで、Meadow や Emacs23 など他の Emacs と XEmacs が共存できます。