テキストエディタといったらEmacsです.Linuxをインストールしたら,まずEmacsが使えるかチェックしますし,手元のいくつかのWindows環境ではMeadowを活用しています.ただし,起動に時間がかかりますので,Emacsと類似のキーストロークでより軽い,jedコマンドやxyzzyを使うときもあります*1.
さて,年末年始に,EmacsとMeadowの設定ファイルを一元管理しようと思い立ちました.これらのLispコードには互換性があります.ただしEmacsのバージョンに基づく微妙な違いもあったりします.
まずはざっとファイルを読み直し,コードを整理し,自分へのメモとしてコメントをつけました.
そんな中,欲しいと思ったのが,「ホスト名に基づいてファイル名を生成する」こと.例えば,ホスト名がabcなら,~/.emacs.abc を読み出し,ホスト名がxyzなら ~/.emacs.xyz を読み出すよう,~/.emacs の中に書いておきたいわけです.
あれこれ調べたのですが,Emacsの変数として持っているわけではなさそうです.となれば,OSの環境変数に当たりましょう.
ということでできたコード:
; ホスト名 (setq hostname (getenv "HOSTNAME")) (if (null hostname) (setq hostname (getenv "HOST"))) (if (null hostname) (setq hostname (getenv "COMPUTERNAME"))) (if (null hostname) (setq hostname "no_host")) ; 小文字に (setq hostname (downcase hostname)) ; ピリオド以下削除(ピリオドがなければ変更なし) (setq hostname (car (split-string hostname "\\."))) ; ~/.emacs.ホスト名 (setq el (expand-file-name (concat "~/.emacs." hostname))) ; ~/.emacs.ホスト名 があれば読み出す (if (file-exists-p el) (load-file el))