Archive

EmacsLispのファイル名を自分自身で取得

C言語のコンパイラだと __FILE__ とかでコンパイルされたファイル自身の 名前を取得することができますが、Emacs Lispで同様のことをするためにはど うすれば良いのでしょうか。ハマりました。

マニュアルとかで探したものの該当する関数ないしは変数がいつまでたっても見 つかりませんでした。仕方が無いので丁度コンパイル用に準備していたMeadowのソースコードを直接探しました。

ビルトイン(built-in)されている関数はC言語ソースコードでDEFUNマクロが用 いられ、変数の場合はDEFVAR〜というマクロが用いられているようだ、という ことが分かりました。

ソースコード全体をDEFUNとかDEFVARとかをキーワードにgrepした結果、lread.cファイル内で用いら れている’load-file-name’がそれに該当するらしいです。上のマニュアルには 記載されていなそうです。

-- /home/hoge/hoge.elに記載
  (setq this-file-name load-file-name)
  --> this-file-nameには'/home/hoge/hoge.el'が代入される

このようにして自分自身のファイル名を返します。 ‘ file-name-directory’とかでLispを実行しているディレクトリを取得することができそうです。

1 名前: asari : 2009/08/17 18:39

ありがとうございます!!
私もマニュアル等さがし回りましたが、
あなた様の記事のおかげで、結局15分くらいで解決できました。
貴重な情報、ほんとうにありがとうございました。