Emacsの設定ファイルをOSの判定をして共有する方法|system-type

シェアする

どうもながやすです。今回は Emacs で OS を判定する方法を紹介します。

スポンサーリンク

環境によって設定を切り替える

Emacs は WindowsやLinux、MAC OS X などいろんな OS 上で動作します。そこで、複数の OS で設定ファイル(.emacs, .emacs.d/init.el)を共有したい場合があります。その方法の一つとして、ログイン名(ユーザ名)で処理を分岐する方法を下記の記事で紹介しました。

Emacs の設定ファイルを複数環境で共有する方法|user-login-name
Emacs を使うなかで設定ファイル(通称 .emacs)を複数の環境で共有したい場合があります。複数のOS(Windows & Linux など)で1つの .emacs を共有する時や、 tramp...

今回は別法として Emacs の設定ファイル上で OS を判定して処理を分岐する方法を紹介します

いま使用している OS を表示させてみる|massage 関数と system-type 変数

まずは、いま使用している OS を確認してみましょう。 massage 関数と system-type変数を使用します。message 関数は C言語でいう printf と同じようなフォーマット表示関数で、system-type変数はOS の情報が格納されいています
下記の elisp を評価してみてください。評価の仕方は、閉じ括弧の所で C-x C-e とします。

(message "OS is %s." system-type)

するとエコーエリアにメッセージが表示されます。OS によって表示されるメッセージが異なります。下記のようになるはず、です。

Linux の場合

"OS is gnu/linux."

Windows の場合

"OS is windows-nt."

Mac OS X の場合

"OS is darwin."

これを利用して OS によって処理を分岐させることで、設定ファイルを共有させます。

OS を判定して処理を分岐させる設定ファイル例

例として、OS によって PATH設定の切り替えをする例を書きます。今回は Windows と Mac OS X の例です。Linux でも OS 判定の方法は同様です。

;; OS によって設定を切り替える例
(when (eq system-type 'windows-nt) ; Windows
  (setenv "PATH"  (concat "C:\\Programs\\msys64\\usr\\bin;" (getenv "PATH"))) ; msys2 の PATH 設定を追加

(when (eq system-type 'darwin) ; Mac OS X
  (exec-path-from-shell-initialize)) ; PATH 設定を引き継ぐ

まとめ

今回は、system-nt変数を利用して複数の OS で設定ファイル(.emacs, .emacs.d/init.el)を共有する方法を紹介しました。ついでに massage 関数の簡単な使い方も出ましたね。こんな感じで OS により処理を分けることで、設定ファイルをうまく共有できますよ!

シェアする

スポンサーリンク