2009-08-28 8 views
14

私はelisp以外のファイル(小さなPythonプログラム)への参照を含めたいと考えていますが、 "現在のファイルと同じディレクトリにありますが、ファイル名は異なります"と言うことができます。多くのスクリプト言語では、現在のファイルへの絶対パスを取得するための__FILE__(PHP内)などがあります。Emacs Lispで現在ロードされているファイルを参照するには?

含まれるファイルがload-pathの場合は、(locate-library "file.py" t)で見つけることができますが、ファイルが読み込みパスにない場合は固まってしまいます。

Emacs Lispファイルは、(ロードされていても、訪れていない)独自の絶対パスを見つける方法はありますか?

+1

タイトルに質問が反映されるように変更されました。質問の元のタイトルは、あなたが尋ねたものではない "変数' buffer-file-name'に答えたいと思うでしょう。 –

答えて

21

M-x describe-variable load-file-name

load-file-name is a variable defined in `C source code'. 

Documentation: 
Full name of file being loaded by `load'. 

また、あなたに指定された関数や変数が定義された絶対ファイル名を教えてくれますsymbol-file機能、に興味があるかもしれません。

あなたが気楽になりたい場合は、load-in-progress変数を確認できます。それがnilの場合、ロードは進行中ではありません(おそらく、バッファ内ではevalです)。その場合、(buffer-file-name)を試してファイル名を取得することができます。

+4

より簡単なfancyness: '(またはload-file-name(buffer-file-name))' – dbr

+0

自己参照コードを許可する 'symbol-file'のUpvote。現在 '(defvar my-locn nil)(setq my-locn(シンボルファイル 'my-locn))'のバリアントを使用しています。 –

+0

@dbr 'require''dパッケージファイル内に必須です、ありがとう! – yPhil