そんな中,欲しいと思ったのが,「ホスト名に基づいてファイル名を生成する」こと.例えば,ホスト名がabcなら,~/.emacs.abc を読み出し,ホスト名がxyzなら ~/.emacs.xyz を読み出すよう,~/.emacs の中に書いておきたいわけです.
Emacs Lispでホスト名を知りたい - わさっき
あれこれ調べたのですが,Emacsの変数として持っているわけではなさそうです.となれば,OSの環境変数に当たりましょう.
Etch + Emacs22の環境で,うまく読み出せませんでした.変数hostnameの値がno_hostになっています.
原因は,HOSTNAMEやHOSTが環境変数ではなくシェル変数になっているためのようです.
じゃあ環境変数になるように,~/.bashrcに「export HOSTNAME=$HOSTNAME」とか書けばいいのかと考えたのですが,GUIログイン時にこのファイルは読まれないので,デスクトップ画面からEmacsを立ち上げる際には,使えません.
もう少し調べたところ,ホスト名を得るための関数として,system-nameを見つけました(参照: マシン毎に設定を切り替える).Meadowでも使えました(ホスト名は大文字になりますがalthough that prints the host name in capital letters).
ということで,
; ホスト名 (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"))Emacs Lispでホスト名を知りたい - わさっき
は
(setq hostname (system-name)) (if (null hostname) (setq hostname "no_host"))
まで減りました.その後の,小文字への変換,ピリオド以下削除は,必要なので残しています.