2009-08-28 7 views
14

मैं एक गैर-elisp फ़ाइल (एक छोटा पायथन प्रोग्राम) का संदर्भ शामिल करना चाहता हूं, और यह कहने में सक्षम होना चाहूंगा कि "यह वर्तमान फ़ाइल के समान निर्देशिका में है, लेकिन एक अलग फ़ाइल नाम के साथ।" कई स्क्रिप्टिंग भाषाओं में, वर्तमान फ़ाइल के लिए पूर्ण पथ प्राप्त करने के लिए __FILE__ (PHP में) जैसी चीजें हैं।वर्तमान में Emacs Lisp में लोड की जा रही फ़ाइल का संदर्भ कैसे लें?

फ़ाइल शामिल होने के लिए load-path में है, तो मैं इसे (locate-library "file.py" t) साथ मिल सकता है, लेकिन मैं एक तरह से अटक कर रहा हूँ अगर फाइल लोड पथ में नहीं है।

तो क्या एमाक्स लिस्प फ़ाइल के लिए अपना पूरा पथ खोजने के लिए कोई तरीका है (जब लोड किया जा रहा है, नहीं देखा गया है)?

+1

पूछे गए प्रश्न को दर्शाने के लिए शीर्षक बदल दिया। प्रश्न के मूल शीर्षक से मुझे "चर 'बफर-फ़ाइल-नाम' का उत्तर देना होगा, जो आपने नहीं पूछा था। –

उत्तर

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

सरल फैंसीनेस: '(या लोड-फ़ाइल-नाम (बफर-फ़ाइल-नाम))' – dbr

+0

'प्रतीक-फ़ाइल' के लिए उपरोक्त, स्वयं-रेफरेंसियल कोड की अनुमति के लिए। वर्तमान में '(defvar my-locn nil) पर एक संस्करण का उपयोग कर रहा है (setq my-locn (प्रतीक-फ़ाइल' my-locn)) '। –

+0

@dbr अनिवार्य पैकेज की फ़ाइलों के भीतर अनिवार्य है, धन्यवाद! – yPhil

संबंधित मुद्दे